diff --git a/.env b/.env new file mode 100644 index 0000000..759b611 --- /dev/null +++ b/.env @@ -0,0 +1,9 @@ +# config BDD + +DB_CONNECTION=mysql +DB_HOSTNAME=boulayoune.com +DB_DATABASE=projet_folliow +DB_USERNAME= +DB_PASSWORD= + +IMG_PATH= uploads/projects/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 68b4719..183434a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ /templates_c/ /templates_c/** -.env \ No newline at end of file +.env diff --git a/composer.json b/composer.json index 6354a55..c44dd27 100644 --- a/composer.json +++ b/composer.json @@ -8,13 +8,13 @@ }, "autoload": { "psr-4": { - "Yasse\\Projetphp\\": "src/" + "Guill\\Guillaume\\": "src/" } }, "authors": [ { - "name": "Yasder5", - "email": "102179445+Yasder5@users.noreply.github.com" + "name": "GuillaumeH-Cci", + "email": "guillaume.hess@ccicampus.fr" } ] } diff --git a/composer.lock b/composer.lock index 24506a7..e54fc18 100644 --- a/composer.lock +++ b/composer.lock @@ -227,16 +227,16 @@ }, { "name": "smarty/smarty", - "version": "v5.7.0", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/smarty-php/smarty.git", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab" + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/73da7e90f302175a570662fcb0ba41f57b7a92ab", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/78d259d3b971c59a0cd719c270cc5cbb740c36a7", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7", "shasum": "" }, "require": { @@ -291,7 +291,7 @@ "support": { "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v5.7.0" + "source": "https://github.com/smarty-php/smarty/tree/v5.8.0" }, "funding": [ { @@ -299,7 +299,7 @@ "type": "github" } ], - "time": "2025-11-19T21:36:38+00:00" + "time": "2026-02-15T14:27:15+00:00" }, { "name": "symfony/polyfill-ctype", diff --git a/controllers/page_controller.php b/controllers/page_controller.php new file mode 100644 index 0000000..c7ff933 --- /dev/null +++ b/controllers/page_controller.php @@ -0,0 +1,17 @@ +_display("help"); + + } + } \ No newline at end of file diff --git a/controllers/project_controller.php b/controllers/project_controller.php index 47f9372..a354734 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -25,7 +25,7 @@ public function home(){ - $intCategory = 0; + $intCategory = 0; if (!empty($_GET['filter_cat'])) { $intCategory = (int) $_GET['filter_cat']; } @@ -88,87 +88,170 @@ $this->_arrData['arrProject'] = $arrProject; $this->_arrData['arrUser'] = $arrUser; - - - $this->_display("search"); } /** * Fonction d'affichage de la page projet + * @author Christel adapter par Guillaume */ - public function project (){ + public function addedit_project() { + if (!isset($_SESSION['user'])){ // Pas d'utilisateur connecté + header("Location:index.php?ctrl=error&action=error_403"); + exit; + } + + $objProject = new Project; + $objProjectModel = new ProjectModel; + $objCategoryModel = new CategoryModel; + + // dans la cas de modif + if (isset($_GET['id'])){ + $arrProject = $objProjectModel->findOne($_GET['id']); + $objProject->hydrate($arrProject); // BDD + } + + // Tester le formulaire + $arrError = []; + if (count($_POST) > 0) { + + $objProject->hydrate($_POST); // Formulaire + if ($objProject->getTitle() == ""){ + $arrError['title'] = "Le titre est obligatoire"; + } + + if ($objProject->getDescription() == ""){ + $arrError['description'] = "La description est obligatoire"; + } + + if ($objProject->getContent() == ""){ + $arrError['content'] = "Le contenu est obligatoire"; + } + + // Vérification de l'image + $arrTypeAllowed = array('image/jpeg', 'image/png', 'image/webp'); + if ($_FILES['thumbnail']['error'] != 4){ + if (!in_array($_FILES['thumbnail']['type'], $arrTypeAllowed)){ + $arrError['thumbnail'] = "Le type de fichier n'est pas autorisé"; + }else{ + // Vérification des codes d'erreur + switch ($_FILES['thumbnail']['error']){ + case 0 : + // Renommage de l'image + $strImageName = uniqid().".webp"; + + // Récupère le nom de l'image avant changement + $strOldImg = $objProject->getThumbnail(); + // Mise à jour du nom de l'image dans l'objet + $objProject->setThumbnail($strImageName); + break; + case 1 : + case 2 : + $arrError['thumbnail'] = "Le fichier est trop volumineux"; + break; + case 3 : + $arrError['thumbnail'] = "Le fichier a été partiellement téléchargé"; + break; + case 6 : + $arrError['thumbnail'] = "Le répertoire temporaire est manquant"; + break; + default : + $arrError['thumbnail'] = "Erreur sur l'image"; + break; + } + } + + }else{ + // Est-ce que le fichier existe ? + if (is_null($objProject->getThumbnail())){ + $arrError['thumbnail'] = "L'image est obligatoire"; + } + } - $objProjectModel = new ProjectModel; - $arrProject = $objProjectModel->findAll(4); - $arrProjectToDisplay = array(); - foreach($arrProject as $arrDetProject){ - $objProject = new Project; - $objProject->hydrate($arrDetProject); - $arrProjectToDisplay[] = $objProject; - } + // SI pas d'erreur : on traite l'image depuis la bdd + if (count($arrError) == 0){ - $objImageModel = new ImageModel; - $arrImage = $objImageModel->findAllImage(4); - $arrImageToDisplay = array(); - foreach($arrImage as $arrDetImage){ - $objImage = new Image; - $objImage->hydrate($arrDetImage); - $arrImageToDisplay[] = $objImage; - } - //Variable data - $_SESSION['title'] = $_POST['titleProject']??""; - $_SESSION['description'] = $_POST['descProject']??""; - $_SESSION['content'] = $_POST['textProject']??""; - $_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??""; - $_SESSION['status'] = 'en_attente'; - $_SESSION['user_id'] = $_SESSION['user']['user_id']; + $boolImageOk = true; + // Redimensionnement de l'image + if (isset($strImageName)){ + $strDest = $_ENV['IMG_PATH'].$strImageName; + $strSource = $_FILES['thumbnail']['tmp_name']; + list($intWidth, $intHeight) = getimagesize($strSource); + + $intDestWidth = 200; $intDestHeight = 250; + $fltDestRatio = $intDestWidth / $intDestHeight; + $fltSourceRatio = $intWidth / $intHeight; + + if ($fltSourceRatio > $fltDestRatio) { + $intCropHeight = $intHeight; + $intCropWidth = (int)round($intHeight * $fltDestRatio); + $intCropX = (int)(($intWidth - $intCropWidth) / 2); + $intCropY = 0; + } else { + $intCropWidth = $intWidth; + $intCropHeight = (int)round($intWidth / $fltDestRatio); + $intCropX = 0; + $intCropY = (int)(($intHeight - $intCropHeight) / 2); + } + + // Condition en fonction de l'extension de l'image + $objDest = imagecreatetruecolor($intDestWidth, $intDestHeight); + switch ($_FILES['thumbnail']['type']) { + case 'image/jpeg' : + $objSource = imagecreatefromjpeg($strSource); + break; + case 'image/png' : + $objSource = imagecreatefrompng($strSource); + break; + case 'image/webp' : + $objSource = imagecreatefromwebp($strSource); + break; + } + + imagecopyresampled($objDest, $objSource, 0, 0, $intCropX, $intCropY, $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight); + + // Sauvegarde du fichier + $boolImageOk = imagewebp($objDest, $strDest); + imagedestroy($objDest); + imagedestroy($objSource); + } - $objProject = new Project(); + // SI image ok, on balance tout dans la bdd + if ($boolImageOk){ + if (!isset($_GET['id'])){ + $objProject->setUser_id($_SESSION['user']['user_id']); + $boolOk = $objProjectModel->insert($objProject); + } else { + $boolOk = $objProjectModel->updateProject($objProject); + } - /** - * Créer par Besnik le GOAT et l'autre GOAT de Guillaume - * - * @return bool pour savoir si le fichier existe, - * puis déplace vers le fichier uploads avec les images projet des utilisateurs - * Communication avec la BDD - */ - if (($_SESSION['thumbnail'] != null)){ - $strDest = ""; - if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){ - $strDest = 'uploads/projects/'.$_FILES['imageProject']['name']; - move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest); - } - } + if ($boolOk){ + // Suppression de l'ancienne image + if(isset($strOldImg) && !empty($strOldImg) && isset($strImageName)){ + $strOldFile = $_ENV['IMG_PATH'].$strOldImg; + if (file_exists($strOldFile)) unlink($strOldFile); + } - /** En cas d'appuis sur le bouton d'envoie ou celui de remettre a plus tard - * 1. Changement de status - * 2. Hydratation avec les informations récupéré de l'utilisateur - * 3. Envoie des données à la BDD - */ - if (isset($_POST['sendMessage'])) { - $_SESSION['status'] = 'publié'; - $objProject->hydrate($_SESSION); - $objProject->setThumbnail($strDest); - var_dump($strDest); - var_dump($objProject); - $objProjectModel->insert($objProject); + $_SESSION['success'] = (!isset($_GET['id'])) ? "Le projet a bien été créé" : "Le projet a bien été modifié"; + header("Location:index.php"); + exit; + } else { + $arrError[] = "Erreur lors de l'enregistrement en base de données"; + } + } else { + $arrError['thumbnail'] = "Erreur dans le traitement de l'image"; + } + } + } - } else if (isset($_POST['toContinue'])) { - $objProject->hydrate($_SESSION); - $objProject->setThumbnail($strDest); - $objProjectModel->insert($objProject); - } - - var_dump($_SESSION); - var_dump($objProject); - $this->_arrData['arrProjectToDiplay'] = $arrProjectToDisplay; - $this->_arrData['arrImageToDiplay'] = $arrImageToDisplay; - - $this->_display("project"); - } + // Données pour la vue + $this->_arrData['arrCategory'] = $objCategoryModel->findAllCategory(); + $this->_arrData['objProject'] = $objProject; + $this->_arrData['arrError'] = $arrError; + $this->_display('addedit_project'); + } public function display() { $intId = $_GET['id'] ?? null; @@ -193,74 +276,68 @@ } } - public function sendEmail(){ - if (count($_POST) > 0) { - + public function shareProject(){ + if (count($_POST) > 0) + { $projectId = (int)($_POST['project_id'] ?? 0); $toEmail = trim($_POST['to_email'] ?? ''); - - if ($projectId <= 0 || !filter_var($toEmail, FILTER_VALIDATE_EMAIL)) { - header("Location: index.php?ctrl=project&action=display&id=".$projectId."&mail=fail"); - exit; - } - + $objProjectModel = new ProjectModel(); $arrProject = $objProjectModel->findOne($projectId); - + if (!$arrProject) { header("Location: index.php?ctrl=project&action=home"); exit; } - + $objProject = new Project(); $objProject->hydrate($arrProject); - - - - $objMail = new PHPMailer(); // Nouvel objet Mail + + $objMail = new PHPMailer(); $objMail->IsSMTP(); - $objMail->Mailer = "smtp"; - $objMail->CharSet = PHPMailer::CHARSET_UTF8; - - $objMail->SMTPDebug = 0; - - - $objMail->SMTPAuth = TRUE; - $objMail->SMTPSecure = "tls"; - $objMail->Port = 587; - $objMail->Host = "smtp.gmail.com"; - $objMail->Username = "projet.folliow@gmail.com"; - $objMail->Password = "dqnw mqbu cwvg enbp"; - + $objMail->Mailer = "smtp"; + $objMail->CharSet = PHPMailer::CHARSET_UTF8; + $objMail->SMTPDebug = 0; + + $objMail->SMTPAuth = true; + $objMail->SMTPSecure = "tls"; + $objMail->Port = 587; + $objMail->Host = 'smtp-relay.brevo.com'; + $objMail->Username = 'a2a67e001@smtp-brevo.com'; + $objMail->Password = 'xsmtpsib-f2af87e12d3db6f1b99802a92c1acda32d45fc32a8446eeed7e49ec91c4ec7ef-AX8Y7YkRWYSmKHwS'; + + // Désactive la vérification du certificat SSL + // Cela permet d'éviter les erreurs liées au certificat, mais réduit la sécurité de la connexion. + $objMail->SMTPOptions = [ + 'ssl' => [ + 'verify_peer' => false, + ], + ]; + + $objMail->IsHTML(true); - - - $objMail->setFrom('projet.folliow@gmail.com', 'Projet Folliow'); - - - // Destinataire + + $objMail->setFrom('projet.folliow@hotmail.com', 'Folliow'); $objMail->addAddress($toEmail); - - // Mail + $objMail->Subject = "Projet : " . $objProject->getTitle(); - - $url = "http://localhost/projet_php/public/index.php?ctrl=project&action=display&id=" . $projectId; - - $objMail->Body = - "

" . $objProject->getTitle() . "

" . - "

" . $objProject->getDescription() . "

" . - "

Voir le projet

