Twig \ Error \ RuntimeError
An exception has been thrown during the rendering of a template ("ERROR: CSS Compilation on file 'helium.scss' failed on error: `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2").
Previous exceptions
  • ERROR: CSS Compilation on file 'helium.scss' failed on error: `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2 (500)
  • `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2 (0)
Twig\Error\RuntimeError thrown with message "An exception has been thrown during the rendering of a template ("ERROR: CSS Compilation on file 'helium.scss' failed on error: `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2")." Stacktrace: #42 Twig\Error\RuntimeError in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/engines/nucleus/views/partials/page.html.twig:12 #41 RuntimeException in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php:192 #40 ScssPhp\ScssPhp\Exception\CompilerException in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:6114 #39 ScssPhp\ScssPhp\Compiler:error in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:5880 #38 ScssPhp\ScssPhp\Compiler:findImport in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Component/Stylesheet/Scss/Compiler.php:37 #37 Gantry\Component\Stylesheet\Scss\Compiler:findImport in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2709 #36 ScssPhp\ScssPhp\Compiler:compileImport in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2740 #35 ScssPhp\ScssPhp\Compiler:compileImport in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2925 #34 ScssPhp\ScssPhp\Compiler:compileChild in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2388 #33 ScssPhp\ScssPhp\Compiler:compileChildrenNoReturn in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:5759 #32 ScssPhp\ScssPhp\Compiler:importFile in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2713 #31 ScssPhp\ScssPhp\Compiler:compileImport in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2925 #30 ScssPhp\ScssPhp\Compiler:compileChild in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2388 #29 ScssPhp\ScssPhp\Compiler:compileChildrenNoReturn in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:744 #28 ScssPhp\ScssPhp\Compiler:compileRoot in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:522 #27 ScssPhp\ScssPhp\Compiler:compileString in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php:181 #26 Gantry\Component\Stylesheet\ScssCompiler:compileFile in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Component/Theme/ThemeTrait.php:271 #25 Gantry\Framework\Theme:css in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Component/Content/Block/HtmlBlock.php:86 #24 Gantry\Component\Content\Block\HtmlBlock:getStyles in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Framework/Document.php:57 #23 Gantry\Framework\Document:registerStyles in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Framework/Document.php:50 #22 Gantry\Framework\Document:registerAssets in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/src/classes/Gantry/Framework/Base/Platform.php:277 #21 Gantry\Framework\Base\Platform:finalize in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:700 #20 Twig\Template:getAttribute in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/08/08d990e4009d85453d4d7988476ba0f663a2e51f52dec603efa6f53f52392e8f.php:63 #19 __TwigTemplate_d869e7fe00809267f90cec8b2edd376a005894fd564eac58e3909341640d8ad0:block_page_footer in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:214 #18 Twig\Template:displayBlock in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/86/867db7fcfbab75977a39397666bfedff166e1f3abe06decf8900b7ed820161d2.php:152 #17 __TwigTemplate_81e7ad9ac604ab164e2d99c9dfd216e48fcc3665bd2712f1d1bc76c197216b22:doDisplay in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:453 #16 Twig\Template:displayWithErrorHandling in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:420 #15 Twig\Template:display in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/08/08d990e4009d85453d4d7988476ba0f663a2e51f52dec603efa6f53f52392e8f.php:36 #14 __TwigTemplate_d869e7fe00809267f90cec8b2edd376a005894fd564eac58e3909341640d8ad0:doDisplay in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:453 #13 Twig\Template:displayWithErrorHandling in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:420 #12 Twig\Template:display in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/ca/ca87b54689baf97f82f04279f1d0a7c6075b4f80e35ed7d198a1b5f8cee092c8.php:40 #11 __TwigTemplate_67db544d36046378b598f89dcb7f07de04e4394002c6d5785cd831025c37a41f:doDisplay in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:453 #10 Twig\Template:displayWithErrorHandling in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:420 #9 Twig\Template:display in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/Template.php:432 #8 Twig\Template:render in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/compat/vendor/twig/twig/src/TemplateWrapper.php:47 #7 Twig\TemplateWrapper:render in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/vendor/timber/timber/lib/Loader.php:79 #6 Timber\Loader:render in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/vendor/timber/timber/lib/Timber.php:334 #5 Timber\Timber:compile in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/vendor/timber/timber/lib/Timber.php:383 #4 Timber\Timber:fetch in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/plugins/gantry5/vendor/timber/timber/lib/Timber.php:410 #3 Timber\Timber:render in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/themes/g5_helium/page.php:46 #2 include in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-includes/template-loader.php:106 #1 require_once in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-blog-header.php:19 #0 require in /www/htdocs/w0135d6c/dev3.elkeradhuber.at/index.php:17
Stack frames (43)
42
Twig\Error\RuntimeError
/engines/nucleus/views/partials/page.html.twig12
41
RuntimeException
/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php192
40
ScssPhp\ScssPhp\Exception\CompilerException
/compat/vendor/scssphp/scssphp/src/Compiler.php6114
39
ScssPhp\ScssPhp\Compiler error
/compat/vendor/scssphp/scssphp/src/Compiler.php5880
38
ScssPhp\ScssPhp\Compiler findImport
/src/classes/Gantry/Component/Stylesheet/Scss/Compiler.php37
37
Gantry\Component\Stylesheet\Scss\Compiler findImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2709
36
ScssPhp\ScssPhp\Compiler compileImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2740
35
ScssPhp\ScssPhp\Compiler compileImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2925
34
ScssPhp\ScssPhp\Compiler compileChild
/compat/vendor/scssphp/scssphp/src/Compiler.php2388
33
ScssPhp\ScssPhp\Compiler compileChildrenNoReturn
/compat/vendor/scssphp/scssphp/src/Compiler.php5759
32
ScssPhp\ScssPhp\Compiler importFile
/compat/vendor/scssphp/scssphp/src/Compiler.php2713
31
ScssPhp\ScssPhp\Compiler compileImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2925
30
ScssPhp\ScssPhp\Compiler compileChild
/compat/vendor/scssphp/scssphp/src/Compiler.php2388
29
ScssPhp\ScssPhp\Compiler compileChildrenNoReturn
/compat/vendor/scssphp/scssphp/src/Compiler.php744
28
ScssPhp\ScssPhp\Compiler compileRoot
/compat/vendor/scssphp/scssphp/src/Compiler.php522
27
ScssPhp\ScssPhp\Compiler compileString
/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php181
26
Gantry\Component\Stylesheet\ScssCompiler compileFile
/src/classes/Gantry/Component/Theme/ThemeTrait.php271
25
Gantry\Framework\Theme css
/src/classes/Gantry/Component/Content/Block/HtmlBlock.php86
24
Gantry\Component\Content\Block\HtmlBlock getStyles
/src/classes/Gantry/Framework/Document.php57
23
Gantry\Framework\Document registerStyles
/src/classes/Gantry/Framework/Document.php50
22
Gantry\Framework\Document registerAssets
/src/classes/Gantry/Framework/Base/Platform.php277
21
Gantry\Framework\Base\Platform finalize
/compat/vendor/twig/twig/src/Template.php700
20
Twig\Template getAttribute
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/08/08d990e4009d85453d4d7988476ba0f663a2e51f52dec603efa6f53f52392e8f.php63
19
__TwigTemplate_d869e7fe00809267f90cec8b2edd376a005894fd564eac58e3909341640d8ad0 block_page_footer
/compat/vendor/twig/twig/src/Template.php214
18
Twig\Template displayBlock
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/86/867db7fcfbab75977a39397666bfedff166e1f3abe06decf8900b7ed820161d2.php152
17
__TwigTemplate_81e7ad9ac604ab164e2d99c9dfd216e48fcc3665bd2712f1d1bc76c197216b22 doDisplay
/compat/vendor/twig/twig/src/Template.php453
16
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
15
Twig\Template display
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/08/08d990e4009d85453d4d7988476ba0f663a2e51f52dec603efa6f53f52392e8f.php36
14
__TwigTemplate_d869e7fe00809267f90cec8b2edd376a005894fd564eac58e3909341640d8ad0 doDisplay
/compat/vendor/twig/twig/src/Template.php453
13
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
12
Twig\Template display
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/cache/gantry5/g5_helium-child/twig/ca/ca87b54689baf97f82f04279f1d0a7c6075b4f80e35ed7d198a1b5f8cee092c8.php40
11
__TwigTemplate_67db544d36046378b598f89dcb7f07de04e4394002c6d5785cd831025c37a41f doDisplay
/compat/vendor/twig/twig/src/Template.php453
10
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
9
Twig\Template display
/compat/vendor/twig/twig/src/Template.php432
8
Twig\Template render
/compat/vendor/twig/twig/src/TemplateWrapper.php47
7
Twig\TemplateWrapper render
/vendor/timber/timber/lib/Loader.php79
6
Timber\Loader render
/vendor/timber/timber/lib/Timber.php334
5
Timber\Timber compile
/vendor/timber/timber/lib/Timber.php383
4
Timber\Timber fetch
/vendor/timber/timber/lib/Timber.php410
3
Timber\Timber render
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-content/themes/g5_helium/page.php46
2
include
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-includes/template-loader.php106
1
require_once
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/wp-blog-header.php19
0
require
/www/htdocs/w0135d6c/dev3.elkeradhuber.at/index.php17
{% extends "@nucleus/page.html.twig" %}
 
{% block page_head -%}
    {% if page_head %}
        {{ page_head|raw }}
    {% else %}
        {{ parent() }}
    {% endif %}
{%- endblock %}
 
{% block page_footer %}
    {% do gantry.platform.finalize() %}
    {{ wp_footer|raw }}
{% endblock %}
 
        // Set the lookup paths.
        $this->functions->setBasePath($path);
        $compiler->setImportPaths([[$this, 'findImport']]);
 
        // Run the compiler.
        $compiler->addVariables($this->getVariables(true));
        $scss = '$output-bourbon-deprecation-warnings: false;' . "\n" . '@import "' . $in . '.scss"';
        try {
            $this->result = $compiler->compileString($scss);
            $css = $this->result->getCss();
        } catch (CompilerException $e) {
            if (version_compare(static::$options['compatibility'], '5.5', '<')) {
                static::$options['legacy'][$in] = true;
                $this->warnings['__TITLE__'] = 'Please update your theme!';
                $this->warnings[$in] = ['WARNING: ' . $e->getMessage()];
 
                return $this->compileLegacyFile($in);
            }
 
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on error: {$e->getMessage()}", 500, $e);
        } catch (\Exception $e) {
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on fatal error: {$e->getMessage()}", 500, $e);
        }
        if (strpos($css, $scss) === 0) {
            $css = '/* ' . $scss . ' */';
        }
 
        // Extract map from css and save it as separate file.
        $pos = strrpos($css, '/*# sourceMappingURL=');
        if ($pos !== false) {
            $map = json_decode(urldecode(substr($css, $pos + 43, -3)), true);
 
            /** @var Document $document */
            $document = $gantry['document'];
 
            foreach ($map['sources'] as &$source) {
                $source = $document::url($source, false, -1);
            }
            unset($source);
 
Exception message: ERROR: CSS Compilation on file 'helium.scss' failed on error: `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2
     * Build an error (exception)
     *
     * @internal
     *
     * @param string                     $msg Message with optional sprintf()-style vararg parameters
     * @param bool|float|int|string|null ...$args
     *
     * @return CompilerException
     */
    public function error($msg, ...$args)
    {
        if ($args) {
            $msg = sprintf($msg, ...$args);
        }
 
        if (! $this->ignoreCallStackMessage) {
            $msg = $this->addLocationToMessage($msg);
        }
 
        return new CompilerException($msg);
    }
 
    /**
     * @param string $msg
     *
     * @return string
     */
    private function addLocationToMessage($msg)
    {
        $line   = $this->sourceLine;
        $column = $this->sourceColumn;
 
        $loc = isset($this->sourceNames[$this->sourceIndex])
            ? $this->getPrettyPath($this->sourceNames[$this->sourceIndex]) . " on line $line, at column $column"
            : "line: $line, column: $column";
 
        $msg = "$msg: $loc";
 
        $callStackMsg = $this->callStackMessage();
 
Exception message: `configuration/_core // Fonts @import ` file not found for @import: wp-content/themes/g5_helium/scss/helium.scss on line 13, at column 1 Call Stack: #0 import wp-content/themes/g5_helium/scss/helium.scss (unknown file) on line 2
                // check custom callback for import path
                $file = \call_user_func($dir, $url);
 
                if (! \is_null($file)) {
                    return $file;
                }
            }
        }
 
        if ($this->legacyCwdImportPath) {
            $path = $this->resolveImportPath($url, getcwd());
 
            if (!\is_null($path)) {
                @trigger_error('Resolving imports relatively to the current working directory is deprecated. If that\'s the intended behavior, the value of "getcwd()" should be added as an import path explicitly instead. If this was used for resolving relative imports of the input alongside "chdir" with the source directory, the path of the input file should be passed to "compileString()" instead.', E_USER_DEPRECATED);
 
                return $path;
            }
        }
 
        throw $this->error("`$url` file not found for @import");
    }
 
    /**
     * @param string $url
     * @param string $baseDir
     *
     * @return string|null
     */
    private function resolveImportPath($url, $baseDir)
    {
        $path = Path::join($baseDir, $url);
 
        $hasExtension = preg_match('/.s[ac]ss$/', $url);
 
        if ($hasExtension) {
            return $this->checkImportPathConflicts($this->tryImportPath($path));
        }
 
        $result = $this->checkImportPathConflicts($this->tryImportPathWithExtensions($path));
 
 * Class Compiler
 * @package Gantry\Component\Stylesheet\Scss
 */
class Compiler extends \ScssPhp\ScssPhp\Compiler
{
    static public $currentDir;
 
    /**
     * Return the file path for an import url if it exists
     *
     * @param string      $url
     * @param string|null $currentDir
     *
     * @return string|null
     */
    public function findImport($url, $currentDir = null)
    {
        static::$currentDir = $currentDir;
 
        return parent::findImport($url, null);
    }
}
 
 
        // t1 == t2, neither m1 nor m2 are "not"
        return [empty($m1) ? $m2 : $m1, $t1];
    }
 
    /**
     * Compile import; returns true if the value was something that could be imported
     *
     * @param array                                  $rawPath
     * @param \ScssPhp\ScssPhp\Formatter\OutputBlock $out
     * @param bool                                   $once
     *
     * @return bool
     */
    protected function compileImport($rawPath, OutputBlock $out, $once = false)
    {
        if ($rawPath[0] === Type::T_STRING) {
            $path = $this->compileStringContent($rawPath);
 
            if (strpos($path, 'url(') !== 0 && $filePath = $this->findImport($path, $this->currentDirectory)) {
                $this->registerImport($this->currentDirectory, $path, $filePath);
 
                if (! $once || ! \in_array($filePath, $this->importedFiles)) {
                    $this->importFile($filePath, $out);
                    $this->importedFiles[] = $filePath;
                }
 
                return true;
            }
 
            $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
            return false;
        }
 
        if ($rawPath[0] === Type::T_LIST) {
            // handle a list of strings
            if (\count($rawPath[2]) === 0) {
                return false;
            }
 
            return false;
        }
 
        if ($rawPath[0] === Type::T_LIST) {
            // handle a list of strings
            if (\count($rawPath[2]) === 0) {
                return false;
            }
 
            foreach ($rawPath[2] as $path) {
                if ($path[0] !== Type::T_STRING) {
                    $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
                    return false;
                }
            }
 
            foreach ($rawPath[2] as $path) {
                $this->compileImport($path, $out, $once);
            }
 
            return true;
        }
 
        $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
        return false;
    }
 
    /**
     * @param array $rawPath
     * @return string
     * @throws CompilerException
     */
    protected function compileImportPath($rawPath)
    {
        $path = $this->compileValue($rawPath);
 
        // case url() without quotes : suppress \r \n remaining in the path
            $sourceIndex  = array_search($out->sourceName, $this->sourceNames);
            $this->sourceColumn = $out->sourceColumn;
 
            if ($sourceIndex === false) {
                $sourceIndex = null;
            }
            $this->sourceIndex = $sourceIndex;
        }
 
        switch ($child[0]) {
            case Type::T_SCSSPHP_IMPORT_ONCE:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out, true);
                break;
 
            case Type::T_IMPORT:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out);
                break;
 
            case Type::T_DIRECTIVE:
                $this->compileDirective($child[1], $out);
                break;
 
            case Type::T_AT_ROOT:
                $this->compileAtRoot($child[1]);
                break;
 
            case Type::T_MEDIA:
                $this->compileMedia($child[1]);
                break;
 
            case Type::T_BLOCK:
                $this->compileBlock($child[1]);
                break;
 
            case Type::T_CHARSET:
                break;
     *
     * @return void
     *
     * @throws \Exception
     */
    protected function compileChildrenNoReturn($stms, OutputBlock $out, $selfParent = null, $traceName = '')
    {
        $this->pushCallStack($traceName);
 
        foreach ($stms as $stm) {
            if ($selfParent && isset($stm[1]) && \is_object($stm[1]) && $stm[1] instanceof Block) {
                $oldSelfParent = $stm[1]->selfParent;
                $stm[1]->selfParent = $selfParent;
                $ret = $this->compileChild($stm, $out);
                $stm[1]->selfParent = $oldSelfParent;
            } elseif ($selfParent && \in_array($stm[0], [Type::T_INCLUDE, Type::T_EXTEND])) {
                $stm['selfParent'] = $selfParent;
                $ret = $this->compileChild($stm, $out);
            } else {
                $ret = $this->compileChild($stm, $out);
            }
 
            if (isset($ret)) {
                throw $this->error('@return may only be used within a function');
            }
        }
 
        $this->popCallStack();
    }
 
 
    /**
     * evaluate media query : compile internal value keeping the structure unchanged
     *
     * @param array $queryList
     *
     * @return array
     */
    protected function evaluateMediaQuery($queryList)
    {
 
            throw $this->error('The Sass indented syntax is not implemented.');
        }
 
        if (isset($this->importCache[$realPath])) {
            $this->handleImportLoop($realPath);
 
            $tree = $this->importCache[$realPath];
        } else {
            $code   = file_get_contents($path);
            $parser = $this->parserFactory($path);
            $tree   = $parser->parse($code);
 
            $this->importCache[$realPath] = $tree;
        }
 
        $currentDirectory = $this->currentDirectory;
        $this->currentDirectory = dirname($path);
 
        $this->compileChildrenNoReturn($tree->children, $out);
        $this->currentDirectory = $currentDirectory;
        $this->popCallStack();
    }
 
    /**
     * Save the imported files with their resolving path context
     *
     * @param string|null $currentDirectory
     * @param string      $path
     * @param string      $filePath
     *
     * @return void
     */
    private function registerImport($currentDirectory, $path, $filePath)
    {
        $this->resolvedImports[] = ['currentDir' => $currentDirectory, 'path' => $path, 'filePath' => $filePath];
    }
 
    /**
     * Detects whether the import is a CSS import.
 
    /**
     * Compile import; returns true if the value was something that could be imported
     *
     * @param array                                  $rawPath
     * @param \ScssPhp\ScssPhp\Formatter\OutputBlock $out
     * @param bool                                   $once
     *
     * @return bool
     */
    protected function compileImport($rawPath, OutputBlock $out, $once = false)
    {
        if ($rawPath[0] === Type::T_STRING) {
            $path = $this->compileStringContent($rawPath);
 
            if (strpos($path, 'url(') !== 0 && $filePath = $this->findImport($path, $this->currentDirectory)) {
                $this->registerImport($this->currentDirectory, $path, $filePath);
 
                if (! $once || ! \in_array($filePath, $this->importedFiles)) {
                    $this->importFile($filePath, $out);
                    $this->importedFiles[] = $filePath;
                }
 
                return true;
            }
 
            $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
            return false;
        }
 
        if ($rawPath[0] === Type::T_LIST) {
            // handle a list of strings
            if (\count($rawPath[2]) === 0) {
                return false;
            }
 
            foreach ($rawPath[2] as $path) {
                if ($path[0] !== Type::T_STRING) {
                    $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
            $sourceIndex  = array_search($out->sourceName, $this->sourceNames);
            $this->sourceColumn = $out->sourceColumn;
 
            if ($sourceIndex === false) {
                $sourceIndex = null;
            }
            $this->sourceIndex = $sourceIndex;
        }
 
        switch ($child[0]) {
            case Type::T_SCSSPHP_IMPORT_ONCE:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out, true);
                break;
 
            case Type::T_IMPORT:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out);
                break;
 
            case Type::T_DIRECTIVE:
                $this->compileDirective($child[1], $out);
                break;
 
            case Type::T_AT_ROOT:
                $this->compileAtRoot($child[1]);
                break;
 
            case Type::T_MEDIA:
                $this->compileMedia($child[1]);
                break;
 
            case Type::T_BLOCK:
                $this->compileBlock($child[1]);
                break;
 
            case Type::T_CHARSET:
                break;
     *
     * @return void
     *
     * @throws \Exception
     */
    protected function compileChildrenNoReturn($stms, OutputBlock $out, $selfParent = null, $traceName = '')
    {
        $this->pushCallStack($traceName);
 
        foreach ($stms as $stm) {
            if ($selfParent && isset($stm[1]) && \is_object($stm[1]) && $stm[1] instanceof Block) {
                $oldSelfParent = $stm[1]->selfParent;
                $stm[1]->selfParent = $selfParent;
                $ret = $this->compileChild($stm, $out);
                $stm[1]->selfParent = $oldSelfParent;
            } elseif ($selfParent && \in_array($stm[0], [Type::T_INCLUDE, Type::T_EXTEND])) {
                $stm['selfParent'] = $selfParent;
                $ret = $this->compileChild($stm, $out);
            } else {
                $ret = $this->compileChild($stm, $out);
            }
 
            if (isset($ret)) {
                throw $this->error('@return may only be used within a function');
            }
        }
 
        $this->popCallStack();
    }
 
 
    /**
     * evaluate media query : compile internal value keeping the structure unchanged
     *
     * @param array $queryList
     *
     * @return array
     */
    protected function evaluateMediaQuery($queryList)
    {
            $out->sourceName = isset($this->sourceNames[$this->sourceIndex]) ? $this->sourceNames[$this->sourceIndex] : '(stdin)';
            $out->sourceLine = $this->sourceLine;
            $out->sourceColumn = $this->sourceColumn;
        }
 
        return $out;
    }
 
    /**
     * Compile root
     *
     * @param \ScssPhp\ScssPhp\Block $rootBlock
     *
     * @return void
     */
    protected function compileRoot(Block $rootBlock)
    {
        $this->rootBlock = $this->scope = $this->makeOutputBlock(Type::T_ROOT);
 
        $this->compileChildrenNoReturn($rootBlock->children, $this->scope);
        assert($this->scope !== null);
        $this->flattenSelectors($this->scope);
        $this->missingSelectors();
    }
 
    /**
     * Report missing selectors
     *
     * @return void
     */
    protected function missingSelectors()
    {
        foreach ($this->extends as $extend) {
            if (isset($extend[3])) {
                continue;
            }
 
            list($target, $origin, $block) = $extend;
 
            // ignore if !optional
            $this->rootDirectory = getcwd();
        }
 
        try {
            $this->parser = $this->parserFactory($path);
            $tree         = $this->parser->parse($source);
            $this->parser = null;
 
            $this->formatter = new $this->configuredFormatter();
            $this->rootBlock = null;
            $this->rootEnv   = $this->pushEnv($tree);
 
            $warnCallback = function ($message, $deprecation) {
                $this->logger->warn($message, $deprecation);
            };
            $previousWarnCallback = Warn::setCallback($warnCallback);
 
            try {
                $this->injectVariables($this->registeredVars);
                $this->compileRoot($tree);
                $this->popEnv();
            } finally {
                Warn::setCallback($previousWarnCallback);
            }
 
            $sourceMapGenerator = null;
 
            if ($this->sourceMap) {
                if (\is_object($this->sourceMap) && $this->sourceMap instanceof SourceMapGenerator) {
                    $sourceMapGenerator = $this->sourceMap;
                    $this->sourceMap = self::SOURCE_MAP_FILE;
                } elseif ($this->sourceMap !== self::SOURCE_MAP_NONE) {
                    $sourceMapGenerator = new SourceMapGenerator($this->sourceMapOptions);
                }
            }
            assert($this->scope !== null);
 
            $out = $this->formatter->format($this->scope, $sourceMapGenerator);
 
            $prefix = '';
        if ($file->locked() === false) {
            // File was already locked by another process, lets avoid compiling the same file twice.
            return false;
        }
 
        $logfile = fopen('php://memory', 'rb+');
        $logger = new StreamLogger($logfile, true);
 
        $compiler = $this->getCompiler();
        $compiler->setLogger($logger);
 
        // Set the lookup paths.
        $this->functions->setBasePath($path);
        $compiler->setImportPaths([[$this, 'findImport']]);
 
        // Run the compiler.
        $compiler->addVariables($this->getVariables(true));
        $scss = '$output-bourbon-deprecation-warnings: false;' . "\n" . '@import "' . $in . '.scss"';
        try {
            $this->result = $compiler->compileString($scss);
            $css = $this->result->getCss();
        } catch (CompilerException $e) {
            if (version_compare(static::$options['compatibility'], '5.5', '<')) {
                static::$options['legacy'][$in] = true;
                $this->warnings['__TITLE__'] = 'Please update your theme!';
                $this->warnings[$in] = ['WARNING: ' . $e->getMessage()];
 
                return $this->compileLegacyFile($in);
            }
 
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on error: {$e->getMessage()}", 500, $e);
        } catch (\Exception $e) {
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on fatal error: {$e->getMessage()}", 500, $e);
        }
        if (strpos($css, $scss) === 0) {
            $css = '/* ' . $scss . ' */';
        }
 
        // Extract map from css and save it as separate file.
        $pos = strrpos($css, '/*# sourceMappingURL=');
    /**
     * Returns URL to CSS file.
     *
     * If file does not exist, it will be created by using CSS compiler.
     *
     * @param string $name
     * @return string
     */
    public function css($name)
    {
        if (!isset($this->cssCache[$name])) {
            $compiler = $this->compiler();
 
            if ($compiler->needsCompile($name, [$this, 'getCssVariables'])) {
                if (\GANTRY_DEBUGGER) {
                    Debugger::startTimer("css-{$name}", "Compiling CSS: {$name}");
                    Debugger::addMessage("Compiling CSS: {$name}");
                }
 
                $compiler->compileFile($name);
 
                if (\GANTRY_DEBUGGER) {
                    Debugger::stopTimer("css-{$name}");
                }
            }
 
            $this->cssCache[$name] = $compiler->getCssUrl($name);
        }
 
        return $this->cssCache[$name];
    }
 
    /**
     * @return array
     */
    public function getCssVariables()
    {
        if ($this->preset) {
            $variables = $this->presets()->flatten($this->preset . '.styles', '-');
        } else {
        $styles = $this->getAssetsInLocation('styles', $location);
 
        if (!$styles) {
            return [];
        }
 
        $gantry = Gantry::instance();
 
        /** @var Theme|null $theme */
        $theme = isset($gantry['theme']) ? $gantry['theme'] : null;
 
        /** @var Document $document */
        $document = $gantry['document'];
 
        foreach ($styles as $key => $style) {
            if (isset($style['href'])) {
                $url = $style['href'];
                if ($theme && preg_match('|\.scss$|', $url)) {
                    // Compile SCSS files.
                    $url = $theme->css(Gantry::basename($url, '.scss'));
                }
                // Deal with streams and relative paths.
                $url = $document::url($url, null, null, false);
 
                $styles[$key]['href'] = $url;
            }
        }
 
        return $styles;
    }
 
    /**
     * @param string $location
     * @return array
     * @since 5.4.3
     */
    public function getScripts($location = 'head')
    {
        $scripts = $this->getAssetsInLocation('scripts', $location);
 
        'bootstrap.5' => 'registerBootstrap5',
        'mootools' => 'registerMootools',
        'mootools.framework' => 'registerMootools',
        'mootools.core' => 'registerMootools',
        'mootools.more' => 'registerMootoolsMore',
        'lightcase' => 'registerLightcase',
        'lightcase.init' => 'registerLightcaseInit',
    ];
 
    public static function registerAssets()
    {
        static::registerFrameworks();
        static::registerStyles();
        static::registerScripts('head');
        static::registerScripts('footer');
    }
 
    public static function registerStyles()
    {
        $styles = static::$stack[0]->getStyles();
 
        foreach ($styles as $style) {
            switch ($style[':type']) {
                case 'file':
                    $array = explode('?', $style['href']);
                    $href = array_shift($array);
                    $version = array_shift($array) ?: false;
                    $name = isset($style['id']) ? $style['id'] : Gantry::basename($href, '.css');
                    if (strpos($version, '=')) {
                        $href .= '?' . $version;
                        $version = null;
                    }
                    \wp_enqueue_style($name, $href, [], $version, $style['media']);
                    break;
                case 'inline':
                    $type = !empty($style['type']) ? $style['type'] : 'text/css';
                    self::$wp_styles[] = "<style type=\"{$type}\">{$style['content']}</style>";
                    break;
            }
        }
        'jquery' => 'registerJquery',
        'jquery.framework' => 'registerJquery',
        'jquery.ui.core' => 'registerJqueryUiCore',
        'jquery.ui.sortable' => 'registerJqueryUiSortable',
        'bootstrap.2' => 'registerBootstrap2',
        'bootstrap.3' => 'registerBootstrap3',
        'bootstrap.4' => 'registerBootstrap4',
        'bootstrap.5' => 'registerBootstrap5',
        'mootools' => 'registerMootools',
        'mootools.framework' => 'registerMootools',
        'mootools.core' => 'registerMootools',
        'mootools.more' => 'registerMootoolsMore',
        'lightcase' => 'registerLightcase',
        'lightcase.init' => 'registerLightcaseInit',
    ];
 
    public static function registerAssets()
    {
        static::registerFrameworks();
        static::registerStyles();
        static::registerScripts('head');
        static::registerScripts('footer');
    }
 
    public static function registerStyles()
    {
        $styles = static::$stack[0]->getStyles();
 
        foreach ($styles as $style) {
            switch ($style[':type']) {
                case 'file':
                    $array = explode('?', $style['href']);
                    $href = array_shift($array);
                    $version = array_shift($array) ?: false;
                    $name = isset($style['id']) ? $style['id'] : Gantry::basename($href, '.css');
                    if (strpos($version, '=')) {
                        $href .= '?' . $version;
                        $version = null;
                    }
                    \wp_enqueue_style($name, $href, [], $version, $style['media']);
    {
        return null;
    }
 
    /**
     * @param string $text
     * @return string
     */
    public function filter($text)
    {
        return $text;
    }
 
    public function finalize()
    {
        $gantry = Gantry::instance();
        /** @var Document $document */
        $document = $gantry['document'];
 
        $document::registerAssets();
    }
 
    /**
     * @return mixed|null
     */
    public function call()
    {
        $args = func_get_args();
        $callable = array_shift($args);
        return is_callable($callable) ? call_user_func_array($callable, $args) : null;
    }
 
    /**
     * @param string $action
     * @param int|string|null $id
     * @return bool
     */
    public function authorize($action, $id = null)
    {
        return true;
            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
                return;
            }
 
            throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext());
        }
 
        if ($isDefinedTest) {
            return true;
        }
 
        if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
            $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method);
        }
 
        // Some objects throw exceptions when they have __call, and the method we try
        // to call is not supported. If ignoreStrictCheck is true, we should return null.
        try {
            if (!$arguments) {
                $ret = $object->$method();
            } else {
                $ret = \call_user_func_array([$object, $method], $arguments);
            }
        } catch (\BadMethodCallException $e) {
            if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
                return;
            }
            throw $e;
        }
 
        // @deprecated in 1.28
        if ($object instanceof \Twig_TemplateInterface) {
            $self = $object->getTemplateName() === $this->getTemplateName();
            $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName());
            if ('renderBlock' === $method || 'displayBlock' === $method) {
                $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('hasBlock' === $method) {
                $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('render' === $method || 'display' === $method) {
                $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName());
            // line 5
            echo "        ";
            echo ($context["page_head"] ?? null);
            echo "
    ";
        } else {
            // line 7
            echo "        ";
            $this->displayParentBlock("page_head", $context, $blocks);
            echo "
    ";
        }
    }
 
    // line 11
    public function block_page_footer($context, array $blocks = [])
    {
        // line 12
        echo "    ";
        $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "platform", []), "finalize", [], "method");
        // line 13
        echo "    ";
        echo ($context["wp_footer"] ?? null);
        echo "
";
    }
 
    public function getTemplateName()
    {
        return "partials/page.html.twig";
    }
 
    public function isTraitable()
    {
        return false;
    }
 
    public function getDebugInfo()
    {
        return array (  65 => 13,  62 => 12,  59 => 11,  51 => 7,  45 => 5,  43 => 4,  40 => 3,  30 => 1,);
 
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->$block($context, $blocks);
            } catch (Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for \Twig\Error\LoaderError exceptions
                // see \Twig\Error\LoaderError
                if (-1 === $e->getTemplateLine()) {
                    $e->guess();
                }
 
                throw $e;
            } catch (\Exception $e) {
                $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
                $e->guess();
 
                throw $e;
            }
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
        // line 62
        echo "    ";
        echo twig_join_filter($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "document", []), "getHtml", [0 => "body_bottom"], "method"), "
    ");
        echo "
