library/smarty/libs/sysplugins/smarty_internal_templateparser.php
changeset 46 f11c31f7fa3e
parent 45 a56e7f9a0463
child 47 03388ec805b4
equal deleted inserted replaced
45:a56e7f9a0463 46:f11c31f7fa3e
     1 <?php
       
     2 
       
     3 class TP_yyToken implements ArrayAccess {
       
     4     public $string = '';
       
     5 
       
     6     public $metadata = array();
       
     7 
       
     8     public function __construct($s, $m = array()) {
       
     9         if ($s instanceof TP_yyToken) {
       
    10             $this->string = $s->string;
       
    11             $this->metadata = $s->metadata;
       
    12         } else {
       
    13             $this->string = (string)$s;
       
    14             if ($m instanceof TP_yyToken) {
       
    15                 $this->metadata = $m->metadata;
       
    16             } elseif (is_array($m)) {
       
    17                 $this->metadata = $m;
       
    18             }
       
    19         }
       
    20     }
       
    21 
       
    22     public function __toString() {
       
    23         return $this->string;
       
    24     }
       
    25 
       
    26     public function offsetExists($offset) {
       
    27         return isset($this->metadata[$offset]);
       
    28     }
       
    29 
       
    30     public function offsetGet($offset) {
       
    31         return $this->metadata[$offset];
       
    32     }
       
    33 
       
    34     public function offsetSet($offset, $value) {
       
    35         if ($offset === null) {
       
    36             if (isset($value[0])) {
       
    37                 $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
       
    38                 $this->metadata = array_merge($this->metadata, $x);
       
    39 
       
    40                 return;
       
    41             }
       
    42             $offset = count($this->metadata);
       
    43         }
       
    44         if ($value === null) {
       
    45             return;
       
    46         }
       
    47         if ($value instanceof TP_yyToken) {
       
    48             if ($value->metadata) {
       
    49                 $this->metadata[$offset] = $value->metadata;
       
    50             }
       
    51         } elseif ($value) {
       
    52             $this->metadata[$offset] = $value;
       
    53         }
       
    54     }
       
    55 
       
    56     public function offsetUnset($offset) {
       
    57         unset($this->metadata[$offset]);
       
    58     }
       
    59 }
       
    60 
       
    61 class TP_yyStackEntry {
       
    62     public $stateno;       /* The state-number */
       
    63     public $major;         /* The major token value.  This is the code
       
    64                      ** number for the token at this stack level */
       
    65     public $minor; /* The user-supplied minor token value.  This
       
    66                      ** is the value of the token  */
       
    67 }
       
    68 
       
    69 ;
       
    70 
       
    71 #line 13 "../smarty/lexer/smarty_internal_templateparser.y"
       
    72 
       
    73 /**
       
    74  * Smarty Internal Plugin Templateparser
       
    75  *
       
    76  * This is the template parser.
       
    77  * It is generated from the smarty_internal_templateparser.y file
       
    78  *
       
    79  * @package    Smarty
       
    80  * @subpackage Compiler
       
    81  * @author     Uwe Tews
       
    82  */
       
    83 class Smarty_Internal_Templateparser {
       
    84     #line 26 "../smarty/lexer/smarty_internal_templateparser.y"
       
    85 
       
    86     const Err1 = "Security error: Call to private object member not allowed";
       
    87 
       
    88     const Err2 = "Security error: Call to dynamic object member not allowed";
       
    89 
       
    90     const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
       
    91 
       
    92     /**
       
    93      * result status
       
    94      *
       
    95      * @var bool
       
    96      */
       
    97     public $successful = true;
       
    98 
       
    99     /**
       
   100      * return value
       
   101      *
       
   102      * @var mixed
       
   103      */
       
   104     public $retvalue = 0;
       
   105 
       
   106     /**
       
   107      * counter for prefix code
       
   108      *
       
   109      * @var int
       
   110      */
       
   111     public static $prefix_number = 0;
       
   112 
       
   113     /**
       
   114      * @var
       
   115      */
       
   116     public $yymajor;
       
   117 
       
   118     /**
       
   119      * last index of array variable
       
   120      *
       
   121      * @var mixed
       
   122      */
       
   123     public $last_index;
       
   124 
       
   125     /**
       
   126      * last variable name
       
   127      *
       
   128      * @var string
       
   129      */
       
   130     public $last_variable;
       
   131 
       
   132     /**
       
   133      * root parse tree buffer
       
   134      *
       
   135      * @var Smarty_Internal_ParseTree
       
   136      */
       
   137     public $root_buffer;
       
   138 
       
   139     /**
       
   140      * current parse tree object
       
   141      *
       
   142      * @var Smarty_Internal_ParseTree
       
   143      */
       
   144     public $current_buffer;
       
   145 
       
   146     /**
       
   147      * lexer object
       
   148      *
       
   149      * @var Smarty_Internal_Templatelexer
       
   150      */
       
   151     private $lex;
       
   152 
       
   153     /**
       
   154      * internal error flag
       
   155      *
       
   156      * @var bool
       
   157      */
       
   158     private $internalError = false;
       
   159 
       
   160     /**
       
   161      * {strip} status
       
   162      *
       
   163      * @var bool
       
   164      */
       
   165     public $strip = false;
       
   166 
       
   167     /**
       
   168      * compiler object
       
   169      *
       
   170      * @var Smarty_Internal_TemplateCompilerBase
       
   171      */
       
   172     public $compiler = null;
       
   173 
       
   174     /**
       
   175      * smarty object
       
   176      *
       
   177      * @var Smarty
       
   178      */
       
   179     public $smarty = null;
       
   180 
       
   181     /**
       
   182      * template object
       
   183      *
       
   184      * @var Smarty_Internal_Template
       
   185      */
       
   186     public $template = null;
       
   187 
       
   188     /**
       
   189      * block nesting level
       
   190      *
       
   191      * @var int
       
   192      */
       
   193     public $block_nesting_level = 0;
       
   194 
       
   195     /**
       
   196      * security object
       
   197      *
       
   198      * @var Smarty_Security
       
   199      */
       
   200     private $security = null;
       
   201 
       
   202     /**
       
   203      * constructor
       
   204      *
       
   205      * @param Smarty_Internal_Templatelexer $lex
       
   206      * @param Smarty_Internal_TemplateCompilerBase $compiler
       
   207      */
       
   208     function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler) {
       
   209         $this->lex = $lex;
       
   210         $this->compiler = $compiler;
       
   211         $this->template = $this->compiler->template;
       
   212         $this->smarty = $this->template->smarty;
       
   213         $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
       
   214         $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template($this);
       
   215     }
       
   216 
       
   217     /**
       
   218      * insert PHP code in current buffer
       
   219      *
       
   220      * @param string $code
       
   221      */
       
   222     public function insertPhpCode($code) {
       
   223         $this->current_buffer->append_subtree(new Smarty_Internal_ParseTree_Tag($this, $code));
       
   224     }
       
   225 
       
   226     /**
       
   227      *  merge PHP code with prefix code and return parse tree tag object
       
   228      *
       
   229      * @param string $code
       
   230      *
       
   231      * @return Smarty_Internal_ParseTree_Tag
       
   232      */
       
   233     public function mergePrefixCode($code) {
       
   234         $tmp = '';
       
   235         foreach ($this->compiler->prefix_code as $preCode) {
       
   236             $tmp = empty($tmp) ? $preCode : $this->compiler->appendCode($tmp, $preCode);
       
   237         }
       
   238         $this->compiler->prefix_code = array();
       
   239         $tmp = empty($tmp) ? $code : $this->compiler->appendCode($tmp, $code);
       
   240         return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
       
   241     }
       
   242 
       
   243     const TP_VERT = 1;
       
   244 
       
   245     const TP_COLON = 2;
       
   246 
       
   247     const TP_PHP = 3;
       
   248 
       
   249     const TP_NOCACHE = 4;
       
   250 
       
   251     const TP_TEXT = 5;
       
   252 
       
   253     const TP_STRIPON = 6;
       
   254 
       
   255     const TP_STRIPOFF = 7;
       
   256 
       
   257     const TP_BLOCKSOURCE = 8;
       
   258 
       
   259     const TP_LITERALSTART = 9;
       
   260 
       
   261     const TP_LITERALEND = 10;
       
   262 
       
   263     const TP_LITERAL = 11;
       
   264 
       
   265     const TP_RDEL = 12;
       
   266 
       
   267     const TP_SIMPLEOUTPUT = 13;
       
   268 
       
   269     const TP_LDEL = 14;
       
   270 
       
   271     const TP_DOLLARID = 15;
       
   272 
       
   273     const TP_EQUAL = 16;
       
   274 
       
   275     const TP_SIMPLETAG = 17;
       
   276 
       
   277     const TP_ID = 18;
       
   278 
       
   279     const TP_PTR = 19;
       
   280 
       
   281     const TP_LDELIF = 20;
       
   282 
       
   283     const TP_LDELFOR = 21;
       
   284 
       
   285     const TP_SEMICOLON = 22;
       
   286 
       
   287     const TP_INCDEC = 23;
       
   288 
       
   289     const TP_TO = 24;
       
   290 
       
   291     const TP_STEP = 25;
       
   292 
       
   293     const TP_LDELFOREACH = 26;
       
   294 
       
   295     const TP_SPACE = 27;
       
   296 
       
   297     const TP_AS = 28;
       
   298 
       
   299     const TP_APTR = 29;
       
   300 
       
   301     const TP_LDELSETFILTER = 30;
       
   302 
       
   303     const TP_SMARTYBLOCKCHILDPARENT = 31;
       
   304 
       
   305     const TP_CLOSETAG = 32;
       
   306 
       
   307     const TP_LDELSLASH = 33;
       
   308 
       
   309     const TP_ATTR = 34;
       
   310 
       
   311     const TP_INTEGER = 35;
       
   312 
       
   313     const TP_COMMA = 36;
       
   314 
       
   315     const TP_OPENP = 37;
       
   316 
       
   317     const TP_CLOSEP = 38;
       
   318 
       
   319     const TP_MATH = 39;
       
   320 
       
   321     const TP_UNIMATH = 40;
       
   322 
       
   323     const TP_ISIN = 41;
       
   324 
       
   325     const TP_INSTANCEOF = 42;
       
   326 
       
   327     const TP_QMARK = 43;
       
   328 
       
   329     const TP_NOT = 44;
       
   330 
       
   331     const TP_TYPECAST = 45;
       
   332 
       
   333     const TP_HEX = 46;
       
   334 
       
   335     const TP_DOT = 47;
       
   336 
       
   337     const TP_SINGLEQUOTESTRING = 48;
       
   338 
       
   339     const TP_DOUBLECOLON = 49;
       
   340 
       
   341     const TP_NAMESPACE = 50;
       
   342 
       
   343     const TP_AT = 51;
       
   344 
       
   345     const TP_HATCH = 52;
       
   346 
       
   347     const TP_OPENB = 53;
       
   348 
       
   349     const TP_CLOSEB = 54;
       
   350 
       
   351     const TP_DOLLAR = 55;
       
   352 
       
   353     const TP_LOGOP = 56;
       
   354 
       
   355     const TP_TLOGOP = 57;
       
   356 
       
   357     const TP_SINGLECOND = 58;
       
   358 
       
   359     const TP_QUOTE = 59;
       
   360 
       
   361     const TP_BACKTICK = 60;
       
   362 
       
   363     const YY_NO_ACTION = 525;
       
   364 
       
   365     const YY_ACCEPT_ACTION = 524;
       
   366 
       
   367     const YY_ERROR_ACTION = 523;
       
   368 
       
   369     const YY_SZ_ACTTAB = 1908;
       
   370 
       
   371     static public $yy_action = array(287, 9, 129, 251, 273, 194, 441, 2, 82, 280, 281, 282, 216, 110, 353, 223, 212,
       
   372         229, 441, 258, 217, 12, 199, 240, 32, 257, 257, 39, 17, 12, 25, 43, 42, 263, 224, 233, 17, 206, 441, 80, 1, 244,
       
   373         311, 311, 172, 172, 52, 287, 9, 128, 441, 273, 65, 178, 2, 82, 268, 14, 184, 298, 110, 262, 13, 319, 229, 297,
       
   374         258, 217, 31, 225, 12, 32, 170, 257, 39, 239, 189, 17, 43, 42, 263, 224, 292, 214, 206, 249, 80, 1, 113, 311,
       
   375         164, 442, 172, 52, 287, 9, 132, 201, 273, 209, 260, 2, 82, 442, 14, 141, 256, 110, 262, 88, 303, 229, 261, 258,
       
   376         217, 260, 225, 12, 32, 168, 36, 39, 241, 12, 17, 43, 42, 263, 224, 292, 17, 206, 189, 80, 1, 7, 311, 180, 257,
       
   377         219, 52, 287, 9, 132, 134, 273, 193, 470, 2, 82, 10, 470, 156, 304, 110, 300, 89, 172, 229, 310, 258, 217, 260,
       
   378         205, 223, 32, 257, 14, 39, 324, 12, 262, 43, 42, 263, 224, 292, 17, 206, 189, 80, 1, 470, 311, 470, 172, 470,
       
   379         52, 287, 9, 131, 201, 273, 209, 257, 2, 82, 83, 307, 232, 201, 110, 399, 454, 230, 229, 237, 258, 217, 454, 225,
       
   380         355, 32, 133, 201, 39, 215, 399, 144, 43, 42, 263, 224, 292, 399, 206, 12, 80, 1, 326, 311, 157, 236, 17, 52,
       
   381         287, 9, 133, 201, 273, 209, 260, 2, 82, 214, 201, 235, 202, 110, 113, 80, 99, 229, 311, 258, 217, 396, 225, 187,
       
   382         19, 14, 323, 39, 18, 262, 28, 43, 42, 263, 224, 292, 396, 206, 12, 80, 1, 143, 311, 396, 134, 17, 52, 287, 9,
       
   383         132, 10, 273, 209, 4, 2, 82, 313, 14, 146, 454, 110, 262, 181, 158, 229, 454, 258, 217, 260, 192, 12, 32, 20,
       
   384         260, 39, 99, 441, 17, 43, 42, 263, 224, 292, 243, 206, 189, 80, 1, 441, 311, 187, 182, 298, 52, 287, 9, 130,
       
   385         201, 273, 209, 14, 2, 82, 93, 262, 104, 24, 110, 399, 99, 169, 229, 154, 258, 217, 220, 225, 113, 5, 124, 260,
       
   386         39, 135, 399, 100, 43, 42, 263, 224, 292, 399, 206, 261, 80, 1, 325, 311, 228, 112, 104, 52, 287, 9, 132, 92,
       
   387         273, 191, 173, 2, 82, 174, 291, 285, 16, 110, 330, 312, 260, 229, 310, 258, 217, 311, 225, 223, 32, 259, 90, 39,
       
   388         261, 6, 264, 43, 42, 263, 224, 292, 181, 206, 175, 80, 1, 116, 311, 171, 201, 21, 52, 287, 9, 132, 37, 273, 195,
       
   389         260, 2, 82, 36, 296, 238, 189, 110, 189, 259, 201, 229, 261, 258, 217, 214, 225, 218, 32, 35, 113, 39, 36, 232,
       
   390         299, 43, 42, 263, 224, 292, 15, 206, 183, 80, 1, 211, 311, 17, 91, 226, 52, 287, 9, 133, 177, 273, 209, 179, 2,
       
   391         82, 318, 470, 99, 18, 110, 470, 454, 121, 229, 288, 258, 217, 289, 225, 316, 19, 145, 189, 39, 187, 189, 121,
       
   392         43, 42, 263, 224, 292, 161, 206, 261, 80, 99, 104, 311, 454, 14, 454, 52, 470, 262, 454, 279, 278, 276, 277,
       
   393         283, 284, 174, 159, 470, 261, 287, 9, 470, 454, 273, 311, 317, 2, 82, 176, 298, 223, 204, 110, 115, 68, 107,
       
   394         229, 117, 258, 217, 100, 3, 201, 272, 329, 138, 29, 210, 271, 293, 454, 325, 454, 359, 470, 260, 454, 254, 317,
       
   395         139, 275, 200, 306, 223, 204, 111, 119, 72, 107, 260, 201, 37, 242, 100, 255, 151, 272, 329, 213, 4, 210, 271,
       
   396         293, 150, 325, 245, 167, 20, 152, 317, 81, 208, 149, 260, 223, 204, 260, 119, 60, 102, 186, 218, 185, 265, 100,
       
   397         269, 22, 272, 329, 286, 270, 210, 271, 293, 317, 325, 248, 147, 148, 223, 204, 178, 119, 72, 107, 153, 232, 260,
       
   398         274, 100, 13, 319, 272, 329, 261, 397, 210, 271, 293, 231, 325, 268, 136, 317, 189, 165, 106, 207, 223, 204,
       
   399         397, 115, 68, 107, 84, 327, 85, 397, 100, 103, 441, 272, 329, 290, 86, 210, 271, 293, 87, 325, 299, 299, 441,
       
   400         317, 299, 155, 299, 299, 223, 204, 305, 119, 50, 102, 299, 108, 299, 299, 100, 299, 299, 272, 329, 299, 299,
       
   401         210, 271, 293, 317, 325, 299, 299, 299, 223, 204, 299, 119, 72, 107, 299, 299, 299, 299, 100, 27, 227, 272, 329,
       
   402         160, 299, 210, 271, 293, 299, 325, 299, 299, 317, 299, 299, 299, 203, 223, 204, 299, 109, 46, 107, 299, 299,
       
   403         299, 299, 100, 299, 299, 272, 329, 299, 308, 210, 271, 293, 299, 325, 299, 311, 287, 8, 309, 299, 273, 299, 317,
       
   404         2, 82, 299, 299, 223, 204, 110, 119, 49, 107, 229, 299, 258, 217, 100, 299, 142, 272, 329, 299, 178, 210, 271,
       
   405         293, 299, 325, 260, 317, 299, 13, 319, 299, 223, 204, 299, 119, 70, 107, 299, 294, 23, 299, 100, 189, 299, 272,
       
   406         329, 299, 299, 210, 271, 293, 317, 325, 299, 299, 299, 223, 204, 299, 119, 77, 107, 299, 299, 299, 299, 100,
       
   407         299, 299, 272, 329, 299, 308, 210, 271, 293, 299, 325, 299, 299, 287, 8, 309, 299, 273, 299, 317, 2, 82, 299,
       
   408         299, 223, 204, 110, 119, 71, 107, 229, 299, 258, 217, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
       
   409         325, 299, 317, 299, 299, 299, 299, 223, 204, 299, 119, 60, 107, 299, 295, 23, 299, 100, 299, 299, 272, 329, 299,
       
   410         299, 210, 271, 293, 317, 325, 299, 140, 299, 223, 204, 178, 119, 73, 107, 299, 299, 260, 299, 100, 13, 319, 272,
       
   411         329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 299, 189, 299, 223, 204, 299, 119, 62, 107, 299, 41, 40, 38,
       
   412         100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 163, 321, 322, 328, 223, 204, 299, 119, 63,
       
   413         107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223,
       
   414         204, 299, 97, 69, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299,
       
   415         299, 299, 299, 223, 204, 299, 119, 75, 107, 222, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293,
       
   416         299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119, 64, 107, 299, 247, 299, 299, 100, 299, 299, 272, 329,
       
   417         299, 299, 210, 271, 293, 299, 325, 317, 201, 26, 299, 299, 223, 204, 299, 98, 74, 107, 299, 41, 40, 38, 100,
       
   418         299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 198, 299, 105, 59, 107,
       
   419         299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 321, 322, 328, 223, 204,
       
   420         299, 119, 45, 107, 246, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321,
       
   421         322, 328, 223, 94, 299, 79, 48, 101, 299, 252, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
       
   422         325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 56, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299,
       
   423         210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119, 61, 107, 299, 190, 299, 299, 100, 299,
       
   424         299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 96, 58, 107, 299, 41,
       
   425         40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 321, 322, 328, 223, 204, 299, 119,
       
   426         66, 107, 299, 188, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 201, 299, 299,
       
   427         299, 223, 204, 299, 119, 47, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325,
       
   428         317, 299, 321, 322, 328, 223, 204, 299, 119, 78, 107, 299, 41, 40, 38, 100, 299, 299, 272, 329, 299, 299, 210,
       
   429         271, 293, 299, 325, 317, 299, 321, 322, 328, 223, 204, 299, 119, 54, 107, 299, 299, 299, 299, 100, 299, 299,
       
   430         272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 53, 107, 299, 299,
       
   431         299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 95, 299, 79,
       
   432         44, 101, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299,
       
   433         299, 223, 197, 299, 119, 57, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299,
       
   434         325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 76, 107, 299, 299, 299, 299, 100, 299, 299, 272, 329, 299,
       
   435         299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 55, 107, 299, 299, 299, 299, 100,
       
   436         299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223, 204, 299, 119, 67, 107,
       
   437         299, 299, 299, 299, 100, 299, 299, 272, 329, 299, 299, 210, 271, 293, 299, 325, 317, 299, 299, 299, 299, 223,
       
   438         234, 299, 122, 299, 107, 299, 299, 299, 299, 100, 299, 299, 299, 320, 299, 299, 210, 271, 293, 299, 325, 317,
       
   439         409, 409, 299, 299, 223, 234, 299, 127, 299, 107, 299, 299, 299, 299, 100, 299, 299, 299, 250, 299, 299, 210,
       
   440         271, 293, 299, 325, 524, 51, 253, 281, 282, 216, 299, 299, 223, 299, 441, 317, 409, 409, 409, 201, 223, 234,
       
   441         299, 126, 299, 107, 441, 299, 299, 299, 100, 299, 299, 409, 409, 409, 299, 210, 271, 293, 201, 325, 299, 33,
       
   442         299, 12, 299, 299, 299, 299, 299, 301, 17, 299, 299, 299, 299, 41, 40, 38, 299, 299, 317, 299, 299, 299, 12,
       
   443         223, 234, 299, 123, 299, 107, 17, 321, 322, 328, 100, 41, 40, 38, 299, 299, 299, 210, 271, 293, 299, 325, 299,
       
   444         299, 403, 299, 299, 299, 321, 322, 328, 299, 317, 299, 403, 299, 403, 223, 234, 403, 118, 299, 107, 299, 299,
       
   445         299, 403, 100, 403, 299, 403, 299, 299, 299, 210, 271, 293, 317, 325, 232, 299, 299, 223, 234, 299, 125, 299,
       
   446         107, 299, 299, 226, 299, 100, 299, 201, 299, 299, 299, 299, 210, 271, 293, 470, 325, 317, 201, 470, 454, 226,
       
   447         223, 234, 299, 120, 299, 107, 299, 299, 299, 299, 100, 470, 299, 30, 299, 470, 454, 210, 271, 293, 201, 325, 12,
       
   448         41, 40, 38, 454, 299, 454, 17, 470, 299, 454, 314, 41, 40, 38, 299, 315, 299, 321, 322, 328, 201, 454, 34, 454,
       
   449         299, 470, 299, 454, 321, 322, 328, 299, 299, 226, 470, 41, 40, 38, 470, 454, 299, 114, 299, 299, 299, 470, 299,
       
   450         299, 299, 470, 454, 299, 321, 322, 328, 299, 302, 299, 41, 40, 38, 201, 299, 299, 299, 299, 299, 454, 299, 454,
       
   451         299, 470, 365, 454, 299, 321, 322, 328, 454, 221, 454, 299, 470, 299, 454, 166, 299, 12, 299, 178, 299, 299,
       
   452         299, 299, 17, 260, 299, 441, 13, 319, 162, 299, 11, 196, 178, 299, 266, 137, 299, 441, 260, 178, 189, 13, 319,
       
   453         299, 299, 260, 299, 299, 13, 319, 299, 267, 299, 299, 299, 189, 299, 299, 299, 299, 299, 299, 189, 299, 299,
       
   454         299, 299, 299, 299, 299, 299, 311,);
       
   455 
       
   456     static public $yy_lookahead = array(13, 14, 15, 15, 17, 18, 37, 20, 21, 64, 65, 66, 67, 26, 12, 70, 47, 30, 49, 32,
       
   457         33, 27, 35, 54, 37, 23, 23, 40, 34, 27, 29, 44, 45, 46, 47, 48, 34, 50, 37, 52, 53, 54, 55, 55, 42, 42, 59, 13,
       
   458         14, 15, 49, 17, 18, 76, 20, 21, 93, 14, 95, 96, 26, 18, 85, 86, 30, 31, 32, 33, 16, 35, 27, 37, 29, 23, 40, 23,
       
   459         99, 34, 44, 45, 46, 47, 48, 75, 50, 77, 52, 53, 80, 55, 72, 37, 42, 59, 13, 14, 15, 1, 17, 18, 82, 20, 21, 49,
       
   460         14, 72, 18, 26, 18, 76, 60, 30, 94, 32, 33, 82, 35, 27, 37, 29, 36, 40, 38, 27, 34, 44, 45, 46, 47, 48, 34, 50,
       
   461         99, 52, 53, 36, 55, 81, 23, 51, 59, 13, 14, 15, 47, 17, 18, 14, 20, 21, 53, 18, 72, 54, 26, 12, 76, 42, 30, 65,
       
   462         32, 33, 82, 35, 70, 37, 23, 14, 40, 54, 27, 18, 44, 45, 46, 47, 48, 34, 50, 99, 52, 53, 14, 55, 51, 42, 18, 59,
       
   463         13, 14, 15, 1, 17, 18, 23, 20, 21, 103, 104, 47, 1, 26, 12, 47, 51, 30, 54, 32, 33, 53, 35, 12, 37, 15, 1, 40,
       
   464         18, 27, 28, 44, 45, 46, 47, 48, 34, 50, 27, 52, 53, 18, 55, 72, 19, 34, 59, 13, 14, 15, 1, 17, 18, 82, 20, 21,
       
   465         75, 1, 77, 78, 26, 80, 52, 19, 30, 55, 32, 33, 12, 35, 99, 37, 14, 50, 40, 16, 18, 14, 44, 45, 46, 47, 48, 27,
       
   466         50, 27, 52, 53, 92, 55, 34, 47, 34, 59, 13, 14, 15, 53, 17, 18, 37, 20, 21, 54, 14, 72, 47, 26, 18, 76, 72, 30,
       
   467         53, 32, 33, 82, 35, 27, 37, 16, 82, 40, 19, 37, 34, 44, 45, 46, 47, 48, 54, 50, 99, 52, 53, 49, 55, 99, 95, 96,
       
   468         59, 13, 14, 15, 1, 17, 18, 14, 20, 21, 81, 18, 49, 16, 26, 12, 19, 72, 30, 75, 32, 33, 71, 35, 80, 37, 75, 82,
       
   469         40, 15, 27, 80, 44, 45, 46, 47, 48, 34, 50, 94, 52, 53, 91, 55, 51, 80, 49, 59, 13, 14, 15, 37, 17, 18, 72, 20,
       
   470         21, 9, 10, 11, 22, 26, 97, 96, 82, 30, 65, 32, 33, 55, 35, 70, 37, 100, 36, 40, 94, 37, 35, 44, 45, 46, 47, 48,
       
   471         76, 50, 76, 52, 53, 49, 55, 72, 1, 16, 59, 13, 14, 15, 2, 17, 18, 82, 20, 21, 36, 104, 38, 99, 26, 99, 100, 1,
       
   472         30, 94, 32, 33, 75, 35, 77, 37, 29, 80, 40, 36, 47, 38, 44, 45, 46, 47, 48, 27, 50, 15, 52, 53, 18, 55, 34, 92,
       
   473         2, 59, 13, 14, 15, 76, 17, 18, 76, 20, 21, 90, 14, 19, 16, 26, 18, 19, 97, 30, 66, 32, 33, 69, 35, 90, 37, 15,
       
   474         99, 40, 99, 99, 97, 44, 45, 46, 47, 48, 92, 50, 94, 52, 19, 49, 55, 47, 14, 49, 59, 51, 18, 53, 3, 4, 5, 6, 7,
       
   475         8, 9, 92, 14, 94, 13, 14, 18, 19, 17, 55, 65, 20, 21, 95, 96, 70, 71, 26, 73, 74, 75, 30, 18, 32, 33, 80, 37, 1,
       
   476         83, 84, 72, 24, 87, 88, 89, 47, 91, 49, 12, 51, 82, 53, 18, 65, 72, 5, 101, 102, 70, 71, 18, 73, 74, 75, 82, 1,
       
   477         2, 38, 80, 18, 52, 83, 84, 18, 37, 87, 88, 89, 72, 91, 54, 72, 16, 52, 65, 18, 98, 92, 82, 70, 71, 82, 73, 74,
       
   478         75, 18, 77, 81, 18, 80, 18, 43, 83, 84, 12, 35, 87, 88, 89, 65, 91, 18, 72, 92, 70, 71, 76, 73, 74, 75, 92, 47,
       
   479         82, 82, 80, 85, 86, 83, 84, 94, 12, 87, 88, 89, 16, 91, 93, 80, 65, 99, 92, 79, 98, 70, 71, 27, 73, 74, 75, 80,
       
   480         87, 80, 34, 80, 68, 37, 83, 84, 10, 80, 87, 88, 89, 80, 91, 105, 105, 49, 65, 105, 92, 105, 105, 70, 71, 102,
       
   481         73, 74, 75, 105, 77, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 65, 91, 105, 105, 105, 70, 71, 105,
       
   482         73, 74, 75, 105, 105, 105, 105, 80, 14, 15, 83, 84, 18, 105, 87, 88, 89, 105, 91, 105, 105, 65, 105, 105, 105,
       
   483         98, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 5, 87, 88, 89, 105, 91, 105, 55, 13,
       
   484         14, 15, 105, 17, 105, 65, 20, 21, 105, 105, 70, 71, 26, 73, 74, 75, 30, 105, 32, 33, 80, 105, 72, 83, 84, 105,
       
   485         76, 87, 88, 89, 105, 91, 82, 65, 105, 85, 86, 105, 70, 71, 105, 73, 74, 75, 105, 59, 60, 105, 80, 99, 105, 83,
       
   486         84, 105, 105, 87, 88, 89, 65, 91, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83,
       
   487         84, 105, 5, 87, 88, 89, 105, 91, 105, 105, 13, 14, 15, 105, 17, 105, 65, 20, 21, 105, 105, 70, 71, 26, 73, 74,
       
   488         75, 30, 105, 32, 33, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 105, 65, 105, 105, 105, 105, 70, 71,
       
   489         105, 73, 74, 75, 105, 59, 60, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 65, 91, 105, 72, 105, 70, 71, 76,
       
   490         73, 74, 75, 105, 105, 82, 105, 80, 85, 86, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 105, 99, 105, 70, 71,
       
   491         105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 28, 56, 57, 58, 70,
       
   492         71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 56, 57, 58,
       
   493         70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105,
       
   494         105, 105, 70, 71, 105, 73, 74, 75, 38, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1,
       
   495         56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65,
       
   496         1, 2, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91,
       
   497         65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105,
       
   498         91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 38, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89,
       
   499         105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88,
       
   500         89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83, 84, 105, 105,
       
   501         87, 88, 89, 105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105, 83, 84, 105,
       
   502         105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105, 105, 83,
       
   503         84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 12, 105, 105, 80, 105, 105,
       
   504         83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 1, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80, 105,
       
   505         105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 39, 40, 41, 80,
       
   506         105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 56, 57, 58, 70, 71, 105, 73, 74, 75, 105, 105, 105,
       
   507         105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105,
       
   508         105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 74,
       
   509         75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105, 105, 70, 71,
       
   510         105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105, 105, 105,
       
   511         105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91, 65, 105,
       
   512         105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89, 105, 91,
       
   513         65, 105, 105, 105, 105, 70, 71, 105, 73, 74, 75, 105, 105, 105, 105, 80, 105, 105, 83, 84, 105, 105, 87, 88, 89,
       
   514         105, 91, 65, 105, 105, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 105, 105, 105, 84, 105, 105,
       
   515         87, 88, 89, 105, 91, 65, 1, 2, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 105, 105, 105, 84,
       
   516         105, 105, 87, 88, 89, 105, 91, 62, 63, 64, 65, 66, 67, 105, 105, 70, 105, 37, 65, 39, 40, 41, 1, 70, 71, 105,
       
   517         73, 105, 75, 49, 105, 105, 105, 80, 105, 105, 56, 57, 58, 105, 87, 88, 89, 1, 91, 105, 25, 105, 27, 105, 105,
       
   518         105, 105, 105, 12, 34, 105, 105, 105, 105, 39, 40, 41, 105, 105, 65, 105, 105, 105, 27, 70, 71, 105, 73, 105,
       
   519         75, 34, 56, 57, 58, 80, 39, 40, 41, 105, 105, 105, 87, 88, 89, 105, 91, 105, 105, 12, 105, 105, 105, 56, 57, 58,
       
   520         105, 65, 105, 22, 105, 24, 70, 71, 27, 73, 105, 75, 105, 105, 105, 34, 80, 36, 105, 38, 105, 105, 105, 87, 88,
       
   521         89, 65, 91, 47, 105, 105, 70, 71, 105, 73, 105, 75, 105, 105, 2, 105, 80, 105, 1, 105, 105, 105, 105, 87, 88,
       
   522         89, 14, 91, 65, 1, 18, 19, 2, 70, 71, 105, 73, 105, 75, 105, 105, 105, 105, 80, 14, 105, 16, 105, 18, 19, 87,
       
   523         88, 89, 1, 91, 27, 39, 40, 41, 47, 105, 49, 34, 51, 105, 53, 54, 39, 40, 41, 105, 54, 105, 56, 57, 58, 1, 47, 2,
       
   524         49, 105, 51, 105, 53, 56, 57, 58, 105, 105, 2, 14, 39, 40, 41, 18, 19, 105, 22, 105, 105, 105, 14, 105, 105,
       
   525         105, 18, 19, 105, 56, 57, 58, 105, 60, 105, 39, 40, 41, 1, 105, 105, 105, 105, 105, 47, 105, 49, 105, 51, 12,
       
   526         53, 105, 56, 57, 58, 47, 19, 49, 105, 51, 105, 53, 72, 105, 27, 105, 76, 105, 105, 105, 105, 34, 82, 105, 37,
       
   527         85, 86, 72, 105, 14, 15, 76, 105, 18, 72, 105, 49, 82, 76, 99, 85, 86, 105, 105, 82, 105, 105, 85, 86, 105, 35,
       
   528         105, 105, 105, 99, 105, 105, 105, 105, 105, 105, 99, 105, 105, 105, 105, 105, 105, 105, 105, 55,);
       
   529 
       
   530     const YY_SHIFT_USE_DFLT = -32;
       
   531 
       
   532     const YY_SHIFT_MAX = 236;
       
   533 
       
   534     static public $yy_shift_ofst = array(517, 410, 316, 81, 81, 316, 81, 410, 34, 34, -13, 81, 128, 81, 81, 128, 81,
       
   535         81, 269, 81, 81, 81, 175, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 363, 81, 81, 222, 222, 457, 457, 457, 457,
       
   536         457, 1624, 1603, 1736, 1736, 1736, 1736, 1736, 517, 754, 1211, 1265, 1076, 1157, 1760, 941, 1725, 995, 1103,
       
   537         1049, 1783, 1292, 1824, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 914, 914, 199, 198,
       
   538         96, 342, 842, 90, 43, 278, 246, 96, 96, 342, 232, 342, 580, 2, 143, 190, 244, 331, 711, 321, 325, 291, 376, 446,
       
   539         237, -6, 462, -6, 552, 432, 213, 500, 500, 480, 419, 446, 438, 438, 438, 438, 491, 438, 438, 491, 438, 438,
       
   540         -32, 1738, 1720, 466, 1784, 1795, 514, 1852, 247, 153, -6, -6, -6, -6, -6, -6, 97, -12, 168, -6, -6,
       
   541         97, 97, -6, 156, 156, 97, 52, 97, -6, -6, -6, 97, 251, 97, -6, -12, -6, 97, -6, -6, -12, -6, -12,
       
   542         -6, 211, -6, 664, 438, 491, 438, 438, 438, 424, 438, 491, 515, 491, 424, -32, -32, -32, -32, -32, 1562,
       
   543         1664, 634, -31, 1, 133, 50, 115, 152, 99, 88, 366, 84, 3, 405, 54, 415, 396, 274, 368, 553, 571, 542, 582, 534,
       
   544         566, 558, 545, 567, 547, 583, 574, 608, 586, 590, 598, 515, 550, 593, 596, 609, 371, 264, 171, 533, 530,);
       
   545 
       
   546     const YY_REDUCE_USE_DFLT = -56;
       
   547 
       
   548     const YY_REDUCE_MAX = 190;
       
   549 
       
   550     static public $yy_reduce_ofst = array(1527, 471, 619, 560, 644, 535, 504, 589, 1335, 1092, 1038, 1119, 1011, 984,
       
   551         876, 1173, 903, 930, 957, 1146, 1200, 1443, 1416, 1362, 1227, 1389, 1254, 1281, 1308, 1065, 673, 849, 824, 708,
       
   552         761, 736, 796, 1497, 1470, 1619, 1535, 1671, 1644, 1582, 1792, 1777, 1799, 845, 1792, 718, 556, -55, 94, -23,
       
   553         -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, 33, -23, -23, -23, -23, -23, -23, -23,
       
   554         -23, -23, -23, -23, -23, -23, 221, 279, 80, 169, 329, 347, 310, 18, 273, 159, 226, 8, -37, 369, 338, 525,
       
   555         525, 336, 336, 336, 293, 414, 231, 231, 422, 389, 336, 522, 231, 498, 336, 484, 400, 435, 414, 272, 336, 403,
       
   556         397, 336, 336, 336, 444, 336, 336, 231, 336, 336, 336, 184, 184, 184, 184, 184, 184, 573, 184, 551, 557, 557,
       
   557         557, 557, 557, 557, 559, 585, 184, 557, 557, 559, 559, 557, 544, 564, 559, 578, 559, 557, 557, 557, 559, 594,
       
   558         559, 557, 587, 557, 559, 557, 557, 595, 557, 599, 557, 579, 557, 602, 399, 295, 399, 399, 399, 301, 399, 295,
       
   559         375, 295, 301, 257, 56, 537, 532, 511,);
       
   560 
       
   561     static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 20, 21, 26, 30, 32, 33,),
       
   562         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   563         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   564         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   565         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   566         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   567         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   568         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   569         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   570         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 31, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   571         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 54, 55, 59,),
       
   572         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   573         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   574         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   575         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   576         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   577         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   578         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   579         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   580         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   581         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   582         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   583         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   584         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   585         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   586         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   587         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   588         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   589         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   590         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   591         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   592         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   593         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   594         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   595         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   596         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   597         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   598         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   599         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 53, 55, 59,),
       
   600         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
       
   601         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
       
   602         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
       
   603         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
       
   604         array(13, 14, 15, 17, 18, 20, 21, 26, 30, 32, 33, 35, 37, 40, 44, 45, 46, 47, 48, 50, 52, 55, 59,),
       
   605         array(1, 12, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 25, 27, 34, 39, 40, 41, 56, 57, 58,),
       
   606         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 27, 34, 39, 40, 41, 56, 57, 58,),
       
   607         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(1, 27, 34, 39, 40, 41, 56, 57, 58,),
       
   608         array(1, 27, 34, 39, 40, 41, 56, 57, 58,), array(3, 4, 5, 6, 7, 8, 9, 13, 14, 17, 20, 21, 26, 30, 32, 33,),
       
   609         array(5, 13, 14, 15, 17, 20, 21, 26, 30, 32, 33, 59, 60,), array(1, 12, 39, 40, 41, 56, 57, 58,),
       
   610         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 2, 39, 40, 41, 56, 57, 58,),
       
   611         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58, 60,),
       
   612         array(1, 28, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 54, 56, 57, 58,),
       
   613         array(1, 38, 39, 40, 41, 56, 57, 58,), array(1, 38, 39, 40, 41, 56, 57, 58,),
       
   614         array(1, 12, 39, 40, 41, 56, 57, 58,), array(1, 22, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
       
   615         array(1, 12, 19, 27, 34, 37, 49,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
       
   616         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
       
   617         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
       
   618         array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,), array(1, 39, 40, 41, 56, 57, 58,),
       
   619         array(39, 40, 41, 56, 57, 58,), array(39, 40, 41, 56, 57, 58,), array(1, 12, 27, 34,), array(15, 18, 52, 55,),
       
   620         array(1, 27, 34,), array(15, 37, 55,), array(5, 13, 14, 15, 17, 20, 21, 26, 30, 32, 33, 59, 60,),
       
   621         array(14, 18, 27, 29, 34,), array(14, 18, 27, 29, 34,), array(14, 18, 27, 34,), array(14, 18, 27, 34,),
       
   622         array(1, 27, 34,), array(1, 27, 34,), array(15, 37, 55,), array(19, 47, 53,), array(15, 37, 55,), array(1, 2,),
       
   623         array(12, 23, 27, 34, 42,), array(12, 23, 27, 34, 42,), array(1, 12, 27, 28, 34,), array(1, 12, 27, 34,),
       
   624         array(1, 12, 27, 34,), array(14, 15, 18, 55,), array(14, 18, 51,), array(16, 19, 49,), array(16, 19, 49,),
       
   625         array(9, 10, 11,), array(15, 18,), array(1, 54,), array(27, 34,), array(19, 49,), array(27, 34,), array(1, 12,),
       
   626         array(27, 34,), array(1, 19,), array(14, 18,), array(14, 18,), array(15, 55,), array(1, 29,), array(15, 18,),
       
   627         array(1,), array(1,), array(1,), array(1,), array(19,), array(1,), array(1,), array(19,), array(1,), array(1,),
       
   628         array(), array(2, 14, 16, 18, 19, 47, 49, 51, 53,), array(2, 14, 18, 19, 47, 49, 51, 53, 54,),
       
   629         array(2, 14, 16, 18, 19, 47, 49, 51, 53,), array(2, 14, 18, 19, 47, 49, 51, 53,),
       
   630         array(2, 14, 18, 19, 47, 49, 51, 53,), array(14, 18, 19, 47, 49, 51, 53,), array(14, 15, 18, 35, 55,),
       
   631         array(16, 47, 53,), array(14, 18, 51,), array(27, 34,), array(27, 34,), array(27, 34,), array(27, 34,),
       
   632         array(27, 34,), array(27, 34,), array(47, 53,), array(15, 55,), array(14, 18,), array(27, 34,), array(27, 34,),
       
   633         array(47, 53,), array(47, 53,), array(27, 34,), array(47, 53,), array(47, 53,), array(47, 53,), array(16, 23,),
       
   634         array(47, 53,), array(27, 34,), array(27, 34,), array(27, 34,), array(47, 53,), array(14, 37,), array(47, 53,),
       
   635         array(27, 34,), array(15, 55,), array(27, 34,), array(47, 53,), array(27, 34,), array(27, 34,), array(15, 55,),
       
   636         array(27, 34,), array(15, 55,), array(27, 34,), array(18, 50,), array(27, 34,), array(10,), array(1,),
       
   637         array(19,), array(1,), array(1,), array(1,), array(2,), array(1,), array(19,), array(37,), array(19,),
       
   638         array(2,), array(), array(), array(), array(), array(), array(1, 2, 37, 39, 40, 41, 49, 56, 57, 58,),
       
   639         array(12, 22, 24, 27, 34, 36, 38, 47,), array(12, 16, 27, 34, 37, 49,), array(37, 47, 49, 54,),
       
   640         array(29, 37, 49,), array(14, 18, 51,), array(23, 42, 60,), array(23, 42, 54,), array(47, 54,), array(36, 54,),
       
   641         array(18, 51,), array(22, 36,), array(36, 38,), array(23, 42,), array(16, 47,), array(37, 49,), array(36, 38,),
       
   642         array(36, 38,), array(37, 49,), array(37, 49,), array(37,), array(18,), array(54,), array(16,), array(52,),
       
   643         array(5,), array(18,), array(38,), array(18,), array(52,), array(18,), array(43,), array(12,), array(35,),
       
   644         array(47,), array(18,), array(37,), array(18,), array(18,), array(18,), array(18,), array(35,), array(54,),
       
   645         array(23,), array(24,), array(18,), array(), array(), array(), array(), array(), array(), array(), array(),
       
   646         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   647         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   648         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   649         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   650         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   651         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   652         array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(), array(),
       
   653         array(), array(),);
       
   654 
       
   655     static public $yy_default = array(334, 508, 523, 488, 488, 523, 488, 523, 523, 523, 523, 523, 523, 523, 523, 523,
       
   656         523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523,
       
   657         523, 523, 523, 523, 523, 523, 523, 393, 360, 393, 357, 393, 369, 331, 523, 523, 523, 523, 523, 523, 398, 523,
       
   658         523, 523, 523, 523, 414, 431, 405, 400, 511, 395, 509, 486, 487, 374, 398, 404, 510, 419, 420, 407, 523, 393,
       
   659         523, 523, 393, 393, 393, 393, 393, 393, 523, 500, 523, 383, 421, 421, 407, 407, 407, 523, 454, 444, 444, 523,
       
   660         523, 407, 393, 444, 371, 407, 393, 387, 454, 454, 523, 407, 523, 389, 422, 407, 410, 497, 417, 423, 444, 424,
       
   661         411, 495, 443, 443, 443, 443, 443, 443, 523, 470, 456, 361, 378, 372, 362, 364, 377, 451, 523, 454, 356, 370,
       
   662         480, 481, 373, 447, 449, 448, 523, 478, 367, 366, 368, 479, 454, 452, 358, 523, 380, 450, 376, 354, 523, 382,
       
   663         523, 379, 523, 381, 348, 384, 498, 390, 413, 388, 489, 438, 475, 454, 501, 490, 494, 494, 454, 494, 454, 431,
       
   664         427, 431, 431, 431, 455, 421, 421, 427, 523, 523, 523, 523, 421, 427, 439, 523, 523, 431, 523, 499, 523, 523,
       
   665         523, 523, 339, 523, 523, 523, 523, 523, 433, 523, 523, 427, 523, 470, 523, 523, 523, 523, 429, 434, 421, 401,
       
   666         523, 464, 483, 375, 461, 484, 406, 463, 469, 462, 433, 474, 394, 402, 496, 470, 460, 332, 445, 491, 492, 425,
       
   667         386, 493, 392, 472, 473, 426, 428, 457, 458, 459, 453, 409, 430, 432, 408, 363, 391, 341, 340, 342, 338, 337,
       
   668         333, 335, 336, 343, 344, 350, 351, 352, 349, 347, 345, 346, 434, 435, 512, 513, 514, 385, 476, 485, 519, 520,
       
   669         517, 516, 505, 507, 506, 515, 522, 518, 521, 471, 477, 467, 465, 468, 440, 437, 436, 415, 416, 502, 503, 442,
       
   670         466, 446, 441, 418, 504, 412, 482,);
       
   671 
       
   672     const YYNOCODE = 106;
       
   673 
       
   674     const YYSTACKDEPTH = 500;
       
   675 
       
   676     const YYNSTATE = 331;
       
   677 
       
   678     const YYNRULE = 192;
       
   679 
       
   680     const YYERRORSYMBOL = 61;
       
   681 
       
   682     const YYERRSYMDT = 'yy0';
       
   683 
       
   684     const YYFALLBACK = 0;
       
   685 
       
   686     public static $yyFallback = array();
       
   687 
       
   688     public function Trace($TraceFILE, $zTracePrompt) {
       
   689         if (!$TraceFILE) {
       
   690             $zTracePrompt = 0;
       
   691         } elseif (!$zTracePrompt) {
       
   692             $TraceFILE = 0;
       
   693         }
       
   694         $this->yyTraceFILE = $TraceFILE;
       
   695         $this->yyTracePrompt = $zTracePrompt;
       
   696     }
       
   697 
       
   698     public function PrintTrace() {
       
   699         $this->yyTraceFILE = fopen('php://output', 'w');
       
   700         $this->yyTracePrompt = '<br>';
       
   701     }
       
   702 
       
   703     public $yyTraceFILE;
       
   704 
       
   705     public $yyTracePrompt;
       
   706 
       
   707     public $yyidx;                    /* Index of top element in stack */
       
   708     public $yyerrcnt;                 /* Shifts left before out of the error */
       
   709     public $yystack = array();  /* The parser's stack */
       
   710 
       
   711     public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'NOCACHE', 'TEXT', 'STRIPON', 'STRIPOFF', 'BLOCKSOURCE',
       
   712         'LITERALSTART', 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPLEOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL', 'SIMPLETAG', 'ID',
       
   713         'PTR', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR',
       
   714         'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
       
   715         'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'INSTANCEOF', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
       
   716         'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', 'TLOGOP',
       
   717         'SINGLECOND', 'QUOTE', 'BACKTICK', 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
       
   718         'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes', 'value', 'expr',
       
   719         'varindexed', 'modifierlist', 'statement', 'statements', 'foraction', 'varvar', 'modparameters', 'attribute',
       
   720         'ternary', 'array', 'lop', 'scond', 'ns1', 'function', 'doublequoted_with_quotes', 'static_class_access',
       
   721         'object', 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method', 'params', 'modifier',
       
   722         'modparameter', 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',);
       
   723 
       
   724     public static $yyRuleName = array('start ::= template', 'template ::= template_element',
       
   725         'template ::= template template_element', 'template ::=', 'template_element ::= smartytag',
       
   726         'template_element ::= literal', 'template_element ::= PHP', 'template_element ::= NOCACHE',
       
   727         'template_element ::= text_content', 'text_content ::= TEXT', 'text_content ::= text_content TEXT',
       
   728         'template_element ::= STRIPON', 'template_element ::= STRIPOFF', 'template_element ::= BLOCKSOURCE',
       
   729         'literal ::= LITERALSTART LITERALEND', 'literal ::= LITERALSTART literal_elements LITERALEND',
       
   730         'literal_elements ::= literal_elements literal_element', 'literal_elements ::=', 'literal_element ::= literal',
       
   731         'literal_element ::= LITERAL', 'smartytag ::= tag RDEL', 'smartytag ::= SIMPLEOUTPUT', 'tag ::= LDEL variable',
       
   732         'tag ::= LDEL variable attributes', 'tag ::= LDEL value', 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
       
   733         'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value', 'tag ::= LDEL DOLLARID EQUAL expr',
       
   734         'tag ::= LDEL DOLLARID EQUAL expr attributes', 'tag ::= LDEL varindexed EQUAL expr attributes',
       
   735         'smartytag ::= SIMPLETAG', 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
       
   736         'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
       
   737         'tag ::= LDEL ID PTR ID modifierlist attributes', 'tag ::= LDELIF expr', 'tag ::= LDELIF expr attributes',
       
   738         'tag ::= LDELIF statement', 'tag ::= LDELIF statement attributes',
       
   739         'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
       
   740         'foraction ::= EQUAL expr', 'foraction ::= INCDEC', 'tag ::= LDELFOR statement TO expr attributes',
       
   741         'tag ::= LDELFOR statement TO expr STEP expr attributes', 'tag ::= LDELFOREACH attributes',
       
   742         'tag ::= LDELFOREACH SPACE value AS varvar attributes',
       
   743         'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
       
   744         'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
       
   745         'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes', 'tag ::= LDELSETFILTER ID modparameters',
       
   746         'tag ::= LDELSETFILTER ID modparameters modifierlist', 'tag ::= LDEL SMARTYBLOCKCHILDPARENT',
       
   747         'smartytag ::= CLOSETAG', 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
       
   748         'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
       
   749         'attributes ::= attributes attribute', 'attributes ::= attribute', 'attributes ::=',
       
   750         'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr', 'attribute ::= ATTR value',
       
   751         'attribute ::= SPACE ID', 'attribute ::= SPACE expr', 'attribute ::= SPACE value',
       
   752         'attribute ::= SPACE INTEGER EQUAL expr', 'statements ::= statement',
       
   753         'statements ::= statements COMMA statement', 'statement ::= DOLLARID EQUAL INTEGER',
       
   754         'statement ::= DOLLARID EQUAL expr', 'statement ::= varindexed EQUAL expr',
       
   755         'statement ::= OPENP statement CLOSEP', 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
       
   756         'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array', 'expr ::= expr modifierlist',
       
   757         'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array', 'expr ::= expr ISIN value',
       
   758         'expr ::= variable INSTANCEOF ns1', 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
       
   759         'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable', 'value ::= UNIMATH value',
       
   760         'value ::= NOT value', 'value ::= TYPECAST value', 'value ::= variable INCDEC', 'value ::= HEX',
       
   761         'value ::= INTEGER', 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
       
   762         'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP', 'value ::= SINGLEQUOTESTRING',
       
   763         'value ::= doublequoted_with_quotes', 'value ::= varindexed DOUBLECOLON static_class_access',
       
   764         'value ::= smartytag', 'value ::= value modifierlist', 'value ::= NAMESPACE',
       
   765         'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID', 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID',
       
   766         'variable ::= varindexed', 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
       
   767         'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
       
   768         'variable ::= HATCH variable HATCH arrayindex', 'varindexed ::= DOLLARID arrayindex',
       
   769         'varindexed ::= varvar arrayindex', 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
       
   770         'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar', 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
       
   771         'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL', 'indexdef ::= OPENB ID CLOSEB',
       
   772         'indexdef ::= OPENB ID DOT ID CLOSEB', 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
       
   773         'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB', 'indexdef ::= OPENB variable CLOSEB',
       
   774         'indexdef ::= OPENB value CLOSEB', 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
       
   775         'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele', 'varvarele ::= ID',
       
   776         'varvarele ::= LDEL expr RDEL', 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
       
   777         'objectchain ::= objectchain objectelement', 'objectelement ::= PTR ID arrayindex',
       
   778         'objectelement ::= PTR varvar arrayindex', 'objectelement ::= PTR LDEL expr RDEL arrayindex',
       
   779         'objectelement ::= PTR ID LDEL expr RDEL arrayindex', 'objectelement ::= PTR method',
       
   780         'function ::= ns1 OPENP params CLOSEP', 'method ::= ID OPENP params CLOSEP',
       
   781         'method ::= DOLLARID OPENP params CLOSEP', 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
       
   782         'modifierlist ::= modifierlist modifier modparameters', 'modifierlist ::= modifier modparameters',
       
   783         'modifier ::= VERT AT ID', 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
       
   784         'modparameters ::=', 'modparameter ::= COLON value', 'modparameter ::= COLON array',
       
   785         'static_class_access ::= method', 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
       
   786         'static_class_access ::= DOLLARID arrayindex', 'static_class_access ::= DOLLARID arrayindex objectchain',
       
   787         'lop ::= LOGOP', 'lop ::= TLOGOP', 'scond ::= SINGLECOND', 'array ::= OPENB arrayelements CLOSEB',
       
   788         'arrayelements ::= arrayelement', 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
       
   789         'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr', 'arrayelement ::= expr',
       
   790         'doublequoted_with_quotes ::= QUOTE QUOTE', 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
       
   791         'doublequoted ::= doublequoted doublequotedcontent', 'doublequoted ::= doublequotedcontent',
       
   792         'doublequotedcontent ::= BACKTICK variable BACKTICK', 'doublequotedcontent ::= BACKTICK expr BACKTICK',
       
   793         'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
       
   794         'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag', 'doublequotedcontent ::= TEXT',);
       
   795 
       
   796     public function tokenName($tokenType) {
       
   797         if ($tokenType === 0) {
       
   798             return 'End of Input';
       
   799         }
       
   800         if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
       
   801             return $this->yyTokenName[$tokenType];
       
   802         } else {
       
   803             return "Unknown";
       
   804         }
       
   805     }
       
   806 
       
   807     public static function yy_destructor($yymajor, $yypminor) {
       
   808         switch ($yymajor) {
       
   809             default:
       
   810                 break;   /* If no destructor action specified: do nothing */
       
   811         }
       
   812     }
       
   813 
       
   814     public function yy_pop_parser_stack() {
       
   815         if (empty($this->yystack)) {
       
   816             return;
       
   817         }
       
   818         $yytos = array_pop($this->yystack);
       
   819         if ($this->yyTraceFILE && $this->yyidx >= 0) {
       
   820             fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . "\n");
       
   821         }
       
   822         $yymajor = $yytos->major;
       
   823         self::yy_destructor($yymajor, $yytos->minor);
       
   824         $this->yyidx--;
       
   825 
       
   826         return $yymajor;
       
   827     }
       
   828 
       
   829     public function __destruct() {
       
   830         while ($this->yystack !== Array()) {
       
   831             $this->yy_pop_parser_stack();
       
   832         }
       
   833         if (is_resource($this->yyTraceFILE)) {
       
   834             fclose($this->yyTraceFILE);
       
   835         }
       
   836     }
       
   837 
       
   838     public function yy_get_expected_tokens($token) {
       
   839         static $res3 = array();
       
   840         static $res4 = array();
       
   841         $state = $this->yystack[$this->yyidx]->stateno;
       
   842         $expected = self::$yyExpectedTokens[$state];
       
   843         if (isset($res3[$state][$token])) {
       
   844             if ($res3[$state][$token]) {
       
   845                 return $expected;
       
   846             }
       
   847         } else {
       
   848             if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
       
   849                 return $expected;
       
   850             }
       
   851         }
       
   852         $stack = $this->yystack;
       
   853         $yyidx = $this->yyidx;
       
   854         do {
       
   855             $yyact = $this->yy_find_shift_action($token);
       
   856             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
       
   857                 // reduce action
       
   858                 $done = 0;
       
   859                 do {
       
   860                     if ($done++ == 100) {
       
   861                         $this->yyidx = $yyidx;
       
   862                         $this->yystack = $stack;
       
   863                         // too much recursion prevents proper detection
       
   864                         // so give up
       
   865                         return array_unique($expected);
       
   866                     }
       
   867                     $yyruleno = $yyact - self::YYNSTATE;
       
   868                     $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
       
   869                     $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
       
   870                     if (isset(self::$yyExpectedTokens[$nextstate])) {
       
   871                         $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
       
   872                         if (isset($res4[$nextstate][$token])) {
       
   873                             if ($res4[$nextstate][$token]) {
       
   874                                 $this->yyidx = $yyidx;
       
   875                                 $this->yystack = $stack;
       
   876                                 return array_unique($expected);
       
   877                             }
       
   878                         } else {
       
   879                             if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
       
   880                                 $this->yyidx = $yyidx;
       
   881                                 $this->yystack = $stack;
       
   882                                 return array_unique($expected);
       
   883                             }
       
   884                         }
       
   885                     }
       
   886                     if ($nextstate < self::YYNSTATE) {
       
   887                         // we need to shift a non-terminal
       
   888                         $this->yyidx++;
       
   889                         $x = new TP_yyStackEntry;
       
   890                         $x->stateno = $nextstate;
       
   891                         $x->major = self::$yyRuleInfo[$yyruleno][0];
       
   892                         $this->yystack[$this->yyidx] = $x;
       
   893                         continue 2;
       
   894                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
       
   895                         $this->yyidx = $yyidx;
       
   896                         $this->yystack = $stack;
       
   897                         // the last token was just ignored, we can't accept
       
   898                         // by ignoring input, this is in essence ignoring a
       
   899                         // syntax error!
       
   900                         return array_unique($expected);
       
   901                     } elseif ($nextstate === self::YY_NO_ACTION) {
       
   902                         $this->yyidx = $yyidx;
       
   903                         $this->yystack = $stack;
       
   904                         // input accepted, but not shifted (I guess)
       
   905                         return $expected;
       
   906                     } else {
       
   907                         $yyact = $nextstate;
       
   908                     }
       
   909                 } while (true);
       
   910             }
       
   911             break;
       
   912         } while (true);
       
   913         $this->yyidx = $yyidx;
       
   914         $this->yystack = $stack;
       
   915 
       
   916         return array_unique($expected);
       
   917     }
       
   918 
       
   919     public function yy_is_expected_token($token) {
       
   920         static $res = array();
       
   921         static $res2 = array();
       
   922         if ($token === 0) {
       
   923             return true; // 0 is not part of this
       
   924         }
       
   925         $state = $this->yystack[$this->yyidx]->stateno;
       
   926         if (isset($res[$state][$token])) {
       
   927             if ($res[$state][$token]) {
       
   928                 return true;
       
   929             }
       
   930         } else {
       
   931             if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
       
   932                 return true;
       
   933             }
       
   934         }
       
   935         $stack = $this->yystack;
       
   936         $yyidx = $this->yyidx;
       
   937         do {
       
   938             $yyact = $this->yy_find_shift_action($token);
       
   939             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
       
   940                 // reduce action
       
   941                 $done = 0;
       
   942                 do {
       
   943                     if ($done++ == 100) {
       
   944                         $this->yyidx = $yyidx;
       
   945                         $this->yystack = $stack;
       
   946                         // too much recursion prevents proper detection
       
   947                         // so give up
       
   948                         return true;
       
   949                     }
       
   950                     $yyruleno = $yyact - self::YYNSTATE;
       
   951                     $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
       
   952                     $nextstate = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]);
       
   953                     if (isset($res2[$nextstate][$token])) {
       
   954                         if ($res2[$nextstate][$token]) {
       
   955                             $this->yyidx = $yyidx;
       
   956                             $this->yystack = $stack;
       
   957                             return true;
       
   958                         }
       
   959                     } else {
       
   960                         if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
       
   961                             $this->yyidx = $yyidx;
       
   962                             $this->yystack = $stack;
       
   963                             return true;
       
   964                         }
       
   965                     }
       
   966                     if ($nextstate < self::YYNSTATE) {
       
   967                         // we need to shift a non-terminal
       
   968                         $this->yyidx++;
       
   969                         $x = new TP_yyStackEntry;
       
   970                         $x->stateno = $nextstate;
       
   971                         $x->major = self::$yyRuleInfo[$yyruleno][0];
       
   972                         $this->yystack[$this->yyidx] = $x;
       
   973                         continue 2;
       
   974                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
       
   975                         $this->yyidx = $yyidx;
       
   976                         $this->yystack = $stack;
       
   977                         if (!$token) {
       
   978                             // end of input: this is valid
       
   979                             return true;
       
   980                         }
       
   981                         // the last token was just ignored, we can't accept
       
   982                         // by ignoring input, this is in essence ignoring a
       
   983                         // syntax error!
       
   984                         return false;
       
   985                     } elseif ($nextstate === self::YY_NO_ACTION) {
       
   986                         $this->yyidx = $yyidx;
       
   987                         $this->yystack = $stack;
       
   988                         // input accepted, but not shifted (I guess)
       
   989                         return true;
       
   990                     } else {
       
   991                         $yyact = $nextstate;
       
   992                     }
       
   993                 } while (true);
       
   994             }
       
   995             break;
       
   996         } while (true);
       
   997         $this->yyidx = $yyidx;
       
   998         $this->yystack = $stack;
       
   999 
       
  1000         return true;
       
  1001     }
       
  1002 
       
  1003     public function yy_find_shift_action($iLookAhead) {
       
  1004         $stateno = $this->yystack[$this->yyidx]->stateno;
       
  1005 
       
  1006         /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
       
  1007         if (!isset(self::$yy_shift_ofst[$stateno])) {
       
  1008             // no shift actions
       
  1009             return self::$yy_default[$stateno];
       
  1010         }
       
  1011         $i = self::$yy_shift_ofst[$stateno];
       
  1012         if ($i === self::YY_SHIFT_USE_DFLT) {
       
  1013             return self::$yy_default[$stateno];
       
  1014         }
       
  1015         if ($iLookAhead == self::YYNOCODE) {
       
  1016             return self::YY_NO_ACTION;
       
  1017         }
       
  1018         $i += $iLookAhead;
       
  1019         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
       
  1020             if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
       
  1021                 if ($this->yyTraceFILE) {
       
  1022                     fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[$iLookAhead] . " => " . $this->yyTokenName[$iFallback] . "\n");
       
  1023                 }
       
  1024 
       
  1025                 return $this->yy_find_shift_action($iFallback);
       
  1026             }
       
  1027 
       
  1028             return self::$yy_default[$stateno];
       
  1029         } else {
       
  1030             return self::$yy_action[$i];
       
  1031         }
       
  1032     }
       
  1033 
       
  1034     public function yy_find_reduce_action($stateno, $iLookAhead) {
       
  1035         /* $stateno = $this->yystack[$this->yyidx]->stateno; */
       
  1036 
       
  1037         if (!isset(self::$yy_reduce_ofst[$stateno])) {
       
  1038             return self::$yy_default[$stateno];
       
  1039         }
       
  1040         $i = self::$yy_reduce_ofst[$stateno];
       
  1041         if ($i == self::YY_REDUCE_USE_DFLT) {
       
  1042             return self::$yy_default[$stateno];
       
  1043         }
       
  1044         if ($iLookAhead == self::YYNOCODE) {
       
  1045             return self::YY_NO_ACTION;
       
  1046         }
       
  1047         $i += $iLookAhead;
       
  1048         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[$i] != $iLookAhead) {
       
  1049             return self::$yy_default[$stateno];
       
  1050         } else {
       
  1051             return self::$yy_action[$i];
       
  1052         }
       
  1053     }
       
  1054 
       
  1055     public function yy_shift($yyNewState, $yyMajor, $yypMinor) {
       
  1056         $this->yyidx++;
       
  1057         if ($this->yyidx >= self::YYSTACKDEPTH) {
       
  1058             $this->yyidx--;
       
  1059             if ($this->yyTraceFILE) {
       
  1060                 fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
       
  1061             }
       
  1062             while ($this->yyidx >= 0) {
       
  1063                 $this->yy_pop_parser_stack();
       
  1064             }
       
  1065             #line 190 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1066 
       
  1067             $this->internalError = true;
       
  1068             $this->compiler->trigger_template_error("Stack overflow in template parser");
       
  1069 
       
  1070             return;
       
  1071         }
       
  1072         $yytos = new TP_yyStackEntry;
       
  1073         $yytos->stateno = $yyNewState;
       
  1074         $yytos->major = $yyMajor;
       
  1075         $yytos->minor = $yypMinor;
       
  1076         $this->yystack[] = $yytos;
       
  1077         if ($this->yyTraceFILE && $this->yyidx > 0) {
       
  1078             fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
       
  1079             fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
       
  1080             for ($i = 1; $i <= $this->yyidx; $i++) {
       
  1081                 fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[$this->yystack[$i]->major]);
       
  1082             }
       
  1083             fwrite($this->yyTraceFILE, "\n");
       
  1084         }
       
  1085     }
       
  1086 
       
  1087     public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
       
  1088         array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
       
  1089         array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1), array(0 => 67, 1 => 2),
       
  1090         array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 66, 1 => 2),
       
  1091         array(0 => 66, 1 => 3), array(0 => 68, 1 => 2), array(0 => 68, 1 => 0), array(0 => 69, 1 => 1),
       
  1092         array(0 => 69, 1 => 1), array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
       
  1093         array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
       
  1094         array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 4), array(0 => 70, 1 => 5),
       
  1095         array(0 => 70, 1 => 5), array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
       
  1096         array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6), array(0 => 70, 1 => 2),
       
  1097         array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
       
  1098         array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5), array(0 => 70, 1 => 7),
       
  1099         array(0 => 70, 1 => 2), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8), array(0 => 70, 1 => 6),
       
  1100         array(0 => 70, 1 => 8), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
       
  1101         array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
       
  1102         array(0 => 70, 1 => 5), array(0 => 72, 1 => 2), array(0 => 72, 1 => 1), array(0 => 72, 1 => 0),
       
  1103         array(0 => 82, 1 => 4), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
       
  1104         array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4), array(0 => 78, 1 => 1),
       
  1105         array(0 => 78, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
       
  1106         array(0 => 77, 1 => 3), array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
       
  1107         array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1), array(0 => 74, 1 => 2),
       
  1108         array(0 => 74, 1 => 3), array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
       
  1109         array(0 => 74, 1 => 3), array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
       
  1110         array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
       
  1111         array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 2),
       
  1112         array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
       
  1113         array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
       
  1114         array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 87, 1 => 1),
       
  1115         array(0 => 87, 1 => 1), array(0 => 71, 1 => 1), array(0 => 71, 1 => 1), array(0 => 71, 1 => 3),
       
  1116         array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
       
  1117         array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2), array(0 => 92, 1 => 2),
       
  1118         array(0 => 92, 1 => 0), array(0 => 93, 1 => 2), array(0 => 93, 1 => 2), array(0 => 93, 1 => 4),
       
  1119         array(0 => 93, 1 => 2), array(0 => 93, 1 => 2), array(0 => 93, 1 => 4), array(0 => 93, 1 => 3),
       
  1120         array(0 => 93, 1 => 5), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3),
       
  1121         array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 3), array(0 => 93, 1 => 2),
       
  1122         array(0 => 80, 1 => 1), array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 94, 1 => 1),
       
  1123         array(0 => 94, 1 => 3), array(0 => 91, 1 => 2), array(0 => 95, 1 => 1), array(0 => 95, 1 => 2),
       
  1124         array(0 => 96, 1 => 3), array(0 => 96, 1 => 3), array(0 => 96, 1 => 5), array(0 => 96, 1 => 6),
       
  1125         array(0 => 96, 1 => 2), array(0 => 88, 1 => 4), array(0 => 97, 1 => 4), array(0 => 97, 1 => 4),
       
  1126         array(0 => 98, 1 => 3), array(0 => 98, 1 => 1), array(0 => 98, 1 => 0), array(0 => 76, 1 => 3),
       
  1127         array(0 => 76, 1 => 2), array(0 => 99, 1 => 3), array(0 => 99, 1 => 2), array(0 => 81, 1 => 2),
       
  1128         array(0 => 81, 1 => 0), array(0 => 100, 1 => 2), array(0 => 100, 1 => 2), array(0 => 90, 1 => 1),
       
  1129         array(0 => 90, 1 => 2), array(0 => 90, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
       
  1130         array(0 => 85, 1 => 1), array(0 => 85, 1 => 1), array(0 => 86, 1 => 1), array(0 => 84, 1 => 3),
       
  1131         array(0 => 101, 1 => 1), array(0 => 101, 1 => 3), array(0 => 101, 1 => 0), array(0 => 102, 1 => 3),
       
  1132         array(0 => 102, 1 => 3), array(0 => 102, 1 => 1), array(0 => 89, 1 => 2), array(0 => 89, 1 => 3),
       
  1133         array(0 => 103, 1 => 2), array(0 => 103, 1 => 1), array(0 => 104, 1 => 3), array(0 => 104, 1 => 3),
       
  1134         array(0 => 104, 1 => 1), array(0 => 104, 1 => 3), array(0 => 104, 1 => 3), array(0 => 104, 1 => 1),
       
  1135         array(0 => 104, 1 => 1),);
       
  1136 
       
  1137     public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9,
       
  1138         18 => 9, 19 => 9, 44 => 9, 67 => 9, 68 => 9, 76 => 9, 77 => 9, 81 => 9, 90 => 9,
       
  1139         95 => 9, 96 => 9, 101 => 9, 103 => 9, 104 => 9, 108 => 9, 110 => 9, 111 => 9,
       
  1140         115 => 9, 175 => 9, 180 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14,
       
  1141         17 => 14, 15 => 15, 75 => 15, 16 => 16, 91 => 16, 93 => 16, 94 => 16, 122 => 16,
       
  1142         20 => 20, 21 => 21, 22 => 22, 24 => 22, 26 => 22, 23 => 23, 25 => 23, 27 => 23,
       
  1143         28 => 28, 29 => 28, 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35,
       
  1144         36 => 36, 37 => 37, 38 => 38, 39 => 39, 41 => 39, 40 => 40, 42 => 42, 43 => 43,
       
  1145         45 => 45, 46 => 46, 47 => 47, 48 => 48, 50 => 48, 49 => 49, 51 => 49, 52 => 52,
       
  1146         53 => 53, 54 => 54, 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60,
       
  1147         61 => 61, 70 => 61, 156 => 61, 160 => 61, 164 => 61, 165 => 61, 62 => 62,
       
  1148         157 => 62, 163 => 62, 63 => 63, 64 => 64, 65 => 64, 66 => 66, 142 => 66,
       
  1149         69 => 69, 71 => 71, 72 => 72, 73 => 72, 74 => 74, 78 => 78, 79 => 79, 80 => 79,
       
  1150         82 => 82, 107 => 82, 83 => 83, 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88,
       
  1151         89 => 89, 92 => 92, 97 => 97, 98 => 98, 99 => 99, 100 => 100, 102 => 102,
       
  1152         105 => 105, 106 => 106, 109 => 109, 112 => 112, 113 => 113, 114 => 114,
       
  1153         116 => 116, 117 => 117, 118 => 118, 119 => 119, 120 => 120, 121 => 121,
       
  1154         123 => 123, 177 => 123, 124 => 124, 125 => 125, 126 => 126, 127 => 127,
       
  1155         128 => 128, 129 => 129, 137 => 129, 130 => 130, 131 => 131, 132 => 132,
       
  1156         133 => 132, 135 => 132, 136 => 132, 134 => 134, 138 => 138, 139 => 139,
       
  1157         140 => 140, 181 => 140, 141 => 141, 143 => 143, 144 => 144, 145 => 145,
       
  1158         146 => 146, 147 => 147, 148 => 148, 149 => 149, 150 => 150, 151 => 151,
       
  1159         152 => 152, 153 => 153, 154 => 154, 155 => 155, 158 => 158, 159 => 159,
       
  1160         161 => 161, 162 => 162, 166 => 166, 167 => 167, 168 => 168, 169 => 169,
       
  1161         170 => 170, 171 => 171, 172 => 172, 173 => 173, 174 => 174, 176 => 176,
       
  1162         178 => 178, 179 => 179, 182 => 182, 183 => 183, 184 => 184, 185 => 185,
       
  1163         186 => 185, 188 => 185, 187 => 187, 189 => 189, 190 => 190, 191 => 191,);
       
  1164 
       
  1165     #line 201 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1166     function yy_r0() {
       
  1167         $this->_retvalue = $this->root_buffer->to_smarty_php();
       
  1168     }
       
  1169 
       
  1170     #line 209 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1171     function yy_r1() {
       
  1172         if ($this->yystack[$this->yyidx + 0]->minor != null) {
       
  1173             $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
       
  1174         }
       
  1175     }
       
  1176 
       
  1177     #line 216 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1178     function yy_r2() {
       
  1179         if ($this->yystack[$this->yyidx + 0]->minor != null) {
       
  1180             // because of possible code injection
       
  1181             $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
       
  1182         }
       
  1183     }
       
  1184 
       
  1185     #line 230 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1186     function yy_r4() {
       
  1187         if ($this->compiler->has_code) {
       
  1188             $this->_retvalue = $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor);
       
  1189         } else {
       
  1190             $this->_retvalue = null;
       
  1191         }
       
  1192         $this->compiler->has_variable_string = false;
       
  1193         $this->block_nesting_level = count($this->compiler->_tag_stack);
       
  1194     }
       
  1195 
       
  1196     #line 241 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1197     function yy_r5() {
       
  1198         $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor);
       
  1199     }
       
  1200 
       
  1201     #line 245 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1202     function yy_r6() {
       
  1203         $code = $this->compiler->compileTag('private_php', array(array('code' => $this->yystack[$this->yyidx + 0]->minor),
       
  1204             array('type' => $this->lex->phpType)), array());
       
  1205         if ($this->compiler->has_code && !empty($code)) {
       
  1206             $tmp = '';
       
  1207             foreach ($this->compiler->prefix_code as $code) {
       
  1208                 $tmp .= $code;
       
  1209             }
       
  1210             $this->compiler->prefix_code = array();
       
  1211             $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
       
  1212         } else {
       
  1213             $this->_retvalue = null;
       
  1214         }
       
  1215     }
       
  1216 
       
  1217     #line 256 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1218     function yy_r7() {
       
  1219         $this->compiler->tag_nocache = true;
       
  1220         $save = $this->template->has_nocache_code;
       
  1221         $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("<?php echo '{$this->yystack[$this->yyidx + 0]->minor}';?>\n", $this->compiler, true));
       
  1222         $this->template->has_nocache_code = $save;
       
  1223     }
       
  1224 
       
  1225     #line 263 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1226     function yy_r8() {
       
  1227         $this->_retvalue = $this->compiler->processText($this->yystack[$this->yyidx + 0]->minor);
       
  1228     }
       
  1229 
       
  1230     #line 267 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1231     function yy_r9() {
       
  1232         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
       
  1233     }
       
  1234 
       
  1235     #line 271 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1236     function yy_r10() {
       
  1237         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;
       
  1238     }
       
  1239 
       
  1240     #line 276 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1241     function yy_r11() {
       
  1242         $this->strip = true;
       
  1243     }
       
  1244 
       
  1245     #line 280 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1246     function yy_r12() {
       
  1247         $this->strip = false;
       
  1248     }
       
  1249 
       
  1250     #line 284 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1251     function yy_r13() {
       
  1252         if ($this->strip) {
       
  1253             SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor));
       
  1254         } else {
       
  1255             SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, $this->yystack[$this->yyidx + 0]->minor);
       
  1256         }
       
  1257     }
       
  1258 
       
  1259     #line 293 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1260     function yy_r14() {
       
  1261         $this->_retvalue = '';
       
  1262     }
       
  1263 
       
  1264     #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1265     function yy_r15() {
       
  1266         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
       
  1267     }
       
  1268 
       
  1269     #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1270     function yy_r16() {
       
  1271         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;
       
  1272     }
       
  1273 
       
  1274     #line 317 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1275     function yy_r20() {
       
  1276         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
       
  1277     }
       
  1278 
       
  1279     #line 323 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1280     function yy_r21() {
       
  1281         $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, -$this->lex->rdel_length), ' $');
       
  1282         if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
       
  1283             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'), array('value' => $this->compiler->compileVariable('\'' . $match[1] . '\'')));
       
  1284         } else {
       
  1285             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->compiler->compileVariable('\'' . $var . '\'')));
       
  1286         }
       
  1287     }
       
  1288 
       
  1289     #line 333 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1290     function yy_r22() {
       
  1291         $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor));
       
  1292     }
       
  1293 
       
  1294     #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1295     function yy_r23() {
       
  1296         $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + -1]->minor));
       
  1297     }
       
  1298 
       
  1299     #line 360 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1300     function yy_r28() {
       
  1301         $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[$this->yyidx + 0]->minor),
       
  1302             array('var' => '\'' . substr($this->yystack[$this->yyidx + -2]->minor, 1) . '\'')));
       
  1303     }
       
  1304 
       
  1305     #line 368 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1306     function yy_r30() {
       
  1307         $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + -1]->minor),
       
  1308             array('var' => '\'' . substr($this->yystack[$this->yyidx + -3]->minor, 1) . '\'')), $this->yystack[$this->yyidx + 0]->minor));
       
  1309     }
       
  1310 
       
  1311     #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1312     function yy_r31() {
       
  1313         $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + -1]->minor),
       
  1314             array('var' => $this->yystack[$this->yyidx + -3]->minor['var'])), $this->yystack[$this->yyidx + 0]->minor), array('smarty_internal_index' => $this->yystack[$this->yyidx + -3]->minor['smarty_internal_index']));
       
  1315     }
       
  1316 
       
  1317     #line 377 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1318     function yy_r32() {
       
  1319         $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, -$this->lex->rdel_length));
       
  1320         if ($tag == 'strip') {
       
  1321             $this->strip = true;
       
  1322             $this->_retvalue = null;;
       
  1323         } else {
       
  1324             if (defined($tag)) {
       
  1325                 if ($this->security) {
       
  1326                     $this->security->isTrustedConstant($tag, $this->compiler);
       
  1327                 }
       
  1328                 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
       
  1329             } else {
       
  1330                 if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
       
  1331                     $this->_retvalue = $this->compiler->compileTag($match[1], array("'nocache'"));
       
  1332                 } else {
       
  1333                     $this->_retvalue = $this->compiler->compileTag($tag, array());
       
  1334                 }
       
  1335             }
       
  1336         }
       
  1337     }
       
  1338 
       
  1339     #line 399 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1340     function yy_r33() {
       
  1341         if (defined($this->yystack[$this->yyidx + -1]->minor)) {
       
  1342             if ($this->security) {
       
  1343                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
       
  1344             }
       
  1345             $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + -1]->minor));
       
  1346         } else {
       
  1347             $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
       
  1348         }
       
  1349     }
       
  1350 
       
  1351     #line 409 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1352     function yy_r34() {
       
  1353         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
       
  1354             if ($this->security) {
       
  1355                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
       
  1356             }
       
  1357             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor));
       
  1358         } else {
       
  1359             $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor, array());
       
  1360         }
       
  1361     }
       
  1362 
       
  1363     #line 422 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1364     function yy_r35() {
       
  1365         if (defined($this->yystack[$this->yyidx + -2]->minor)) {
       
  1366             if ($this->security) {
       
  1367                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
       
  1368             }
       
  1369             $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + -2]->minor,
       
  1370                 'modifierlist' => $this->yystack[$this->yyidx + -1]->minor));
       
  1371         } else {
       
  1372             $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor) . '<?php echo ';
       
  1373             $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + -1]->minor,
       
  1374                     'value' => 'ob_get_clean()')) . ';?>';
       
  1375         }
       
  1376     }
       
  1377 
       
  1378     #line 435 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1379     function yy_r36() {
       
  1380         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + -1]->minor));
       
  1381     }
       
  1382 
       
  1383     #line 440 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1384     function yy_r37() {
       
  1385         $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + -2]->minor)) . '<?php echo ';
       
  1386         $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + -1]->minor,
       
  1387                 'value' => 'ob_get_clean()')) . ';?>';
       
  1388     }
       
  1389 
       
  1390     #line 446 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1391     function yy_r38() {
       
  1392         $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor, $this->lex->ldel_length));
       
  1393         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
       
  1394     }
       
  1395 
       
  1396     #line 451 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1397     function yy_r39() {
       
  1398         $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor, $this->lex->ldel_length));
       
  1399         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, $this->yystack[$this->yyidx + 0]->minor, array('if condition' => $this->yystack[$this->yyidx + -1]->minor));
       
  1400     }
       
  1401 
       
  1402     #line 456 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1403     function yy_r40() {
       
  1404         $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor, $this->lex->ldel_length));
       
  1405         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
       
  1406     }
       
  1407 
       
  1408     #line 467 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1409     function yy_r42() {
       
  1410         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + -6]->minor),
       
  1411             array('ifexp' => $this->yystack[$this->yyidx + -4]->minor),
       
  1412             array('var' => $this->yystack[$this->yyidx + -2]->minor),
       
  1413             array('step' => $this->yystack[$this->yyidx + -1]->minor))), 1);
       
  1414     }
       
  1415 
       
  1416     #line 471 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1417     function yy_r43() {
       
  1418         $this->_retvalue = '=' . $this->yystack[$this->yyidx + 0]->minor;
       
  1419     }
       
  1420 
       
  1421     #line 479 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1422     function yy_r45() {
       
  1423         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + -3]->minor),
       
  1424             array('to' => $this->yystack[$this->yyidx + -1]->minor))), 0);
       
  1425     }
       
  1426 
       
  1427     #line 483 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1428     function yy_r46() {
       
  1429         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + -5]->minor),
       
  1430             array('to' => $this->yystack[$this->yyidx + -3]->minor),
       
  1431             array('step' => $this->yystack[$this->yyidx + -1]->minor))), 0);
       
  1432     }
       
  1433 
       
  1434     #line 488 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1435     function yy_r47() {
       
  1436         $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[$this->yyidx + 0]->minor);
       
  1437     }
       
  1438 
       
  1439     #line 493 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1440     function yy_r48() {
       
  1441         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + -3]->minor),
       
  1442             array('item' => $this->yystack[$this->yyidx + -1]->minor))));
       
  1443     }
       
  1444 
       
  1445     #line 497 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1446     function yy_r49() {
       
  1447         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + -5]->minor),
       
  1448             array('item' => $this->yystack[$this->yyidx + -1]->minor),
       
  1449             array('key' => $this->yystack[$this->yyidx + -3]->minor))));
       
  1450     }
       
  1451 
       
  1452     #line 510 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1453     function yy_r52() {
       
  1454         $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array(array_merge(array($this->yystack[$this->yyidx + -1]->minor), $this->yystack[$this->yyidx + 0]->minor))));
       
  1455     }
       
  1456 
       
  1457     #line 514 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1458     function yy_r53() {
       
  1459         $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor), $this->yystack[$this->yyidx + -1]->minor)), $this->yystack[$this->yyidx + 0]->minor)));
       
  1460     }
       
  1461 
       
  1462     #line 519 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1463     function yy_r54() {
       
  1464         $j = strrpos($this->yystack[$this->yyidx + 0]->minor, '.');
       
  1465         if ($this->yystack[$this->yyidx + 0]->minor[$j + 1] == 'c') {
       
  1466             // {$smarty.block.child}
       
  1467             $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
       
  1468         } else {
       
  1469             // {$smarty.block.parent}
       
  1470             $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
       
  1471         }
       
  1472     }
       
  1473 
       
  1474     #line 532 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1475     function yy_r55() {
       
  1476         $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->lex->ldel_length, -$this->lex->rdel_length), ' /');
       
  1477         if ($tag == 'strip') {
       
  1478             $this->strip = false;
       
  1479             $this->_retvalue = null;
       
  1480         } else {
       
  1481             $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
       
  1482         }
       
  1483     }
       
  1484 
       
  1485     #line 541 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1486     function yy_r56() {
       
  1487         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor . 'close', array());
       
  1488     }
       
  1489 
       
  1490     #line 545 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1491     function yy_r57() {
       
  1492         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor . 'close', array(), array('modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
       
  1493     }
       
  1494 
       
  1495     #line 550 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1496     function yy_r58() {
       
  1497         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + 0]->minor));
       
  1498     }
       
  1499 
       
  1500     #line 554 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1501     function yy_r59() {
       
  1502         $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + -1]->minor,
       
  1503             'modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
       
  1504     }
       
  1505 
       
  1506     #line 562 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1507     function yy_r60() {
       
  1508         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
       
  1509         $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
       
  1510     }
       
  1511 
       
  1512     #line 568 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1513     function yy_r61() {
       
  1514         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
       
  1515     }
       
  1516 
       
  1517     #line 573 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1518     function yy_r62() {
       
  1519         $this->_retvalue = array();
       
  1520     }
       
  1521 
       
  1522     #line 578 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1523     function yy_r63() {
       
  1524         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
       
  1525             if ($this->security) {
       
  1526                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
       
  1527             }
       
  1528             $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor => $this->yystack[$this->yyidx + 0]->minor);
       
  1529         } else {
       
  1530             $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor => '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'');
       
  1531         }
       
  1532     }
       
  1533 
       
  1534     #line 589 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1535     function yy_r64() {
       
  1536         $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor, " =\n\r\t") => $this->yystack[$this->yyidx + 0]->minor);
       
  1537     }
       
  1538 
       
  1539     #line 597 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1540     function yy_r66() {
       
  1541         $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
       
  1542     }
       
  1543 
       
  1544     #line 609 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1545     function yy_r69() {
       
  1546         $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor => $this->yystack[$this->yyidx + 0]->minor);
       
  1547     }
       
  1548 
       
  1549     #line 622 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1550     function yy_r71() {
       
  1551         $this->yystack[$this->yyidx + -2]->minor[] = $this->yystack[$this->yyidx + 0]->minor;
       
  1552         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
       
  1553     }
       
  1554 
       
  1555     #line 627 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1556     function yy_r72() {
       
  1557         $this->_retvalue = array('var' => '\'' . substr($this->yystack[$this->yyidx + -2]->minor, 1) . '\'',
       
  1558             'value' => $this->yystack[$this->yyidx + 0]->minor);
       
  1559     }
       
  1560 
       
  1561     #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1562     function yy_r74() {
       
  1563         $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor,
       
  1564             'value' => $this->yystack[$this->yyidx + 0]->minor);
       
  1565     }
       
  1566 
       
  1567     #line 658 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1568     function yy_r78() {
       
  1569         $this->_retvalue = '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[$this->yyidx + -2]->minor, 1) . '://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
       
  1570     }
       
  1571 
       
  1572     #line 663 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1573     function yy_r79() {
       
  1574         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
       
  1575     }
       
  1576 
       
  1577     #line 677 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1578     function yy_r82() {
       
  1579         $this->_retvalue = $this->compiler->compileTag('private_modifier', array(), array('value' => $this->yystack[$this->yyidx + -1]->minor,
       
  1580             'modifierlist' => $this->yystack[$this->yyidx + 0]->minor));
       
  1581     }
       
  1582 
       
  1583     #line 683 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1584     function yy_r83() {
       
  1585         $this->_retvalue = (isset($this->yystack[$this->yyidx + -1]->minor['pre']) ? $this->yystack[$this->yyidx + -1]->minor['pre'] : '') . $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor['op'] . $this->yystack[$this->yyidx + 0]->minor . (isset($this->yystack[$this->yyidx + -1]->minor['pre']) ? ')' : '');
       
  1586     }
       
  1587 
       
  1588     #line 686 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1589     function yy_r84() {
       
  1590         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
       
  1591     }
       
  1592 
       
  1593     #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1594     function yy_r85() {
       
  1595         $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + -2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor . ')';
       
  1596     }
       
  1597 
       
  1598     #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1599     function yy_r86() {
       
  1600         $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + -2]->minor . ',(array)' . $this->yystack[$this->yyidx + 0]->minor . ')';
       
  1601     }
       
  1602 
       
  1603     #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1604     function yy_r87() {
       
  1605         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;
       
  1606     }
       
  1607 
       
  1608     #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1609     function yy_r88() {
       
  1610         $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor . ' ? ' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + -2]->minor, 1) . '\'') . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
       
  1611     }
       
  1612 
       
  1613     #line 710 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1614     function yy_r89() {
       
  1615         $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor . ' ? ' . $this->yystack[$this->yyidx + -2]->minor . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
       
  1616     }
       
  1617 
       
  1618     #line 725 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1619     function yy_r92() {
       
  1620         $this->_retvalue = '!' . $this->yystack[$this->yyidx + 0]->minor;
       
  1621     }
       
  1622 
       
  1623     #line 746 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1624     function yy_r97() {
       
  1625         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
       
  1626     }
       
  1627 
       
  1628     #line 750 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1629     function yy_r98() {
       
  1630         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . '.';
       
  1631     }
       
  1632 
       
  1633     #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1634     function yy_r99() {
       
  1635         $this->_retvalue = '.' . $this->yystack[$this->yyidx + 0]->minor;
       
  1636     }
       
  1637 
       
  1638     #line 759 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1639     function yy_r100() {
       
  1640         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
       
  1641             if ($this->security) {
       
  1642                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
       
  1643             }
       
  1644             $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
       
  1645         } else {
       
  1646             $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
       
  1647         }
       
  1648     }
       
  1649 
       
  1650     #line 776 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1651     function yy_r102() {
       
  1652         $this->_retvalue = "(" . $this->yystack[$this->yyidx + -1]->minor . ")";
       
  1653     }
       
  1654 
       
  1655     #line 791 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1656     function yy_r105() {
       
  1657         self::$prefix_number++;
       
  1658         if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') {
       
  1659             $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' . $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']) . ';?>';
       
  1660         } else {
       
  1661             $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . ' = ' . $this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']) . $this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'] . ';?>';
       
  1662         }
       
  1663         $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
       
  1664     }
       
  1665 
       
  1666     #line 802 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1667     function yy_r106() {
       
  1668         self::$prefix_number++;
       
  1669         $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[$this->yyidx + 0]->minor);
       
  1670         $this->compiler->prefix_code[] = $this->compiler->appendCode($tmp, '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>');
       
  1671         $this->_retvalue = '$_tmp' . self::$prefix_number;
       
  1672     }
       
  1673 
       
  1674     #line 819 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1675     function yy_r109() {
       
  1676         if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self',
       
  1677                 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))
       
  1678         ) {
       
  1679             if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
       
  1680                 $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor] . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
       
  1681             } else {
       
  1682                 $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . '::' . $this->yystack[$this->yyidx + 0]->minor[0] . $this->yystack[$this->yyidx + 0]->minor[1];
       
  1683             }
       
  1684         } else {
       
  1685             $this->compiler->trigger_template_error("static class '" . $this->yystack[$this->yyidx + -2]->minor . "' is undefined or not allowed by security setting");
       
  1686         }
       
  1687     }
       
  1688 
       
  1689     #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1690     function yy_r112() {
       
  1691         $this->_retvalue = $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'');
       
  1692     }
       
  1693 
       
  1694     #line 856 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1695     function yy_r113() {
       
  1696         if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
       
  1697             $smarty_var = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
       
  1698             $this->_retvalue = $smarty_var;
       
  1699         } else {
       
  1700             // used for array reset,next,prev,end,current 
       
  1701             $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
       
  1702             $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
       
  1703             $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']) . $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
       
  1704         }
       
  1705     }
       
  1706 
       
  1707     #line 869 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1708     function yy_r114() {
       
  1709         $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[$this->yyidx + -2]->minor . ']->' . $this->yystack[$this->yyidx + 0]->minor;
       
  1710     }
       
  1711 
       
  1712     #line 879 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1713     function yy_r116() {
       
  1714         $this->_retvalue = '$_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + -1]->minor . '\')';
       
  1715     }
       
  1716 
       
  1717     #line 883 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1718     function yy_r117() {
       
  1719         $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + -2]->minor . '\')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' :null)';
       
  1720     }
       
  1721 
       
  1722     #line 887 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1723     function yy_r118() {
       
  1724         $this->_retvalue = '$_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + -1]->minor . ')';
       
  1725     }
       
  1726 
       
  1727     #line 891 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1728     function yy_r119() {
       
  1729         $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + -2]->minor . ')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' : null)';
       
  1730     }
       
  1731 
       
  1732     #line 895 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1733     function yy_r120() {
       
  1734         $this->_retvalue = array('var' => '\'' . substr($this->yystack[$this->yyidx + -1]->minor, 1) . '\'',
       
  1735             'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
       
  1736     }
       
  1737 
       
  1738     #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1739     function yy_r121() {
       
  1740         $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -1]->minor,
       
  1741             'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
       
  1742     }
       
  1743 
       
  1744     #line 911 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1745     function yy_r123() {
       
  1746         return;
       
  1747     }
       
  1748 
       
  1749     #line 917 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1750     function yy_r124() {
       
  1751         $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'') . ']';
       
  1752     }
       
  1753 
       
  1754     #line 920 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1755     function yy_r125() {
       
  1756         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor) . ']';
       
  1757     }
       
  1758 
       
  1759     #line 924 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1760     function yy_r126() {
       
  1761         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor) . '->' . $this->yystack[$this->yyidx + 0]->minor . ']';
       
  1762     }
       
  1763 
       
  1764     #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1765     function yy_r127() {
       
  1766         if (defined($this->yystack[$this->yyidx + 0]->minor)) {
       
  1767             if ($this->security) {
       
  1768                 $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
       
  1769             }
       
  1770             $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
       
  1771         } else {
       
  1772             $this->_retvalue = "['" . $this->yystack[$this->yyidx + 0]->minor . "']";
       
  1773         }
       
  1774     }
       
  1775 
       
  1776     #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1777     function yy_r128() {
       
  1778         $this->_retvalue = '[' . $this->yystack[$this->yyidx + 0]->minor . ']';
       
  1779     }
       
  1780 
       
  1781     #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1782     function yy_r129() {
       
  1783         $this->_retvalue = '[' . $this->yystack[$this->yyidx + -1]->minor . ']';
       
  1784     }
       
  1785 
       
  1786     #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1787     function yy_r130() {
       
  1788         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + -1]->minor . '\'][\'index\']') . ']';
       
  1789     }
       
  1790 
       
  1791     #line 952 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1792     function yy_r131() {
       
  1793         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + -3]->minor . '\'][\'' . $this->yystack[$this->yyidx + -1]->minor . '\']') . ']';
       
  1794     }
       
  1795 
       
  1796     #line 955 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1797     function yy_r132() {
       
  1798         $this->_retvalue = '[' . $this->yystack[$this->yyidx + -1]->minor . ']';
       
  1799     }
       
  1800 
       
  1801     #line 961 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1802     function yy_r134() {
       
  1803         $this->_retvalue = '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + -1]->minor, 1) . '\'') . ']';;
       
  1804     }
       
  1805 
       
  1806     #line 977 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1807     function yy_r138() {
       
  1808         $this->_retvalue = '[]';
       
  1809     }
       
  1810 
       
  1811     #line 987 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1812     function yy_r139() {
       
  1813         $this->_retvalue = '\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\'';
       
  1814     }
       
  1815 
       
  1816     #line 991 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1817     function yy_r140() {
       
  1818         $this->_retvalue = "''";
       
  1819     }
       
  1820 
       
  1821     #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1822     function yy_r141() {
       
  1823         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
       
  1824     }
       
  1825 
       
  1826     #line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1827     function yy_r143() {
       
  1828         $this->_retvalue = '(' . $this->yystack[$this->yyidx + -1]->minor . ')';
       
  1829     }
       
  1830 
       
  1831     #line 1013 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1832     function yy_r144() {
       
  1833         if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') {
       
  1834             $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']) . $this->yystack[$this->yyidx + 0]->minor;
       
  1835         } else {
       
  1836             $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']) . $this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'] . $this->yystack[$this->yyidx + 0]->minor;
       
  1837         }
       
  1838     }
       
  1839 
       
  1840     #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1841     function yy_r145() {
       
  1842         $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
       
  1843     }
       
  1844 
       
  1845     #line 1027 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1846     function yy_r146() {
       
  1847         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;
       
  1848     }
       
  1849 
       
  1850     #line 1032 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1851     function yy_r147() {
       
  1852         if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor, 0, 1) == '_') {
       
  1853             $this->compiler->trigger_template_error(self::Err1);
       
  1854         }
       
  1855         $this->_retvalue = '->' . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor;
       
  1856     }
       
  1857 
       
  1858     #line 1039 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1859     function yy_r148() {
       
  1860         if ($this->security) {
       
  1861             $this->compiler->trigger_template_error(self::Err2);
       
  1862         }
       
  1863         $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor . '}';
       
  1864     }
       
  1865 
       
  1866     #line 1046 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1867     function yy_r149() {
       
  1868         if ($this->security) {
       
  1869             $this->compiler->trigger_template_error(self::Err2);
       
  1870         }
       
  1871         $this->_retvalue = '->{' . $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
       
  1872     }
       
  1873 
       
  1874     #line 1053 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1875     function yy_r150() {
       
  1876         if ($this->security) {
       
  1877             $this->compiler->trigger_template_error(self::Err2);
       
  1878         }
       
  1879         $this->_retvalue = '->{\'' . $this->yystack[$this->yyidx + -4]->minor . '\'.' . $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
       
  1880     }
       
  1881 
       
  1882     #line 1061 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1883     function yy_r151() {
       
  1884         $this->_retvalue = '->' . $this->yystack[$this->yyidx + 0]->minor;
       
  1885     }
       
  1886 
       
  1887     #line 1069 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1888     function yy_r152() {
       
  1889         if (!$this->security || $this->security->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
       
  1890             if (strcasecmp($this->yystack[$this->yyidx + -3]->minor, 'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor, 'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor, 'array') === 0 || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
       
  1891                 $func_name = strtolower($this->yystack[$this->yyidx + -3]->minor);
       
  1892                 if ($func_name == 'isset') {
       
  1893                     if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
       
  1894                         $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
       
  1895                     }
       
  1896                     $par = implode(',', $this->yystack[$this->yyidx + -1]->minor);
       
  1897                     if (strncasecmp($par, '$_smarty_tpl->getConfigVariable', strlen('$_smarty_tpl->getConfigVariable')) === 0) {
       
  1898                         self::$prefix_number++;
       
  1899                         $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
       
  1900                         $isset_par = '$_tmp' . self::$prefix_number;
       
  1901                     } else {
       
  1902                         $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
       
  1903                     }
       
  1904                     $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(" . $isset_par . ")";
       
  1905                 } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
       
  1906                     if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
       
  1907                         $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
       
  1908                     }
       
  1909                     if ($func_name == 'empty') {
       
  1910                         $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value", $this->yystack[$this->yyidx + -1]->minor[0]) . ')';
       
  1911                     } else {
       
  1912                         $this->_retvalue = $func_name . '(' . $this->yystack[$this->yyidx + -1]->minor[0] . ')';
       
  1913                     }
       
  1914                 } else {
       
  1915                     $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + -1]->minor) . ")";
       
  1916                 }
       
  1917             } else {
       
  1918                 $this->compiler->trigger_template_error("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
       
  1919             }
       
  1920         }
       
  1921     }
       
  1922 
       
  1923     #line 1108 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1924     function yy_r153() {
       
  1925         if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor, 0, 1) == '_') {
       
  1926             $this->compiler->trigger_template_error(self::Err1);
       
  1927         }
       
  1928         $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + -1]->minor) . ")";
       
  1929     }
       
  1930 
       
  1931     #line 1115 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1932     function yy_r154() {
       
  1933         if ($this->security) {
       
  1934             $this->compiler->trigger_template_error(self::Err2);
       
  1935         }
       
  1936         self::$prefix_number++;
       
  1937         $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . $this->compiler->compileVariable('\'' . substr($this->yystack[$this->yyidx + -3]->minor, 1) . '\'') . ';?>';
       
  1938         $this->_retvalue = '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[$this->yyidx + -1]->minor) . ')';
       
  1939     }
       
  1940 
       
  1941     #line 1126 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1942     function yy_r155() {
       
  1943         $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor, array($this->yystack[$this->yyidx + 0]->minor));
       
  1944     }
       
  1945 
       
  1946     #line 1143 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1947     function yy_r158() {
       
  1948         $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor, array(array_merge($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor)));
       
  1949     }
       
  1950 
       
  1951     #line 1147 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1952     function yy_r159() {
       
  1953         $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor));
       
  1954     }
       
  1955 
       
  1956     #line 1155 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1957     function yy_r161() {
       
  1958         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
       
  1959     }
       
  1960 
       
  1961     #line 1163 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1962     function yy_r162() {
       
  1963         $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
       
  1964     }
       
  1965 
       
  1966     #line 1182 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1967     function yy_r166() {
       
  1968         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
       
  1969     }
       
  1970 
       
  1971     #line 1187 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1972     function yy_r167() {
       
  1973         $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor,
       
  1974             'method');
       
  1975     }
       
  1976 
       
  1977     #line 1192 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1978     function yy_r168() {
       
  1979         $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
       
  1980     }
       
  1981 
       
  1982     #line 1197 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1983     function yy_r169() {
       
  1984         $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor,
       
  1985             'property');
       
  1986     }
       
  1987 
       
  1988     #line 1202 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1989     function yy_r170() {
       
  1990         $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor,
       
  1991             $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor, 'property');
       
  1992     }
       
  1993 
       
  1994     #line 1208 "../smarty/lexer/smarty_internal_templateparser.y"
       
  1995     function yy_r171() {
       
  1996         $this->_retvalue['op'] = ' ' . trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
       
  1997     }
       
  1998 
       
  1999     #line 1212 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2000     function yy_r172() {
       
  2001         static $lops = array('eq' => array('op' => ' == ', 'pre' => null),
       
  2002             'ne' => array('op' => ' != ', 'pre' => null),
       
  2003             'neq' => array('op' => ' != ', 'pre' => null),
       
  2004             'gt' => array('op' => ' > ', 'pre' => null),
       
  2005             'ge' => array('op' => ' >= ', 'pre' => null),
       
  2006             'gte' => array('op' => ' >= ', 'pre' => null),
       
  2007             'lt' => array('op' => ' < ', 'pre' => null),
       
  2008             'le' => array('op' => ' <= ', 'pre' => null),
       
  2009             'lte' => array('op' => ' <= ', 'pre' => null),
       
  2010             'mod' => array('op' => ' % ', 'pre' => null),
       
  2011             'and' => array('op' => ' && ', 'pre' => null),
       
  2012             'or' => array('op' => ' || ', 'pre' => null),
       
  2013             'xor' => array('op' => ' xor ', 'pre' => null),
       
  2014             'isdivby' => array('op' => ' % ', 'pre' => '!('),
       
  2015             'isnotdivby' => array('op' => ' % ', 'pre' => '('),
       
  2016             'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
       
  2017             'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
       
  2018             'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
       
  2019             'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
       
  2020         $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
       
  2021         $this->_retvalue = $lops[$op];
       
  2022     }
       
  2023 
       
  2024     #line 1238 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2025     function yy_r173() {
       
  2026         static $scond = array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ',
       
  2027             'isnotodd' => '!(1 & ',);
       
  2028         $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
       
  2029         $this->_retvalue = $scond[$op];
       
  2030     }
       
  2031 
       
  2032     #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2033     function yy_r174() {
       
  2034         $this->_retvalue = 'array(' . $this->yystack[$this->yyidx + -1]->minor . ')';
       
  2035     }
       
  2036 
       
  2037     #line 1260 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2038     function yy_r176() {
       
  2039         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor;
       
  2040     }
       
  2041 
       
  2042     #line 1268 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2043     function yy_r178() {
       
  2044         $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . '=>' . $this->yystack[$this->yyidx + 0]->minor;
       
  2045     }
       
  2046 
       
  2047     #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2048     function yy_r179() {
       
  2049         $this->_retvalue = '\'' . $this->yystack[$this->yyidx + -2]->minor . '\'=>' . $this->yystack[$this->yyidx + 0]->minor;
       
  2050     }
       
  2051 
       
  2052     #line 1288 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2053     function yy_r182() {
       
  2054         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();
       
  2055     }
       
  2056 
       
  2057     #line 1293 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2058     function yy_r183() {
       
  2059         $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
       
  2060         $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
       
  2061     }
       
  2062 
       
  2063     #line 1298 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2064     function yy_r184() {
       
  2065         $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor);
       
  2066     }
       
  2067 
       
  2068     #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2069     function yy_r185() {
       
  2070         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)' . $this->yystack[$this->yyidx + -1]->minor);
       
  2071     }
       
  2072 
       
  2073     #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2074     function yy_r187() {
       
  2075         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)$_smarty_tpl->tpl_vars[\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\']->value');
       
  2076     }
       
  2077 
       
  2078     #line 1318 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2079     function yy_r189() {
       
  2080         $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)(' . $this->yystack[$this->yyidx + -1]->minor . ')');
       
  2081     }
       
  2082 
       
  2083     #line 1322 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2084     function yy_r190() {
       
  2085         $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor);
       
  2086     }
       
  2087 
       
  2088     #line 1326 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2089     function yy_r191() {
       
  2090         $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this, $this->yystack[$this->yyidx + 0]->minor);
       
  2091     }
       
  2092 
       
  2093     private $_retvalue;
       
  2094 
       
  2095     public function yy_reduce($yyruleno) {
       
  2096         if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
       
  2097             fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno, self::$yyRuleName[$yyruleno]);
       
  2098         }
       
  2099 
       
  2100         $this->_retvalue = $yy_lefthand_side = null;
       
  2101         if (isset(self::$yyReduceMap[$yyruleno])) {
       
  2102             // call the action
       
  2103             $this->_retvalue = null;
       
  2104             $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
       
  2105             $yy_lefthand_side = $this->_retvalue;
       
  2106         }
       
  2107         $yygoto = self::$yyRuleInfo[$yyruleno][0];
       
  2108         $yysize = self::$yyRuleInfo[$yyruleno][1];
       
  2109         $this->yyidx -= $yysize;
       
  2110         for ($i = $yysize; $i; $i--) {
       
  2111             // pop all of the right-hand side parameters
       
  2112             array_pop($this->yystack);
       
  2113         }
       
  2114         $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
       
  2115         if ($yyact < self::YYNSTATE) {
       
  2116             if (!$this->yyTraceFILE && $yysize) {
       
  2117                 $this->yyidx++;
       
  2118                 $x = new TP_yyStackEntry;
       
  2119                 $x->stateno = $yyact;
       
  2120                 $x->major = $yygoto;
       
  2121                 $x->minor = $yy_lefthand_side;
       
  2122                 $this->yystack[$this->yyidx] = $x;
       
  2123             } else {
       
  2124                 $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
       
  2125             }
       
  2126         } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
       
  2127             $this->yy_accept();
       
  2128         }
       
  2129     }
       
  2130 
       
  2131     public function yy_parse_failed() {
       
  2132         if ($this->yyTraceFILE) {
       
  2133             fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
       
  2134         }
       
  2135         while ($this->yyidx >= 0) {
       
  2136             $this->yy_pop_parser_stack();
       
  2137         }
       
  2138     }
       
  2139 
       
  2140     public function yy_syntax_error($yymajor, $TOKEN) {
       
  2141         #line 183 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2142 
       
  2143         $this->internalError = true;
       
  2144         $this->yymajor = $yymajor;
       
  2145         $this->compiler->trigger_template_error();
       
  2146     }
       
  2147 
       
  2148     public function yy_accept() {
       
  2149         if ($this->yyTraceFILE) {
       
  2150             fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
       
  2151         }
       
  2152         while ($this->yyidx >= 0) {
       
  2153             $this->yy_pop_parser_stack();
       
  2154         }
       
  2155         #line 176 "../smarty/lexer/smarty_internal_templateparser.y"
       
  2156 
       
  2157         $this->successful = !$this->internalError;
       
  2158         $this->internalError = false;
       
  2159         $this->retvalue = $this->_retvalue;
       
  2160     }
       
  2161 
       
  2162     public function doParse($yymajor, $yytokenvalue) {
       
  2163         $yyerrorhit = 0;   /* True if yymajor has invoked an error */
       
  2164 
       
  2165         if ($this->yyidx === null || $this->yyidx < 0) {
       
  2166             $this->yyidx = 0;
       
  2167             $this->yyerrcnt = -1;
       
  2168             $x = new TP_yyStackEntry;
       
  2169             $x->stateno = 0;
       
  2170             $x->major = 0;
       
  2171             $this->yystack = array();
       
  2172             $this->yystack[] = $x;
       
  2173         }
       
  2174         $yyendofinput = ($yymajor == 0);
       
  2175 
       
  2176         if ($this->yyTraceFILE) {
       
  2177             fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
       
  2178         }
       
  2179 
       
  2180         do {
       
  2181             $yyact = $this->yy_find_shift_action($yymajor);
       
  2182             if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
       
  2183                 // force a syntax error
       
  2184                 $yyact = self::YY_ERROR_ACTION;
       
  2185             }
       
  2186             if ($yyact < self::YYNSTATE) {
       
  2187                 $this->yy_shift($yyact, $yymajor, $yytokenvalue);
       
  2188                 $this->yyerrcnt--;
       
  2189                 if ($yyendofinput && $this->yyidx >= 0) {
       
  2190                     $yymajor = 0;
       
  2191                 } else {
       
  2192                     $yymajor = self::YYNOCODE;
       
  2193                 }
       
  2194             } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
       
  2195                 $this->yy_reduce($yyact - self::YYNSTATE);
       
  2196             } elseif ($yyact == self::YY_ERROR_ACTION) {
       
  2197                 if ($this->yyTraceFILE) {
       
  2198                     fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
       
  2199                 }
       
  2200                 if (self::YYERRORSYMBOL) {
       
  2201                     if ($this->yyerrcnt < 0) {
       
  2202                         $this->yy_syntax_error($yymajor, $yytokenvalue);
       
  2203                     }
       
  2204                     $yymx = $this->yystack[$this->yyidx]->major;
       
  2205                     if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
       
  2206                         if ($this->yyTraceFILE) {
       
  2207                             fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
       
  2208                         }
       
  2209                         $this->yy_destructor($yymajor, $yytokenvalue);
       
  2210                         $yymajor = self::YYNOCODE;
       
  2211                     } else {
       
  2212                         while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
       
  2213                             $this->yy_pop_parser_stack();
       
  2214                         }
       
  2215                         if ($this->yyidx < 0 || $yymajor == 0) {
       
  2216                             $this->yy_destructor($yymajor, $yytokenvalue);
       
  2217                             $this->yy_parse_failed();
       
  2218                             $yymajor = self::YYNOCODE;
       
  2219                         } elseif ($yymx != self::YYERRORSYMBOL) {
       
  2220                             $u2 = 0;
       
  2221                             $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
       
  2222                         }
       
  2223                     }
       
  2224                     $this->yyerrcnt = 3;
       
  2225                     $yyerrorhit = 1;
       
  2226                 } else {
       
  2227                     if ($this->yyerrcnt <= 0) {
       
  2228                         $this->yy_syntax_error($yymajor, $yytokenvalue);
       
  2229                     }
       
  2230                     $this->yyerrcnt = 3;
       
  2231                     $this->yy_destructor($yymajor, $yytokenvalue);
       
  2232                     if ($yyendofinput) {
       
  2233                         $this->yy_parse_failed();
       
  2234                     }
       
  2235                     $yymajor = self::YYNOCODE;
       
  2236                 }
       
  2237             } else {
       
  2238                 $this->yy_accept();
       
  2239                 $yymajor = self::YYNOCODE;
       
  2240             }
       
  2241         } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
       
  2242     }
       
  2243 }
       
  2244