"; - - // Envoi + redirection + + $url = "https://php.boulayoune.com/index.php?ctrl=project&action=display&id=" . $projectId; + + $this->_arrData['projectTitle'] = $objProject->getTitle(); + $this->_arrData['projectDescription'] = $objProject->getDescription(); + $this->_arrData['projectUrl'] = $url; + + $objMail->Body = $this->_display("mail_message", false); + if ($objMail->Send()) { header("Location: index.php?ctrl=project&action=display&id=".$projectId."&mail=ok"); } else { - // Pour debug si besoin: echo $objMail->ErrorInfo; exit; header("Location: index.php?ctrl=project&action=display&id=".$projectId."&mail=fail"); } exit; } - + header("Location: index.php?ctrl=project&action=home"); exit; } @@ -306,4 +383,22 @@ header("Location: index.php"); exit; } - } \ No newline at end of file + + /** + * Page mentions légales + */ + public function mentions(){ + // Afficher + $this->_display("mentions"); + } + + + /** + * Page à propos + */ + public function about(){ + // Afficher + $this->_display("about"); + } + + } diff --git a/controllers/user_controller.php b/controllers/user_controller.php index 1ccd6b2..d981df7 100644 --- a/controllers/user_controller.php +++ b/controllers/user_controller.php @@ -309,4 +309,5 @@ class UserCtrl extends MotherCtrl { $this->_display("useredit"); } + } diff --git a/entities/image_entity.php b/entities/image_entity.php index b919d67..29588a1 100644 --- a/entities/image_entity.php +++ b/entities/image_entity.php @@ -2,11 +2,11 @@ require_once("mother_entity.php"); -/** - * Classe d'un objet Projet - * @author Laura - */ + /** + * Classe d'un objet Projet + * @author Laura + */ class Image extends Entity{ private int $_id; diff --git a/entities/project_entity.php b/entities/project_entity.php index cb8548a..8f5ae79 100644 --- a/entities/project_entity.php +++ b/entities/project_entity.php @@ -7,15 +7,15 @@ require_once("mother_entity.php"); class Project extends Entity{ - private int $_id; - private string $_title; - private string $_description; - private string $_thumbnail; - private string $_content; + private ?int $_id = null; + private string $_title = ""; + private string $_description = ""; + private ?string $_thumbnail = null; + private string $_content = ""; private string $_creation_date; - private string $_status; + private string $_status = "en_attente"; private int $_user; - private int $_category; + private int $_category = 0; private string $_creatorname; private string $_user_image; @@ -33,7 +33,7 @@ class Project extends Entity{ * Récuperation de l'id du Projet * @return int l'id du projet */ - public function getId():int{ + public function getId():?int{ return $this->_id; } @@ -110,7 +110,6 @@ class Project extends Entity{ $this->_content = $content; } - /** * Récupération de la date de création * @param string lang de formatage de la date (par défaut = "fr_FR") @@ -173,7 +172,7 @@ class Project extends Entity{ * Récupération de la catégorie * @return int id de la catégorie */ - public function getCategory(){ + public function getCategory():?int{ return $this->_category; } diff --git a/index.php b/index.php index ae6424c..320007f 100644 --- a/index.php +++ b/index.php @@ -1,7 +1,7 @@ _db->prepare($strRq); @@ -100,6 +100,8 @@ $rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR); $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); $rqPrep->bindValue(":status", $objProject->getStatus(), PDO::PARAM_STR); + $rqPrep->bindValue(":project_user_id", $objProject->getUser_id(), PDO::PARAM_STR); + $rqPrep->bindValue(":project_category", $objProject->getCategory(), PDO::PARAM_STR); return $rqPrep->execute(); } @@ -108,7 +110,7 @@ * Fonction de recherche d'un seul projet * @param int $intId * @return array - */ + */ public function findOne(int $intId) :array{ $strRq = "SELECT project.*, CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname', @@ -126,6 +128,12 @@ return $rqPrep->fetch(); } + /** + * Fonction de changement de status (accepter) d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function accept(int $id){ //SQL pour changer le status en accept @@ -137,6 +145,12 @@ return $this->_db->query($strRq); } + /** + * Fonction de changement de status (refusé) d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function refuse(int $id){ $strRq = "UPDATE project @@ -145,7 +159,13 @@ return $this->_db->query($strRq); } - + + /** + * Fonction de suppression d'un projet en BDD + * @author Guillaume + * @param int $id l'id du projet + * @return bool Est-ce que la requête s'est bien passée + */ public function delete(int $id){ $strRq = "DELETE FROM project @@ -156,23 +176,58 @@ /** * Fonction de mise à jour d'un projet en BDD + * @author Guillaume * @param object $objProject L'objet utilisateur * @return bool Est-ce que la requête s'est bien passée */ public function updateProject(object $objProject):bool{ + + $strRq = "UPDATE project + SET project_title = :title, + project_description = :description, + project_content = :content, + project_thumbnail = :thumbnail + WHERE project_id = :id"; - $strRq = "UPDATE project - SET project_title = :title, project_description = :description, project_content = :content - WHERE project_id = :id"; - - $rqPrep = $this->_db->prepare($strRq); + $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR); $rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR); $rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR); + $rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR); + $rqPrep->bindValue(":id", $objProject->getId(), PDO::PARAM_INT); - - // Executer la requête return $rqPrep->execute(); } + + public function getImagesByProjectId(int $projectId): array { + $strRq = "SELECT image_id, image_name, image_alt + FROM image + WHERE image_project = :id AND image_status = 1"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $projectId, PDO::PARAM_INT); + $rqPrep->execute(); + + return $rqPrep->fetchAll(PDO::FETCH_ASSOC); + } + + public function addImageInProject(string $fileName, int $projectId, string $alt = "Image projet"): bool { + $strRq = "INSERT INTO image ( + image_name, + image_alt, + image_status, + image_project + ) + VALUES (:name, :alt, :status, :project)"; + + $rqPrep = $this->_db->prepare($strRq); + + $rqPrep->bindValue(":name", $fileName, PDO::PARAM_STR); + $rqPrep->bindValue(":alt", $alt, PDO::PARAM_STR); + $rqPrep->bindValue(":status", "en_attente", PDO::PARAM_STR); // Valeur string brute + $rqPrep->bindValue(":project", $projectId, PDO::PARAM_INT); + + return $rqPrep->execute(); + } } \ No newline at end of file diff --git a/uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp b/uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp deleted file mode 100644 index 13d2019..0000000 Binary files a/uploads/projects/320px-Mad_Researcher_of_the_Ring__Idle_Sprite.webp and /dev/null differ diff --git a/uploads/projects/6998730421d82.webp b/uploads/projects/6998730421d82.webp new file mode 100644 index 0000000..3582ecf Binary files /dev/null and b/uploads/projects/6998730421d82.webp differ diff --git a/uploads/projects/6998793d6b378.webp b/uploads/projects/6998793d6b378.webp new file mode 100644 index 0000000..89961e9 Binary files /dev/null and b/uploads/projects/6998793d6b378.webp differ diff --git a/uploads/projects/6998903db4a2d.webp b/uploads/projects/6998903db4a2d.webp new file mode 100644 index 0000000..70feb5e Binary files /dev/null and b/uploads/projects/6998903db4a2d.webp differ diff --git a/uploads/projects/800px-You_Want_To_Get_Beat__Hurtily__Idle_Sprite.webp b/uploads/projects/800px-You_Want_To_Get_Beat__Hurtily__Idle_Sprite.webp deleted file mode 100644 index 2429e06..0000000 Binary files a/uploads/projects/800px-You_Want_To_Get_Beat__Hurtily__Idle_Sprite.webp and /dev/null differ diff --git a/uploads/projects/Capture d'écran 2025-11-06 161706.png b/uploads/projects/Capture d'écran 2025-11-06 161706.png deleted file mode 100644 index 2b88717..0000000 Binary files a/uploads/projects/Capture d'écran 2025-11-06 161706.png and /dev/null differ diff --git a/uploads/projects/Capture d'écran 2026-01-15 144610.png b/uploads/projects/Capture d'écran 2026-01-15 144610.png deleted file mode 100644 index cd2ab68..0000000 Binary files a/uploads/projects/Capture d'écran 2026-01-15 144610.png and /dev/null differ diff --git a/uploads/projects/Capture d'écran 2026-01-20 140950.png b/uploads/projects/Capture d'écran 2026-01-20 140950.png deleted file mode 100644 index 02b7d0b..0000000 Binary files a/uploads/projects/Capture d'écran 2026-01-20 140950.png and /dev/null differ diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 72ffe23..5451b88 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,13 +6,13 @@ $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); return array( - 'Yasse\\Projetphp\\' => array($baseDir . '/src'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'), 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'), + 'Guill\\Guillaume\\' => array($baseDir . '/src'), 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index c6819f4..a7c1951 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -14,10 +14,6 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 ); public static $prefixLengthsPsr4 = array ( - 'Y' => - array ( - 'Yasse\\Projetphp\\' => 16, - ), 'S' => array ( 'Symfony\\Polyfill\\Php80\\' => 23, @@ -32,6 +28,7 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 ), 'G' => array ( + 'Guill\\Guillaume\\' => 16, 'GrahamCampbell\\ResultType\\' => 26, ), 'D' => @@ -41,10 +38,6 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 ); public static $prefixDirsPsr4 = array ( - 'Yasse\\Projetphp\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), 'Symfony\\Polyfill\\Php80\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', @@ -69,6 +62,10 @@ class ComposerStaticInit68f8d029d347b4c0c8cdbe33eeb96101 array ( 0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src', ), + 'Guill\\Guillaume\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), 'GrahamCampbell\\ResultType\\' => array ( 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index ae3a4b2..825c8e5 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -230,17 +230,17 @@ }, { "name": "smarty/smarty", - "version": "v5.7.0", - "version_normalized": "5.7.0.0", + "version": "v5.8.0", + "version_normalized": "5.8.0.0", "source": { "type": "git", "url": "https://github.com/smarty-php/smarty.git", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab" + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/73da7e90f302175a570662fcb0ba41f57b7a92ab", - "reference": "73da7e90f302175a570662fcb0ba41f57b7a92ab", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/78d259d3b971c59a0cd719c270cc5cbb740c36a7", + "reference": "78d259d3b971c59a0cd719c270cc5cbb740c36a7", "shasum": "" }, "require": { @@ -251,7 +251,7 @@ "phpunit/phpunit": "^8.5 || ^7.5", "smarty/smarty-lexer": "^4.0.2" }, - "time": "2025-11-19T21:36:38+00:00", + "time": "2026-02-15T14:27:15+00:00", "type": "library", "extra": { "branch-alias": { @@ -297,7 +297,7 @@ "support": { "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v5.7.0" + "source": "https://github.com/smarty-php/smarty/tree/v5.8.0" }, "funding": [ { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 9d8bef7..a49551a 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'yasse/projetphp', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'ea3892886993812ca42db7f03050df59d2c2163c', + 'reference' => '18301190fcc0a817bf05ee42b03b5e9388fd9429', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -38,9 +38,9 @@ 'dev_requirement' => false, ), 'smarty/smarty' => array( - 'pretty_version' => 'v5.7.0', - 'version' => '5.7.0.0', - 'reference' => '73da7e90f302175a570662fcb0ba41f57b7a92ab', + 'pretty_version' => 'v5.8.0', + 'version' => '5.8.0.0', + 'reference' => '78d259d3b971c59a0cd719c270cc5cbb740c36a7', 'type' => 'library', 'install_path' => __DIR__ . '/../smarty/smarty', 'aliases' => array(), @@ -85,7 +85,7 @@ 'yasse/projetphp' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'ea3892886993812ca42db7f03050df59d2c2163c', + 'reference' => '18301190fcc0a817bf05ee42b03b5e9388fd9429', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/smarty/smarty/CHANGELOG.md b/vendor/smarty/smarty/CHANGELOG.md index 5922543..da75ec2 100644 --- a/vendor/smarty/smarty/CHANGELOG.md +++ b/vendor/smarty/smarty/CHANGELOG.md @@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.8.0] - 2026-02-15 +- Added support for Backed Enums for php versions >= 8.1 [#1171](https://github.com/smarty-php/smarty/pull/1171) +- Added support for new 'matches' operator doing regex matching [#1169](https://github.com/smarty-php/smarty/pull/1169) +- Update documentation to clarify that include inline is currently not implemented in Smarty v5 [#1152](https://github.com/smarty-php/smarty/issues/1152) +- Support for Laravel Collections style object chaining for objects return from function calls implemented as modifiers [#1151](https://github.com/smarty-php/smarty/issues/1151) + + ## [5.7.0] - 2025-11-19 - PHP 8.5 support diff --git a/vendor/smarty/smarty/CONTRIBUTING.md b/vendor/smarty/smarty/CONTRIBUTING.md index 8dfdf32..9cba362 100644 --- a/vendor/smarty/smarty/CONTRIBUTING.md +++ b/vendor/smarty/smarty/CONTRIBUTING.md @@ -115,5 +115,7 @@ If you are a maintainer, you can publish the document using [mike](https://githu mike deploy 5.x ``` +Then, push the `gh-pages` branch. + ## Attribution This guide is based on the **contributing.md**. [Make your own](https://contributing.md/)! diff --git a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md index 98a5653..965327c 100644 --- a/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md +++ b/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md @@ -50,6 +50,120 @@ separated from surrounding elements by spaces. Note that items listed in | is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 | | is in | | $a is in $b | exists in array | in_array($a, $b) | | is \[not\] in | | $a is not in $b | does not exist in array | !in_array($a, $b) | +| matches | | $a matches $b | regex pattern match | preg_match($b, $a) | + +## Regex Matching Operator + +The `matches` operator allows you to test if a string matches a regular expression pattern. + +### Basic Usage + +```smarty +{if "hello" matches "/^[a-z]+$/"} + String matches the pattern! +{/if} + +{if $email matches "/^[^@]+@[^@]+\.[^@]+$/"} + Valid email format +{else} + Invalid email format +{/if} +``` + +### Using Variables + +```smarty +{$pattern = '/^[a-zA-Z0-9]{8,}$/'} +{if $password matches $pattern} + Password meets requirements +{else} + Password must be at least 8 alphanumeric characters +{/if} +``` + +### Pattern Modifiers + +The `matches` operator supports all standard PHP regex modifiers: + +```smarty +{* Case insensitive matching *} +{if "HELLO" matches "/hello/i"} + Matches (case insensitive) +{/if} + +{* Multiline mode *} +{if "line1\nline2" matches "/line2$/m"} + Matches in multiline mode +{/if} + +{* Dot matches newlines *} +{if "hello\nworld" matches "/hello.world/s"} + Matches with dotall modifier +{/if} +``` + +### Complex Conditions + +The `matches` operator can be combined with other operators: + +```smarty +{if $username matches "/^[a-z]+$/" && $username|length > 3} + Valid username +{else} + Username must be lowercase letters and at least 4 characters +{/if} + +{if $input matches "/^[0-9]+$/" || $input matches "/^[a-z]+$/"} + Input is either numeric or lowercase letters +{else} + Invalid input format +{/if} +``` + +### Practical Examples + +**Email Validation:** +```smarty +{if $email matches "/^[^@\s]+@[^@\s]+\.[^@\s]+$/"} + Valid email address +{else} + Please enter a valid email address +{/if} +``` + +**Password Strength:** +```smarty +{if $password matches "/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/"} + Strong password +{else} + Password must contain uppercase, lowercase, numbers and be at least 8 characters +{/if} +``` + +**URL Validation:** +```smarty +{if $url matches "/^https?:\/\/(www\.)?[a-z0-9\-]+(\.[a-z]{2,})+/i"} + Valid URL format +{else} + Please enter a valid URL +{/if} +``` + +**Numeric Validation:** +```smarty +{if $input matches "/^[0-9]+$/"} + Valid numeric input +{else} + Please enter numbers only +{/if} +``` + +### Notes + +- The `matches` operator uses PHP's `preg_match()` function internally +- Pattern delimiters must be valid regex delimiters (typically `/`) +- Invalid patterns will cause PHP warnings but won't break template execution +- For complex regex patterns, consider using variables for better readability ## Ternary You can use the `?:` (or ternary) operator to test one expression and present the value diff --git a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md index 0710db7..28d208e 100644 --- a/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md +++ b/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md @@ -47,11 +47,13 @@ available within the included template. ## Option Flags -| Name | Description | -|---------|--------------------------------------------------------------------------------------| -| nocache | Disables caching of this subtemplate | -| caching | Enable caching of this subtemplate | -| inline | If set, merge the compile-code of the subtemplate into the compiled calling template | +| Name | Description | +|-----------|--------------------------------------------------------------------------------------| +| nocache | Disables caching of this subtemplate | +| caching | Enable caching of this subtemplate | +| inline \* | If set, merge the compile-code of the subtemplate into the compiled calling template | + +\* The `inline` option flag is currently not implemented in Smarty v5. Using it will not trigger an error, however. ## Examples ```smarty diff --git a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md index 9465a89..5dfa364 100644 --- a/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md +++ b/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md @@ -123,4 +123,89 @@ this will output: ```html name: Zaphod Beeblebrox
email: zaphod@slartibartfast.example.com
-``` \ No newline at end of file +``` + +## Backed Enums (PHP 8.1+) + +Smarty supports accessing properties of [backed enums](https://www.php.net/manual/en/language.enumerations.backed.php) introduced in PHP 8.1. + +### Accessing Enum Properties + +You can access the `name` and `value` properties of backed enum cases: + +```smarty +{* Access enum case properties *} + +``` + +### Complete Example + +```php +assign('currentStatus', Status::Active); +$smarty->display('template.tpl'); +``` + +`template.tpl`: + +```smarty +{* Display enum properties *} +Current status: {$currentStatus->name} (value: {$currentStatus->value}) + +{* Use in HTML attributes *} + +``` + +This would output: + +```html +Current status: Active (value: active) + + +``` + +### Integer-backed Enums + +Integer-backed enums work the same way: + +```php +assign('priority', Priority::High); +``` + +```smarty +{* Access integer enum properties *} +Priority level: {$priority->value} ({$priority->name}) +``` + +Output: + +```html +Priority level: 3 (High) +``` + +> **Note**: Backed enum support requires PHP 8.1 or higher. The enum must be registered or available in the current namespace. \ No newline at end of file diff --git a/vendor/smarty/smarty/docs/features.md b/vendor/smarty/smarty/docs/features.md index f9a873b..bab9cd1 100644 --- a/vendor/smarty/smarty/docs/features.md +++ b/vendor/smarty/smarty/docs/features.md @@ -22,6 +22,8 @@ Some of Smarty's features: - [Template Inheritance](api/inheritance.md) for easy management of template content. - [Plugin](api/extending/introduction.md) architecture +- Regex pattern matching with the [`matches`](designers/language-basic-syntax/language-syntax-operators.md#regex-matching-operator) operator +- Support for PHP 8.1+ [backed enums](designers/language-variables/language-assigned-variables.md#backed-enums-php-81) ## Separation of presentation from application code - This means templates can certainly contain logic under the condition diff --git a/vendor/smarty/smarty/docs/index.md b/vendor/smarty/smarty/docs/index.md index e187ffb..63cf15e 100644 --- a/vendor/smarty/smarty/docs/index.md +++ b/vendor/smarty/smarty/docs/index.md @@ -8,6 +8,25 @@ It allows you to write **templates**, using **variables**, **modifiers**, **func

The number of pixels is: {math equation="x * y" x=$height y=$width}.

+ +

+ {if $email matches "/^[^@]+@[^@]+\.[^@]+$/"} + Valid email address + {else} + Please enter a valid email + {/if} +

+``` +```html +

Hello world

+ +

+ The number of pixels is: 307200. +

+ +

+ Valid email address +