";
        $context["body_bottom"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 65
        $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "document", []), "addScript", [0 => $this->env->getExtension('Gantry\Component\Twig\TwigExtension')->urlFunc("gantry-assets://js/main.js"), 1 => 11, 2 => "footer"], "method");
        // line 69
        ob_start(function () { return ''; });
        // line 70
        echo "    ";
        $this->displayBlock('page_head', $context, $blocks);
        $context["page_head"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 75
        ob_start(function () { return ''; });
        // line 76
        echo "    ";
        $this->displayBlock('page_footer', $context, $blocks);
        // line 80
        echo "
    ";
        // line 81
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "debugger", []), "render", [], "method");
        echo "
";
        $context["page_footer"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 84
        $this->displayBlock('page', $context, $blocks);
    }
 
    // line 8
    public function block_content($context, array $blocks = [])
    {
        // line 9
        echo "        ";
    }
 
    // line 21
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
    public function __construct(Environment $env)
    {
        parent::__construct($env);
 
        $this->blocks = [
            'page_head' => [$this, 'block_page_head'],
            'page_footer' => [$this, 'block_page_footer'],
        ];
    }
 
    protected function doGetParent(array $context)
    {
        // line 1
        return "@nucleus/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = [])
    {
        $this->parent = $this->loadTemplate("@nucleus/page.html.twig", "partials/page.html.twig", 1);
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_head($context, array $blocks = [])
    {
        // line 4
        if (($context["page_head"] ?? null)) {
            // line 5
            echo "        ";
            echo ($context["page_head"] ?? null);
            echo "
    ";
        } else {
            // line 7
            echo "        ";
            $this->displayParentBlock("page_head", $context, $blocks);
            echo "
    ";
        }
    }
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
        $this->blocks = [
            'content' => [$this, 'block_content'],
        ];
    }
 
    protected function doGetParent(array $context)
    {
        // line 1
        return "partials/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = [])
    {
        // line 2
        $context["twigTemplate"] = "page.html.twig";
        // line 3
        $context["scope"] = "page";
        // line 1
        $this->parent = $this->loadTemplate("partials/page.html.twig", "page.html.twig", 1);
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 5
    public function block_content($context, array $blocks = [])
    {
        // line 6
        echo "
    <div class=\"platform-content\">
        <div class=\"content-wrapper\">
            <section class=\"entry\">
 
                ";
        // line 11
        $this->loadTemplate([0 => (("partials/content-" . ($context["scope"] ?? null)) . ".html.twig"), 1 => "partials/content.html.twig"], "page.html.twig", 11)->display($context);
        // line 12
        echo "
            </section>
        </div> <!-- /content-wrapper -->
    </div>
 
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
     * @internal
     */
    public function __construct(Environment $env, Template $template)
    {
        $this->env = $env;
        $this->template = $template;
    }
 
    /**
     * Renders the template.
     *
     * @param array $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     */
    public function render($context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        return $this->template->render($context, \func_num_args() > 1 ? func_get_arg(1) : []);
    }
 
    /**
     * Displays the template.
     *
     * @param array $context An array of parameters to pass to the template
     */
    public function display($context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        $this->template->display($context, \func_num_args() > 1 ? func_get_arg(1) : []);
    }
 
    /**
     * Checks if a block is defined.
     *
     * @param string $name    The block name
     * @param array  $context An array of parameters to pass to the template
     *
 
        $key = null;
        $output = false;
        if ( false !== $expires ) {
            ksort($data);
            $key = md5($file.json_encode($data));
            $output = $this->get_cache($key, self::CACHEGROUP, $cache_mode);
        }
 
        if ( false === $output || null === $output ) {
            $twig = $this->get_twig();
            if ( strlen($file) ) {
                $loader = $this->get_loader();
                $result = $loader->getCacheKey($file);
                do_action('timber_loader_render_file', $result);
            }
            $data = apply_filters('timber_loader_render_data', $data);
            $data = apply_filters('timber/loader/render_data', $data, $file);
            $template = $twig->load($file);
            $output = $template->render($data);
        }
 
        if ( false !== $output && false !== $expires && null !== $key ) {
            $this->delete_cache();
            $this->set_cache($key, $output, self::CACHEGROUP, $expires, $cache_mode);
        }
        $output = apply_filters('timber_output', $output);
        return apply_filters('timber/output', $output, $data, $file);
    }
 
    protected function delete_cache() {
        Cleaner::delete_transients();
    }
 
    /**
     * Get first existing template.
     *
     * @param array|string $templates  Name(s) of the Twig template(s) to choose from.
     * @return string|bool             Name of chosen template, otherwise false.
     */
        if ( $via_render ) {
            $file = apply_filters('timber_render_file', $file);
        } else {
            $file = apply_filters('timber_compile_file', $file);
        }
 
        $output = false;
 
        if ($file !== false) {
            if ( is_null($data) ) {
                $data = array();
            }
 
            if ( $via_render ) {
                $data = apply_filters('timber_render_data', $data);
            } else {
                $data = apply_filters('timber_compile_data', $data);
            }
 
            $output = $loader->render($file, $data, $expires, $cache_mode);
        } else {
            if ( is_array($filenames) ) {
                $filenames = implode(", ", $filenames);
            }
            Helper::error_log( 'Error loading your template files: '.$filenames.'. Make sure one of these files exists.' );
        }
 
        do_action('timber_compile_done');
        return $output;
    }
 
    /**
     * Compile a string.
     *
     * @api
     * @example
     * ```php
     * $data = array(
     *     'username' => 'Jane Doe',
     * );
        $twig = $dummy_loader->get_twig();
        $template = $twig->createTemplate($string);
        return $template->render($data);
    }
 
    /**
     * Fetch function.
     *
     * @api
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     *                                 array, the first value is used for non-logged in visitors, the second for users.
     *                                 Default false.
     * @param string       $cache_mode Optional. Any of the cache mode constants defined in TimberLoader.
     * @return bool|string The returned output.
     */
    public static function fetch( $filenames, $data = array(), $expires = false, $cache_mode = Loader::CACHE_USE_DEFAULT ) {
        $output = self::compile($filenames, $data, $expires, $cache_mode, true);
        $output = apply_filters('timber_compile_result', $output);
        return $output;
    }
 
    /**
     * Render function.
     *
     * Passes data to a Twig file and echoes the output.
     *
     * @api
     * @example
     * ```php
     * $context = Timber::context();
     *
     * Timber::render( 'index.twig', $context );
     * ```
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     * Passes data to a Twig file and echoes the output.
     *
     * @api
     * @example
     * ```php
     * $context = Timber::context();
     *
     * Timber::render( 'index.twig', $context );
     * ```
     * @param array|string $filenames  Name of the Twig file to render. If this is an array of files, Timber will
     *                                 render the first file that exists.
     * @param array        $data       Optional. An array of data to use in Twig template.
     * @param bool|int     $expires    Optional. In seconds. Use false to disable cache altogether. When passed an
     *                                 array, the first value is used for non-logged in visitors, the second for users.
     *                                 Default false.
     * @param string       $cache_mode Optional. Any of the cache mode constants defined in TimberLoader.
     * @return bool|string The echoed output.
     */
    public static function render( $filenames, $data = array(), $expires = false, $cache_mode = Loader::CACHE_USE_DEFAULT ) {
        $output = self::fetch($filenames, $data, $expires, $cache_mode);
        echo $output;
        return $output;
    }
 
    /**
     * Render a string with Twig variables.
     *
     * @api
     * @example
     * ```php
     * $data = array(
     *     'username' => 'Jane Doe',
     * );
     *
     * Timber::render_string( 'Hi {{ username }}, I’m a string with a custom Twig variable', $data );
     * ```
     * @param string $string A string with Twig variables.
     * @param array  $data   An array of data to use in Twig template.
     * @return bool|string
     */
 * /mytheme/views/page-mypage.html.twig
 * (which will still route through this PHP file)
 * OR
 * /mytheme/page-mypage.php
 * (in which case you'll want to duplicate this file and save to the above path)
 */
 
$gantry = Gantry::instance();
 
/** @var Theme $theme */
$theme  = $gantry['theme'];
 
// We need to render contents of <head> before plugin content gets added.
$context              = Timber::get_context();
$context['page_head'] = $theme->render('partials/page_head.html.twig', $context);
 
$post            = Timber::query_post();
$context['post'] = $post;
 
Timber::render(['page-' . $post->post_name . '.html.twig', 'page.html.twig'], $context);
 
            }
 
            break;
        }
    }
 
    if ( ! $template ) {
        $template = get_index_template();
    }
 
    /**
     * Filters the path of the current template before including it.
     *
     * @since 3.0.0
     *
     * @param string $template The path of the template to include.
     */
    $template = apply_filters( 'template_include', $template );
    if ( $template ) {
        include $template;
    } elseif ( current_user_can( 'switch_themes' ) ) {
        $theme = wp_get_theme();
        if ( $theme->errors() ) {
            wp_die( $theme->errors() );
        }
    }
    return;
}
 
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */
 
if ( ! isset( $wp_did_header ) ) {
 
    $wp_did_header = true;
 
    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
 
    // Set up the WordPress query.
    wp();
 
    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';
 
}
 
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );
 
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
SERVER_SOFTWARE Apache
REQUEST_URI /
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
USER w0135d6c
HOME /www/htdocs/w0135d6c
SCRIPT_NAME /index.php
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/2.0
GATEWAY_INTERFACE CGI/1.1
REMOTE_PORT 26828
SCRIPT_FILENAME /www/htdocs/w0135d6c/dev3.elkeradhuber.at/index.php
SERVER_ADMIN webmaster@dev3.elkeradhuber.at
CONTEXT_DOCUMENT_ROOT /www/htdocs/w0135d6c/dev3.elkeradhuber.at/
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /www/htdocs/w0135d6c/dev3.elkeradhuber.at/
REMOTE_ADDR 216.73.216.183
SERVER_PORT 443
SERVER_ADDR 85.13.163.127
SERVER_NAME dev3.elkeradhuber.at
SERVER_SIGNATURE
HTTP_X_REAL_CLIENT_UA Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_X_REAL_CLIENT_IP 216.73.216.183
HTTP_HOST dev3.elkeradhuber.at
HTTP_REFERER https://www.dev3.elkeradhuber.at/
HTTP_ACCEPT_ENCODING gzip, br, zstd, deflate
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT */*
SSL_CLIENT_CERT
SSL_SERVER_CERT -----BEGIN CERTIFICATE----- MIIDrTCCAzSgAwIBAgISBeNwxGboaA6ygSTJVeQE3WD1MAoGCCqGSM49BAMDMDIx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF NzAeFw0yNTEyMDQxMzEwNThaFw0yNjAzMDQxMzEwNTdaMB8xHTAbBgNVBAMTFGRl djMuZWxrZXJhZGh1YmVyLmF0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3RgE cQzMzBRSMPpstYxgCfCCneuzyDhi4aszcL98+6RAcu08ZIp43yBDMGQCPd9uE7H1 vT1v9e1SLJABsM56wKOCAjswggI3MA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAU BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUAIfX SMTVUKKFET2EXjyUqCeTj0QwHwYDVR0jBBgwFoAUrkie3IcdRKBv2qLlYHQEeMKc AIAwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTcuaS5sZW5j ci5vcmcvMDkGA1UdEQQyMDCCFGRldjMuZWxrZXJhZGh1YmVyLmF0ghh3d3cuZGV2 My5lbGtlcmFkaHViZXIuYXQwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcw JTAjoCGgH4YdaHR0cDovL2U3LmMubGVuY3Iub3JnLzExOC5jcmwwggECBgorBgEE AdZ5AgQCBIHzBIHwAO4AdQBkEcRspBLsp4kcogIuALyrTygH1B41J6vq/tUDyX3N 8AAAAZrpsk7sAAAEAwBGMEQCIHErIL3uijFSv0xiHVoq/H4HSqMoSTAd3xyWNjbV mp42AiBgHvhvhaqcbNQzFsBPXJ/vjv4RXjG1gmxCneb1/mqUbwB1ANFuqaVoB35m NaA/N6XdvAOlPEESFNSIGPXpMbMjy5UEAAABmumyT90AAAQDAEYwRAIgatg0sgHf MHojdOuU3OlFc9re1b9jXWbiTlFiXwNaUOYCIHUCrmUMaU7UqG+ZT9ldxb76dfl7 iPcR40eqoUHDn6rDMAoGCCqGSM49BAMDA2cAMGQCMGkyzE/Ri0vQVLD06Z642Bay RHbqufVS2+RkWoGU8OAf69SmnZij5+1Tmit9eOTeCgIwSVw6sjtk9btIlHbSAhWO 38Aw+6WvMPeqXgArwJs/Z4FReABOrm8Xes4DJeBfiNLw -----END CERTIFICATE-----
SSL_TLS_SNI dev3.elkeradhuber.at
HTTPS on
H2_STREAM_TAG 3992631-483-1
H2_STREAM_ID 1
H2_PUSHED_ON
H2_PUSHED
H2_PUSH off
H2PUSH off
HTTP2 on
UNIQUE_ID aTaPDFHMuVPK_SE2GIuqPgAAwx0
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1765183244.89
REQUEST_TIME 1765183244
argv Array ( )
argc 0
Key Value
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
USER w0135d6c
HOME /www/htdocs/w0135d6c
SCRIPT_NAME /index.php
REQUEST_URI /
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/2.0
GATEWAY_INTERFACE CGI/1.1
REMOTE_PORT 26828
SCRIPT_FILENAME /www/htdocs/w0135d6c/dev3.elkeradhuber.at/index.php
SERVER_ADMIN webmaster@dev3.elkeradhuber.at
CONTEXT_DOCUMENT_ROOT /www/htdocs/w0135d6c/dev3.elkeradhuber.at/
CONTEXT_PREFIX
REQUEST_SCHEME https
DOCUMENT_ROOT /www/htdocs/w0135d6c/dev3.elkeradhuber.at/
REMOTE_ADDR 216.73.216.183
SERVER_PORT 443
SERVER_ADDR 85.13.163.127
SERVER_NAME dev3.elkeradhuber.at
SERVER_SOFTWARE Apache
SERVER_SIGNATURE
HTTP_X_REAL_CLIENT_UA Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_X_REAL_CLIENT_IP 216.73.216.183
HTTP_HOST dev3.elkeradhuber.at
HTTP_REFERER https://www.dev3.elkeradhuber.at/
HTTP_ACCEPT_ENCODING gzip, br, zstd, deflate
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT */*
SSL_CLIENT_CERT
SSL_SERVER_CERT -----BEGIN CERTIFICATE----- MIIDrTCCAzSgAwIBAgISBeNwxGboaA6ygSTJVeQE3WD1MAoGCCqGSM49BAMDMDIx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF NzAeFw0yNTEyMDQxMzEwNThaFw0yNjAzMDQxMzEwNTdaMB8xHTAbBgNVBAMTFGRl djMuZWxrZXJhZGh1YmVyLmF0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3RgE cQzMzBRSMPpstYxgCfCCneuzyDhi4aszcL98+6RAcu08ZIp43yBDMGQCPd9uE7H1 vT1v9e1SLJABsM56wKOCAjswggI3MA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAU BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUAIfX SMTVUKKFET2EXjyUqCeTj0QwHwYDVR0jBBgwFoAUrkie3IcdRKBv2qLlYHQEeMKc AIAwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRwOi8vZTcuaS5sZW5j ci5vcmcvMDkGA1UdEQQyMDCCFGRldjMuZWxrZXJhZGh1YmVyLmF0ghh3d3cuZGV2 My5lbGtlcmFkaHViZXIuYXQwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcw JTAjoCGgH4YdaHR0cDovL2U3LmMubGVuY3Iub3JnLzExOC5jcmwwggECBgorBgEE AdZ5AgQCBIHzBIHwAO4AdQBkEcRspBLsp4kcogIuALyrTygH1B41J6vq/tUDyX3N 8AAAAZrpsk7sAAAEAwBGMEQCIHErIL3uijFSv0xiHVoq/H4HSqMoSTAd3xyWNjbV mp42AiBgHvhvhaqcbNQzFsBPXJ/vjv4RXjG1gmxCneb1/mqUbwB1ANFuqaVoB35m NaA/N6XdvAOlPEESFNSIGPXpMbMjy5UEAAABmumyT90AAAQDAEYwRAIgatg0sgHf MHojdOuU3OlFc9re1b9jXWbiTlFiXwNaUOYCIHUCrmUMaU7UqG+ZT9ldxb76dfl7 iPcR40eqoUHDn6rDMAoGCCqGSM49BAMDA2cAMGQCMGkyzE/Ri0vQVLD06Z642Bay RHbqufVS2+RkWoGU8OAf69SmnZij5+1Tmit9eOTeCgIwSVw6sjtk9btIlHbSAhWO 38Aw+6WvMPeqXgArwJs/Z4FReABOrm8Xes4DJeBfiNLw -----END CERTIFICATE-----
SSL_TLS_SNI dev3.elkeradhuber.at
HTTPS on
H2_STREAM_TAG 3992631-483-1
H2_STREAM_ID 1
H2_PUSHED_ON
H2_PUSHED
H2_PUSH off
H2PUSH off
HTTP2 on
UNIQUE_ID aTaPDFHMuVPK_SE2GIuqPgAAwx0
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1765183244.89
REQUEST_TIME 1765183244
argv Array ( )
argc 0
ps2id_p_plugin_slug page-scroll-to-id
ps2id_p_plugin_unbind_defer_script jquery.malihu.PageScroll2id-unbind-defer.js
ps2id_p_version 1.7.9
ps2id_p_pl_pfx mPS2id_
0. Whoops\Handler\PrettyPageHandler