``` When this template is rendered, with the value "Hello world" for the variable $title, 640 for $width, diff --git a/vendor/smarty/smarty/src/Cacheresource/File.php b/vendor/smarty/smarty/src/Cacheresource/File.php index 4b4198e..3cb09b5 100644 --- a/vendor/smarty/smarty/src/Cacheresource/File.php +++ b/vendor/smarty/smarty/src/Cacheresource/File.php @@ -127,8 +127,6 @@ class File extends Base && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1 ) { opcache_invalidate($_template->getCached()->filepath, true); - } elseif (function_exists('apc_compile_file')) { - apc_compile_file($_template->getCached()->filepath); } $cached = $_template->getCached(); $cached->timestamp = $cached->exists = is_file($cached->filepath); @@ -223,10 +221,8 @@ class File extends Base $_filepath = (string)$_file; // directory ? if ($_file->isDir()) { - if (!$_cache->isDot()) { - // delete folder if empty - @rmdir($_file->getPathname()); - } + // delete folder if empty + @rmdir($_file->getPathname()); } else { // delete only php files if (substr($_filepath, -4) !== '.php') { @@ -279,8 +275,6 @@ class File extends Base && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) ) { opcache_invalidate($_filepath, true); - } elseif (function_exists('apc_delete_file')) { - apc_delete_file($_filepath); } } } diff --git a/vendor/smarty/smarty/src/Lexer/TemplateLexer.php b/vendor/smarty/smarty/src/Lexer/TemplateLexer.php index 2e7f330..8c28448 100644 --- a/vendor/smarty/smarty/src/Lexer/TemplateLexer.php +++ b/vendor/smarty/smarty/src/Lexer/TemplateLexer.php @@ -160,6 +160,7 @@ class TemplateLexer 'LOGOP' => '"<", "==" ... logical operator', 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition', 'SCOND' => '"is even" ... if condition', + 'MATCHES' => '"matches" regex operator', ); /** @@ -567,7 +568,7 @@ class TemplateLexer public function yylex3() { if (!isset($this->yy_global_pattern3)) { - $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+(not\\s+)?in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); + $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+(not\\s+)?in\\s+)|\G(\\s+matches\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -662,119 +663,124 @@ class TemplateLexer public function yy_r3_10() { - $this->token = \Smarty\Parser\TemplateParser::TP_AS; + $this->token = \Smarty\Parser\TemplateParser::TP_MATCHES; } public function yy_r3_11() { - $this->token = \Smarty\Parser\TemplateParser::TP_TO; + $this->token = \Smarty\Parser\TemplateParser::TP_AS; } public function yy_r3_12() { - $this->token = \Smarty\Parser\TemplateParser::TP_STEP; + $this->token = \Smarty\Parser\TemplateParser::TP_TO; } public function yy_r3_13() { - $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF; + $this->token = \Smarty\Parser\TemplateParser::TP_STEP; } public function yy_r3_14() + { + + $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF; + } + public function yy_r3_15() { $this->token = \Smarty\Parser\TemplateParser::TP_LOGOP; } - public function yy_r3_16() + public function yy_r3_17() { $this->token = \Smarty\Parser\TemplateParser::TP_SLOGOP; } - public function yy_r3_18() + public function yy_r3_19() { $this->token = \Smarty\Parser\TemplateParser::TP_TLOGOP; } - public function yy_r3_21() + public function yy_r3_22() { $this->token = \Smarty\Parser\TemplateParser::TP_SINGLECOND; } - public function yy_r3_24() + public function yy_r3_25() { $this->token = \Smarty\Parser\TemplateParser::TP_NOT; } - public function yy_r3_25() + public function yy_r3_26() { $this->token = \Smarty\Parser\TemplateParser::TP_TYPECAST; } - public function yy_r3_29() + public function yy_r3_30() { $this->token = \Smarty\Parser\TemplateParser::TP_OPENP; } - public function yy_r3_30() + public function yy_r3_31() { $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEP; } - public function yy_r3_31() + public function yy_r3_32() { $this->token = \Smarty\Parser\TemplateParser::TP_OPENB; } - public function yy_r3_32() + public function yy_r3_33() { $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEB; } - public function yy_r3_33() + public function yy_r3_34() { $this->token = \Smarty\Parser\TemplateParser::TP_PTR; } - public function yy_r3_34() + public function yy_r3_35() { $this->token = \Smarty\Parser\TemplateParser::TP_APTR; } - public function yy_r3_35() + public function yy_r3_36() { $this->token = \Smarty\Parser\TemplateParser::TP_EQUAL; } - public function yy_r3_36() + public function yy_r3_37() { $this->token = \Smarty\Parser\TemplateParser::TP_INCDEC; } - public function yy_r3_38() + public function yy_r3_39() { $this->token = \Smarty\Parser\TemplateParser::TP_UNIMATH; } - public function yy_r3_40() + public function yy_r3_41() { $this->token = \Smarty\Parser\TemplateParser::TP_MATH; } - public function yy_r3_42() + public function yy_r3_43() { $this->token = \Smarty\Parser\TemplateParser::TP_AT; } - public function yy_r3_43() + public function yy_r3_44() { $this->token = \Smarty\Parser\TemplateParser::TP_ARRAYOPEN; } - public function yy_r3_44() + public function yy_r3_45() { $this->token = \Smarty\Parser\TemplateParser::TP_HATCH; } - public function yy_r3_45() + public function yy_r3_46() { // resolve conflicts with shorttag and right_delimiter starting with '=' @@ -786,73 +792,73 @@ class TemplateLexer $this->token = \Smarty\Parser\TemplateParser::TP_ATTR; } } - public function yy_r3_46() + public function yy_r3_47() { $this->token = \Smarty\Parser\TemplateParser::TP_NAMESPACE; } - public function yy_r3_49() + public function yy_r3_50() { $this->token = \Smarty\Parser\TemplateParser::TP_ID; } - public function yy_r3_50() + public function yy_r3_51() { $this->token = \Smarty\Parser\TemplateParser::TP_INTEGER; } - public function yy_r3_51() + public function yy_r3_52() { $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK; $this->yypopstate(); } - public function yy_r3_52() + public function yy_r3_53() { $this->token = \Smarty\Parser\TemplateParser::TP_VERT; } - public function yy_r3_53() + public function yy_r3_54() { $this->token = \Smarty\Parser\TemplateParser::TP_DOT; } - public function yy_r3_54() + public function yy_r3_55() { $this->token = \Smarty\Parser\TemplateParser::TP_COMMA; } - public function yy_r3_55() + public function yy_r3_56() { $this->token = \Smarty\Parser\TemplateParser::TP_SEMICOLON; } - public function yy_r3_56() + public function yy_r3_57() { $this->token = \Smarty\Parser\TemplateParser::TP_DOUBLECOLON; } - public function yy_r3_57() + public function yy_r3_58() { $this->token = \Smarty\Parser\TemplateParser::TP_COLON; } - public function yy_r3_58() + public function yy_r3_59() { $this->token = \Smarty\Parser\TemplateParser::TP_QMARK; } - public function yy_r3_59() + public function yy_r3_60() { $this->token = \Smarty\Parser\TemplateParser::TP_HEX; } - public function yy_r3_60() + public function yy_r3_61() { $this->token = \Smarty\Parser\TemplateParser::TP_SPACE; } - public function yy_r3_61() + public function yy_r3_62() { $this->token = \Smarty\Parser\TemplateParser::TP_TEXT; diff --git a/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex b/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex index 282a99c..c3d0160 100644 --- a/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex +++ b/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex @@ -160,6 +160,7 @@ class TemplateLexer 'LOGOP' => '"<", "==" ... logical operator', 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition', 'SCOND' => '"is even" ... if condition', + 'MATCHES' => '"matches" regex operator', ); /** @@ -325,6 +326,7 @@ class TemplateLexer tlop = ~\s+is\s+(not\s+)?(odd|even|div)\s+by\s+~ scond = ~\s+is\s+(not\s+)?(odd|even)~ isin = ~\s+is\s+(not\s+)?in\s+~ + matches = ~\s+matches\s+~ as = ~\s+as\s+~ to = ~\s+to\s+~ step = ~\s+step\s+~ @@ -469,6 +471,9 @@ class TemplateLexer isin { $this->token = \Smarty\Parser\TemplateParser::TP_ISIN; } + matches { + $this->token = \Smarty\Parser\TemplateParser::TP_MATCHES; + } as { $this->token = \Smarty\Parser\TemplateParser::TP_AS; } diff --git a/vendor/smarty/smarty/src/Parser/TemplateParser.php b/vendor/smarty/smarty/src/Parser/TemplateParser.php index 772df98..6414d50 100644 --- a/vendor/smarty/smarty/src/Parser/TemplateParser.php +++ b/vendor/smarty/smarty/src/Parser/TemplateParser.php @@ -260,674 +260,710 @@ class TemplateParser const TP_SLOGOP = 54; const TP_TLOGOP = 55; const TP_SINGLECOND = 56; - const TP_ARRAYOPEN = 57; - const TP_QUOTE = 58; - const TP_BACKTICK = 59; - const YY_NO_ACTION = 542; - const YY_ACCEPT_ACTION = 541; - const YY_ERROR_ACTION = 540; + const TP_MATCHES = 57; + const TP_ARRAYOPEN = 58; + const TP_QUOTE = 59; + const TP_BACKTICK = 60; + const YY_NO_ACTION = 553; + const YY_ACCEPT_ACTION = 552; + const YY_ERROR_ACTION = 551; - const YY_SZ_ACTTAB = 2565; + const YY_SZ_ACTTAB = 2723; public static $yy_action = array( - 33, 106, 269, 306, 179, 305, 200, 247, 248, 249, - 1, 264, 138, 237, 202, 361, 6, 87, 284, 222, - 338, 361, 112, 107, 400, 321, 217, 261, 218, 130, - 224, 400, 21, 400, 49, 44, 400, 32, 45, 46, - 278, 226, 400, 282, 400, 203, 400, 53, 4, 139, - 302, 231, 28, 102, 225, 5, 54, 247, 248, 249, - 1, 20, 135, 192, 193, 271, 6, 87, 246, 222, - 216, 29, 112, 229, 7, 159, 217, 261, 218, 140, - 208, 272, 21, 509, 53, 44, 13, 302, 45, 46, - 278, 226, 149, 235, 153, 203, 257, 53, 4, 328, - 302, 302, 256, 304, 143, 5, 54, 247, 248, 249, - 1, 302, 100, 394, 86, 236, 6, 87, 3, 222, - 102, 257, 112, 144, 97, 394, 217, 261, 218, 102, - 224, 394, 21, 256, 446, 44, 178, 305, 45, 46, - 278, 226, 302, 282, 200, 203, 446, 53, 4, 115, - 302, 47, 22, 285, 41, 5, 54, 247, 248, 249, - 1, 139, 137, 267, 202, 141, 6, 87, 14, 222, - 541, 99, 112, 151, 15, 446, 217, 261, 218, 314, - 224, 216, 21, 256, 233, 44, 9, 446, 45, 46, - 278, 226, 325, 282, 268, 203, 53, 53, 4, 302, - 302, 152, 257, 361, 320, 5, 54, 247, 248, 249, - 1, 264, 137, 102, 194, 361, 6, 87, 37, 222, - 102, 361, 112, 257, 89, 316, 217, 261, 218, 314, - 224, 216, 21, 36, 49, 44, 200, 40, 45, 46, - 278, 226, 115, 282, 237, 203, 14, 53, 4, 115, - 302, 238, 15, 155, 107, 5, 54, 247, 248, 249, - 1, 466, 136, 256, 202, 200, 6, 87, 466, 222, - 255, 171, 112, 264, 446, 310, 217, 261, 218, 158, - 224, 257, 11, 142, 157, 44, 446, 183, 45, 46, - 278, 226, 26, 282, 256, 203, 49, 53, 4, 446, - 302, 184, 260, 323, 176, 5, 54, 247, 248, 249, - 1, 446, 137, 264, 189, 291, 6, 87, 183, 222, - 200, 302, 112, 253, 178, 305, 217, 261, 218, 263, - 213, 18, 21, 200, 184, 44, 49, 15, 45, 46, - 278, 226, 146, 282, 269, 203, 25, 53, 4, 220, - 302, 312, 107, 152, 290, 5, 54, 247, 248, 249, - 1, 219, 137, 147, 187, 130, 6, 87, 259, 222, - 16, 19, 112, 256, 167, 258, 217, 261, 218, 111, - 224, 173, 21, 96, 256, 44, 200, 23, 45, 46, - 278, 226, 177, 282, 227, 203, 335, 53, 4, 174, - 302, 180, 305, 170, 90, 5, 54, 247, 248, 249, - 1, 184, 137, 256, 202, 91, 6, 87, 482, 222, - 160, 482, 112, 214, 197, 482, 217, 261, 218, 184, - 188, 181, 21, 245, 302, 44, 164, 140, 45, 46, - 278, 226, 466, 282, 13, 203, 166, 53, 4, 466, - 302, 42, 43, 286, 12, 5, 54, 247, 248, 249, - 1, 264, 139, 447, 202, 40, 6, 87, 293, 294, - 295, 296, 112, 17, 311, 447, 217, 261, 218, 337, - 224, 183, 21, 260, 49, 48, 244, 245, 45, 46, - 278, 226, 24, 282, 303, 203, 8, 53, 4, 92, - 302, 42, 43, 286, 12, 5, 54, 247, 248, 249, - 1, 10, 139, 9, 202, 317, 6, 87, 293, 294, - 295, 296, 112, 116, 299, 35, 217, 261, 218, 225, - 224, 198, 21, 98, 34, 44, 329, 324, 45, 46, - 278, 226, 448, 282, 448, 203, 161, 53, 4, 172, - 302, 129, 175, 225, 232, 5, 54, 288, 215, 216, - 252, 101, 93, 109, 243, 191, 103, 85, 450, 162, - 450, 24, 101, 330, 182, 273, 274, 300, 298, 301, - 250, 251, 281, 204, 283, 113, 289, 262, 300, 298, - 301, 121, 288, 215, 216, 252, 270, 93, 109, 275, - 190, 103, 60, 277, 279, 225, 237, 101, 280, 297, - 273, 274, 129, 239, 199, 266, 107, 281, 204, 283, - 7, 289, 101, 300, 298, 301, 288, 88, 216, 254, - 163, 114, 109, 265, 191, 103, 85, 200, 300, 298, - 301, 101, 200, 259, 273, 274, 19, 165, 326, 362, - 258, 281, 204, 283, 396, 289, 234, 300, 298, 301, - 288, 362, 216, 327, 200, 114, 396, 362, 201, 119, - 72, 336, 396, 37, 259, 101, 393, 19, 273, 274, - 154, 258, 228, 339, 94, 281, 204, 283, 393, 289, - 256, 300, 298, 301, 393, 38, 314, 288, 314, 216, - 314, 314, 114, 207, 319, 201, 119, 72, 314, 314, - 314, 314, 101, 221, 184, 273, 274, 156, 314, 314, - 314, 95, 281, 204, 283, 314, 289, 256, 300, 298, - 301, 314, 314, 314, 288, 314, 216, 314, 314, 108, - 206, 319, 201, 122, 51, 314, 120, 314, 314, 101, - 314, 184, 273, 274, 314, 314, 314, 314, 314, 281, - 204, 283, 314, 289, 314, 300, 298, 301, 288, 314, - 216, 314, 314, 114, 314, 314, 201, 122, 67, 314, - 314, 314, 314, 101, 314, 314, 273, 274, 314, 314, - 314, 314, 314, 281, 204, 283, 314, 289, 314, 300, - 298, 301, 288, 314, 216, 314, 314, 114, 212, 314, - 201, 122, 67, 314, 314, 314, 314, 101, 314, 314, - 273, 274, 314, 314, 314, 314, 314, 281, 204, 283, - 314, 289, 314, 300, 298, 301, 288, 314, 216, 314, - 314, 114, 205, 314, 201, 119, 72, 314, 314, 314, - 314, 101, 314, 314, 273, 274, 314, 314, 314, 314, - 314, 281, 204, 283, 314, 289, 314, 300, 298, 301, - 314, 314, 314, 288, 314, 216, 314, 314, 114, 314, - 318, 201, 122, 78, 314, 314, 314, 314, 101, 314, - 482, 273, 274, 482, 314, 314, 314, 482, 281, 204, - 283, 314, 289, 209, 211, 298, 301, 288, 314, 216, - 314, 314, 108, 314, 314, 201, 122, 58, 314, 238, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 482, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 118, 64, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 196, 117, 59, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 104, 84, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 105, 83, 314, 314, 314, 314, 101, 314, - 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 122, 55, 314, 314, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 122, 66, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 201, 104, 56, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 122, 65, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 122, 57, 314, 314, 314, 314, 101, 314, - 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 122, 58, 314, 314, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 122, 68, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 201, 122, 69, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 122, 70, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 122, 71, 314, 314, 314, 314, 101, 314, - 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 122, 73, 314, 314, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 195, - 122, 61, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 201, 122, 62, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 122, 63, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 300, 298, 301, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 122, 74, 314, 314, 314, 314, 101, 314, - 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 122, 75, 314, 314, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 122, 76, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 201, 122, 77, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 122, 79, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 210, 298, 301, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 122, 80, 314, 314, 314, 314, 101, 314, - 314, 273, 274, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 122, 81, 314, 314, - 314, 314, 101, 314, 314, 273, 274, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 122, 82, 314, 314, 314, 314, 101, 314, 314, 273, - 274, 314, 314, 314, 314, 314, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 288, 314, 216, 314, 314, - 114, 314, 314, 201, 122, 50, 314, 314, 314, 314, - 101, 314, 314, 273, 274, 314, 314, 314, 314, 314, - 281, 204, 283, 314, 289, 314, 300, 298, 301, 288, - 314, 216, 314, 314, 114, 314, 314, 201, 122, 52, - 314, 314, 314, 314, 101, 314, 314, 273, 274, 314, - 314, 314, 314, 314, 281, 204, 283, 314, 289, 314, - 300, 298, 301, 288, 314, 216, 168, 314, 114, 314, - 314, 201, 134, 314, 314, 314, 256, 314, 101, 47, - 22, 285, 41, 314, 314, 314, 314, 333, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 288, 314, 216, - 145, 314, 114, 314, 314, 201, 128, 314, 314, 314, - 256, 314, 101, 47, 22, 285, 41, 314, 314, 314, - 314, 287, 281, 204, 283, 315, 289, 314, 300, 298, - 301, 247, 248, 249, 2, 314, 313, 314, 314, 314, - 6, 87, 259, 314, 314, 19, 112, 314, 14, 258, - 217, 261, 218, 314, 15, 39, 314, 14, 14, 42, - 43, 286, 12, 15, 15, 314, 314, 314, 42, 43, - 286, 12, 314, 314, 314, 314, 293, 294, 295, 296, - 308, 27, 314, 314, 315, 293, 294, 295, 296, 314, - 247, 248, 249, 2, 314, 313, 314, 110, 314, 6, - 87, 314, 314, 314, 314, 112, 314, 314, 148, 217, - 261, 218, 314, 42, 43, 286, 12, 314, 42, 43, - 286, 12, 314, 314, 314, 314, 314, 314, 314, 314, - 293, 294, 295, 296, 314, 293, 294, 295, 296, 309, - 27, 314, 314, 240, 241, 242, 133, 223, 314, 247, - 248, 249, 1, 314, 482, 314, 314, 482, 6, 87, - 3, 482, 466, 314, 112, 314, 276, 314, 217, 261, - 218, 288, 314, 216, 314, 314, 114, 314, 314, 201, - 132, 314, 314, 314, 314, 314, 101, 314, 466, 314, - 314, 466, 314, 482, 314, 466, 281, 204, 283, 314, - 289, 314, 300, 298, 301, 314, 288, 314, 216, 314, - 200, 114, 314, 314, 201, 123, 314, 314, 314, 314, - 314, 101, 365, 314, 314, 314, 230, 314, 314, 314, - 314, 281, 204, 283, 14, 289, 314, 300, 298, 301, - 15, 314, 288, 446, 216, 314, 169, 114, 314, 314, - 201, 124, 314, 314, 314, 446, 256, 101, 314, 47, - 22, 285, 41, 314, 314, 314, 314, 281, 204, 283, - 314, 289, 314, 300, 298, 301, 314, 288, 314, 216, - 314, 314, 114, 314, 314, 201, 125, 314, 314, 314, - 314, 314, 101, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 281, 204, 283, 314, 289, 314, 300, 298, - 301, 314, 314, 288, 314, 216, 314, 314, 114, 314, - 314, 201, 126, 314, 314, 314, 314, 314, 101, 314, - 314, 314, 314, 314, 314, 314, 314, 314, 281, 204, - 283, 314, 289, 314, 300, 298, 301, 314, 288, 314, - 216, 314, 314, 114, 314, 314, 201, 127, 314, 314, - 314, 314, 314, 101, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 281, 204, 283, 314, 289, 314, 300, - 298, 301, 314, 314, 288, 314, 216, 223, 314, 114, - 314, 314, 201, 131, 482, 314, 314, 482, 314, 101, - 314, 482, 466, 314, 314, 314, 276, 314, 314, 281, - 204, 283, 314, 289, 314, 300, 298, 301, 314, 314, - 409, 314, 314, 314, 314, 314, 314, 314, 466, 314, - 314, 466, 314, 482, 223, 466, 292, 314, 314, 314, - 314, 482, 314, 314, 482, 314, 314, 36, 482, 466, - 314, 223, 446, 276, 409, 409, 409, 409, 482, 314, - 314, 482, 314, 314, 446, 482, 466, 314, 314, 30, - 276, 409, 409, 409, 409, 466, 482, 314, 466, 482, - 482, 314, 466, 482, 466, 314, 314, 314, 276, 314, - 314, 314, 466, 314, 314, 466, 332, 482, 314, 466, - 314, 314, 314, 314, 314, 331, 42, 43, 286, 12, - 466, 314, 314, 466, 314, 482, 314, 466, 314, 42, - 43, 286, 12, 293, 294, 295, 296, 307, 314, 42, - 43, 286, 12, 185, 314, 314, 293, 294, 295, 296, - 186, 314, 314, 314, 322, 314, 293, 294, 295, 296, - 42, 43, 286, 12, 31, 314, 42, 43, 286, 12, - 314, 334, 314, 42, 43, 286, 12, 293, 294, 295, - 296, 314, 314, 293, 294, 295, 296, 314, 314, 314, - 293, 294, 295, 296, 42, 43, 286, 12, 42, 43, - 286, 12, 482, 314, 314, 482, 314, 314, 314, 482, - 466, 293, 294, 295, 296, 293, 294, 295, 296, 314, - 314, 314, 259, 314, 314, 19, 314, 314, 314, 258, - 314, 314, 314, 314, 314, 314, 466, 314, 14, 466, - 150, 482, 314, 466, 15, + 30, 47, 22, 292, 41, 14, 48, 252, 253, 254, + 1, 15, 142, 242, 208, 206, 6, 88, 206, 228, + 244, 205, 114, 109, 406, 206, 223, 266, 224, 103, + 230, 406, 21, 406, 226, 44, 406, 29, 45, 46, + 283, 232, 406, 287, 406, 209, 406, 54, 4, 14, + 304, 186, 333, 290, 231, 15, 5, 86, 252, 253, + 254, 1, 103, 139, 400, 199, 241, 6, 88, 518, + 228, 552, 101, 114, 153, 258, 400, 223, 266, 224, + 144, 213, 400, 21, 261, 453, 44, 13, 144, 45, + 46, 283, 232, 206, 240, 13, 209, 453, 54, 4, + 332, 304, 206, 40, 262, 368, 156, 5, 86, 252, + 253, 254, 1, 143, 102, 272, 87, 368, 6, 88, + 310, 228, 103, 368, 114, 319, 156, 222, 223, 266, + 224, 274, 230, 184, 21, 290, 143, 44, 235, 10, + 45, 46, 283, 232, 175, 287, 273, 209, 54, 54, + 4, 304, 304, 251, 183, 222, 290, 180, 5, 86, + 252, 253, 254, 1, 20, 141, 198, 208, 276, 6, + 88, 54, 228, 315, 304, 114, 190, 265, 453, 223, + 266, 224, 206, 230, 277, 21, 147, 238, 44, 190, + 453, 45, 46, 283, 232, 329, 287, 3, 209, 103, + 54, 4, 146, 304, 304, 289, 98, 311, 23, 5, + 86, 252, 253, 254, 1, 269, 141, 134, 200, 367, + 6, 88, 25, 228, 304, 367, 114, 108, 117, 453, + 223, 266, 224, 34, 230, 233, 21, 167, 53, 44, + 304, 453, 45, 46, 283, 232, 103, 287, 37, 209, + 103, 54, 4, 336, 304, 157, 206, 262, 367, 145, + 5, 86, 252, 253, 254, 1, 269, 140, 402, 208, + 367, 6, 88, 304, 228, 117, 367, 114, 155, 117, + 402, 223, 266, 224, 260, 230, 402, 11, 261, 53, + 44, 206, 24, 45, 46, 283, 232, 206, 287, 166, + 209, 262, 54, 4, 183, 304, 290, 163, 262, 399, + 262, 5, 86, 252, 253, 254, 1, 261, 141, 165, + 195, 399, 6, 88, 36, 228, 274, 399, 114, 261, + 242, 113, 223, 266, 224, 91, 219, 344, 21, 341, + 109, 44, 18, 189, 45, 46, 283, 232, 15, 287, + 242, 209, 473, 54, 4, 189, 304, 243, 269, 473, + 109, 177, 5, 86, 252, 253, 254, 1, 33, 141, + 148, 193, 92, 6, 88, 264, 228, 304, 19, 114, + 261, 53, 263, 223, 266, 224, 159, 230, 327, 21, + 10, 150, 44, 190, 206, 45, 46, 283, 232, 151, + 287, 109, 209, 161, 54, 4, 269, 304, 182, 261, + 118, 171, 168, 5, 86, 252, 253, 254, 1, 16, + 141, 261, 208, 8, 6, 88, 181, 228, 290, 53, + 114, 319, 97, 222, 223, 266, 224, 185, 194, 290, + 21, 325, 297, 44, 298, 317, 45, 46, 283, 232, + 174, 287, 473, 209, 134, 54, 4, 189, 304, 473, + 261, 178, 220, 203, 5, 86, 252, 253, 254, 1, + 187, 143, 250, 208, 40, 6, 88, 489, 90, 321, + 489, 114, 17, 265, 489, 223, 266, 224, 343, 230, + 269, 21, 291, 190, 49, 249, 250, 45, 46, 283, + 232, 268, 287, 8, 209, 322, 54, 4, 7, 304, + 204, 453, 31, 53, 100, 5, 86, 252, 253, 254, + 1, 93, 143, 453, 208, 162, 6, 88, 455, 95, + 455, 454, 114, 225, 9, 261, 223, 266, 224, 231, + 230, 99, 21, 454, 176, 44, 119, 328, 45, 46, + 283, 232, 457, 287, 457, 209, 169, 54, 4, 170, + 304, 190, 32, 32, 334, 335, 5, 86, 179, 295, + 221, 222, 257, 248, 94, 111, 255, 197, 105, 85, + 35, 256, 231, 188, 104, 115, 267, 278, 279, 284, + 164, 124, 275, 280, 96, 286, 210, 288, 282, 296, + 261, 302, 301, 303, 295, 221, 222, 257, 231, 94, + 111, 300, 196, 105, 60, 285, 89, 239, 342, 104, + 158, 160, 278, 279, 37, 330, 190, 345, 331, 38, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 295, + 322, 222, 259, 322, 116, 111, 322, 197, 105, 85, + 322, 322, 264, 322, 104, 19, 322, 278, 279, 263, + 322, 322, 322, 322, 322, 286, 210, 288, 322, 296, + 322, 302, 301, 303, 295, 322, 222, 322, 112, 116, + 322, 322, 207, 121, 71, 322, 322, 322, 322, 104, + 322, 234, 278, 279, 42, 43, 293, 12, 322, 322, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 322, + 322, 305, 306, 307, 308, 309, 295, 322, 222, 212, + 324, 116, 322, 322, 207, 121, 71, 14, 322, 489, + 322, 104, 489, 15, 278, 279, 489, 473, 42, 43, + 293, 12, 286, 210, 288, 322, 296, 322, 302, 301, + 303, 322, 322, 322, 322, 305, 306, 307, 308, 309, + 322, 211, 324, 473, 322, 322, 473, 295, 489, 222, + 473, 322, 110, 322, 322, 207, 125, 51, 322, 123, + 264, 322, 104, 19, 322, 278, 279, 263, 322, 322, + 322, 322, 322, 286, 210, 288, 322, 296, 322, 302, + 301, 303, 295, 322, 222, 322, 322, 116, 322, 322, + 207, 125, 67, 133, 322, 322, 236, 104, 322, 227, + 278, 279, 322, 104, 322, 322, 322, 322, 286, 210, + 288, 322, 296, 322, 302, 301, 303, 322, 322, 322, + 302, 301, 303, 295, 217, 222, 322, 322, 116, 322, + 322, 207, 121, 71, 322, 322, 322, 322, 104, 322, + 322, 278, 279, 322, 322, 322, 322, 322, 322, 286, + 210, 288, 322, 296, 322, 302, 301, 303, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 125, 77, 323, + 322, 322, 322, 104, 322, 322, 278, 279, 322, 322, + 322, 322, 322, 322, 286, 210, 288, 322, 296, 214, + 216, 301, 303, 322, 322, 295, 322, 222, 322, 322, + 116, 322, 322, 207, 125, 67, 322, 322, 322, 322, + 104, 322, 322, 278, 279, 322, 322, 322, 322, 322, + 322, 286, 210, 288, 322, 296, 322, 302, 301, 303, + 295, 322, 222, 322, 322, 110, 322, 218, 207, 125, + 58, 322, 243, 322, 322, 104, 322, 322, 278, 279, + 322, 322, 264, 322, 322, 19, 286, 210, 288, 263, + 296, 322, 302, 301, 303, 322, 322, 295, 14, 222, + 154, 322, 116, 322, 15, 207, 122, 62, 322, 322, + 489, 322, 104, 489, 322, 278, 279, 489, 322, 322, + 322, 322, 322, 286, 210, 288, 322, 296, 322, 302, + 301, 303, 295, 322, 222, 322, 322, 116, 322, 322, + 202, 120, 59, 322, 322, 322, 322, 104, 322, 489, + 278, 279, 322, 322, 322, 322, 322, 322, 286, 210, + 288, 322, 296, 322, 302, 301, 303, 322, 322, 295, + 322, 222, 322, 322, 116, 322, 322, 207, 106, 84, + 322, 322, 322, 322, 104, 322, 322, 278, 279, 322, + 322, 322, 322, 322, 322, 286, 210, 288, 322, 296, + 322, 302, 301, 303, 295, 322, 222, 322, 322, 116, + 322, 322, 207, 107, 83, 322, 322, 322, 322, 104, + 322, 322, 278, 279, 322, 322, 322, 322, 322, 322, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 322, + 322, 295, 322, 222, 322, 322, 116, 322, 322, 207, + 125, 55, 322, 322, 322, 322, 104, 322, 322, 278, + 279, 322, 322, 322, 322, 322, 322, 286, 210, 288, + 322, 296, 322, 302, 301, 303, 295, 322, 222, 322, + 322, 116, 322, 322, 207, 125, 66, 322, 322, 322, + 322, 104, 322, 322, 278, 279, 322, 322, 322, 322, + 322, 322, 286, 210, 288, 322, 296, 322, 302, 301, + 303, 322, 322, 295, 322, 222, 322, 322, 116, 322, + 322, 207, 106, 56, 322, 322, 322, 322, 104, 322, + 322, 278, 279, 322, 322, 322, 322, 322, 322, 286, + 210, 288, 322, 296, 322, 302, 301, 303, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 125, 65, 322, + 322, 322, 322, 104, 322, 322, 278, 279, 322, 322, + 322, 322, 322, 322, 286, 210, 288, 322, 296, 322, + 302, 301, 303, 322, 322, 295, 322, 222, 322, 322, + 116, 322, 322, 207, 125, 57, 322, 322, 322, 322, + 104, 322, 322, 278, 279, 322, 322, 322, 322, 322, + 322, 286, 210, 288, 322, 296, 322, 302, 301, 303, + 295, 322, 222, 322, 322, 116, 322, 322, 207, 125, + 58, 322, 322, 322, 322, 104, 322, 322, 278, 279, + 322, 322, 322, 322, 322, 322, 286, 210, 288, 322, + 296, 322, 302, 301, 303, 322, 322, 295, 322, 222, + 322, 322, 116, 322, 322, 207, 125, 68, 322, 322, + 322, 322, 104, 322, 322, 278, 279, 322, 322, 322, + 322, 322, 322, 286, 210, 288, 322, 296, 322, 302, + 301, 303, 295, 322, 222, 322, 322, 116, 322, 322, + 207, 125, 69, 322, 322, 322, 322, 104, 322, 322, + 278, 279, 322, 322, 322, 322, 322, 322, 286, 210, + 288, 322, 296, 322, 302, 301, 303, 322, 322, 295, + 322, 222, 322, 322, 116, 322, 322, 207, 125, 70, + 322, 322, 322, 322, 104, 322, 322, 278, 279, 322, + 322, 322, 322, 322, 322, 286, 210, 288, 322, 296, + 322, 302, 301, 303, 295, 322, 222, 322, 322, 116, + 322, 322, 207, 125, 72, 322, 322, 322, 322, 104, + 322, 322, 278, 279, 322, 322, 322, 322, 322, 322, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 322, + 322, 295, 322, 222, 322, 322, 116, 322, 322, 201, + 125, 61, 322, 322, 322, 322, 104, 322, 322, 278, + 279, 322, 322, 322, 322, 322, 322, 286, 210, 288, + 322, 296, 322, 302, 301, 303, 295, 322, 222, 322, + 322, 116, 322, 322, 207, 125, 73, 322, 322, 322, + 322, 104, 322, 322, 278, 279, 322, 322, 322, 322, + 322, 322, 286, 210, 288, 322, 296, 322, 302, 301, + 303, 322, 322, 295, 322, 222, 322, 322, 116, 322, + 322, 207, 125, 74, 322, 322, 322, 322, 104, 322, + 322, 278, 279, 322, 322, 322, 322, 322, 322, 286, + 210, 288, 322, 296, 322, 302, 301, 303, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 125, 75, 322, + 322, 322, 322, 104, 322, 322, 278, 279, 322, 322, + 322, 322, 322, 322, 286, 210, 288, 322, 296, 322, + 302, 301, 303, 322, 322, 295, 322, 222, 322, 322, + 116, 322, 322, 207, 125, 76, 322, 322, 322, 322, + 104, 322, 322, 278, 279, 322, 322, 322, 322, 322, + 322, 286, 210, 288, 322, 296, 322, 302, 301, 303, + 295, 322, 222, 322, 322, 116, 322, 322, 207, 125, + 78, 322, 322, 322, 322, 104, 322, 322, 278, 279, + 322, 322, 322, 322, 322, 322, 286, 210, 288, 322, + 296, 322, 215, 301, 303, 322, 322, 295, 322, 222, + 322, 322, 116, 322, 322, 207, 125, 79, 322, 322, + 322, 322, 104, 322, 322, 278, 279, 322, 322, 322, + 322, 322, 322, 286, 210, 288, 322, 296, 322, 302, + 301, 303, 295, 322, 222, 322, 322, 116, 322, 322, + 207, 125, 63, 322, 322, 322, 322, 104, 322, 322, + 278, 279, 322, 322, 322, 322, 322, 322, 286, 210, + 288, 322, 296, 322, 302, 301, 303, 322, 322, 295, + 322, 222, 322, 322, 116, 322, 322, 207, 125, 64, + 322, 322, 322, 322, 104, 322, 322, 278, 279, 322, + 322, 322, 322, 322, 322, 286, 210, 288, 322, 296, + 322, 302, 301, 303, 295, 322, 222, 322, 322, 116, + 322, 322, 207, 125, 80, 322, 322, 322, 322, 104, + 322, 322, 278, 279, 322, 322, 322, 322, 322, 322, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 322, + 322, 295, 322, 222, 322, 322, 116, 322, 322, 207, + 125, 81, 322, 322, 322, 322, 104, 322, 322, 278, + 279, 322, 322, 322, 322, 322, 322, 286, 210, 288, + 322, 296, 322, 302, 301, 303, 295, 322, 222, 322, + 322, 116, 322, 322, 207, 125, 82, 322, 322, 322, + 322, 104, 322, 322, 278, 279, 322, 322, 322, 322, + 322, 322, 286, 210, 288, 322, 296, 322, 302, 301, + 303, 322, 322, 295, 322, 222, 322, 322, 116, 322, + 322, 207, 125, 50, 322, 322, 322, 322, 104, 322, + 322, 278, 279, 322, 322, 322, 322, 322, 322, 286, + 210, 288, 322, 296, 322, 302, 301, 303, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 125, 52, 322, + 322, 322, 322, 104, 322, 322, 278, 279, 322, 322, + 322, 322, 322, 322, 286, 210, 288, 322, 296, 322, + 302, 301, 303, 322, 322, 295, 322, 222, 322, 322, + 116, 322, 322, 207, 138, 322, 322, 322, 322, 295, + 104, 222, 322, 322, 116, 322, 322, 207, 131, 339, + 322, 286, 210, 288, 104, 296, 322, 302, 301, 303, + 322, 322, 322, 294, 322, 286, 210, 288, 322, 296, + 320, 302, 301, 303, 322, 322, 252, 253, 254, 2, + 322, 318, 322, 322, 322, 6, 88, 322, 322, 322, + 322, 114, 322, 322, 152, 223, 266, 224, 322, 322, + 322, 39, 322, 14, 42, 43, 293, 12, 322, 15, + 322, 322, 322, 322, 42, 43, 293, 12, 322, 322, + 322, 305, 306, 307, 308, 309, 313, 26, 322, 322, + 320, 305, 306, 307, 308, 309, 252, 253, 254, 2, + 322, 318, 322, 322, 322, 6, 88, 264, 322, 322, + 19, 114, 322, 322, 263, 223, 266, 224, 337, 42, + 43, 293, 12, 14, 42, 43, 293, 12, 322, 15, + 322, 322, 322, 322, 322, 322, 305, 306, 307, 308, + 309, 305, 306, 307, 308, 309, 314, 26, 316, 322, + 245, 246, 247, 137, 229, 322, 252, 253, 254, 1, + 322, 489, 322, 322, 489, 6, 88, 3, 489, 473, + 322, 114, 322, 281, 322, 223, 266, 224, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 136, 322, 322, + 322, 322, 322, 104, 322, 473, 322, 322, 473, 322, + 489, 322, 473, 322, 286, 210, 288, 322, 296, 322, + 302, 301, 303, 322, 295, 322, 222, 172, 322, 116, + 322, 322, 207, 126, 322, 322, 322, 261, 322, 104, + 47, 22, 292, 41, 322, 48, 322, 322, 322, 322, + 286, 210, 288, 322, 296, 322, 302, 301, 303, 322, + 295, 322, 222, 322, 149, 116, 322, 322, 207, 127, + 322, 322, 322, 322, 261, 104, 322, 47, 22, 292, + 41, 322, 48, 322, 322, 322, 286, 210, 288, 322, + 296, 322, 302, 301, 303, 322, 295, 322, 222, 322, + 173, 116, 322, 322, 207, 128, 322, 322, 322, 322, + 261, 104, 322, 47, 22, 292, 41, 133, 48, 322, + 271, 322, 286, 210, 288, 322, 296, 104, 302, 301, + 303, 322, 295, 322, 222, 322, 322, 116, 322, 270, + 207, 129, 322, 322, 302, 301, 303, 104, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 286, 210, + 288, 322, 296, 322, 302, 301, 303, 322, 295, 322, + 222, 322, 322, 116, 322, 322, 207, 130, 322, 322, + 322, 322, 322, 104, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 286, 210, 288, 322, 296, 322, + 302, 301, 303, 322, 295, 322, 222, 322, 322, 116, + 322, 206, 207, 132, 322, 322, 322, 322, 322, 104, + 322, 322, 322, 371, 322, 322, 322, 237, 322, 322, + 286, 210, 288, 322, 296, 14, 302, 301, 303, 322, + 295, 15, 222, 415, 453, 116, 322, 322, 207, 135, + 322, 322, 322, 322, 322, 104, 453, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 286, 210, 288, 322, + 296, 322, 302, 301, 303, 453, 322, 415, 415, 415, + 415, 322, 322, 322, 322, 322, 322, 453, 322, 322, + 322, 322, 322, 322, 415, 415, 415, 415, 415, 229, + 322, 322, 322, 322, 322, 322, 489, 322, 322, 489, + 322, 322, 229, 489, 473, 322, 322, 322, 281, 489, + 322, 322, 489, 322, 322, 36, 489, 473, 322, 322, + 322, 281, 322, 322, 322, 322, 322, 322, 322, 338, + 473, 322, 322, 473, 322, 489, 322, 473, 299, 322, + 322, 322, 322, 473, 322, 322, 473, 322, 489, 322, + 473, 28, 42, 43, 293, 12, 322, 312, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 305, + 306, 307, 308, 309, 42, 43, 293, 12, 322, 322, + 42, 43, 293, 12, 191, 42, 43, 293, 12, 326, + 192, 305, 306, 307, 308, 309, 340, 305, 306, 307, + 308, 309, 305, 306, 307, 308, 309, 42, 43, 293, + 12, 322, 322, 42, 43, 293, 12, 322, 322, 42, + 43, 293, 12, 322, 305, 306, 307, 308, 309, 322, + 305, 306, 307, 308, 309, 229, 305, 306, 307, 308, + 309, 27, 489, 322, 322, 489, 322, 322, 489, 489, + 473, 489, 322, 322, 281, 489, 473, 322, 322, 322, + 281, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 473, 322, 322, 473, + 322, 489, 473, 473, 322, 473, 322, 489, 322, 473, + 322, 42, 43, 293, 12, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 305, 306, + 307, 308, 309, ); public static $yy_lookahead = array( - 2, 80, 100, 13, 102, 103, 1, 9, 10, 11, - 12, 21, 14, 70, 16, 25, 18, 19, 93, 21, - 77, 31, 24, 80, 13, 104, 28, 29, 30, 104, - 32, 20, 34, 22, 44, 37, 25, 39, 40, 41, - 42, 43, 31, 45, 33, 47, 35, 49, 50, 14, - 52, 16, 12, 17, 43, 57, 58, 9, 10, 11, - 12, 12, 14, 14, 16, 16, 18, 19, 65, 21, - 67, 12, 24, 14, 34, 16, 28, 29, 30, 43, - 32, 32, 34, 1, 49, 37, 50, 52, 40, 41, - 42, 43, 72, 45, 99, 47, 101, 49, 50, 51, - 52, 52, 82, 69, 14, 57, 58, 9, 10, 11, - 12, 52, 14, 13, 16, 15, 18, 19, 15, 21, - 17, 101, 24, 72, 34, 25, 28, 29, 30, 17, - 32, 31, 34, 82, 34, 37, 102, 103, 40, 41, - 42, 43, 52, 45, 1, 47, 46, 49, 50, 46, - 52, 85, 86, 87, 88, 57, 58, 9, 10, 11, - 12, 14, 14, 16, 16, 80, 18, 19, 25, 21, - 61, 62, 24, 72, 31, 34, 28, 29, 30, 65, - 32, 67, 34, 82, 43, 37, 33, 46, 40, 41, - 42, 43, 51, 45, 47, 47, 49, 49, 50, 52, - 52, 99, 101, 13, 51, 57, 58, 9, 10, 11, - 12, 21, 14, 17, 16, 25, 18, 19, 15, 21, - 17, 31, 24, 101, 110, 111, 28, 29, 30, 65, - 32, 67, 34, 15, 44, 37, 1, 2, 40, 41, - 42, 43, 46, 45, 70, 47, 25, 49, 50, 46, - 52, 77, 31, 72, 80, 57, 58, 9, 10, 11, - 12, 43, 14, 82, 16, 1, 18, 19, 50, 21, - 82, 76, 24, 21, 34, 111, 28, 29, 30, 99, - 32, 101, 34, 14, 72, 37, 46, 106, 40, 41, - 42, 43, 27, 45, 82, 47, 44, 49, 50, 34, - 52, 106, 107, 51, 76, 57, 58, 9, 10, 11, - 12, 46, 14, 21, 16, 51, 18, 19, 106, 21, - 1, 52, 24, 69, 102, 103, 28, 29, 30, 16, - 32, 25, 34, 1, 106, 37, 44, 31, 40, 41, - 42, 43, 70, 45, 100, 47, 27, 49, 50, 17, - 52, 59, 80, 99, 93, 57, 58, 9, 10, 11, - 12, 48, 14, 72, 16, 104, 18, 19, 9, 21, - 20, 12, 24, 82, 72, 16, 28, 29, 30, 79, - 32, 76, 34, 33, 82, 37, 1, 2, 40, 41, - 42, 43, 14, 45, 16, 47, 14, 49, 50, 76, - 52, 102, 103, 72, 80, 57, 58, 9, 10, 11, - 12, 106, 14, 82, 16, 80, 18, 19, 9, 21, - 99, 12, 24, 63, 64, 16, 28, 29, 30, 106, - 32, 6, 34, 8, 52, 37, 99, 43, 40, 41, - 42, 43, 43, 45, 50, 47, 99, 49, 50, 50, - 52, 36, 37, 38, 39, 57, 58, 9, 10, 11, - 12, 21, 14, 34, 16, 2, 18, 19, 53, 54, - 55, 56, 24, 15, 59, 46, 28, 29, 30, 21, - 32, 106, 34, 107, 44, 37, 7, 8, 40, 41, - 42, 43, 33, 45, 35, 47, 34, 49, 50, 99, - 52, 36, 37, 38, 39, 57, 58, 9, 10, 11, - 12, 34, 14, 33, 16, 35, 18, 19, 53, 54, - 55, 56, 24, 46, 103, 15, 28, 29, 30, 43, - 32, 64, 34, 81, 33, 37, 35, 51, 40, 41, - 42, 43, 33, 45, 35, 47, 99, 49, 50, 81, - 52, 70, 81, 43, 73, 57, 58, 65, 66, 67, - 68, 80, 70, 71, 7, 73, 74, 75, 33, 99, - 35, 33, 80, 35, 16, 83, 84, 96, 97, 98, - 13, 13, 90, 91, 92, 16, 94, 16, 96, 97, - 98, 16, 65, 66, 67, 68, 16, 70, 71, 14, - 73, 74, 75, 16, 32, 43, 70, 80, 32, 16, - 83, 84, 70, 77, 78, 73, 80, 90, 91, 92, - 34, 94, 80, 96, 97, 98, 65, 16, 67, 68, - 49, 70, 71, 91, 73, 74, 75, 1, 96, 97, - 98, 80, 1, 9, 83, 84, 12, 49, 51, 13, - 16, 90, 91, 92, 13, 94, 16, 96, 97, 98, - 65, 25, 67, 51, 1, 70, 25, 31, 73, 74, - 75, 16, 31, 15, 9, 80, 13, 12, 83, 84, - 72, 16, 48, 35, 76, 90, 91, 92, 25, 94, - 82, 96, 97, 98, 31, 22, 112, 65, 112, 67, - 112, 112, 70, 108, 109, 73, 74, 75, 112, 112, - 112, 112, 80, 48, 106, 83, 84, 72, 112, 112, - 112, 76, 90, 91, 92, 112, 94, 82, 96, 97, - 98, 112, 112, 112, 65, 112, 67, 112, 112, 70, - 108, 109, 73, 74, 75, 112, 77, 112, 112, 80, - 112, 106, 83, 84, 112, 112, 112, 112, 112, 90, - 91, 92, 112, 94, 112, 96, 97, 98, 65, 112, - 67, 112, 112, 70, 112, 112, 73, 74, 75, 112, - 112, 112, 112, 80, 112, 112, 83, 84, 112, 112, - 112, 112, 112, 90, 91, 92, 112, 94, 112, 96, - 97, 98, 65, 112, 67, 112, 112, 70, 105, 112, - 73, 74, 75, 112, 112, 112, 112, 80, 112, 112, - 83, 84, 112, 112, 112, 112, 112, 90, 91, 92, - 112, 94, 112, 96, 97, 98, 65, 112, 67, 112, - 112, 70, 105, 112, 73, 74, 75, 112, 112, 112, - 112, 80, 112, 112, 83, 84, 112, 112, 112, 112, - 112, 90, 91, 92, 112, 94, 112, 96, 97, 98, - 112, 112, 112, 65, 112, 67, 112, 112, 70, 112, - 109, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 9, 83, 84, 12, 112, 112, 112, 16, 90, 91, - 92, 112, 94, 95, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 77, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 48, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 112, 83, 84, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 112, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 112, 83, 84, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 112, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 112, 83, 84, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 112, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 112, 83, 84, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 112, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 75, 112, 112, 112, 112, 80, 112, - 112, 83, 84, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 75, 112, 112, - 112, 112, 80, 112, 112, 83, 84, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 75, 112, 112, 112, 112, 80, 112, 112, 83, - 84, 112, 112, 112, 112, 112, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 65, 112, 67, 112, 112, - 70, 112, 112, 73, 74, 75, 112, 112, 112, 112, - 80, 112, 112, 83, 84, 112, 112, 112, 112, 112, - 90, 91, 92, 112, 94, 112, 96, 97, 98, 65, - 112, 67, 112, 112, 70, 112, 112, 73, 74, 75, - 112, 112, 112, 112, 80, 112, 112, 83, 84, 112, - 112, 112, 112, 112, 90, 91, 92, 112, 94, 112, - 96, 97, 98, 65, 112, 67, 72, 112, 70, 112, - 112, 73, 74, 112, 112, 112, 82, 112, 80, 85, - 86, 87, 88, 112, 112, 112, 112, 89, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 65, 112, 67, - 72, 112, 70, 112, 112, 73, 74, 112, 112, 112, - 82, 112, 80, 85, 86, 87, 88, 112, 112, 112, - 112, 89, 90, 91, 92, 3, 94, 112, 96, 97, - 98, 9, 10, 11, 12, 112, 14, 112, 112, 112, - 18, 19, 9, 112, 112, 12, 24, 112, 25, 16, - 28, 29, 30, 112, 31, 23, 112, 25, 25, 36, - 37, 38, 39, 31, 31, 112, 112, 112, 36, 37, - 38, 39, 112, 112, 112, 112, 53, 54, 55, 56, - 58, 59, 112, 112, 3, 53, 54, 55, 56, 112, - 9, 10, 11, 12, 112, 14, 112, 20, 112, 18, - 19, 112, 112, 112, 112, 24, 112, 112, 26, 28, - 29, 30, 112, 36, 37, 38, 39, 112, 36, 37, - 38, 39, 112, 112, 112, 112, 112, 112, 112, 112, - 53, 54, 55, 56, 112, 53, 54, 55, 56, 58, - 59, 112, 112, 3, 4, 5, 6, 2, 112, 9, - 10, 11, 12, 112, 9, 112, 112, 12, 18, 19, - 15, 16, 17, 112, 24, 112, 21, 112, 28, 29, - 30, 65, 112, 67, 112, 112, 70, 112, 112, 73, - 74, 112, 112, 112, 112, 112, 80, 112, 43, 112, - 112, 46, 112, 48, 112, 50, 90, 91, 92, 112, - 94, 112, 96, 97, 98, 112, 65, 112, 67, 112, - 1, 70, 112, 112, 73, 74, 112, 112, 112, 112, - 112, 80, 13, 112, 112, 112, 17, 112, 112, 112, - 112, 90, 91, 92, 25, 94, 112, 96, 97, 98, - 31, 112, 65, 34, 67, 112, 72, 70, 112, 112, - 73, 74, 112, 112, 112, 46, 82, 80, 112, 85, - 86, 87, 88, 112, 112, 112, 112, 90, 91, 92, - 112, 94, 112, 96, 97, 98, 112, 65, 112, 67, - 112, 112, 70, 112, 112, 73, 74, 112, 112, 112, - 112, 112, 80, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 90, 91, 92, 112, 94, 112, 96, 97, - 98, 112, 112, 65, 112, 67, 112, 112, 70, 112, - 112, 73, 74, 112, 112, 112, 112, 112, 80, 112, - 112, 112, 112, 112, 112, 112, 112, 112, 90, 91, - 92, 112, 94, 112, 96, 97, 98, 112, 65, 112, - 67, 112, 112, 70, 112, 112, 73, 74, 112, 112, - 112, 112, 112, 80, 112, 112, 112, 112, 112, 112, - 112, 112, 112, 90, 91, 92, 112, 94, 112, 96, - 97, 98, 112, 112, 65, 112, 67, 2, 112, 70, - 112, 112, 73, 74, 9, 112, 112, 12, 112, 80, - 112, 16, 17, 112, 112, 112, 21, 112, 112, 90, - 91, 92, 112, 94, 112, 96, 97, 98, 112, 112, - 2, 112, 112, 112, 112, 112, 112, 112, 43, 112, - 112, 46, 112, 48, 2, 50, 51, 112, 112, 112, - 112, 9, 112, 112, 12, 112, 112, 15, 16, 17, - 112, 2, 34, 21, 36, 37, 38, 39, 9, 112, - 112, 12, 112, 112, 46, 16, 17, 112, 112, 2, - 21, 53, 54, 55, 56, 43, 9, 112, 46, 12, - 48, 112, 50, 16, 17, 112, 112, 112, 21, 112, - 112, 112, 43, 112, 112, 46, 13, 48, 112, 50, - 112, 112, 112, 112, 112, 35, 36, 37, 38, 39, - 43, 112, 112, 46, 112, 48, 112, 50, 112, 36, - 37, 38, 39, 53, 54, 55, 56, 13, 112, 36, - 37, 38, 39, 13, 112, 112, 53, 54, 55, 56, - 13, 112, 112, 112, 51, 112, 53, 54, 55, 56, - 36, 37, 38, 39, 2, 112, 36, 37, 38, 39, - 112, 13, 112, 36, 37, 38, 39, 53, 54, 55, - 56, 112, 112, 53, 54, 55, 56, 112, 112, 112, - 53, 54, 55, 56, 36, 37, 38, 39, 36, 37, - 38, 39, 9, 112, 112, 12, 112, 112, 112, 16, - 17, 53, 54, 55, 56, 53, 54, 55, 56, 112, - 112, 112, 9, 112, 112, 12, 112, 112, 112, 16, - 112, 112, 112, 112, 112, 112, 43, 112, 25, 46, - 27, 48, 112, 50, 31, + 2, 86, 87, 88, 89, 25, 91, 9, 10, 11, + 12, 31, 14, 71, 16, 1, 18, 19, 1, 21, + 78, 79, 24, 81, 13, 1, 28, 29, 30, 17, + 32, 20, 34, 22, 17, 37, 25, 39, 40, 41, + 42, 43, 31, 45, 33, 47, 35, 49, 50, 25, + 52, 104, 105, 106, 43, 31, 58, 59, 9, 10, + 11, 12, 17, 14, 13, 16, 15, 18, 19, 1, + 21, 62, 63, 24, 73, 70, 25, 28, 29, 30, + 43, 32, 31, 34, 83, 34, 37, 50, 43, 40, + 41, 42, 43, 1, 45, 50, 47, 46, 49, 50, + 51, 52, 1, 2, 103, 13, 101, 58, 59, 9, + 10, 11, 12, 14, 14, 16, 16, 25, 18, 19, + 70, 21, 17, 31, 24, 66, 101, 68, 28, 29, + 30, 102, 32, 104, 34, 106, 14, 37, 16, 34, + 40, 41, 42, 43, 77, 45, 47, 47, 49, 49, + 50, 52, 52, 66, 104, 68, 106, 77, 58, 59, + 9, 10, 11, 12, 12, 14, 14, 16, 16, 18, + 19, 49, 21, 114, 52, 24, 109, 110, 34, 28, + 29, 30, 1, 32, 32, 34, 14, 43, 37, 109, + 46, 40, 41, 42, 43, 51, 45, 15, 47, 17, + 49, 50, 14, 52, 52, 95, 34, 13, 27, 58, + 59, 9, 10, 11, 12, 21, 14, 107, 16, 25, + 18, 19, 27, 21, 52, 31, 24, 81, 46, 34, + 28, 29, 30, 12, 32, 14, 34, 16, 44, 37, + 52, 46, 40, 41, 42, 43, 17, 45, 15, 47, + 17, 49, 50, 107, 52, 101, 1, 103, 13, 81, + 58, 59, 9, 10, 11, 12, 21, 14, 13, 16, + 25, 18, 19, 52, 21, 46, 31, 24, 73, 46, + 25, 28, 29, 30, 83, 32, 31, 34, 83, 44, + 37, 1, 2, 40, 41, 42, 43, 1, 45, 101, + 47, 103, 49, 50, 104, 52, 106, 73, 103, 13, + 103, 58, 59, 9, 10, 11, 12, 83, 14, 73, + 16, 25, 18, 19, 15, 21, 102, 31, 24, 83, + 71, 80, 28, 29, 30, 81, 32, 78, 34, 14, + 81, 37, 25, 109, 40, 41, 42, 43, 31, 45, + 71, 47, 43, 49, 50, 109, 52, 78, 21, 50, + 81, 77, 58, 59, 9, 10, 11, 12, 12, 14, + 73, 16, 81, 18, 19, 9, 21, 52, 12, 24, + 83, 44, 16, 28, 29, 30, 101, 32, 51, 34, + 34, 71, 37, 109, 1, 40, 41, 42, 43, 73, + 45, 81, 47, 101, 49, 50, 21, 52, 14, 83, + 16, 73, 101, 58, 59, 9, 10, 11, 12, 20, + 14, 83, 16, 33, 18, 19, 104, 21, 106, 44, + 24, 66, 33, 68, 28, 29, 30, 104, 32, 106, + 34, 51, 95, 37, 51, 60, 40, 41, 42, 43, + 73, 45, 43, 47, 107, 49, 50, 109, 52, 50, + 83, 77, 64, 65, 58, 59, 9, 10, 11, 12, + 6, 14, 8, 16, 2, 18, 19, 9, 113, 114, + 12, 24, 15, 110, 16, 28, 29, 30, 21, 32, + 21, 34, 106, 109, 37, 7, 8, 40, 41, 42, + 43, 16, 45, 33, 47, 35, 49, 50, 34, 52, + 65, 34, 33, 44, 35, 58, 59, 9, 10, 11, + 12, 101, 14, 46, 16, 73, 18, 19, 33, 77, + 35, 34, 24, 48, 34, 83, 28, 29, 30, 43, + 32, 82, 34, 46, 82, 37, 46, 51, 40, 41, + 42, 43, 33, 45, 35, 47, 101, 49, 50, 101, + 52, 109, 33, 33, 35, 35, 58, 59, 82, 66, + 67, 68, 69, 7, 71, 72, 13, 74, 75, 76, + 15, 13, 43, 16, 81, 16, 16, 84, 85, 32, + 73, 16, 16, 14, 77, 92, 93, 94, 16, 96, + 83, 98, 99, 100, 66, 67, 68, 69, 43, 71, + 72, 16, 74, 75, 76, 32, 16, 16, 16, 81, + 49, 49, 84, 85, 15, 51, 109, 35, 51, 22, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 66, + 115, 68, 69, 115, 71, 72, 115, 74, 75, 76, + 115, 115, 9, 115, 81, 12, 115, 84, 85, 16, + 115, 115, 115, 115, 115, 92, 93, 94, 115, 96, + 115, 98, 99, 100, 66, 115, 68, 115, 20, 71, + 115, 115, 74, 75, 76, 115, 115, 115, 115, 81, + 115, 48, 84, 85, 36, 37, 38, 39, 115, 115, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 115, + 115, 53, 54, 55, 56, 57, 66, 115, 68, 111, + 112, 71, 115, 115, 74, 75, 76, 25, 115, 9, + 115, 81, 12, 31, 84, 85, 16, 17, 36, 37, + 38, 39, 92, 93, 94, 115, 96, 115, 98, 99, + 100, 115, 115, 115, 115, 53, 54, 55, 56, 57, + 115, 111, 112, 43, 115, 115, 46, 66, 48, 68, + 50, 115, 71, 115, 115, 74, 75, 76, 115, 78, + 9, 115, 81, 12, 115, 84, 85, 16, 115, 115, + 115, 115, 115, 92, 93, 94, 115, 96, 115, 98, + 99, 100, 66, 115, 68, 115, 115, 71, 115, 115, + 74, 75, 76, 71, 115, 115, 74, 81, 115, 48, + 84, 85, 115, 81, 115, 115, 115, 115, 92, 93, + 94, 115, 96, 115, 98, 99, 100, 115, 115, 115, + 98, 99, 100, 66, 108, 68, 115, 115, 71, 115, + 115, 74, 75, 76, 115, 115, 115, 115, 81, 115, + 115, 84, 85, 115, 115, 115, 115, 115, 115, 92, + 93, 94, 115, 96, 115, 98, 99, 100, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 76, 112, + 115, 115, 115, 81, 115, 115, 84, 85, 115, 115, + 115, 115, 115, 115, 92, 93, 94, 115, 96, 97, + 98, 99, 100, 115, 115, 66, 115, 68, 115, 115, + 71, 115, 115, 74, 75, 76, 115, 115, 115, 115, + 81, 115, 115, 84, 85, 115, 115, 115, 115, 115, + 115, 92, 93, 94, 115, 96, 115, 98, 99, 100, + 66, 115, 68, 115, 115, 71, 115, 108, 74, 75, + 76, 115, 78, 115, 115, 81, 115, 115, 84, 85, + 115, 115, 9, 115, 115, 12, 92, 93, 94, 16, + 96, 115, 98, 99, 100, 115, 115, 66, 25, 68, + 27, 115, 71, 115, 31, 74, 75, 76, 115, 115, + 9, 115, 81, 12, 115, 84, 85, 16, 115, 115, + 115, 115, 115, 92, 93, 94, 115, 96, 115, 98, + 99, 100, 66, 115, 68, 115, 115, 71, 115, 115, + 74, 75, 76, 115, 115, 115, 115, 81, 115, 48, + 84, 85, 115, 115, 115, 115, 115, 115, 92, 93, + 94, 115, 96, 115, 98, 99, 100, 115, 115, 66, + 115, 68, 115, 115, 71, 115, 115, 74, 75, 76, + 115, 115, 115, 115, 81, 115, 115, 84, 85, 115, + 115, 115, 115, 115, 115, 92, 93, 94, 115, 96, + 115, 98, 99, 100, 66, 115, 68, 115, 115, 71, + 115, 115, 74, 75, 76, 115, 115, 115, 115, 81, + 115, 115, 84, 85, 115, 115, 115, 115, 115, 115, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 115, + 115, 66, 115, 68, 115, 115, 71, 115, 115, 74, + 75, 76, 115, 115, 115, 115, 81, 115, 115, 84, + 85, 115, 115, 115, 115, 115, 115, 92, 93, 94, + 115, 96, 115, 98, 99, 100, 66, 115, 68, 115, + 115, 71, 115, 115, 74, 75, 76, 115, 115, 115, + 115, 81, 115, 115, 84, 85, 115, 115, 115, 115, + 115, 115, 92, 93, 94, 115, 96, 115, 98, 99, + 100, 115, 115, 66, 115, 68, 115, 115, 71, 115, + 115, 74, 75, 76, 115, 115, 115, 115, 81, 115, + 115, 84, 85, 115, 115, 115, 115, 115, 115, 92, + 93, 94, 115, 96, 115, 98, 99, 100, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 76, 115, + 115, 115, 115, 81, 115, 115, 84, 85, 115, 115, + 115, 115, 115, 115, 92, 93, 94, 115, 96, 115, + 98, 99, 100, 115, 115, 66, 115, 68, 115, 115, + 71, 115, 115, 74, 75, 76, 115, 115, 115, 115, + 81, 115, 115, 84, 85, 115, 115, 115, 115, 115, + 115, 92, 93, 94, 115, 96, 115, 98, 99, 100, + 66, 115, 68, 115, 115, 71, 115, 115, 74, 75, + 76, 115, 115, 115, 115, 81, 115, 115, 84, 85, + 115, 115, 115, 115, 115, 115, 92, 93, 94, 115, + 96, 115, 98, 99, 100, 115, 115, 66, 115, 68, + 115, 115, 71, 115, 115, 74, 75, 76, 115, 115, + 115, 115, 81, 115, 115, 84, 85, 115, 115, 115, + 115, 115, 115, 92, 93, 94, 115, 96, 115, 98, + 99, 100, 66, 115, 68, 115, 115, 71, 115, 115, + 74, 75, 76, 115, 115, 115, 115, 81, 115, 115, + 84, 85, 115, 115, 115, 115, 115, 115, 92, 93, + 94, 115, 96, 115, 98, 99, 100, 115, 115, 66, + 115, 68, 115, 115, 71, 115, 115, 74, 75, 76, + 115, 115, 115, 115, 81, 115, 115, 84, 85, 115, + 115, 115, 115, 115, 115, 92, 93, 94, 115, 96, + 115, 98, 99, 100, 66, 115, 68, 115, 115, 71, + 115, 115, 74, 75, 76, 115, 115, 115, 115, 81, + 115, 115, 84, 85, 115, 115, 115, 115, 115, 115, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 115, + 115, 66, 115, 68, 115, 115, 71, 115, 115, 74, + 75, 76, 115, 115, 115, 115, 81, 115, 115, 84, + 85, 115, 115, 115, 115, 115, 115, 92, 93, 94, + 115, 96, 115, 98, 99, 100, 66, 115, 68, 115, + 115, 71, 115, 115, 74, 75, 76, 115, 115, 115, + 115, 81, 115, 115, 84, 85, 115, 115, 115, 115, + 115, 115, 92, 93, 94, 115, 96, 115, 98, 99, + 100, 115, 115, 66, 115, 68, 115, 115, 71, 115, + 115, 74, 75, 76, 115, 115, 115, 115, 81, 115, + 115, 84, 85, 115, 115, 115, 115, 115, 115, 92, + 93, 94, 115, 96, 115, 98, 99, 100, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 76, 115, + 115, 115, 115, 81, 115, 115, 84, 85, 115, 115, + 115, 115, 115, 115, 92, 93, 94, 115, 96, 115, + 98, 99, 100, 115, 115, 66, 115, 68, 115, 115, + 71, 115, 115, 74, 75, 76, 115, 115, 115, 115, + 81, 115, 115, 84, 85, 115, 115, 115, 115, 115, + 115, 92, 93, 94, 115, 96, 115, 98, 99, 100, + 66, 115, 68, 115, 115, 71, 115, 115, 74, 75, + 76, 115, 115, 115, 115, 81, 115, 115, 84, 85, + 115, 115, 115, 115, 115, 115, 92, 93, 94, 115, + 96, 115, 98, 99, 100, 115, 115, 66, 115, 68, + 115, 115, 71, 115, 115, 74, 75, 76, 115, 115, + 115, 115, 81, 115, 115, 84, 85, 115, 115, 115, + 115, 115, 115, 92, 93, 94, 115, 96, 115, 98, + 99, 100, 66, 115, 68, 115, 115, 71, 115, 115, + 74, 75, 76, 115, 115, 115, 115, 81, 115, 115, + 84, 85, 115, 115, 115, 115, 115, 115, 92, 93, + 94, 115, 96, 115, 98, 99, 100, 115, 115, 66, + 115, 68, 115, 115, 71, 115, 115, 74, 75, 76, + 115, 115, 115, 115, 81, 115, 115, 84, 85, 115, + 115, 115, 115, 115, 115, 92, 93, 94, 115, 96, + 115, 98, 99, 100, 66, 115, 68, 115, 115, 71, + 115, 115, 74, 75, 76, 115, 115, 115, 115, 81, + 115, 115, 84, 85, 115, 115, 115, 115, 115, 115, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 115, + 115, 66, 115, 68, 115, 115, 71, 115, 115, 74, + 75, 76, 115, 115, 115, 115, 81, 115, 115, 84, + 85, 115, 115, 115, 115, 115, 115, 92, 93, 94, + 115, 96, 115, 98, 99, 100, 66, 115, 68, 115, + 115, 71, 115, 115, 74, 75, 76, 115, 115, 115, + 115, 81, 115, 115, 84, 85, 115, 115, 115, 115, + 115, 115, 92, 93, 94, 115, 96, 115, 98, 99, + 100, 115, 115, 66, 115, 68, 115, 115, 71, 115, + 115, 74, 75, 76, 115, 115, 115, 115, 81, 115, + 115, 84, 85, 115, 115, 115, 115, 115, 115, 92, + 93, 94, 115, 96, 115, 98, 99, 100, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 76, 115, + 115, 115, 115, 81, 115, 115, 84, 85, 115, 115, + 115, 115, 115, 115, 92, 93, 94, 115, 96, 115, + 98, 99, 100, 115, 115, 66, 115, 68, 115, 115, + 71, 115, 115, 74, 75, 115, 115, 115, 115, 66, + 81, 68, 115, 115, 71, 115, 115, 74, 75, 90, + 115, 92, 93, 94, 81, 96, 115, 98, 99, 100, + 115, 115, 115, 90, 115, 92, 93, 94, 115, 96, + 3, 98, 99, 100, 115, 115, 9, 10, 11, 12, + 115, 14, 115, 115, 115, 18, 19, 115, 115, 115, + 115, 24, 115, 115, 26, 28, 29, 30, 115, 115, + 115, 23, 115, 25, 36, 37, 38, 39, 115, 31, + 115, 115, 115, 115, 36, 37, 38, 39, 115, 115, + 115, 53, 54, 55, 56, 57, 59, 60, 115, 115, + 3, 53, 54, 55, 56, 57, 9, 10, 11, 12, + 115, 14, 115, 115, 115, 18, 19, 9, 115, 115, + 12, 24, 115, 115, 16, 28, 29, 30, 35, 36, + 37, 38, 39, 25, 36, 37, 38, 39, 115, 31, + 115, 115, 115, 115, 115, 115, 53, 54, 55, 56, + 57, 53, 54, 55, 56, 57, 59, 60, 60, 115, + 3, 4, 5, 6, 2, 115, 9, 10, 11, 12, + 115, 9, 115, 115, 12, 18, 19, 15, 16, 17, + 115, 24, 115, 21, 115, 28, 29, 30, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 115, 115, + 115, 115, 115, 81, 115, 43, 115, 115, 46, 115, + 48, 115, 50, 115, 92, 93, 94, 115, 96, 115, + 98, 99, 100, 115, 66, 115, 68, 73, 115, 71, + 115, 115, 74, 75, 115, 115, 115, 83, 115, 81, + 86, 87, 88, 89, 115, 91, 115, 115, 115, 115, + 92, 93, 94, 115, 96, 115, 98, 99, 100, 115, + 66, 115, 68, 115, 73, 71, 115, 115, 74, 75, + 115, 115, 115, 115, 83, 81, 115, 86, 87, 88, + 89, 115, 91, 115, 115, 115, 92, 93, 94, 115, + 96, 115, 98, 99, 100, 115, 66, 115, 68, 115, + 73, 71, 115, 115, 74, 75, 115, 115, 115, 115, + 83, 81, 115, 86, 87, 88, 89, 71, 91, 115, + 74, 115, 92, 93, 94, 115, 96, 81, 98, 99, + 100, 115, 66, 115, 68, 115, 115, 71, 115, 93, + 74, 75, 115, 115, 98, 99, 100, 81, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 92, 93, + 94, 115, 96, 115, 98, 99, 100, 115, 66, 115, + 68, 115, 115, 71, 115, 115, 74, 75, 115, 115, + 115, 115, 115, 81, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 92, 93, 94, 115, 96, 115, + 98, 99, 100, 115, 66, 115, 68, 115, 115, 71, + 115, 1, 74, 75, 115, 115, 115, 115, 115, 81, + 115, 115, 115, 13, 115, 115, 115, 17, 115, 115, + 92, 93, 94, 115, 96, 25, 98, 99, 100, 115, + 66, 31, 68, 2, 34, 71, 115, 115, 74, 75, + 115, 115, 115, 115, 115, 81, 46, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 92, 93, 94, 115, + 96, 115, 98, 99, 100, 34, 115, 36, 37, 38, + 39, 115, 115, 115, 115, 115, 115, 46, 115, 115, + 115, 115, 115, 115, 53, 54, 55, 56, 57, 2, + 115, 115, 115, 115, 115, 115, 9, 115, 115, 12, + 115, 115, 2, 16, 17, 115, 115, 115, 21, 9, + 115, 115, 12, 115, 115, 15, 16, 17, 115, 115, + 115, 21, 115, 115, 115, 115, 115, 115, 115, 13, + 43, 115, 115, 46, 115, 48, 115, 50, 51, 115, + 115, 115, 115, 43, 115, 115, 46, 115, 48, 115, + 50, 2, 36, 37, 38, 39, 115, 13, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 53, + 54, 55, 56, 57, 36, 37, 38, 39, 115, 115, + 36, 37, 38, 39, 13, 36, 37, 38, 39, 51, + 13, 53, 54, 55, 56, 57, 13, 53, 54, 55, + 56, 57, 53, 54, 55, 56, 57, 36, 37, 38, + 39, 115, 115, 36, 37, 38, 39, 115, 115, 36, + 37, 38, 39, 115, 53, 54, 55, 56, 57, 115, + 53, 54, 55, 56, 57, 2, 53, 54, 55, 56, + 57, 2, 9, 115, 115, 12, 115, 115, 9, 16, + 17, 12, 115, 115, 21, 16, 17, 115, 115, 115, + 21, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 43, 115, 115, 46, + 115, 48, 43, 50, 115, 46, 115, 48, 115, 50, + 115, 36, 37, 38, 39, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 53, 54, + 55, 56, 57, ); - const YY_SHIFT_USE_DFLT = -11; - const YY_SHIFT_MAX = 239; + const YY_SHIFT_USE_DFLT = -21; + const YY_SHIFT_MAX = 244; public static $yy_shift_ofst = array( - -11, 98, 98, 148, 198, 198, 248, 148, 148, 198, - 148, 248, -2, 48, 298, 148, 148, 148, 298, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 348, 148, 148, 148, 148, 148, 398, 148, 148, 148, - 448, 498, 498, 498, 498, 498, 498, 498, 498, 147, - 1962, 1953, 1953, 35, 1952, 2007, 2012, 2413, 2400, 2423, - 2444, 415, 2450, 2457, 2482, 2478, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 2139, 90, 143, 2011, - 2533, 1963, 36, 103, 143, 143, 90, 90, 235, 2070, - 2075, 634, 59, 636, 641, 663, 359, 359, 203, 221, - 269, 221, 306, 332, 196, 378, 378, 264, 385, 319, - 221, 5, 5, 5, 5, 5, 5, 5, 5, 112, - 112, 82, 5, -11, -11, 2315, 2362, 2379, 2397, 2513, - 49, 665, 409, 218, 221, 221, 458, 221, 382, 221, - 382, 221, 394, 394, 221, 221, 221, 221, 394, 40, - 394, 394, 394, 399, 394, 399, 394, 221, 221, 221, - 221, 5, 463, 5, 5, 463, 5, 462, 112, 112, - 112, -11, -11, -11, -11, -11, -11, 2348, 11, 100, - -10, 190, 881, 141, 265, 292, 252, 425, 479, 350, - 313, 440, 240, 429, 477, 459, 480, 153, 486, 501, - 509, 535, 538, 510, 557, 567, 568, 558, 569, 571, - 575, 580, 585, 587, 562, 572, 576, 586, 593, 462, - 611, 581, 598, 640, 597, 612, 655, 658, 648, 673, + -21, 100, 100, 151, 202, 202, 253, 151, 202, 151, + 151, 253, -2, 49, 304, 151, 151, 151, 304, 151, + 151, 151, 151, 151, 151, 151, 151, 355, 151, 151, + 151, 151, 151, 151, 151, 151, 406, 151, 151, 151, + 457, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 2048, 702, 702, 99, 122, 658, 2038, 2526, 2093, 2548, + 2554, 2098, 2559, 2581, 2587, 2593, 2665, 2665, 2665, 2665, + 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, + 2665, 2665, 2665, 2665, 2665, 2665, 2037, 2410, 172, 24, + 2097, 963, 2108, 45, 182, 24, 24, 172, 172, 101, + 12, 2157, 2162, 221, 643, 92, 255, 296, 366, 366, + 233, -20, 188, -20, 317, 17, 229, 394, 105, 394, + 393, 181, 290, -20, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 12, 12, 68, 14, -21, -21, 2497, + 2510, 2643, 2649, 720, 152, 771, 468, 309, -20, -20, + 467, -20, 325, -20, 325, -20, 37, 37, 409, 37, + 409, 37, -20, -20, -20, -20, 37, 356, 37, 37, + 37, -20, -20, -20, -20, 14, 472, 14, 14, 472, + 14, 12, 474, 12, 12, 12, 12, -21, -21, -21, + -21, -21, -21, 2441, 11, 51, 194, 245, 991, 144, + 195, 385, 337, 464, 488, 399, 485, 469, 477, 497, + 500, 470, 390, 496, 479, 495, 519, 529, 530, 565, + 566, 563, 568, 567, 569, 570, 575, 576, 579, 582, + 539, 557, 583, 474, 595, 571, 572, 600, 601, 574, + 577, 602, 609, 592, 607, ); - const YY_REDUCE_USE_DFLT = -99; - const YY_REDUCE_MAX = 186; + const YY_REDUCE_USE_DFLT = -86; + const YY_REDUCE_MAX = 192; public static $yy_reduce_ofst = array( - 109, 492, 527, 561, 595, 632, 669, 703, 737, 771, - 808, 842, 876, 910, 944, 978, 1012, 1046, 1080, 1114, - 1148, 1182, 1216, 1250, 1284, 1318, 1352, 1386, 1420, 1454, - 1488, 1522, 1556, 1590, 1624, 1658, 1692, 1726, 1760, 1794, - 1828, 1862, 2036, 2071, 2107, 2142, 2178, 2213, 2249, 542, - 1824, 1858, 2104, 481, 114, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 608, 536, 645, 164, - 20, 101, -98, 34, 181, 212, -57, 174, 195, 3, - 254, -5, -79, 228, 228, 228, 180, -5, 222, 51, - 272, 291, 302, 305, 222, -75, 261, 228, 228, 228, - 331, 323, 228, 228, 228, 228, 228, 228, 228, 222, - 299, 228, 228, 360, 228, 102, 102, 102, 102, 102, - 85, 122, 102, 102, 188, 188, 300, 188, 324, 188, - 335, 188, 244, 244, 188, 188, 188, 188, 244, 321, - 244, 244, 244, 337, 244, 347, 244, 188, 188, 188, - 188, 375, 376, 375, 375, 376, 375, 400, 421, 421, - 421, 467, 452, 468, 471, 447, 470, + 9, 503, 538, 573, 608, 650, 701, 736, 777, 812, + 849, 884, 921, 956, 993, 1028, 1065, 1100, 1137, 1172, + 1209, 1244, 1281, 1316, 1353, 1388, 1425, 1460, 1497, 1532, + 1569, 1604, 1641, 1676, 1713, 1748, 1785, 1820, 1857, 1892, + 1929, 1943, 2122, 2158, 2194, 2230, 2266, 2302, 2338, 2374, + 2154, 2191, 2227, 2246, 742, -85, -85, -85, -85, -85, + -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, + -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, + -85, -85, -85, -85, -85, -85, 365, 452, -58, 517, + 59, 1, 205, 29, 50, 234, 246, 259, 279, 67, + -53, 87, 5, 146, 154, 80, 80, 80, 198, 154, + 200, 297, 320, 326, 338, 284, 200, 110, 322, 347, + 80, 80, 80, 377, 384, 80, 80, 80, 80, 80, + 80, 80, 80, 200, 333, 80, 80, 398, 80, 25, + 25, 25, 25, 25, 178, 207, 25, 25, 201, 201, + 251, 201, 254, 201, 291, 201, 224, 224, 285, 224, + 302, 224, 201, 201, 201, 201, 224, 311, 224, 224, + 224, 201, 201, 201, 201, 348, 373, 348, 348, 373, + 348, 386, 420, 386, 386, 386, 386, 445, 459, 462, + 486, 455, 458, ); public static $yyExpectedTokens = array( array(), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(2, 9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 39, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), - array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(2, 9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 39, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 58, 59, ), + array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), array(14, 16, 47, 49, 52, ), - array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ), array(14, 16, 49, 52, ), - array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ), - array(20, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(26, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(13, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(35, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 51, 53, 54, 55, 56, ), - array(13, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, 59, ), - array(13, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(13, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(2, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(13, 36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), - array(36, 37, 38, 39, 53, 54, 55, 56, ), + array(20, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(26, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(13, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(35, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 51, 53, 54, 55, 56, 57, ), + array(13, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, 60, ), + array(2, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(13, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(13, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(13, 36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(36, 37, 38, 39, 53, 54, 55, 56, 57, ), + array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 59, 60, ), array(1, 13, 17, 25, 31, 34, 46, ), array(14, 34, 52, ), array(1, 25, 31, ), - array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ), + array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 59, 60, ), array(9, 12, 16, 25, 27, 31, ), array(9, 12, 16, 25, 31, ), array(17, 43, 50, ), @@ -937,10 +973,11 @@ public static $yy_action = array( array(14, 34, 52, ), array(14, 34, 52, ), array(1, 2, ), + array(17, ), array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 24, 28, 29, 30, ), array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ), - array(9, 12, 16, 48, ), array(12, 14, 16, 52, ), + array(9, 12, 16, 48, ), array(1, 13, 25, 31, ), array(1, 13, 25, 31, ), array(1, 13, 25, 31, ), @@ -954,10 +991,11 @@ public static $yy_action = array( array(1, 17, ), array(17, 46, ), array(14, 16, ), + array(17, 34, ), array(14, 16, ), array(1, 51, ), - array(1, 2, ), array(1, 27, ), + array(1, 2, ), array(25, 31, ), array(1, ), array(1, ), @@ -967,6 +1005,7 @@ public static $yy_action = array( array(1, ), array(1, ), array(1, ), + array(1, ), array(17, ), array(17, ), array(1, ), @@ -992,6 +1031,10 @@ public static $yy_action = array( array(25, 31, ), array(43, 50, ), array(43, 50, ), + array(43, 50, ), + array(43, 50, ), + array(43, 50, ), + array(43, 50, ), array(25, 31, ), array(25, 31, ), array(25, 31, ), @@ -1001,10 +1044,6 @@ public static $yy_action = array( array(43, 50, ), array(43, 50, ), array(43, 50, ), - array(43, 50, ), - array(43, 50, ), - array(43, 50, ), - array(43, 50, ), array(25, 31, ), array(25, 31, ), array(25, 31, ), @@ -1015,17 +1054,19 @@ public static $yy_action = array( array(1, ), array(2, ), array(1, ), + array(17, ), array(34, ), array(17, ), array(17, ), array(17, ), + array(17, ), array(), array(), array(), array(), array(), array(), - array(2, 34, 36, 37, 38, 39, 46, 53, 54, 55, 56, ), + array(2, 34, 36, 37, 38, 39, 46, 53, 54, 55, 56, 57, ), array(13, 20, 22, 25, 31, 33, 35, 43, ), array(13, 15, 25, 31, 34, 46, ), array(13, 21, 25, 31, 44, ), @@ -1033,7 +1074,7 @@ public static $yy_action = array( array(9, 12, 16, 48, ), array(34, 43, 46, 51, ), array(27, 34, 46, ), - array(21, 44, 59, ), + array(21, 44, 60, ), array(21, 44, 51, ), array(6, 8, ), array(7, 8, ), @@ -1044,13 +1085,13 @@ public static $yy_action = array( array(34, 46, ), array(34, 46, ), array(33, 35, ), - array(33, 35, ), array(33, 51, ), array(43, 51, ), array(33, 35, ), array(33, 35, ), array(33, 35, ), array(33, 35, ), + array(33, 35, ), array(15, 43, ), array(7, ), array(13, ), @@ -1067,10 +1108,9 @@ public static $yy_action = array( array(32, ), array(34, ), array(16, ), - array(34, ), + array(49, ), + array(49, ), array(16, ), - array(49, ), - array(49, ), array(16, ), array(51, ), array(51, ), @@ -1178,48 +1218,50 @@ public static $yy_action = array( array(), array(), array(), + array(), ); public static $yy_default = array( - 350, 540, 540, 540, 525, 525, 540, 501, 501, 524, - 452, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 390, 369, 390, 540, 540, 540, 395, 540, 540, 540, - 363, 540, 540, 540, 540, 540, 374, 500, 413, 420, - 499, 526, 528, 527, 419, 421, 418, 422, 451, 449, - 397, 401, 402, 392, 395, 363, 433, 540, 390, 540, - 390, 390, 514, 454, 390, 390, 540, 540, 381, 340, - 453, 466, 540, 404, 404, 404, 466, 466, 454, 390, - 540, 390, 390, 384, 454, 540, 540, 404, 404, 404, - 371, 386, 404, 411, 424, 425, 426, 412, 417, 454, - 511, 424, 410, 348, 508, 453, 453, 453, 453, 453, - 540, 468, 466, 482, 360, 370, 540, 373, 540, 378, - 540, 379, 463, 464, 364, 366, 367, 368, 492, 466, - 491, 494, 493, 457, 458, 459, 460, 380, 376, 377, - 372, 382, 502, 385, 387, 503, 442, 466, 488, 515, - 512, 348, 507, 507, 507, 466, 466, 433, 429, 433, - 423, 423, 467, 433, 433, 423, 423, 346, 540, 540, - 540, 423, 433, 443, 540, 540, 540, 540, 429, 540, - 461, 461, 540, 429, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 429, 431, 540, 513, 540, 482, - 540, 540, 540, 540, 540, 438, 540, 540, 540, 398, - 341, 342, 343, 344, 345, 347, 349, 351, 352, 353, - 354, 355, 356, 357, 359, 388, 389, 484, 485, 486, - 506, 383, 504, 505, 427, 436, 437, 446, 447, 465, - 469, 470, 471, 405, 406, 407, 408, 409, 428, 430, - 432, 434, 438, 439, 440, 414, 415, 416, 441, 444, - 445, 479, 477, 516, 517, 518, 519, 455, 456, 490, - 461, 462, 483, 498, 358, 489, 536, 537, 529, 530, - 531, 534, 533, 535, 538, 539, 532, 521, 523, 522, - 520, 495, 480, 478, 476, 473, 474, 475, 481, 496, - 497, 435, 472, 510, 487, 482, 391, 375, 399, 403, + 356, 551, 551, 551, 536, 536, 551, 510, 535, 459, + 510, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 396, 375, 396, 551, 551, 551, 401, 551, 551, 551, + 369, 551, 551, 551, 551, 551, 380, 509, 419, 537, + 427, 539, 538, 426, 428, 425, 429, 458, 456, 508, + 403, 407, 408, 398, 401, 369, 551, 440, 551, 396, + 551, 396, 396, 524, 461, 396, 396, 551, 551, 387, + 496, 346, 460, 551, 473, 410, 410, 410, 473, 473, + 461, 396, 551, 396, 396, 390, 461, 551, 522, 551, + 410, 410, 410, 377, 392, 410, 417, 431, 432, 433, + 418, 423, 424, 461, 520, 431, 416, 354, 517, 460, + 460, 460, 460, 460, 551, 475, 473, 489, 366, 376, + 551, 379, 551, 384, 551, 385, 470, 471, 464, 465, + 466, 467, 370, 372, 373, 374, 501, 473, 500, 503, + 502, 386, 382, 383, 378, 388, 511, 391, 393, 512, + 449, 523, 473, 495, 525, 521, 497, 354, 516, 516, + 516, 473, 473, 440, 436, 440, 430, 430, 474, 440, + 440, 430, 430, 352, 551, 551, 551, 430, 440, 450, + 551, 551, 551, 436, 551, 468, 468, 551, 551, 436, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 436, 438, 551, 489, 551, 551, 551, 551, 551, 551, + 445, 551, 551, 551, 404, 347, 348, 349, 350, 351, + 353, 355, 357, 358, 359, 360, 361, 362, 363, 365, + 394, 395, 491, 492, 493, 515, 389, 513, 514, 434, + 443, 444, 453, 454, 472, 476, 477, 478, 411, 412, + 413, 414, 415, 435, 437, 439, 441, 445, 446, 447, + 498, 499, 420, 421, 422, 448, 451, 452, 486, 484, + 462, 463, 468, 469, 490, 526, 527, 528, 529, 530, + 364, 547, 548, 540, 541, 542, 545, 544, 546, 549, + 550, 543, 532, 534, 533, 531, 487, 485, 483, 480, + 481, 482, 488, 505, 507, 506, 504, 442, 479, 519, + 494, 489, 397, 381, 405, 409, ); - const YYNOCODE = 113; + const YYNOCODE = 116; const YYSTACKDEPTH = 500; - const YYNSTATE = 340; - const YYNRULE = 200; - const YYERRORSYMBOL = 60; + const YYNSTATE = 346; + const YYNRULE = 205; + const YYERRORSYMBOL = 61; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; public static $yyFallback = array( @@ -1262,20 +1304,21 @@ public static $yy_action = array( 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', - 'SINGLECOND', 'ARRAYOPEN', 'QUOTE', 'BACKTICK', - 'error', 'start', 'template', 'literal_e2', - 'literal_e1', 'smartytag', 'tagbody', 'tag', - 'outattr', 'eqoutattr', 'varindexed', 'output', - 'attributes', 'variablevalue', 'value', 'expr', - 'modifierlist', 'statement', 'statements', 'foraction', - 'varvar', 'modparameters', 'attribute', 'nullcoalescing', - 'ternary', 'tlop', 'lop', 'scond', - 'isin', 'array', 'function', 'ns1', - 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'variablelist', - 'variable', 'object', 'configvariable', 'arrayindex', - 'indexdef', 'varvarele', 'objectchain', 'objectelement', - 'method', 'params', 'modifier', 'modparameter', - 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent', + 'SINGLECOND', 'MATCHES', 'ARRAYOPEN', 'QUOTE', + 'BACKTICK', 'error', 'start', 'template', + 'literal_e2', 'literal_e1', 'smartytag', 'tagbody', + 'tag', 'outattr', 'eqoutattr', 'varindexed', + 'output', 'attributes', 'variablevalue', 'value', + 'expr', 'modifierlist', 'statement', 'statements', + 'foraction', 'varvar', 'modparameters', 'attribute', + 'nullcoalescing', 'ternary', 'tlop', 'lop', + 'scond', 'isin', 'array', 'matchop', + 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', + 'arraydef', 'variablelist', 'variable', 'object', + 'configvariable', 'arrayindex', 'indexdef', 'varvarele', + 'objectchain', 'optobjectchain', 'objectelement', 'method', + 'params', 'modifier', 'modparameter', 'arrayelements', + 'arrayelement', 'doublequoted', 'doublequotedcontent', ); public static $yyRuleName = array( @@ -1357,6 +1400,7 @@ public static $yy_action = array( 'isin ::= ISIN', 'expr ::= expr isin array', 'expr ::= expr isin value', + 'expr ::= expr matchop value', 'nullcoalescing ::= expr QMARK QMARK expr', 'ternary ::= expr QMARK DOLLARID COLON expr', 'ternary ::= expr QMARK value COLON expr', @@ -1428,6 +1472,8 @@ public static $yy_action = array( 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL', 'object ::= varindexed objectchain', + 'optobjectchain ::=', + 'optobjectchain ::= objectchain', 'objectchain ::= objectelement', 'objectchain ::= objectchain objectelement', 'objectelement ::= PTR ID arrayindex', @@ -1435,7 +1481,7 @@ public static $yy_action = array( 'objectelement ::= PTR LDEL expr RDEL arrayindex', 'objectelement ::= PTR ID LDEL expr RDEL arrayindex', 'objectelement ::= PTR method', - 'function ::= ns1 OPENP variablelist CLOSEP', + 'function ::= ns1 OPENP variablelist CLOSEP optobjectchain', 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP', 'params ::= params COMMA expr', @@ -1453,12 +1499,14 @@ public static $yy_action = array( 'static_class_access ::= method', 'static_class_access ::= method objectchain', 'static_class_access ::= ID', + 'static_class_access ::= ID objectchain', 'static_class_access ::= DOLLARID arrayindex', 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP', 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND', + 'matchop ::= MATCHES', 'arraydef ::= OPENB arrayelements CLOSEB', 'arraydef ::= ARRAYOPEN arrayelements CLOSEP', 'arrayelements ::= arrayelement', @@ -1794,206 +1842,211 @@ public static $yy_action = array( } public static $yyRuleInfo = array( - array( 0 => 61, 1 => 1 ), - array( 0 => 62, 1 => 2 ), - array( 0 => 62, 1 => 2 ), - array( 0 => 62, 1 => 2 ), - array( 0 => 62, 1 => 4 ), + array( 0 => 62, 1 => 1 ), + array( 0 => 63, 1 => 2 ), + array( 0 => 63, 1 => 2 ), + array( 0 => 63, 1 => 2 ), array( 0 => 63, 1 => 4 ), - array( 0 => 63, 1 => 1 ), - array( 0 => 64, 1 => 2 ), - array( 0 => 64, 1 => 0 ), - array( 0 => 62, 1 => 2 ), - array( 0 => 62, 1 => 0 ), - array( 0 => 65, 1 => 1 ), - array( 0 => 65, 1 => 1 ), - array( 0 => 65, 1 => 1 ), - array( 0 => 65, 1 => 3 ), + array( 0 => 64, 1 => 4 ), + array( 0 => 64, 1 => 1 ), array( 0 => 65, 1 => 2 ), + array( 0 => 65, 1 => 0 ), + array( 0 => 63, 1 => 2 ), + array( 0 => 63, 1 => 0 ), array( 0 => 66, 1 => 1 ), + array( 0 => 66, 1 => 1 ), + array( 0 => 66, 1 => 1 ), + array( 0 => 66, 1 => 3 ), array( 0 => 66, 1 => 2 ), - array( 0 => 66, 1 => 2 ), + array( 0 => 67, 1 => 1 ), + array( 0 => 67, 1 => 2 ), + array( 0 => 67, 1 => 2 ), + array( 0 => 70, 1 => 2 ), array( 0 => 69, 1 => 2 ), - array( 0 => 68, 1 => 2 ), - array( 0 => 71, 1 => 1 ), - array( 0 => 71, 1 => 1 ), - array( 0 => 71, 1 => 1 ), - array( 0 => 67, 1 => 3 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 4 ), - array( 0 => 67, 1 => 5 ), - array( 0 => 67, 1 => 6 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 3 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 3 ), - array( 0 => 67, 1 => 8 ), - array( 0 => 79, 1 => 2 ), - array( 0 => 79, 1 => 1 ), - array( 0 => 67, 1 => 5 ), - array( 0 => 67, 1 => 7 ), - array( 0 => 67, 1 => 6 ), - array( 0 => 67, 1 => 8 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 3 ), - array( 0 => 67, 1 => 4 ), - array( 0 => 65, 1 => 1 ), - array( 0 => 67, 1 => 2 ), - array( 0 => 67, 1 => 3 ), - array( 0 => 67, 1 => 4 ), - array( 0 => 67, 1 => 5 ), - array( 0 => 72, 1 => 2 ), array( 0 => 72, 1 => 1 ), - array( 0 => 72, 1 => 0 ), - array( 0 => 82, 1 => 4 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 2 ), - array( 0 => 82, 1 => 4 ), - array( 0 => 78, 1 => 1 ), - array( 0 => 78, 1 => 3 ), - array( 0 => 77, 1 => 3 ), - array( 0 => 77, 1 => 3 ), - array( 0 => 77, 1 => 3 ), - array( 0 => 77, 1 => 3 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 1 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 2 ), - array( 0 => 88, 1 => 1 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 75, 1 => 3 ), - array( 0 => 83, 1 => 4 ), - array( 0 => 84, 1 => 5 ), - array( 0 => 84, 1 => 5 ), - array( 0 => 84, 1 => 5 ), - array( 0 => 84, 1 => 4 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 2 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 1 ), - array( 0 => 74, 1 => 3 ), - array( 0 => 91, 1 => 1 ), - array( 0 => 91, 1 => 1 ), - array( 0 => 95, 1 => 3 ), - array( 0 => 95, 1 => 3 ), - array( 0 => 95, 1 => 1 ), - array( 0 => 95, 1 => 1 ), - array( 0 => 95, 1 => 0 ), - array( 0 => 96, 1 => 1 ), - array( 0 => 96, 1 => 1 ), - array( 0 => 96, 1 => 3 ), - array( 0 => 96, 1 => 1 ), - array( 0 => 98, 1 => 3 ), - array( 0 => 98, 1 => 4 ), - array( 0 => 98, 1 => 3 ), - array( 0 => 98, 1 => 4 ), - array( 0 => 73, 1 => 1 ), - array( 0 => 73, 1 => 1 ), - array( 0 => 70, 1 => 2 ), - array( 0 => 70, 1 => 2 ), - array( 0 => 99, 1 => 2 ), - array( 0 => 99, 1 => 0 ), - array( 0 => 100, 1 => 2 ), - array( 0 => 100, 1 => 2 ), - array( 0 => 100, 1 => 4 ), - array( 0 => 100, 1 => 2 ), - array( 0 => 100, 1 => 2 ), - array( 0 => 100, 1 => 4 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 5 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 3 ), - array( 0 => 100, 1 => 2 ), - array( 0 => 80, 1 => 1 ), - array( 0 => 80, 1 => 1 ), + array( 0 => 72, 1 => 1 ), + array( 0 => 72, 1 => 1 ), + array( 0 => 68, 1 => 3 ), + array( 0 => 68, 1 => 2 ), + array( 0 => 68, 1 => 4 ), + array( 0 => 68, 1 => 5 ), + array( 0 => 68, 1 => 6 ), + array( 0 => 68, 1 => 2 ), + array( 0 => 68, 1 => 3 ), + array( 0 => 68, 1 => 2 ), + array( 0 => 68, 1 => 3 ), + array( 0 => 68, 1 => 8 ), array( 0 => 80, 1 => 2 ), - array( 0 => 101, 1 => 1 ), - array( 0 => 101, 1 => 1 ), - array( 0 => 101, 1 => 3 ), - array( 0 => 97, 1 => 2 ), - array( 0 => 102, 1 => 1 ), - array( 0 => 102, 1 => 2 ), - array( 0 => 103, 1 => 3 ), - array( 0 => 103, 1 => 3 ), - array( 0 => 103, 1 => 5 ), - array( 0 => 103, 1 => 6 ), - array( 0 => 103, 1 => 2 ), - array( 0 => 90, 1 => 4 ), - array( 0 => 104, 1 => 4 ), - array( 0 => 104, 1 => 4 ), - array( 0 => 105, 1 => 3 ), - array( 0 => 105, 1 => 1 ), - array( 0 => 105, 1 => 0 ), + array( 0 => 80, 1 => 1 ), + array( 0 => 68, 1 => 5 ), + array( 0 => 68, 1 => 7 ), + array( 0 => 68, 1 => 6 ), + array( 0 => 68, 1 => 8 ), + array( 0 => 68, 1 => 2 ), + array( 0 => 68, 1 => 3 ), + array( 0 => 68, 1 => 4 ), + array( 0 => 66, 1 => 1 ), + array( 0 => 68, 1 => 2 ), + array( 0 => 68, 1 => 3 ), + array( 0 => 68, 1 => 4 ), + array( 0 => 68, 1 => 5 ), + array( 0 => 73, 1 => 2 ), + array( 0 => 73, 1 => 1 ), + array( 0 => 73, 1 => 0 ), + array( 0 => 83, 1 => 4 ), + array( 0 => 83, 1 => 2 ), + array( 0 => 83, 1 => 2 ), + array( 0 => 83, 1 => 2 ), + array( 0 => 83, 1 => 2 ), + array( 0 => 83, 1 => 2 ), + array( 0 => 83, 1 => 4 ), + array( 0 => 79, 1 => 1 ), + array( 0 => 79, 1 => 3 ), + array( 0 => 78, 1 => 3 ), + array( 0 => 78, 1 => 3 ), + array( 0 => 78, 1 => 3 ), + array( 0 => 78, 1 => 3 ), + array( 0 => 76, 1 => 1 ), + array( 0 => 76, 1 => 1 ), + array( 0 => 76, 1 => 1 ), + array( 0 => 76, 1 => 2 ), + array( 0 => 76, 1 => 2 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 76, 1 => 3 ), array( 0 => 76, 1 => 3 ), array( 0 => 76, 1 => 2 ), - array( 0 => 106, 1 => 3 ), - array( 0 => 106, 1 => 2 ), + array( 0 => 89, 1 => 1 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 76, 1 => 3 ), + array( 0 => 84, 1 => 4 ), + array( 0 => 85, 1 => 5 ), + array( 0 => 85, 1 => 5 ), + array( 0 => 85, 1 => 5 ), + array( 0 => 85, 1 => 4 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 2 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 1 ), + array( 0 => 75, 1 => 3 ), + array( 0 => 93, 1 => 1 ), + array( 0 => 93, 1 => 1 ), + array( 0 => 97, 1 => 3 ), + array( 0 => 97, 1 => 3 ), + array( 0 => 97, 1 => 1 ), + array( 0 => 97, 1 => 1 ), + array( 0 => 97, 1 => 0 ), + array( 0 => 98, 1 => 1 ), + array( 0 => 98, 1 => 1 ), + array( 0 => 98, 1 => 3 ), + array( 0 => 98, 1 => 1 ), + array( 0 => 100, 1 => 3 ), + array( 0 => 100, 1 => 4 ), + array( 0 => 100, 1 => 3 ), + array( 0 => 100, 1 => 4 ), + array( 0 => 74, 1 => 1 ), + array( 0 => 74, 1 => 1 ), + array( 0 => 71, 1 => 2 ), + array( 0 => 71, 1 => 2 ), + array( 0 => 101, 1 => 2 ), + array( 0 => 101, 1 => 0 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 4 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 4 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 5 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 3 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 81, 1 => 1 ), + array( 0 => 81, 1 => 1 ), array( 0 => 81, 1 => 2 ), - array( 0 => 81, 1 => 0 ), - array( 0 => 107, 1 => 2 ), - array( 0 => 107, 1 => 3 ), - array( 0 => 107, 1 => 2 ), - array( 0 => 93, 1 => 1 ), - array( 0 => 93, 1 => 2 ), - array( 0 => 93, 1 => 1 ), - array( 0 => 93, 1 => 2 ), - array( 0 => 93, 1 => 3 ), - array( 0 => 86, 1 => 1 ), - array( 0 => 86, 1 => 1 ), - array( 0 => 85, 1 => 1 ), - array( 0 => 87, 1 => 1 ), - array( 0 => 94, 1 => 3 ), - array( 0 => 94, 1 => 3 ), - array( 0 => 108, 1 => 1 ), + array( 0 => 103, 1 => 1 ), + array( 0 => 103, 1 => 1 ), + array( 0 => 103, 1 => 3 ), + array( 0 => 99, 1 => 2 ), + array( 0 => 105, 1 => 0 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 104, 1 => 1 ), + array( 0 => 104, 1 => 2 ), + array( 0 => 106, 1 => 3 ), + array( 0 => 106, 1 => 3 ), + array( 0 => 106, 1 => 5 ), + array( 0 => 106, 1 => 6 ), + array( 0 => 106, 1 => 2 ), + array( 0 => 92, 1 => 5 ), + array( 0 => 107, 1 => 4 ), + array( 0 => 107, 1 => 4 ), array( 0 => 108, 1 => 3 ), - array( 0 => 108, 1 => 2 ), + array( 0 => 108, 1 => 1 ), array( 0 => 108, 1 => 0 ), + array( 0 => 77, 1 => 3 ), + array( 0 => 77, 1 => 2 ), array( 0 => 109, 1 => 3 ), - array( 0 => 109, 1 => 3 ), - array( 0 => 109, 1 => 1 ), - array( 0 => 92, 1 => 2 ), - array( 0 => 92, 1 => 3 ), + array( 0 => 109, 1 => 2 ), + array( 0 => 82, 1 => 2 ), + array( 0 => 82, 1 => 0 ), array( 0 => 110, 1 => 2 ), - array( 0 => 110, 1 => 1 ), - array( 0 => 111, 1 => 3 ), - array( 0 => 111, 1 => 3 ), + array( 0 => 110, 1 => 3 ), + array( 0 => 110, 1 => 2 ), + array( 0 => 95, 1 => 1 ), + array( 0 => 95, 1 => 2 ), + array( 0 => 95, 1 => 1 ), + array( 0 => 95, 1 => 2 ), + array( 0 => 95, 1 => 2 ), + array( 0 => 95, 1 => 3 ), + array( 0 => 87, 1 => 1 ), + array( 0 => 87, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 88, 1 => 1 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 96, 1 => 3 ), + array( 0 => 96, 1 => 3 ), array( 0 => 111, 1 => 1 ), array( 0 => 111, 1 => 3 ), - array( 0 => 111, 1 => 3 ), - array( 0 => 111, 1 => 1 ), - array( 0 => 111, 1 => 1 ), + array( 0 => 111, 1 => 2 ), + array( 0 => 111, 1 => 0 ), + array( 0 => 112, 1 => 3 ), + array( 0 => 112, 1 => 3 ), + array( 0 => 112, 1 => 1 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 113, 1 => 2 ), + array( 0 => 113, 1 => 1 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 1 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 1 ), + array( 0 => 114, 1 => 1 ), ); public static $yyReduceMap = array( @@ -2013,20 +2066,22 @@ public static $yy_action = array( 64 => 6, 65 => 6, 66 => 6, - 83 => 6, - 88 => 6, + 84 => 6, 89 => 6, - 94 => 6, - 98 => 6, + 90 => 6, + 95 => 6, 99 => 6, - 103 => 6, + 100 => 6, 104 => 6, - 106 => 6, - 122 => 6, - 182 => 6, - 188 => 6, + 105 => 6, + 107 => 6, + 123 => 6, + 151 => 6, + 187 => 6, + 193 => 6, 7 => 7, 8 => 8, + 150 => 8, 9 => 9, 11 => 11, 12 => 12, @@ -2064,21 +2119,21 @@ public static $yy_action = array( 48 => 48, 49 => 49, 58 => 49, - 110 => 49, 111 => 49, - 160 => 49, - 164 => 49, - 168 => 49, - 170 => 49, + 112 => 49, + 163 => 49, + 167 => 49, + 171 => 49, + 173 => 49, 50 => 50, - 112 => 50, - 161 => 50, - 167 => 50, + 113 => 50, + 164 => 50, + 170 => 50, 51 => 51, 52 => 52, 53 => 52, 54 => 54, - 145 => 54, + 146 => 54, 57 => 57, 59 => 59, 60 => 60, @@ -2099,29 +2154,29 @@ public static $yy_action = array( 78 => 78, 79 => 79, 80 => 80, - 81 => 80, - 82 => 82, - 84 => 84, - 86 => 84, - 87 => 84, - 125 => 84, + 81 => 81, + 82 => 81, + 83 => 83, 85 => 85, - 90 => 90, + 87 => 85, + 88 => 85, + 126 => 85, + 86 => 86, 91 => 91, 92 => 92, 93 => 93, - 95 => 95, + 94 => 94, 96 => 96, - 97 => 96, - 100 => 100, + 97 => 97, + 98 => 97, 101 => 101, 102 => 102, - 105 => 105, - 107 => 107, + 103 => 103, + 106 => 106, 108 => 108, - 109 => 108, - 159 => 108, - 113 => 113, + 109 => 109, + 110 => 109, + 162 => 109, 114 => 114, 115 => 115, 116 => 116, @@ -2130,35 +2185,33 @@ public static $yy_action = array( 119 => 119, 120 => 120, 121 => 121, - 123 => 123, + 122 => 122, 124 => 124, - 126 => 126, - 185 => 126, + 125 => 125, 127 => 127, + 190 => 127, 128 => 128, 129 => 129, 130 => 130, 131 => 131, 132 => 132, - 140 => 132, 133 => 133, + 141 => 133, 134 => 134, 135 => 135, - 136 => 135, - 138 => 135, - 139 => 135, - 137 => 137, - 141 => 141, + 136 => 136, + 137 => 136, + 139 => 136, + 140 => 136, + 138 => 138, 142 => 142, 143 => 143, - 189 => 143, 144 => 144, - 146 => 146, + 194 => 144, + 145 => 145, 147 => 147, 148 => 148, 149 => 149, - 150 => 150, - 151 => 151, 152 => 152, 153 => 153, 154 => 154, @@ -2166,14 +2219,14 @@ public static $yy_action = array( 156 => 156, 157 => 157, 158 => 158, - 162 => 162, - 163 => 163, + 159 => 159, + 160 => 160, + 161 => 161, 165 => 165, 166 => 166, + 168 => 168, 169 => 169, - 171 => 171, 172 => 172, - 173 => 173, 174 => 174, 175 => 175, 176 => 176, @@ -2181,21 +2234,26 @@ public static $yy_action = array( 178 => 178, 179 => 179, 180 => 180, - 181 => 180, + 181 => 181, + 182 => 182, 183 => 183, 184 => 184, - 186 => 186, - 187 => 187, - 190 => 190, + 185 => 185, + 186 => 185, + 188 => 188, + 189 => 189, 191 => 191, 192 => 192, - 193 => 193, - 196 => 193, - 194 => 194, - 197 => 194, 195 => 195, + 196 => 196, + 197 => 197, 198 => 198, + 201 => 198, 199 => 199, + 202 => 199, + 200 => 200, + 203 => 203, + 204 => 204, ); // line 245 "src/Parser/TemplateParser.y" public function yy_r0(){ @@ -2537,43 +2595,47 @@ public static $yy_action = array( } // line 685 "src/Parser/TemplateParser.y" public function yy_r78(){ - $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor . ',' . $this->yystack[$this->yyidx + -2]->minor . ') '; } -// line 692 "src/Parser/TemplateParser.y" +// line 690 "src/Parser/TemplateParser.y" public function yy_r79(){ - $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -2]->minor,1)); - $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? $_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\') : '.$this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor; } // line 697 "src/Parser/TemplateParser.y" public function yy_r80(){ + $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -2]->minor,1)); + $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? $_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\') : '.$this->yystack[$this->yyidx + 0]->minor; + } +// line 702 "src/Parser/TemplateParser.y" + public function yy_r81(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; } -// line 706 "src/Parser/TemplateParser.y" - public function yy_r82(){ +// line 711 "src/Parser/TemplateParser.y" + public function yy_r83(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?: '.$this->yystack[$this->yyidx + 0]->minor; } -// line 716 "src/Parser/TemplateParser.y" - public function yy_r84(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; - } // line 721 "src/Parser/TemplateParser.y" public function yy_r85(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; + } +// line 726 "src/Parser/TemplateParser.y" + public function yy_r86(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; } -// line 742 "src/Parser/TemplateParser.y" - public function yy_r90(){ +// line 747 "src/Parser/TemplateParser.y" + public function yy_r91(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } -// line 746 "src/Parser/TemplateParser.y" - public function yy_r91(){ - $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'; - } -// line 750 "src/Parser/TemplateParser.y" +// line 751 "src/Parser/TemplateParser.y" public function yy_r92(){ - $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'; } // line 755 "src/Parser/TemplateParser.y" public function yy_r93(){ + $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor; + } +// line 760 "src/Parser/TemplateParser.y" + public function yy_r94(){ if (defined($this->yystack[$this->yyidx + 0]->minor)) { if ($this->security) { $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler); @@ -2583,16 +2645,16 @@ public static $yy_action = array( $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } } -// line 772 "src/Parser/TemplateParser.y" - public function yy_r95(){ +// line 777 "src/Parser/TemplateParser.y" + public function yy_r96(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')'; } -// line 776 "src/Parser/TemplateParser.y" - public function yy_r96(){ +// line 781 "src/Parser/TemplateParser.y" + public function yy_r97(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -// line 794 "src/Parser/TemplateParser.y" - public function yy_r100(){ +// line 799 "src/Parser/TemplateParser.y" + public function yy_r101(){ if ($this->security && $this->security->static_classes !== array()) { $this->compiler->trigger_template_error('dynamic static class not allowed by security setting'); } @@ -2605,19 +2667,19 @@ public static $yy_action = array( } $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; } -// line 809 "src/Parser/TemplateParser.y" - public function yy_r101(){ +// line 814 "src/Parser/TemplateParser.y" + public function yy_r102(){ $prefixVar = $this->compiler->getNewPrefixVariable(); $tmp = $this->compiler->appendCode('', (string) $this->yystack[$this->yyidx + 0]->minor); $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "")); $this->_retvalue = $prefixVar; } -// line 816 "src/Parser/TemplateParser.y" - public function yy_r102(){ +// line 821 "src/Parser/TemplateParser.y" + public function yy_r103(){ $this->_retvalue = $this->compiler->compileModifier($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -// line 829 "src/Parser/TemplateParser.y" - public function yy_r105(){ +// line 834 "src/Parser/TemplateParser.y" + public function yy_r106(){ if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) { if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) { $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]; @@ -2628,21 +2690,21 @@ public static $yy_action = array( $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting'); } } -// line 848 "src/Parser/TemplateParser.y" - public function yy_r107(){ +// line 853 "src/Parser/TemplateParser.y" + public function yy_r108(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -// line 856 "src/Parser/TemplateParser.y" - public function yy_r108(){ +// line 861 "src/Parser/TemplateParser.y" + public function yy_r109(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor)); } -// line 883 "src/Parser/TemplateParser.y" - public function yy_r113(){ +// line 888 "src/Parser/TemplateParser.y" + public function yy_r114(){ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1)); $this->_retvalue = array('$_smarty_tpl->hasVariable(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')','$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')'); } -// line 887 "src/Parser/TemplateParser.y" - public function yy_r114(){ +// line 892 "src/Parser/TemplateParser.y" + public function yy_r115(){ if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') { $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']); $this->_retvalue = array('true', $smarty_var); @@ -2654,118 +2716,118 @@ public static $yy_action = array( $this->_retvalue = array('true', '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor['var'] . ')'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']); } } -// line 901 "src/Parser/TemplateParser.y" - public function yy_r115(){ - $this->_retvalue = array('true', '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor); - } // line 906 "src/Parser/TemplateParser.y" public function yy_r116(){ - $this->_retvalue = array('true', $this->yystack[$this->yyidx + 0]->minor); + $this->_retvalue = array('true', '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor); } // line 911 "src/Parser/TemplateParser.y" public function yy_r117(){ + $this->_retvalue = array('true', $this->yystack[$this->yyidx + 0]->minor); + } +// line 916 "src/Parser/TemplateParser.y" + public function yy_r118(){ $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\''); } -// line 915 "src/Parser/TemplateParser.y" - public function yy_r118(){ +// line 920 "src/Parser/TemplateParser.y" + public function yy_r119(){ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)'; } -// line 919 "src/Parser/TemplateParser.y" - public function yy_r119(){ +// line 924 "src/Parser/TemplateParser.y" + public function yy_r120(){ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor); } -// line 923 "src/Parser/TemplateParser.y" - public function yy_r120(){ +// line 928 "src/Parser/TemplateParser.y" + public function yy_r121(){ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)'; } -// line 927 "src/Parser/TemplateParser.y" - public function yy_r121(){ +// line 932 "src/Parser/TemplateParser.y" + public function yy_r122(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor[1]; } -// line 935 "src/Parser/TemplateParser.y" - public function yy_r123(){ +// line 940 "src/Parser/TemplateParser.y" + public function yy_r124(){ $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); } -// line 938 "src/Parser/TemplateParser.y" - public function yy_r124(){ +// line 943 "src/Parser/TemplateParser.y" + public function yy_r125(){ $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); } -// line 951 "src/Parser/TemplateParser.y" - public function yy_r126(){ +// line 956 "src/Parser/TemplateParser.y" + public function yy_r127(){ return; } -// line 957 "src/Parser/TemplateParser.y" - public function yy_r127(){ +// line 962 "src/Parser/TemplateParser.y" + public function yy_r128(){ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1)); $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')]'; } -// line 961 "src/Parser/TemplateParser.y" - public function yy_r128(){ +// line 966 "src/Parser/TemplateParser.y" + public function yy_r129(){ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor . ')]'; } -// line 966 "src/Parser/TemplateParser.y" - public function yy_r129(){ +// line 971 "src/Parser/TemplateParser.y" + public function yy_r130(){ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor); $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -2]->minor . ')->'.$this->yystack[$this->yyidx + 0]->minor.']'; } -// line 971 "src/Parser/TemplateParser.y" - public function yy_r130(){ - $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']'; - } -// line 975 "src/Parser/TemplateParser.y" +// line 976 "src/Parser/TemplateParser.y" public function yy_r131(){ - $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']'; + $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']'; } // line 980 "src/Parser/TemplateParser.y" public function yy_r132(){ - $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']'; + $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']'; } // line 985 "src/Parser/TemplateParser.y" public function yy_r133(){ + $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']'; + } +// line 990 "src/Parser/TemplateParser.y" + public function yy_r134(){ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; } -// line 989 "src/Parser/TemplateParser.y" - public function yy_r134(){ +// line 994 "src/Parser/TemplateParser.y" + public function yy_r135(){ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; } -// line 992 "src/Parser/TemplateParser.y" - public function yy_r135(){ +// line 997 "src/Parser/TemplateParser.y" + public function yy_r136(){ $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']'; } -// line 998 "src/Parser/TemplateParser.y" - public function yy_r137(){ +// line 1003 "src/Parser/TemplateParser.y" + public function yy_r138(){ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -1]->minor,1)); $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\')]'; } -// line 1015 "src/Parser/TemplateParser.y" - public function yy_r141(){ +// line 1020 "src/Parser/TemplateParser.y" + public function yy_r142(){ $this->_retvalue = '[]'; } -// line 1025 "src/Parser/TemplateParser.y" - public function yy_r142(){ - $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\''; - } -// line 1029 "src/Parser/TemplateParser.y" +// line 1030 "src/Parser/TemplateParser.y" public function yy_r143(){ - $this->_retvalue = '\'\''; + $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\''; } // line 1034 "src/Parser/TemplateParser.y" public function yy_r144(){ + $this->_retvalue = '\'\''; + } +// line 1039 "src/Parser/TemplateParser.y" + public function yy_r145(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; } -// line 1042 "src/Parser/TemplateParser.y" - public function yy_r146(){ +// line 1047 "src/Parser/TemplateParser.y" + public function yy_r147(){ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $'); $this->compiler->triggerTagNoCache($var); $this->_retvalue = '$_smarty_tpl->getValue(\''.$var.'\')'; } -// line 1049 "src/Parser/TemplateParser.y" - public function yy_r147(){ +// line 1054 "src/Parser/TemplateParser.y" + public function yy_r148(){ $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; } -// line 1056 "src/Parser/TemplateParser.y" - public function yy_r148(){ +// line 1061 "src/Parser/TemplateParser.y" + public function yy_r149(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') { $this->_retvalue = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor; } else { @@ -2773,93 +2835,93 @@ public static $yy_action = array( $this->_retvalue = '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor['var'] . ')'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; } } -// line 1066 "src/Parser/TemplateParser.y" - public function yy_r149(){ +// line 1081 "src/Parser/TemplateParser.y" + public function yy_r152(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -// line 1071 "src/Parser/TemplateParser.y" - public function yy_r150(){ +// line 1086 "src/Parser/TemplateParser.y" + public function yy_r153(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -// line 1076 "src/Parser/TemplateParser.y" - public function yy_r151(){ +// line 1091 "src/Parser/TemplateParser.y" + public function yy_r154(){ if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') { $this->compiler->trigger_template_error (self::ERR1); } $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -// line 1083 "src/Parser/TemplateParser.y" - public function yy_r152(){ +// line 1098 "src/Parser/TemplateParser.y" + public function yy_r155(){ if ($this->security) { $this->compiler->trigger_template_error (self::ERR2); } $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor); $this->_retvalue = '->{$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor . ')'.$this->yystack[$this->yyidx + 0]->minor.'}'; } -// line 1091 "src/Parser/TemplateParser.y" - public function yy_r153(){ +// line 1106 "src/Parser/TemplateParser.y" + public function yy_r156(){ if ($this->security) { $this->compiler->trigger_template_error (self::ERR2); } $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } -// line 1098 "src/Parser/TemplateParser.y" - public function yy_r154(){ +// line 1113 "src/Parser/TemplateParser.y" + public function yy_r157(){ if ($this->security) { $this->compiler->trigger_template_error (self::ERR2); } $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; } -// line 1106 "src/Parser/TemplateParser.y" - public function yy_r155(){ +// line 1121 "src/Parser/TemplateParser.y" + public function yy_r158(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; } -// line 1114 "src/Parser/TemplateParser.y" - public function yy_r156(){ +// line 1129 "src/Parser/TemplateParser.y" + public function yy_r159(){ - if ($this->yystack[$this->yyidx + -3]->minor == 'isset') { + if ($this->yystack[$this->yyidx + -4]->minor == 'isset') { $this->_retvalue = '(true'; - if (count($this->yystack[$this->yyidx + -1]->minor) == 0) { + if (count($this->yystack[$this->yyidx + -2]->minor) == 0) { throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter."); } - foreach ($this->yystack[$this->yyidx + -1]->minor as $value) { + foreach ($this->yystack[$this->yyidx + -2]->minor as $value) { if (is_array($value)) { $this->_retvalue .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))'; } else { $this->_retvalue .= ' && (' . $value . ' !== null)'; } } - $this->_retvalue .= ')'; - } elseif ($this->yystack[$this->yyidx + -3]->minor == 'empty') { - if (count($this->yystack[$this->yyidx + -1]->minor) != 1) { + $this->_retvalue .= ')' . $this->yystack[$this->yyidx + 0]->minor; + } elseif ($this->yystack[$this->yyidx + -4]->minor == 'empty') { + if (count($this->yystack[$this->yyidx + -2]->minor) != 1) { throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter."); } - if (is_array($this->yystack[$this->yyidx + -1]->minor[0])) { - $this->_retvalue .= '( !' . $this->yystack[$this->yyidx + -1]->minor[0][0] . ' || empty(' . $this->yystack[$this->yyidx + -1]->minor[0][1] . '))'; + if (is_array($this->yystack[$this->yyidx + -2]->minor[0])) { + $this->_retvalue = '( !' . $this->yystack[$this->yyidx + -2]->minor[0][0] . ' || empty(' . $this->yystack[$this->yyidx + -2]->minor[0][1] . '))' . $this->yystack[$this->yyidx + 0]->minor; } else { - $this->_retvalue = 'false == ' . $this->yystack[$this->yyidx + -1]->minor[0]; + $this->_retvalue = 'false == ' . $this->yystack[$this->yyidx + -2]->minor[0] . $this->yystack[$this->yyidx + 0]->minor; } } else { $p = array(); - foreach ($this->yystack[$this->yyidx + -1]->minor as $value) { + foreach ($this->yystack[$this->yyidx + -2]->minor as $value) { if (is_array($value)) { $p[] = $value[1]; } else { $p[] = $value; } } - $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $p); + $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -4]->minor, $p) . $this->yystack[$this->yyidx + 0]->minor; } } -// line 1155 "src/Parser/TemplateParser.y" - public function yy_r157(){ +// line 1170 "src/Parser/TemplateParser.y" + public function yy_r160(){ if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') { $this->compiler->trigger_template_error (self::ERR1); } $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')'; } -// line 1162 "src/Parser/TemplateParser.y" - public function yy_r158(){ +// line 1177 "src/Parser/TemplateParser.y" + public function yy_r161(){ if ($this->security) { $this->compiler->trigger_template_error (self::ERR2); } @@ -2868,52 +2930,56 @@ public static $yy_action = array( $this->compiler->appendPrefixCode("getValue('".substr($this->yystack[$this->yyidx + -3]->minor,1).'\')'.';?>'); $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')'; } -// line 1191 "src/Parser/TemplateParser.y" - public function yy_r162(){ +// line 1206 "src/Parser/TemplateParser.y" + public function yy_r165(){ $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))); } -// line 1195 "src/Parser/TemplateParser.y" - public function yy_r163(){ +// line 1210 "src/Parser/TemplateParser.y" + public function yy_r166(){ $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)); } -// line 1203 "src/Parser/TemplateParser.y" - public function yy_r165(){ +// line 1218 "src/Parser/TemplateParser.y" + public function yy_r168(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } -// line 1211 "src/Parser/TemplateParser.y" - public function yy_r166(){ +// line 1226 "src/Parser/TemplateParser.y" + public function yy_r169(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); } -// line 1224 "src/Parser/TemplateParser.y" - public function yy_r169(){ - $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor); - } -// line 1233 "src/Parser/TemplateParser.y" - public function yy_r171(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method'); - } -// line 1238 "src/Parser/TemplateParser.y" +// line 1239 "src/Parser/TemplateParser.y" public function yy_r172(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method'); - } -// line 1243 "src/Parser/TemplateParser.y" - public function yy_r173(){ - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, ''); + $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor); } // line 1248 "src/Parser/TemplateParser.y" public function yy_r174(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property'); + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method'); } // line 1253 "src/Parser/TemplateParser.y" public function yy_r175(){ - $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property'); + $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method'); } -// line 1259 "src/Parser/TemplateParser.y" +// line 1258 "src/Parser/TemplateParser.y" public function yy_r176(){ - $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' '; + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, ''); } // line 1263 "src/Parser/TemplateParser.y" public function yy_r177(){ + $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); + } +// line 1268 "src/Parser/TemplateParser.y" + public function yy_r178(){ + $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property'); + } +// line 1273 "src/Parser/TemplateParser.y" + public function yy_r179(){ + $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property'); + } +// line 1279 "src/Parser/TemplateParser.y" + public function yy_r180(){ + $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' '; + } +// line 1283 "src/Parser/TemplateParser.y" + public function yy_r181(){ static $lops = array( 'eq' => ' == ', 'ne' => ' != ', @@ -2932,8 +2998,8 @@ public static $yy_action = array( $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor)); $this->_retvalue = $lops[$op]; } -// line 1282 "src/Parser/TemplateParser.y" - public function yy_r178(){ +// line 1302 "src/Parser/TemplateParser.y" + public function yy_r182(){ static $tlops = array( 'isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('), @@ -2945,8 +3011,8 @@ public static $yy_action = array( $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor)); $this->_retvalue = $tlops[$op]; } -// line 1295 "src/Parser/TemplateParser.y" - public function yy_r179(){ +// line 1315 "src/Parser/TemplateParser.y" + public function yy_r183(){ static $scond = array ( 'iseven' => '!(1 & ', 'isnoteven' => '(1 & ', @@ -2956,58 +3022,62 @@ public static $yy_action = array( $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor)); $this->_retvalue = $scond[$op]; } -// line 1309 "src/Parser/TemplateParser.y" - public function yy_r180(){ +// line 1326 "src/Parser/TemplateParser.y" + public function yy_r184(){ + $this->_retvalue = 'preg_match('; + } +// line 1333 "src/Parser/TemplateParser.y" + public function yy_r185(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; } -// line 1320 "src/Parser/TemplateParser.y" - public function yy_r183(){ +// line 1344 "src/Parser/TemplateParser.y" + public function yy_r188(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; } -// line 1324 "src/Parser/TemplateParser.y" - public function yy_r184(){ +// line 1348 "src/Parser/TemplateParser.y" + public function yy_r189(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.','; } -// line 1332 "src/Parser/TemplateParser.y" - public function yy_r186(){ +// line 1356 "src/Parser/TemplateParser.y" + public function yy_r191(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; } -// line 1336 "src/Parser/TemplateParser.y" - public function yy_r187(){ +// line 1360 "src/Parser/TemplateParser.y" + public function yy_r192(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; } -// line 1352 "src/Parser/TemplateParser.y" - public function yy_r190(){ +// line 1376 "src/Parser/TemplateParser.y" + public function yy_r195(){ $this->compiler->leaveDoubleQuote(); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this); } -// line 1358 "src/Parser/TemplateParser.y" - public function yy_r191(){ +// line 1382 "src/Parser/TemplateParser.y" + public function yy_r196(){ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -// line 1363 "src/Parser/TemplateParser.y" - public function yy_r192(){ +// line 1387 "src/Parser/TemplateParser.y" + public function yy_r197(){ $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor); } -// line 1367 "src/Parser/TemplateParser.y" - public function yy_r193(){ +// line 1391 "src/Parser/TemplateParser.y" + public function yy_r198(){ $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor); } -// line 1371 "src/Parser/TemplateParser.y" - public function yy_r194(){ +// line 1395 "src/Parser/TemplateParser.y" + public function yy_r199(){ $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')'); } -// line 1375 "src/Parser/TemplateParser.y" - public function yy_r195(){ +// line 1399 "src/Parser/TemplateParser.y" + public function yy_r200(){ $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')'); } -// line 1387 "src/Parser/TemplateParser.y" - public function yy_r198(){ +// line 1411 "src/Parser/TemplateParser.y" + public function yy_r203(){ $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor); } -// line 1391 "src/Parser/TemplateParser.y" - public function yy_r199(){ +// line 1415 "src/Parser/TemplateParser.y" + public function yy_r204(){ $this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor); } diff --git a/vendor/smarty/smarty/src/Parser/TemplateParser.y b/vendor/smarty/smarty/src/Parser/TemplateParser.y index 544148f..fecd247 100644 --- a/vendor/smarty/smarty/src/Parser/TemplateParser.y +++ b/vendor/smarty/smarty/src/Parser/TemplateParser.y @@ -681,6 +681,11 @@ expr(res) ::= expr(e1) isin(c) value(v). { res = c . e1.',(array)'.v.')'; } + // regex matching + expr(res) ::= expr(e1) matchop(c) value(e2). { + res = c . e2 . ',' . e1 . ') '; +} + // null coalescing nullcoalescing(res) ::= expr(v) QMARK QMARK expr(e2). { res = v.' ?? '.e2; @@ -1062,12 +1067,22 @@ object(res) ::= varindexed(vi) objectchain(oc). { } } + // optional objectchain - empty +optobjectchain(res) ::= . { + res = ''; +} + + // optional objectchain - present +optobjectchain(res) ::= objectchain(oc). { + res = oc; +} + // single element objectchain(res) ::= objectelement(oe). { res = oe; } - // chain of elements + // chain of elements objectchain(res) ::= objectchain(oc) objectelement(oe). { res = oc.oe; } @@ -1111,7 +1126,7 @@ objectelement(res)::= PTR method(f). { // // function // -function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP. { +function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP optobjectchain(oc). { if (f == 'isset') { res = '(true'; @@ -1125,15 +1140,15 @@ function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP. { res .= ' && (' . $value . ' !== null)'; } } - res .= ')'; + res .= ')' . oc; } elseif (f == 'empty') { if (count(v) != 1) { throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter."); } if (is_array(v[0])) { - res .= '( !' . v[0][0] . ' || empty(' . v[0][1] . '))'; + res = '( !' . v[0][0] . ' || empty(' . v[0][1] . '))' . oc; } else { - res = 'false == ' . v[0]; + res = 'false == ' . v[0] . oc; } } else { $p = array(); @@ -1144,7 +1159,7 @@ function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP. { $p[] = $value; } } - res = $this->compiler->compileModifierInExpression(f, $p); + res = $this->compiler->compileModifierInExpression(f, $p) . oc; } } @@ -1244,6 +1259,11 @@ static_class_access(res) ::= ID(v). { res = array(v, ''); } + // static class constant with object chain +static_class_access(res) ::= ID(v) objectchain(oc). { + res = array(v, oc); +} + // static class variables static_class_access(res) ::= DOLLARID(v) arrayindex(a). { res = array(v, a, 'property'); @@ -1303,6 +1323,10 @@ scond(res) ::= SINGLECOND(o). { res = $scond[$op]; } +matchop(res) ::= MATCHES(o). { + res = 'preg_match('; +} + // // ARRAY element assignment // diff --git a/vendor/smarty/smarty/src/Smarty.php b/vendor/smarty/smarty/src/Smarty.php index b53a36c..5665ff4 100644 --- a/vendor/smarty/smarty/src/Smarty.php +++ b/vendor/smarty/smarty/src/Smarty.php @@ -54,7 +54,7 @@ class Smarty extends \Smarty\TemplateBase { /** * smarty version */ - const SMARTY_VERSION = '5.7.0'; + const SMARTY_VERSION = '5.8.0'; /** * define caching modes @@ -1344,10 +1344,8 @@ class Smarty extends \Smarty\TemplateBase { } $_filepath = (string)$_file; if ($_file->isDir()) { - if (!$_compile->isDot()) { - // delete folder if empty - @rmdir($_file->getPathname()); - } + // delete folder if empty + @rmdir($_file->getPathname()); } else { // delete only php files if (substr($_filepath, -4) !== '.php') { @@ -1385,8 +1383,6 @@ class Smarty extends \Smarty\TemplateBase { && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1) ) { opcache_invalidate($_filepath, true); - } elseif (function_exists('apc_delete_file')) { - apc_delete_file($_filepath); } } } diff --git a/vendor/smarty/smarty/src/Template/Compiled.php b/vendor/smarty/smarty/src/Template/Compiled.php index 5a07db0..e5e2aec 100644 --- a/vendor/smarty/smarty/src/Template/Compiled.php +++ b/vendor/smarty/smarty/src/Template/Compiled.php @@ -251,8 +251,6 @@ class Compiled extends GeneratedPhpFile { && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) ) { opcache_invalidate($this->filepath, true); - } elseif (function_exists('apc_compile_file')) { - apc_compile_file($this->filepath); } } if (defined('HHVM_VERSION')) { diff --git a/views/_partial/footer.tpl b/views/_partial/footer.tpl index de9e8d7..9eaa238 100644 --- a/views/_partial/footer.tpl +++ b/views/_partial/footer.tpl @@ -13,7 +13,7 @@
  • Recruter
  • Partenariat
  • Blog -
  • Aide et support +
  • Aide et support
    diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 9a30658..6a495b4 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -35,7 +35,7 @@
  • {if isset($smarty.session.user)} {if $smarty.session.user.authorisation_name == "Administrateur"}