$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"Array to string conversion"
$this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = array('pipe', 'w'); // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since version 3.4 and will be removed in 4.0.', E_USER_DEPRECATED); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env, $this->options); if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process.
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy6606e4a64ebe40.00697487.html' '/tmp/knp_snappy6606e4a64ec735.04206290.pdf'"
array:3 [ 0 => array:2 [ 0 => "pipe" 1 => "r" ] 1 => array:2 [ 0 => "pipe" 1 => "w" ] 2 => array:2 [ 0 => "pipe" 1 => "w" ] ]
array:3 [ 0 => Closed resource @304 1 => Closed resource @305 2 => Closed resource @306 ]
"/home/flobha/public_html/public"
array:45 [ "USER" => "flobha" "HOME" => "/home/flobha" "SCRIPT_NAME" => "/index.php" "REQUEST_URI" => "/download-pattern/374" "QUERY_STRING" => "" "REQUEST_METHOD" => "GET" "SERVER_PROTOCOL" => "HTTP/1.1" "GATEWAY_INTERFACE" => "CGI/1.1" "REDIRECT_URL" => "/download-pattern/374" "REMOTE_PORT" => "36532" "SCRIPT_FILENAME" => "/home/flobha/public_html/public/index.php" "SERVER_ADMIN" => "webmaster@bharatfloorings.com" "CONTEXT_DOCUMENT_ROOT" => "/home/flobha/public_html/public" "CONTEXT_PREFIX" => "" "REQUEST_SCHEME" => "https" "DOCUMENT_ROOT" => "/home/flobha/public_html/public" "REMOTE_ADDR" => "34.224.33.93" "SERVER_PORT" => "443" "SERVER_ADDR" => "95.216.37.147" "SERVER_NAME" => "www.bharatfloorings.com" "SERVER_SOFTWARE" => "Apache" "SERVER_SIGNATURE" => "" "PATH" => "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin" "HTTP_X_HTTPS" => "1" "HTTP_HOST" => "www.bharatfloorings.com" "HTTP_USER_AGENT" => "claudebot" "HTTP_ACCEPT" => "*/*" "proxy-nokeepalive" => "1" "SSL_TLS_SNI" => "www.bharatfloorings.com" "HTTPS" => "on" "SCRIPT_URI" => "https://www.bharatfloorings.com/download-pattern/374" "SCRIPT_URL" => "/download-pattern/374" "UNIQUE_ID" => "ZgbkpvI-B6KiyKjjlN1CXwAAAH4" "REDIRECT_STATUS" => "200" "REDIRECT_SSL_TLS_SNI" => "www.bharatfloorings.com" "REDIRECT_HTTPS" => "on" "REDIRECT_SCRIPT_URI" => "https://www.bharatfloorings.com/download-pattern/374" "REDIRECT_SCRIPT_URL" => "/download-pattern/374" "REDIRECT_UNIQUE_ID" => "ZgbkpvI-B6KiyKjjlN1CXwAAAH4" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1711727782.2473 "REQUEST_TIME" => 1711727782 "argv" => [] "argc" => 0 ]
array:1 [ "suppress_errors" => true ]
* * The STDOUT and STDERR are also available after the process is finished * via the getOutput() and getErrorOutput() methods. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * @param array $env An array of additional env vars to set when running the process * * @return int The exit status code * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled * * @final since version 3.3 */ public function run($callback = null/*, array $env = array()*/) { $env = 1 < func_num_args() ? func_get_arg(1) : null; $this->start($callback, $env); return $this->wait(); } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @param callable|null $callback * @param array $env An array of additional env vars to set when running the process * * @return self * * @throws RuntimeException if PHP was compiled with --enable-sigchild and the enhanced sigchild compatibility mode is not enabled * @throws ProcessFailedException if the process didn't terminate successfully * * @final since version 3.3 */
null
null
* Executes the given command via shell and returns the complete output as * a string. * * @param string $command * * @return array(status, stdout, stderr) */ protected function executeCommand($command) { if (method_exists(Process::class, 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, null, $this->env); } else { $process = new Process($command, null, $this->env); } if (false !== $this->timeout) { $process->setTimeout($this->timeout); } $process->run(); return [ $process->getExitCode(), $process->getOutput(), $process->getErrorOutput(), ]; } /** * Prepares the specified output. * * @param string $filename The output filename * @param bool $overwrite Whether to overwrite the file if it already * exist * * @throws Exception\FileAlreadyExistsException * @throws \RuntimeException * @throws \InvalidArgumentException */ protected function prepareOutput($filename, $overwrite)
if (null === $this->binary) { throw new \LogicException( 'You must define a binary prior to conversion.' ); } $this->prepareOutput($output, $overwrite); $command = $this->getCommand($input, $output, $options); $inputFiles = is_array($input) ? implode('", "', $input) : $input; $this->logger->info(sprintf('Generate from file(s) "%s" to file "%s".', $inputFiles, $output), [ 'command' => $command, 'env' => $this->env, 'timeout' => $this->timeout, ]); try { list($status, $stdout, $stderr) = $this->executeCommand($command); $this->checkProcessStatus($status, $stdout, $stderr, $command); $this->checkOutput($output, $command); } catch (\Exception $e) { // @TODO: should be replaced by \Throwable when support for php5.6 is dropped $this->logger->error(sprintf('An error happened while generating "%s".', $output), [ 'command' => $command, 'status' => isset($status) ? $status : null, 'stdout' => isset($stdout) ? $stdout : null, 'stderr' => isset($stderr) ? $stderr : null, ]); throw $e; } $this->logger->info(sprintf('File "%s" has been successfully generated.', $output), [ 'command' => $command, 'stdout' => $stdout, 'stderr' => $stderr, ]); }
"/usr/local/bin/wkhtmltopdf --lowquality --orientation 'portrait' --page-size 'a4' '/tmp/knp_snappy6606e4a64ebe40.00697487.html' '/tmp/knp_snappy6606e4a64ec735.04206290.pdf'"
$fetchUrlContent = $option === 'xsl-style-sheet' && $this->isOptionUrl($value); if ($saveToTempFile || $fetchUrlContent) { $fileContent = $fetchUrlContent ? file_get_contents($value) : $value; $options[$option] = $this->createTemporaryFile($fileContent, $this->optionsWithContentCheck[$option]); } } } return $options; } /** * {@inheritdoc} */ public function generate($input, $output, array $options = [], $overwrite = false) { $options = $this->handleOptions($this->mergeOptions($options)); parent::generate($input, $output, $options, $overwrite); } /** * Convert option content or url to file if it is needed. * * @param $option * * @return bool */ protected function isOptionUrl($option) { return (bool) filter_var($option, FILTER_VALIDATE_URL); } /** * {@inheritdoc} */ protected function configure() { $this->addOptions([
array:1 [ 0 => "/tmp/knp_snappy6606e4a64ebe40.00697487.html" ]
"/tmp/knp_snappy6606e4a64ec735.04206290.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
false
$fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $this->generate($fileNames, $output, $options, $overwrite); } /** * {@inheritdoc} */ public function getOutput($input, array $options = []) { $filename = $this->createTemporaryFile(null, $this->getDefaultExtension()); $this->generate($input, $filename, $options); $result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); }
array:1 [ 0 => "/tmp/knp_snappy6606e4a64ebe40.00697487.html" ]
"/tmp/knp_snappy6606e4a64ec735.04206290.pdf"
array:3 [ "lowquality" => true "orientation" => "portrait" "page-size" => "a4" ]
$result = $this->getFileContents($filename); return $result; } /** * {@inheritdoc} */ public function getOutputFromHtml($html, array $options = []) { $fileNames = []; if (is_array($html)) { foreach ($html as $htmlInput) { $fileNames[] = $this->createTemporaryFile($htmlInput, 'html'); } } else { $fileNames[] = $this->createTemporaryFile($html, 'html'); } $result = $this->getOutput($fileNames, $options); return $result; } /** * Defines the binary. * * @param string $binary The path/name of the binary */ public function setBinary($binary) { $this->binary = $binary; } /** * Returns the binary. * * @return string */ public function getBinary()
array:1 [ 0 => "/tmp/knp_snappy6606e4a64ebe40.00697487.html" ]
[]
* @return $this */ public function loadView($view, $data = array(), $mergeData = array()) { $view = View::make($view, $data, $mergeData); return $this->loadHTML($view); } /** * Output the PDF as a string. * * @return string The rendered PDF as string * @throws \InvalidArgumentException */ public function output() { if ($this->html) { return $this->snappy->getOutputFromHtml($this->html, $this->options); } if ($this->file) { return $this->snappy->getOutput($this->file, $this->options); } throw new \InvalidArgumentException('PDF Generator requires a html or file in order to produce output.'); } /** * Save the PDF to a file * * @param $filename * @return $this */ public function save($filename, $overwrite = false) { if ($this->html)
""" <!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <meta name="robots" content="noindex">\n <meta name="csrf-token" content="5FmpMWh5H4JLQJBugNMIUBTfWHaym0cIY30MEiSO" />\n <meta name="description" content="The Bharat Floorings Group is the leader in quality cement floorings - a reputation held for 90 years">\n <meta name="keywords" content="Bharat, Floorings,premium, quality, tiles, civil, contractors, maintenance.">\n <link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700,900" rel="stylesheet">\n <!-- <link type="text/css" rel="stylesheet" href="https://www.bharatfloorings.com/css/website/all.css"> -->\n <title>FLOWER RING - HERITAGE PATTERN - Bharat Floorings & Tiles Pvt. Ltd.</title>\n <script type="text/javascript">\n window.bft = {\n elements: false,\n };\n </script>\n <style>\n *, ::after, ::before {\n box-sizing: border-box;\n }\n body {\n overflow-x: hidden;\n font-size: 1rem;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-family: Roboto,sans-serif;\n overscroll-behavior-y: none;\n overscroll-behavior-x: none;\n }\n .container {\n width: 900px;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .ml-auto, .mx-auto {\n margin-left: auto!important;\n margin-right: auto!important;\n }\n .text-center {\n text-align: center!important;\n }\n .floor_share_print .logo_share {\n width: 150px;\n }\n .img-fluid {\n max-width: 100%;\n height: auto;\n }\n .floor_share_print h5 {\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-size: 1.25rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n }\n .floor_share_content p {\n margin: 0;\n }\n .floor_share_print .floor {\n background: #f6f6f6;\n margin: 30px auto;\n text-align: center;\n padding: 80px;\n }\n .grid__item {\n padding: 1.25rem;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n position: relative;\n width: 100%;\n min-height: 1px;\n }\n .tile-box {\n background: #f6f6f6;\n padding: 42px 0;\n position: relative;\n text-align: center;\n clear: both;\n overflow: hidden;\n width: 290px;\n height: 290px;\n margin: auto;\n font-size: 0;\n display: inline-block;\n transition: box-shadow 1s ease-in-out;\n box-shadow: 0 0 0 0 rgba(78,84,87,.08);\n }\n .grp-tiles {\n clear: both;\n overflow: hidden;\n font-size: 0;\n text-align: center;\n max-width: 300px;\n margin: auto;\n }\n .floor .grp-tiles .single-tiles-svg {\n width: 50%;\n }\n .single-tiles-svg {\n display: inline-block;\n border-left: 1px solid #fff;\n border-bottom: 1px solid #fff;\n cursor: pointer;\n width: 50%;\n }\n .single-tiles-svg svg {\n width: 144px;\n height: 144px;\n }\n .row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .col-md-6 {\n // -ms-flex: 0 0 50%;\n // flex: 0 0 50%;\n max-width: 50%;\n width:50%;\n float:left;\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n }\n .floor_share_print .tiles-used-box {\n margin-bottom: 30px;\n }\n .floor_share_print .tiles-used-box h5 {\n font-size: 18px;\n line-height: 26px;\n color: #000;\n border-bottom: 1px solid #000;\n padding-bottom: 7px;\n margin-bottom: 15px;\n font-weight: 500;\n }\n .floor_share_print .tiles-used-box p {\n font-size: 18px;\n line-height: 26px;\n color: #656565;\n margin: 0;\n }\n .small, small {\n font-size: 80%;\n font-weight: 400;\n }\n .list-inline {\n padding-left: 0;\n list-style: none;\n }\n .collection-tiles .list-inline li {\n margin-top: 10px;\n width: 46%;\n }\n .list-inline-item {\n display: inline-block;\n }\n .list-inline-item:not(:last-child) {\n margin-right: .5rem;\n }\n .collection-tiles .list-inline .color-box {\n width: 20px;\n height: 20px;\n margin-right: 10px;\n vertical-align: top;\n display: inline-block;\n }\n .collection-tiles .list-inline label {\n display: inline-block;\n margin-bottom: 0;\n width: calc(100% - 35px);\n font-size: 14px;\n vertical-align: top;\n }\n .floor_share_footer {\n border-top: 1px solid #656565;\n padding: 20px;\n clear:both;\n }\n .floor_share_footer p {\n color: #656565;\n font-size: 14px;\n text-align: center;\n }\n .rotate-0 {\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n .rotate-60 {\n -webkit-transform: rotate(60deg);\n -moz-transform: rotate(60deg);\n -o-transform: rotate(60deg);\n -ms-transform: rotate(60deg);\n transform: rotate(60deg);\n }\n .rotate-90 {\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .rotate-120 {\n -webkit-transform: rotate(120deg);\n -moz-transform: rotate(120deg);\n -o-transform: rotate(120deg);\n -ms-transform: rotate(120deg);\n transform: rotate(120deg);\n }\n .rotate-180 {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .rotate-240 {\n -webkit-transform: rotate(240deg);\n -moz-transform: rotate(240deg);\n -o-transform: rotate(240deg);\n -ms-transform: rotate(240deg);\n transform: rotate(240deg);\n }\n .rotate-270 {\n -webkit-transform: rotate(270deg);\n -moz-transform: rotate(270deg);\n -o-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .rotate-300 {\n -webkit-transform: rotate(300deg);\n -moz-transform: rotate(300deg);\n -o-transform: rotate(300deg);\n -ms-transform: rotate(300deg);\n transform: rotate(300deg);\n }\n .floor-container {\n width: 600px;\n height: 618px;\n overflow: auto;\n margin-bottom: 30px;\n }\n .floor-tiles {\n font-size: 0;\n width: 600px;\n position: relative;\n margin: auto;\n }\n .floor-box {\n position: relative;\n height: auto;\n overflow: hidden;\n }\n .floor-box .border-tiles-content:before {\n content: "Border";\n font-size: 12px;\n position: absolute;\n color: gray;\n left: 20px;\n top: 15px;\n }\n .floor-box .indoor-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n }\n .floor-tiles .indoor-tiles {\n display: inline-block;\n width: 50px;\n height: 50px;\n background: #dcdcdc;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-box .indoor-hexagon-tiles-content {\n position: absolute;\n top: 0px;\n margin: 50px;\n width: 500px;\n height: 500px;\n background: #fff;\n overflow: hidden;\n }\n .floor-box .indoor-hexagon-tiles-content-even {\n position: relative;\n left: -38px;\n top: -13px;\n white-space: nowrap;\n }\n .floor-box .indoor-hexagon-tiles-content-odd {\n position: relative;\n margin-top: -27px;\n margin-left: -13px;\n white-space: nowrap;\n }\n .floor-tiles .indoor-hexagon-tiles {\n display: inline-block;\n width: 50px;\n height: 57.71px;\n margin: 1px 0.5px 0 0.5px;\n }\n .floor-tiles .indoor-hexagon-tiles-content-even .indoor-hexagon-tiles {\n margin: 0px 0.5px 0px 0.5px;\n }\n \n .floor-tiles .indoor-tiles svg,\n .floor-tiles .border-tiles svg {\n width: 100%;\n height: 100%;\n }\n .floor-tiles .border-tiles {\n background: #d2d2d2;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n vertical-align: top;\n line-height: 50px;\n }\n .floor-tiles .not-border-tiles {\n background: #fff;\n display: inline-block;\n width: 50px;\n height: 50px;\n border-right: 1px solid #a9a9a9;\n border-bottom: 1px solid #a9a9a9;\n }\n .floor-tiles .border-tiles.vertical-ending {\n border-right: 0;\n }\n .floor-tiles .border-tiles.horizontal-ending {\n border-bottom: 0;\n }\n .single-tiles-collection-hexagon-svg {\n display: inline-block;\n border-left: 0;\n border-bottom: 0;\n cursor: pointer;\n width: 204px;\n line-height: 0;\n height: 204px;\n }\n .tiles-hexagon-pattern {\n overflow: hidden;\n height: 204px;\n }\n .tile-row {\n white-space: nowrap;\n height: 101px;\n font-size: 0;\n }\n .tile-row .tile-col {\n width: 84px;\n height: 96px;\n display: inline-block;\n }\n .tile-row .tile-col svg {\n width: 84px;\n height: 97px;\n }\n .tile-row:nth-child(odd){\n margin-left: -47px;\n margin-top: -29px;\n }\n .tile-row:nth-child(1){\n margin-top: -73px;\n }\n .tile-row:nth-child(even) {\n margin-left: -89px;\n margin-top: -29px;\n }\n .tiles-background {\n white-space: nowrap;\n height: 206px;\n font-size: 0;\n }\n .tiles-background-hexagon {\n margin-top: -54px;\n margin-left: -88px;\n height: 204px;\n }\n .tiles-background-hexagon:nth-child(even){\n margin-top: -51px;\n margin-left: 0px;\n }\n .pattern-watermark {\n position: absolute;\n top: 49%;\n left: 50%;\n /*left: 80px;*/\n -webkit-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n text-align: center;\n z-index: 1;\n opacity: 0.8;\n }\n </style>\n </head>\n <body>\n <div class="container floor_share_print">\n <div class="col-md-12 mx-auto">\n <p class="text-center">\n <a href="https://www.bharatfloorings.com" title="Bharat Floorings & Tiles Pvt. Ltd.">\n <img src="https://www.bharatfloorings.com/img/BFT_logo_name.svg" class="img-fluid logo_share" alt="Bharat Floorings & Tiles Pvt. Ltd." />\n </a>\n </p>\n <div class="floor_share_content">\n <h5>Pattern created on www.bharatfloorings.com</h5>\n <p>Pattern Name: FLOWER RING - HERITAGE PATTERN</p>\n <p>Collection Name: Heritage™ Tiles</p>\n <p>Sub-Collection Name: Graphic - Heritage Collection</p>\n </div>\n <div class="floor">\n <div class="pattern-watermark">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100px" height="100px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"\n viewBox="0 0 100 100"\n xmlns:xlink="http://www.w3.org/1999/xlink">\n <g id="Layer_x0020_1">\n <metadata id="CorelCorpID_0Corel-Layer"/>\n <g id="_181987400">\n <path id="_181988216" fill="#ffffff" fill-rule="nonzero" d="M38.8952 88.8409l-1.03938 0.809061c-0.118111,0.0944889 -0.230317,0.103938 -0.333073,-0.01063l-0.278742 -0.307089c-0.0897645,-0.108662 -0.0354333,-0.243309 0.0342522,-0.3189l2.03269 -1.96419 0.387405 0c0.139371,0 0.261026,0.131103 0.261026,0.269293l0 9.29535c0,0.150001 -0.121655,0.284648 -0.261026,0.284648l-0.526776 0c-0.155907,0 -0.27638,-0.134647 -0.27638,-0.284648l0 -7.7729z"/>\n <path id="_181988144" fill="#ffffff" fill-rule="nonzero" d="M47.4819 91.3968c0.252758,-1.45867 -0.317719,-3.62247 -2.2949,-3.62247 -1.22245,0 -2.17679,1.05237 -2.17679,2.29962 0,1.25316 0.973236,2.26301 2.18742,2.26301 1.34647,0 2.28427,-0.940165 2.28427,-0.940165zm-3.90357 4.83311c0.649611,-0.219687 3.21617,-1.65474 3.71696,-3.6083 0,0 -0.953157,0.655517 -2.19923,0.655517 -1.63702,0 -3.11459,-1.21655 -3.11459,-3.13821 0,-1.8319 1.46458,-3.32247 3.20554,-3.32247 2.3386,0 3.37089,1.82364 3.37089,4.12208 0,3.85042 -3.30239,5.62327 -4.76579,6.20084 -0.146458,0.0543311 -0.263388,-0.0118111 -0.311813,-0.141733l-0.158269 -0.349609c-0.0779534,-0.172442 -0.02126,-0.32953 0.256301,-0.418114z"/>\n <path id="_181988072" fill="#ffffff" fill-rule="nonzero" d="M49.935 96.1862c1.18465,-1.27442 2.35986,-2.56892 3.5457,-3.83507 0.982685,-1.07245 1.46222,-1.94293 1.46222,-2.62443 0,-0.827959 -0.539768,-1.84017 -2.03033,-1.84017 -0.894102,0 -1.60277,0.60591 -2.05395,1.08544 -0.11693,0.11693 -0.27638,0.11693 -0.39331,0l-0.288191 -0.27638c-0.0897645,-0.0885834 -0.108662,-0.252758 -0.0141733,-0.370869 0,0 1.02757,-1.4197 2.74963,-1.4197 2.07167,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.809061,2.20986 -1.81064,3.28349 -0.930716,0.992134 -1.84962,1.99254 -2.77679,2.96459l4.25909 0c0.140552,0 0.27638,0.137009 0.27638,0.283467l0 0.387405c0,0.144096 -0.135828,0.277561 -0.27638,0.277561l-5.5028 0c-0.160631,0 -0.274018,-0.133466 -0.274018,-0.277561l0 -0.428744z"/>\n <path id="_181988000" fill="#ffffff" fill-rule="nonzero" d="M57.3796 96.1862c1.19174,-1.27442 2.3634,-2.56892 3.5516,-3.83507 0.982685,-1.07245 1.46104,-1.94293 1.46104,-2.62443 0,-0.827959 -0.538587,-1.84017 -2.02915,-1.84017 -0.897645,0 -1.60395,0.60591 -2.05986,1.08544 -0.112206,0.11693 -0.270475,0.11693 -0.390948,0l-0.28701 -0.27638c-0.0874023,-0.0885834 -0.112206,-0.252758 -0.0118111,-0.370869 0,0 1.02875,-1.4197 2.74963,-1.4197 2.06931,0 3.12758,1.30867 3.12758,2.79097 0,1.27324 -0.810243,2.20986 -1.81301,3.28349 -0.928354,0.992134 -1.8508,1.99254 -2.77797,2.96459l4.25673 0c0.145277,0 0.278742,0.137009 0.278742,0.283467l0 0.387405c0,0.144096 -0.133466,0.277561 -0.278742,0.277561l-5.49689 0c-0.161812,0 -0.279923,-0.133466 -0.279923,-0.277561l0 -0.428744z"/>\n <path id="_181987928" fill="#ffffff" fill-rule="nonzero" d="M37.0243 72.1234c0,-0.132285 0.108662,-0.251577 0.253939,-0.251577l5.2276 0c0.145277,0 0.251577,0.119292 0.251577,0.251577l0 0.390948c0,0.126379 -0.1063,0.252758 -0.251577,0.252758l-4.45988 0 0 3.2327 3.81027 0c0.134647,0 0.257482,0.118111 0.257482,0.249215l0 0.389767c0,0.14882 -0.122836,0.249215 -0.257482,0.249215l-3.81027 0 0 3.39097 4.45988 0c0.145277,0 0.251577,0.120473 0.251577,0.249215l0 0.389767c0,0.132285 -0.1063,0.249215 -0.251577,0.249215l-5.2276 0c-0.145277,0 -0.253939,-0.11693 -0.253939,-0.249215l0 -8.79456z"/>\n <path id="_181987856" fill="#ffffff" fill-rule="nonzero" d="M44.02 79.777c0.0720478,-0.0814967 0.131103,-0.175986 0.200789,-0.25512 0.132285,-0.172442 0.282286,-0.278742 0.460634,-0.119292 0.0968512,0.0791345 1.06772,1.01103 2.25002,1.01103 1.07363,0 1.77403,-0.68032 1.77403,-1.4634 0,-0.916543 -0.79725,-1.46458 -2.3197,-2.09647 -1.45631,-0.638981 -2.3386,-1.24017 -2.3386,-2.74608 0,-0.907094 0.708667,-2.36931 2.8264,-2.36931 1.31222,0 2.27364,0.676777 2.27364,0.676777 0.0755911,0.0401578 0.231498,0.199608 0.0755911,0.45709 -0.0496067,0.0685045 -0.107481,0.167718 -0.161812,0.246852 -0.115749,0.187797 -0.251577,0.243309 -0.455909,0.120473 -0.0992134,-0.05315 -0.937803,-0.617721 -1.74686,-0.617721 -1.4008,0 -1.83427,0.910637 -1.83427,1.46812 0,0.889377 0.682683,1.4008 1.79529,1.87561 1.79529,0.727565 2.94687,1.40198 2.94687,2.94569 0,1.3819 -1.31222,2.38821 -2.86538,2.38821 -1.56143,0 -2.62561,-0.917724 -2.79687,-1.07599 -0.114568,-0.0885834 -0.24449,-0.196065 -0.0838589,-0.44646z"/>\n <path id="_181987784" fill="#ffffff" fill-rule="nonzero" d="M52.739 72.7707l-2.30789 0c-0.145277,0 -0.25512,-0.129922 -0.25512,-0.256301l0 -0.392129c0,-0.131103 0.109843,-0.250396 0.25512,-0.250396l5.63154 0c0.142915,0 0.248033,0.119292 0.248033,0.250396l0 0.392129c0,0.126379 -0.105119,0.256301 -0.248033,0.256301l-2.3138 0 0 8.14731c0,0.132285 -0.115749,0.245671 -0.249215,0.245671l-0.51024 0c-0.128741,0 -0.250396,-0.113387 -0.250396,-0.245671l0 -8.14731z"/>\n <path id="_181987712" fill="#ffffff" fill-rule="nonzero" d="M59.8977 77.827c1.45277,0 2.50396,-1.06891 2.50396,-2.52049 0,-1.45159 -1.05119,-2.50159 -2.50396,-2.50159l-1.2945 0 0 5.02209 1.2945 0zm-2.29608 -5.76382c0,-0.101576 0.0755911,-0.192521 0.173623,-0.192521l2.26183 0c1.89923,0 3.45357,1.5508 3.45357,3.43585 0,1.91104 -1.55434,3.45357 -3.45357,3.45357l-2.26183 0c-0.0980323,0 -0.173623,-0.0897645 -0.173623,-0.186616l0 -6.51029z"/>\n <polygon id="_181987640" fill="#ffffff" fill-rule="nonzero" points="63.4895,81.1672 57.6005,81.1672 57.6005,80.325 63.4895,80.325 "/>\n <path id="_181987568" fill="#ffffff" fill-rule="nonzero" d="M19.3183 55.0563c0,-0.852763 -0.328349,-1.52009 -0.976779,-2.01261 -0.657879,-0.504335 -1.70671,-0.751187 -3.16184,-0.751187l-6.47722 0 0 5.59965 6.65556 0c1.23781,0 2.20159,-0.219687 2.90553,-0.676777 0.714573,-0.442917 1.05473,-1.14686 1.05473,-2.08939l0 -0.0696856zm-1.41379 -10.1835c0,-0.843314 -0.315357,-1.4882 -0.948433,-1.9382 -0.624808,-0.454728 -1.54135,-0.675596 -2.72601,-0.675596l-5.5276 0 0 5.38233 5.16618 0c1.23426,0 2.2134,-0.216143 2.94451,-0.636619 0.724021,-0.427562 1.09135,-1.11261 1.09135,-2.05986l0 -0.0720478zm6.2717 14.0044c-0.452366,0.87166 -1.08544,1.5945 -1.92521,2.17561 -0.837408,0.582288 -1.84017,1.02048 -3.00475,1.31694 -1.17402,0.290553 -2.48388,0.428744 -3.90239,0.428744l-12.0946 0 0 -25.4435 11.7993 0c2.61144,0 4.66067,0.592918 6.14887,1.78112 1.48702,1.18465 2.22758,2.78388 2.22758,4.79649l0 0.0696856c0,0.73347 -0.0791345,1.36773 -0.268112,1.92049 -0.178348,0.562209 -0.416932,1.06891 -0.716935,1.51891 -0.302365,0.448822 -0.656698,0.837408 -1.04765,1.17875 -0.394491,0.338979 -0.822054,0.630714 -1.2756,0.874023 1.47285,0.555122 2.62325,1.3134 3.46774,2.27364 0.843314,0.961425 1.26379,2.28427 1.26379,3.97798l0 0.0732289c0,1.16694 -0.222049,2.18033 -0.672053,3.0579z"/>\n <polygon id="_181987496" fill="#ffffff" fill-rule="nonzero" points="89.6688,42.5177 89.6688,62.8009 84.0656,62.8009 84.0656,42.5177 76.3293,42.5177 76.3293,37.3538 97.411,37.3538 97.411,42.5177 "/>\n <polygon id="_181986224" fill="#ffffff" fill-rule="nonzero" points="46.2488,8.07998 46.2488,13.4966 58.3823,13.4966 58.3823,18.5872 46.2488,18.5872 46.2488,28.44 40.6456,28.44 40.6456,2.99176 60.0241,2.99176 60.0241,8.07998 "/>\n <polygon id="_181986416" fill="#ffffff" fill-rule="nonzero" points="97.6874,2.99294 2.99057,97.6838 2.3138,97.0082 97.0082,2.31498 "/>\n <polygon id="_181986632" fill="#ffffff" fill-rule="nonzero" points="97.6874,97.0082 97.0082,97.685 2.3138,2.99176 2.99057,2.31734 "/>\n <polygon id="_181986656" fill="#ffffff" fill-rule="nonzero" points="53.6803,53.678 46.3197,53.678 46.3197,46.3173 53.6803,46.3173 "/>\n </g>\n </g>\n </svg>\n </div>\n <div class="col-md-12 grid__item pattern-container" data-name="FlowerRing2">\n <div class="tiles-overlay">\n <div class="tiles-overlay-bg">\n <div class="tile-box" style="height: auto;">\n <div class="grp-tiles">\n <div class="single-tiles-svg top-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(0)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#824844" fill-rule="nonzero" points="528.956,528.937 0.0401575,528.937 0.0401575,0.361418 528.956,0.361418 " class="tile-element" data-element="1"></polygon> <path fill="#f5deb5" fill-rule="nonzero" d="M306.15 0l0 42.619c3.7004,0.715749 7.79647,1.47402 11.8807,2.29961 13.9429,2.81457 27.352,7.32875 40.2579,13.2508 28.3382,12.9969 52.8757,31.213 73.9867,54.1784 10.1091,10.9949 19.1646,22.7433 27.0284,35.4237 9.40395,15.1583 17.0941,31.1374 22.0595,48.3024 2.70237,9.34135 4.77639,18.8658 7.24489,28.7563l39.5209 0c0.415749,0 0.415749,28.2756 0,28.2756l-65.504 0c-3.3626,-49.3324 -19.0548,-93.9568 -54.5835,-129.71 -35.5902,-35.8099 -80.0647,-51.8091 -129.947,-55.1292l0 -4.83426 0 -54.9036 0 -8.52993 28.0559 0 0 0.0011811z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M306.481 529l0 -39.1371c10.9736,-1.75748 22.1185,-4.30158 33.026,-7.99135 19.9205,-6.74174 38.2914,-16.3878 55.4398,-28.4977 23.1319,-16.337 42.6946,-36.2268 58.7257,-59.5548 15.1914,-22.1091 26.2418,-46.1127 32.028,-72.4159 0.961419,-4.37245 1.73268,-8.78269 2.72717,-13.8886l9.83387 0c9.24096,0 18.4843,-0.0956694 27.7264,0.0625985 2.64331,0.0413386 3.06851,-0.719292 3.00591,-3.37323 -0.179528,-7.15867 -0.105118,-14.3303 -0.0425197,-21.4914 0.0259843,-2.61969 -0.145276,-3.47835 -3.29764,-3.44882 -19.3618,0.166536 -38.7249,-0.0874017 -58.0914,-0.187796 -4.75867,-0.0248032 -4.73859,0 -5.28662,4.62638 -0.863387,7.2756 -1.34173,14.6351 -2.73662,21.8091 -1.9063,9.77836 -4.29568,19.4811 -6.88584,29.1095 -3.34725,12.4347 -8.79214,24.1004 -14.9044,35.3445 -6.50198,11.9669 -14.5382,22.9654 -23.6504,33.1406 -9.45001,10.5437 -20.0162,19.8768 -31.7563,27.6886 -15.404,10.2567 -31.9772,18.1654 -49.754,23.6705 -14.3953,4.46457 -29.0587,7.22127 -43.9335,9.12875 -3.39804,0.433465 -6.83623,0.499607 -10.5626,0.758269l0 64.6489 28.389 0 0 -0.0011811z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M223.3 528.767l0 -38.7048c-0.767718,-0.217323 -1.53307,-0.465355 -2.31142,-0.637796 -8.03033,-1.77402 -16.1528,-3.20197 -24.0756,-5.36694 -15.8658,-4.33938 -30.6567,-11.3032 -44.9127,-19.4481 -18.026,-10.298 -34.1953,-23.0622 -48.8091,-37.7422 -13.9299,-14.002 -26.0646,-29.5016 -35.9776,-46.617 -9.34608,-16.1339 -16.852,-33.1111 -21.4607,-51.2469 -1.77756,-6.99686 -3.12638,-14.1012 -4.67127,-21.1607l-40.9701 0 0 -28.4422 66.7064 0c3.38504,49.9064 19.1965,94.5037 54.9001,130.221 35.6823,35.693 80.1863,51.4265 129.636,54.8292l0 7.76576 0 50.602 0 5.94686 -28.0548 0 0.0011811 0.0011811z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M-0.0011811 224.83l41.139 0c0.754726,-4.40552 1.26969,-8.87482 2.3067,-13.2177 4.813,-20.1685 12.1819,-39.2871 22.6347,-57.2859 7.28151,-12.5386 15.5162,-24.3083 24.8717,-35.3186 12.926,-15.2044 27.5552,-28.5355 43.8579,-40.0713 12.5977,-8.91143 25.8662,-16.6855 40.0253,-22.6489 14.5831,-6.13938 29.68,-10.9772 45.4949,-13.0051 2.31142,-0.296457 3.07205,-1.22953 3.03544,-3.66615 -0.154725,-10.3606 -0.0673229,-20.7213 -0.0673229,-31.0878l0 -8.20749 27.7264 0 0 7.54607 0 54.2422 0 6.06851c-49.4694,3.59764 -93.945,19.2555 -129.69,55.1493 -35.6197,35.7674 -51.202,80.1852 -54.7666,129.946l-66.5682 0 0 -28.4433 0 0z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#e3a048" fill-rule="nonzero" d="M285.354 293.293c8.25119,12.6343 14.3469,26.1815 17.5146,41.0068 2.12717,9.96025 2.78859,20.0268 1.5567,30.091 -1.51536,12.3933 -5.41654,24.0756 -11.4355,35.0894 -7.48111,13.6855 -17.4142,25.213 -29.4036,35.2571 -10.8886,-8.84175 -20.0918,-18.9402 -27.078,-30.9839 -8.82639,-15.2256 -12.7477,-31.8071 -12.815,-49.2768 -0.0496064,-12.0449 1.97008,-23.9174 5.6504,-35.354 3.10985,-9.65198 6.24922,-19.4516 13.4303,-27.1548 0,0 16.9571,14.8453 42.58,1.32402l0 0.0011811z" class="tile-element" data-element="6" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M289.975 288.331c40.8709,27.5008 103.96,28.689 143.06,-21.43 -6.17009,-5.83465 -12.0862,-12.0862 -18.6756,-17.524 -16.454,-13.5756 -35.1627,-21.8044 -56.7107,-23.3008 -13.2177,-0.915356 -25.9028,1.29567 -38.263,5.4567 -9.68742,3.25985 -18.7229,8.09056 -27.4276,13.4717 0,0 15.9862,22.9548 -1.98189,43.3264l-0.0011811 0z" class="tile-element" data-element="7" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M237.821 287.009c-0.768899,0.661418 -1.45276,1.48583 -2.32205,1.96181 -15.5587,8.44017 -31.402,15.7831 -49.4883,17.3563 -13.5544,1.18229 -26.602,-0.274016 -39.2693,-4.82245 -20.0256,-7.17993 -36.4666,-19.5142 -49.9843,-35.9847 0.624804,-0.933072 1.11142,-1.86969 1.78229,-2.64449 7.61812,-8.8323 16.1032,-16.6323 26.0398,-22.8709 13.9795,-8.77442 29.2382,-13.4551 45.5788,-14.4555 14.7544,-0.89882 29.2335,1.24606 43.2095,5.97993 8.49686,2.87835 17.2725,5.45198 24.1264,11.8229 0,0 -14.1969,23.1803 0.327166,43.656l0 0.0011811z" class="tile-element" data-element="8" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M287.005 239.713c6.07914,-6.22088 8.79686,-14.2642 11.4827,-22.1835 6.30591,-18.5953 8.65867,-37.6217 5.40355,-57.2032 -1.49528,-8.99529 -4.01339,-17.7036 -8.09293,-25.7233 -6.85277,-13.4764 -16.2,-25.1327 -27.893,-34.8438 -1.76221,-1.46693 -2.62678,-1.47874 -4.38072,0 -11.7236,9.88112 -21.2197,21.5717 -28.2886,35.139 -6.08623,11.6681 -9.78781,24.0461 -10.728,37.3382 -0.807875,11.452 0.661418,22.4504 3.69686,33.4229 3.23859,11.7319 8.50513,22.4717 14.9008,32.7296 0,0 22.8839,-16.591 43.8993,1.32402z" class="tile-element" data-element="9" data-connected="element_6"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M238.153 243.682c-1.86851,3.96851 -4.14213,7.80119 -5.53702,11.9315 -4.05945,12.0555 -1.07362,22.8992 6.91418,32.341 6.11221,7.22127 14.3717,10.9477 23.7095,11.1933 15.2044,0.400394 28.1056,-7.99607 33.2717,-22.7457 7.36064,-21.0177 -7.59686,-43.3064 -29.3067,-44.68 -11.4662,-0.725198 -20.6634,3.49843 -28.389,11.6303l-0.662599 0.329528z" class="tile-element" data-element="10" data-connected="element_2"></path> </g></svg>\n </div>\n <div class="single-tiles-svg top-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(90)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#824844" fill-rule="nonzero" points="528.956,528.937 0.0401575,528.937 0.0401575,0.361418 528.956,0.361418 " class="tile-element" data-element="1"></polygon> <path fill="#f5deb5" fill-rule="nonzero" d="M306.15 0l0 42.619c3.7004,0.715749 7.79647,1.47402 11.8807,2.29961 13.9429,2.81457 27.352,7.32875 40.2579,13.2508 28.3382,12.9969 52.8757,31.213 73.9867,54.1784 10.1091,10.9949 19.1646,22.7433 27.0284,35.4237 9.40395,15.1583 17.0941,31.1374 22.0595,48.3024 2.70237,9.34135 4.77639,18.8658 7.24489,28.7563l39.5209 0c0.415749,0 0.415749,28.2756 0,28.2756l-65.504 0c-3.3626,-49.3324 -19.0548,-93.9568 -54.5835,-129.71 -35.5902,-35.8099 -80.0647,-51.8091 -129.947,-55.1292l0 -4.83426 0 -54.9036 0 -8.52993 28.0559 0 0 0.0011811z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M306.481 529l0 -39.1371c10.9736,-1.75748 22.1185,-4.30158 33.026,-7.99135 19.9205,-6.74174 38.2914,-16.3878 55.4398,-28.4977 23.1319,-16.337 42.6946,-36.2268 58.7257,-59.5548 15.1914,-22.1091 26.2418,-46.1127 32.028,-72.4159 0.961419,-4.37245 1.73268,-8.78269 2.72717,-13.8886l9.83387 0c9.24096,0 18.4843,-0.0956694 27.7264,0.0625985 2.64331,0.0413386 3.06851,-0.719292 3.00591,-3.37323 -0.179528,-7.15867 -0.105118,-14.3303 -0.0425197,-21.4914 0.0259843,-2.61969 -0.145276,-3.47835 -3.29764,-3.44882 -19.3618,0.166536 -38.7249,-0.0874017 -58.0914,-0.187796 -4.75867,-0.0248032 -4.73859,0 -5.28662,4.62638 -0.863387,7.2756 -1.34173,14.6351 -2.73662,21.8091 -1.9063,9.77836 -4.29568,19.4811 -6.88584,29.1095 -3.34725,12.4347 -8.79214,24.1004 -14.9044,35.3445 -6.50198,11.9669 -14.5382,22.9654 -23.6504,33.1406 -9.45001,10.5437 -20.0162,19.8768 -31.7563,27.6886 -15.404,10.2567 -31.9772,18.1654 -49.754,23.6705 -14.3953,4.46457 -29.0587,7.22127 -43.9335,9.12875 -3.39804,0.433465 -6.83623,0.499607 -10.5626,0.758269l0 64.6489 28.389 0 0 -0.0011811z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M223.3 528.767l0 -38.7048c-0.767718,-0.217323 -1.53307,-0.465355 -2.31142,-0.637796 -8.03033,-1.77402 -16.1528,-3.20197 -24.0756,-5.36694 -15.8658,-4.33938 -30.6567,-11.3032 -44.9127,-19.4481 -18.026,-10.298 -34.1953,-23.0622 -48.8091,-37.7422 -13.9299,-14.002 -26.0646,-29.5016 -35.9776,-46.617 -9.34608,-16.1339 -16.852,-33.1111 -21.4607,-51.2469 -1.77756,-6.99686 -3.12638,-14.1012 -4.67127,-21.1607l-40.9701 0 0 -28.4422 66.7064 0c3.38504,49.9064 19.1965,94.5037 54.9001,130.221 35.6823,35.693 80.1863,51.4265 129.636,54.8292l0 7.76576 0 50.602 0 5.94686 -28.0548 0 0.0011811 0.0011811z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M-0.0011811 224.83l41.139 0c0.754726,-4.40552 1.26969,-8.87482 2.3067,-13.2177 4.813,-20.1685 12.1819,-39.2871 22.6347,-57.2859 7.28151,-12.5386 15.5162,-24.3083 24.8717,-35.3186 12.926,-15.2044 27.5552,-28.5355 43.8579,-40.0713 12.5977,-8.91143 25.8662,-16.6855 40.0253,-22.6489 14.5831,-6.13938 29.68,-10.9772 45.4949,-13.0051 2.31142,-0.296457 3.07205,-1.22953 3.03544,-3.66615 -0.154725,-10.3606 -0.0673229,-20.7213 -0.0673229,-31.0878l0 -8.20749 27.7264 0 0 7.54607 0 54.2422 0 6.06851c-49.4694,3.59764 -93.945,19.2555 -129.69,55.1493 -35.6197,35.7674 -51.202,80.1852 -54.7666,129.946l-66.5682 0 0 -28.4433 0 0z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#e3a048" fill-rule="nonzero" d="M285.354 293.293c8.25119,12.6343 14.3469,26.1815 17.5146,41.0068 2.12717,9.96025 2.78859,20.0268 1.5567,30.091 -1.51536,12.3933 -5.41654,24.0756 -11.4355,35.0894 -7.48111,13.6855 -17.4142,25.213 -29.4036,35.2571 -10.8886,-8.84175 -20.0918,-18.9402 -27.078,-30.9839 -8.82639,-15.2256 -12.7477,-31.8071 -12.815,-49.2768 -0.0496064,-12.0449 1.97008,-23.9174 5.6504,-35.354 3.10985,-9.65198 6.24922,-19.4516 13.4303,-27.1548 0,0 16.9571,14.8453 42.58,1.32402l0 0.0011811z" class="tile-element" data-element="6" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M289.975 288.331c40.8709,27.5008 103.96,28.689 143.06,-21.43 -6.17009,-5.83465 -12.0862,-12.0862 -18.6756,-17.524 -16.454,-13.5756 -35.1627,-21.8044 -56.7107,-23.3008 -13.2177,-0.915356 -25.9028,1.29567 -38.263,5.4567 -9.68742,3.25985 -18.7229,8.09056 -27.4276,13.4717 0,0 15.9862,22.9548 -1.98189,43.3264l-0.0011811 0z" class="tile-element" data-element="7" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M237.821 287.009c-0.768899,0.661418 -1.45276,1.48583 -2.32205,1.96181 -15.5587,8.44017 -31.402,15.7831 -49.4883,17.3563 -13.5544,1.18229 -26.602,-0.274016 -39.2693,-4.82245 -20.0256,-7.17993 -36.4666,-19.5142 -49.9843,-35.9847 0.624804,-0.933072 1.11142,-1.86969 1.78229,-2.64449 7.61812,-8.8323 16.1032,-16.6323 26.0398,-22.8709 13.9795,-8.77442 29.2382,-13.4551 45.5788,-14.4555 14.7544,-0.89882 29.2335,1.24606 43.2095,5.97993 8.49686,2.87835 17.2725,5.45198 24.1264,11.8229 0,0 -14.1969,23.1803 0.327166,43.656l0 0.0011811z" class="tile-element" data-element="8" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M287.005 239.713c6.07914,-6.22088 8.79686,-14.2642 11.4827,-22.1835 6.30591,-18.5953 8.65867,-37.6217 5.40355,-57.2032 -1.49528,-8.99529 -4.01339,-17.7036 -8.09293,-25.7233 -6.85277,-13.4764 -16.2,-25.1327 -27.893,-34.8438 -1.76221,-1.46693 -2.62678,-1.47874 -4.38072,0 -11.7236,9.88112 -21.2197,21.5717 -28.2886,35.139 -6.08623,11.6681 -9.78781,24.0461 -10.728,37.3382 -0.807875,11.452 0.661418,22.4504 3.69686,33.4229 3.23859,11.7319 8.50513,22.4717 14.9008,32.7296 0,0 22.8839,-16.591 43.8993,1.32402z" class="tile-element" data-element="9" data-connected="element_6"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M238.153 243.682c-1.86851,3.96851 -4.14213,7.80119 -5.53702,11.9315 -4.05945,12.0555 -1.07362,22.8992 6.91418,32.341 6.11221,7.22127 14.3717,10.9477 23.7095,11.1933 15.2044,0.400394 28.1056,-7.99607 33.2717,-22.7457 7.36064,-21.0177 -7.59686,-43.3064 -29.3067,-44.68 -11.4662,-0.725198 -20.6634,3.49843 -28.389,11.6303l-0.662599 0.329528z" class="tile-element" data-element="10" data-connected="element_2"></path> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-left-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(270)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#824844" fill-rule="nonzero" points="528.956,528.937 0.0401575,528.937 0.0401575,0.361418 528.956,0.361418 " class="tile-element" data-element="1"></polygon> <path fill="#f5deb5" fill-rule="nonzero" d="M306.15 0l0 42.619c3.7004,0.715749 7.79647,1.47402 11.8807,2.29961 13.9429,2.81457 27.352,7.32875 40.2579,13.2508 28.3382,12.9969 52.8757,31.213 73.9867,54.1784 10.1091,10.9949 19.1646,22.7433 27.0284,35.4237 9.40395,15.1583 17.0941,31.1374 22.0595,48.3024 2.70237,9.34135 4.77639,18.8658 7.24489,28.7563l39.5209 0c0.415749,0 0.415749,28.2756 0,28.2756l-65.504 0c-3.3626,-49.3324 -19.0548,-93.9568 -54.5835,-129.71 -35.5902,-35.8099 -80.0647,-51.8091 -129.947,-55.1292l0 -4.83426 0 -54.9036 0 -8.52993 28.0559 0 0 0.0011811z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M306.481 529l0 -39.1371c10.9736,-1.75748 22.1185,-4.30158 33.026,-7.99135 19.9205,-6.74174 38.2914,-16.3878 55.4398,-28.4977 23.1319,-16.337 42.6946,-36.2268 58.7257,-59.5548 15.1914,-22.1091 26.2418,-46.1127 32.028,-72.4159 0.961419,-4.37245 1.73268,-8.78269 2.72717,-13.8886l9.83387 0c9.24096,0 18.4843,-0.0956694 27.7264,0.0625985 2.64331,0.0413386 3.06851,-0.719292 3.00591,-3.37323 -0.179528,-7.15867 -0.105118,-14.3303 -0.0425197,-21.4914 0.0259843,-2.61969 -0.145276,-3.47835 -3.29764,-3.44882 -19.3618,0.166536 -38.7249,-0.0874017 -58.0914,-0.187796 -4.75867,-0.0248032 -4.73859,0 -5.28662,4.62638 -0.863387,7.2756 -1.34173,14.6351 -2.73662,21.8091 -1.9063,9.77836 -4.29568,19.4811 -6.88584,29.1095 -3.34725,12.4347 -8.79214,24.1004 -14.9044,35.3445 -6.50198,11.9669 -14.5382,22.9654 -23.6504,33.1406 -9.45001,10.5437 -20.0162,19.8768 -31.7563,27.6886 -15.404,10.2567 -31.9772,18.1654 -49.754,23.6705 -14.3953,4.46457 -29.0587,7.22127 -43.9335,9.12875 -3.39804,0.433465 -6.83623,0.499607 -10.5626,0.758269l0 64.6489 28.389 0 0 -0.0011811z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M223.3 528.767l0 -38.7048c-0.767718,-0.217323 -1.53307,-0.465355 -2.31142,-0.637796 -8.03033,-1.77402 -16.1528,-3.20197 -24.0756,-5.36694 -15.8658,-4.33938 -30.6567,-11.3032 -44.9127,-19.4481 -18.026,-10.298 -34.1953,-23.0622 -48.8091,-37.7422 -13.9299,-14.002 -26.0646,-29.5016 -35.9776,-46.617 -9.34608,-16.1339 -16.852,-33.1111 -21.4607,-51.2469 -1.77756,-6.99686 -3.12638,-14.1012 -4.67127,-21.1607l-40.9701 0 0 -28.4422 66.7064 0c3.38504,49.9064 19.1965,94.5037 54.9001,130.221 35.6823,35.693 80.1863,51.4265 129.636,54.8292l0 7.76576 0 50.602 0 5.94686 -28.0548 0 0.0011811 0.0011811z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M-0.0011811 224.83l41.139 0c0.754726,-4.40552 1.26969,-8.87482 2.3067,-13.2177 4.813,-20.1685 12.1819,-39.2871 22.6347,-57.2859 7.28151,-12.5386 15.5162,-24.3083 24.8717,-35.3186 12.926,-15.2044 27.5552,-28.5355 43.8579,-40.0713 12.5977,-8.91143 25.8662,-16.6855 40.0253,-22.6489 14.5831,-6.13938 29.68,-10.9772 45.4949,-13.0051 2.31142,-0.296457 3.07205,-1.22953 3.03544,-3.66615 -0.154725,-10.3606 -0.0673229,-20.7213 -0.0673229,-31.0878l0 -8.20749 27.7264 0 0 7.54607 0 54.2422 0 6.06851c-49.4694,3.59764 -93.945,19.2555 -129.69,55.1493 -35.6197,35.7674 -51.202,80.1852 -54.7666,129.946l-66.5682 0 0 -28.4433 0 0z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#e3a048" fill-rule="nonzero" d="M285.354 293.293c8.25119,12.6343 14.3469,26.1815 17.5146,41.0068 2.12717,9.96025 2.78859,20.0268 1.5567,30.091 -1.51536,12.3933 -5.41654,24.0756 -11.4355,35.0894 -7.48111,13.6855 -17.4142,25.213 -29.4036,35.2571 -10.8886,-8.84175 -20.0918,-18.9402 -27.078,-30.9839 -8.82639,-15.2256 -12.7477,-31.8071 -12.815,-49.2768 -0.0496064,-12.0449 1.97008,-23.9174 5.6504,-35.354 3.10985,-9.65198 6.24922,-19.4516 13.4303,-27.1548 0,0 16.9571,14.8453 42.58,1.32402l0 0.0011811z" class="tile-element" data-element="6" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M289.975 288.331c40.8709,27.5008 103.96,28.689 143.06,-21.43 -6.17009,-5.83465 -12.0862,-12.0862 -18.6756,-17.524 -16.454,-13.5756 -35.1627,-21.8044 -56.7107,-23.3008 -13.2177,-0.915356 -25.9028,1.29567 -38.263,5.4567 -9.68742,3.25985 -18.7229,8.09056 -27.4276,13.4717 0,0 15.9862,22.9548 -1.98189,43.3264l-0.0011811 0z" class="tile-element" data-element="7" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M237.821 287.009c-0.768899,0.661418 -1.45276,1.48583 -2.32205,1.96181 -15.5587,8.44017 -31.402,15.7831 -49.4883,17.3563 -13.5544,1.18229 -26.602,-0.274016 -39.2693,-4.82245 -20.0256,-7.17993 -36.4666,-19.5142 -49.9843,-35.9847 0.624804,-0.933072 1.11142,-1.86969 1.78229,-2.64449 7.61812,-8.8323 16.1032,-16.6323 26.0398,-22.8709 13.9795,-8.77442 29.2382,-13.4551 45.5788,-14.4555 14.7544,-0.89882 29.2335,1.24606 43.2095,5.97993 8.49686,2.87835 17.2725,5.45198 24.1264,11.8229 0,0 -14.1969,23.1803 0.327166,43.656l0 0.0011811z" class="tile-element" data-element="8" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M287.005 239.713c6.07914,-6.22088 8.79686,-14.2642 11.4827,-22.1835 6.30591,-18.5953 8.65867,-37.6217 5.40355,-57.2032 -1.49528,-8.99529 -4.01339,-17.7036 -8.09293,-25.7233 -6.85277,-13.4764 -16.2,-25.1327 -27.893,-34.8438 -1.76221,-1.46693 -2.62678,-1.47874 -4.38072,0 -11.7236,9.88112 -21.2197,21.5717 -28.2886,35.139 -6.08623,11.6681 -9.78781,24.0461 -10.728,37.3382 -0.807875,11.452 0.661418,22.4504 3.69686,33.4229 3.23859,11.7319 8.50513,22.4717 14.9008,32.7296 0,0 22.8839,-16.591 43.8993,1.32402z" class="tile-element" data-element="9" data-connected="element_6"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M238.153 243.682c-1.86851,3.96851 -4.14213,7.80119 -5.53702,11.9315 -4.05945,12.0555 -1.07362,22.8992 6.91418,32.341 6.11221,7.22127 14.3717,10.9477 23.7095,11.1933 15.2044,0.400394 28.1056,-7.99607 33.2717,-22.7457 7.36064,-21.0177 -7.59686,-43.3064 -29.3067,-44.68 -11.4662,-0.725198 -20.6634,3.49843 -28.389,11.6303l-0.662599 0.329528z" class="tile-element" data-element="10" data-connected="element_2"></path> </g></svg>\n </div>\n <div class="single-tiles-svg bottom-right-tile no-cursor">\n <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="100" height="100" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 529 529" xmlns:xlink="http://www.w3.org/1999/xlink" class="" transform="rotate(180)" style="vertical-align: top;"> <g id="Layer_x0020_1"> <metadata id="CorelCorpID_0Corel-Layer"></metadata> <polygon fill="#824844" fill-rule="nonzero" points="528.956,528.937 0.0401575,528.937 0.0401575,0.361418 528.956,0.361418 " class="tile-element" data-element="1"></polygon> <path fill="#f5deb5" fill-rule="nonzero" d="M306.15 0l0 42.619c3.7004,0.715749 7.79647,1.47402 11.8807,2.29961 13.9429,2.81457 27.352,7.32875 40.2579,13.2508 28.3382,12.9969 52.8757,31.213 73.9867,54.1784 10.1091,10.9949 19.1646,22.7433 27.0284,35.4237 9.40395,15.1583 17.0941,31.1374 22.0595,48.3024 2.70237,9.34135 4.77639,18.8658 7.24489,28.7563l39.5209 0c0.415749,0 0.415749,28.2756 0,28.2756l-65.504 0c-3.3626,-49.3324 -19.0548,-93.9568 -54.5835,-129.71 -35.5902,-35.8099 -80.0647,-51.8091 -129.947,-55.1292l0 -4.83426 0 -54.9036 0 -8.52993 28.0559 0 0 0.0011811z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M306.481 529l0 -39.1371c10.9736,-1.75748 22.1185,-4.30158 33.026,-7.99135 19.9205,-6.74174 38.2914,-16.3878 55.4398,-28.4977 23.1319,-16.337 42.6946,-36.2268 58.7257,-59.5548 15.1914,-22.1091 26.2418,-46.1127 32.028,-72.4159 0.961419,-4.37245 1.73268,-8.78269 2.72717,-13.8886l9.83387 0c9.24096,0 18.4843,-0.0956694 27.7264,0.0625985 2.64331,0.0413386 3.06851,-0.719292 3.00591,-3.37323 -0.179528,-7.15867 -0.105118,-14.3303 -0.0425197,-21.4914 0.0259843,-2.61969 -0.145276,-3.47835 -3.29764,-3.44882 -19.3618,0.166536 -38.7249,-0.0874017 -58.0914,-0.187796 -4.75867,-0.0248032 -4.73859,0 -5.28662,4.62638 -0.863387,7.2756 -1.34173,14.6351 -2.73662,21.8091 -1.9063,9.77836 -4.29568,19.4811 -6.88584,29.1095 -3.34725,12.4347 -8.79214,24.1004 -14.9044,35.3445 -6.50198,11.9669 -14.5382,22.9654 -23.6504,33.1406 -9.45001,10.5437 -20.0162,19.8768 -31.7563,27.6886 -15.404,10.2567 -31.9772,18.1654 -49.754,23.6705 -14.3953,4.46457 -29.0587,7.22127 -43.9335,9.12875 -3.39804,0.433465 -6.83623,0.499607 -10.5626,0.758269l0 64.6489 28.389 0 0 -0.0011811z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M223.3 528.767l0 -38.7048c-0.767718,-0.217323 -1.53307,-0.465355 -2.31142,-0.637796 -8.03033,-1.77402 -16.1528,-3.20197 -24.0756,-5.36694 -15.8658,-4.33938 -30.6567,-11.3032 -44.9127,-19.4481 -18.026,-10.298 -34.1953,-23.0622 -48.8091,-37.7422 -13.9299,-14.002 -26.0646,-29.5016 -35.9776,-46.617 -9.34608,-16.1339 -16.852,-33.1111 -21.4607,-51.2469 -1.77756,-6.99686 -3.12638,-14.1012 -4.67127,-21.1607l-40.9701 0 0 -28.4422 66.7064 0c3.38504,49.9064 19.1965,94.5037 54.9001,130.221 35.6823,35.693 80.1863,51.4265 129.636,54.8292l0 7.76576 0 50.602 0 5.94686 -28.0548 0 0.0011811 0.0011811z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M-0.0011811 224.83l41.139 0c0.754726,-4.40552 1.26969,-8.87482 2.3067,-13.2177 4.813,-20.1685 12.1819,-39.2871 22.6347,-57.2859 7.28151,-12.5386 15.5162,-24.3083 24.8717,-35.3186 12.926,-15.2044 27.5552,-28.5355 43.8579,-40.0713 12.5977,-8.91143 25.8662,-16.6855 40.0253,-22.6489 14.5831,-6.13938 29.68,-10.9772 45.4949,-13.0051 2.31142,-0.296457 3.07205,-1.22953 3.03544,-3.66615 -0.154725,-10.3606 -0.0673229,-20.7213 -0.0673229,-31.0878l0 -8.20749 27.7264 0 0 7.54607 0 54.2422 0 6.06851c-49.4694,3.59764 -93.945,19.2555 -129.69,55.1493 -35.6197,35.7674 -51.202,80.1852 -54.7666,129.946l-66.5682 0 0 -28.4433 0 0z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#e3a048" fill-rule="nonzero" d="M285.354 293.293c8.25119,12.6343 14.3469,26.1815 17.5146,41.0068 2.12717,9.96025 2.78859,20.0268 1.5567,30.091 -1.51536,12.3933 -5.41654,24.0756 -11.4355,35.0894 -7.48111,13.6855 -17.4142,25.213 -29.4036,35.2571 -10.8886,-8.84175 -20.0918,-18.9402 -27.078,-30.9839 -8.82639,-15.2256 -12.7477,-31.8071 -12.815,-49.2768 -0.0496064,-12.0449 1.97008,-23.9174 5.6504,-35.354 3.10985,-9.65198 6.24922,-19.4516 13.4303,-27.1548 0,0 16.9571,14.8453 42.58,1.32402l0 0.0011811z" class="tile-element" data-element="6" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M289.975 288.331c40.8709,27.5008 103.96,28.689 143.06,-21.43 -6.17009,-5.83465 -12.0862,-12.0862 -18.6756,-17.524 -16.454,-13.5756 -35.1627,-21.8044 -56.7107,-23.3008 -13.2177,-0.915356 -25.9028,1.29567 -38.263,5.4567 -9.68742,3.25985 -18.7229,8.09056 -27.4276,13.4717 0,0 15.9862,22.9548 -1.98189,43.3264l-0.0011811 0z" class="tile-element" data-element="7" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M237.821 287.009c-0.768899,0.661418 -1.45276,1.48583 -2.32205,1.96181 -15.5587,8.44017 -31.402,15.7831 -49.4883,17.3563 -13.5544,1.18229 -26.602,-0.274016 -39.2693,-4.82245 -20.0256,-7.17993 -36.4666,-19.5142 -49.9843,-35.9847 0.624804,-0.933072 1.11142,-1.86969 1.78229,-2.64449 7.61812,-8.8323 16.1032,-16.6323 26.0398,-22.8709 13.9795,-8.77442 29.2382,-13.4551 45.5788,-14.4555 14.7544,-0.89882 29.2335,1.24606 43.2095,5.97993 8.49686,2.87835 17.2725,5.45198 24.1264,11.8229 0,0 -14.1969,23.1803 0.327166,43.656l0 0.0011811z" class="tile-element" data-element="8" data-connected="element_6"></path> <path fill="#e3a048" fill-rule="nonzero" d="M287.005 239.713c6.07914,-6.22088 8.79686,-14.2642 11.4827,-22.1835 6.30591,-18.5953 8.65867,-37.6217 5.40355,-57.2032 -1.49528,-8.99529 -4.01339,-17.7036 -8.09293,-25.7233 -6.85277,-13.4764 -16.2,-25.1327 -27.893,-34.8438 -1.76221,-1.46693 -2.62678,-1.47874 -4.38072,0 -11.7236,9.88112 -21.2197,21.5717 -28.2886,35.139 -6.08623,11.6681 -9.78781,24.0461 -10.728,37.3382 -0.807875,11.452 0.661418,22.4504 3.69686,33.4229 3.23859,11.7319 8.50513,22.4717 14.9008,32.7296 0,0 22.8839,-16.591 43.8993,1.32402z" class="tile-element" data-element="9" data-connected="element_6"></path> <path fill="#f5deb5" fill-rule="nonzero" d="M238.153 243.682c-1.86851,3.96851 -4.14213,7.80119 -5.53702,11.9315 -4.05945,12.0555 -1.07362,22.8992 6.91418,32.341 6.11221,7.22127 14.3717,10.9477 23.7095,11.1933 15.2044,0.400394 28.1056,-7.99607 33.2717,-22.7457 7.36064,-21.0177 -7.59686,-43.3064 -29.3067,-44.68 -11.4662,-0.725198 -20.6634,3.49843 -28.389,11.6303l-0.662599 0.329528z" class="tile-element" data-element="10" data-connected="element_2"></path> </g></svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Details</h5>\n <p><small>Size: 20cm x 20cm</small></p>\n </div>\n </div>\n <div class="col-md-6">\n <div class="tiles-used-box">\n <h5>Colours Used</h5>\n <div class="collection-tiles">\n <ul class="list-inline pattern-colors-container">\n <li class="list-inline-item">\n <span class="color-box" style="background: #824844;"></span>\n <label>Deep Red</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #f5deb5;"></span>\n <label>Light Cream</label>\n </li>\n <li class="list-inline-item">\n <span class="color-box" style="background: #e3a048;"></span>\n <label>Jaisalmer Yellow</label>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class="floor_share_footer">\n <p>\n Disclaimer: Colours and designs are indicative <br/>\n Please check physical sample as colours may vary\n </p>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="/home/flobha/public_html/public/js/website/jquery-3.2.1.min.js"></script>\n <script type="text/javascript">\n $(document).ready(function() {\n var tiles = $('.floor').find('svg');\n \n if (tiles && tiles.length) {\n $.each($(tiles), function(idx, tile) {\n var current_rotation = $(tile).attr('transform');\n \n if (current_rotation) {\n var rotate_degree = parseInt(current_rotation.replace("rotate(", "").replace(")", ""));\n rotate_degree = (rotate_degree == 360) ? 0 : rotate_degree;\n $(tile).addClass('rotate-' + rotate_degree);\n }\n \n if (bft.elements) {\n $.each($(tile).find('polygon, path'), function(e_idx, ele) {\n if ($(ele).data("element")) {\n $.each(bft.elements, function(ele_no, color) {\n if (parseInt($(ele).data("element")) == parseInt(ele_no)) {\n $(ele).attr('fill', color);\n return false;\n }\n });\n }\n });\n }\n });\n }\n });\n </script>\n </body>\n </html>\n """
[]
{ $this->snappy->generateFromHtml($this->html, $filename, $this->options, $overwrite); } elseif ($this->file) { $this->snappy->generate($this->file, $filename, $this->options, $overwrite); } return $this; } /** * Make the PDF downloadable by the user * * @param string $filename * @return \Illuminate\Http\Response */ public function download($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="'.$filename.'"' )); } /** * Return a response with the PDF to show in the browser * * @param string $filename * @return \Illuminate\Http\Response */ public function inline($filename = 'document.pdf') { return new Response($this->output(), 200, array( 'Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="'.$filename.'"', )); } /**
if ($tile) { // return view('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $proceed = true; $document_name = $tile->name; $view = View::make('website.pattern_pdf', compact('pattern', 'tile', 'elements', 'colors')); $html = $view->render(); } else { $msg = 'No such pattern found, cannot download'; } } else { $msg = 'No such pattern found, cannot download'; } if ($proceed && $html) { $pdf = PDF::loadHTML($html) ->setPaper('a4', 'portrait') ->setWarnings(false); return $pdf->download($document_name . '.pdf'); } else { return back()->with(['success' => false, 'msg' => $msg], 200); } } }
"FLOWER RING - HERITAGE PATTERN.pdf"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
"374"
/** * Get the middleware assigned to the controller. * * @return array */ public function getMiddleware() { return $this->middleware; } /** * Execute an action on the controller. * * @param string $method * @param array $parameters * @return \Symfony\Component\HttpFoundation\Response */ public function callAction($method, $parameters) { return call_user_func_array([$this, $method], $parameters); } /** * Handle calls to missing methods on the controller. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { throw new BadMethodCallException("Method [{$method}] does not exist on [".get_class($this).'].'); } }
array:2 [ 0 => PatternController {#327} 1 => "downloadPattern" ]
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "374" ]
{ $this->container = $container; } /** * Dispatch a request to a given controller and method. * * @param \Illuminate\Routing\Route $route * @param mixed $controller * @param string $method * @return mixed */ public function dispatch(Route $route, $controller, $method) { $parameters = $this->resolveClassMethodDependencies( $route->parametersWithoutNulls(), $controller, $method ); if (method_exists($controller, 'callAction')) { return $controller->callAction($method, $parameters); } return $controller->{$method}(...array_values($parameters)); } /** * Get the middleware for the controller instance. * * @param \Illuminate\Routing\Controller $controller * @param string $method * @return array */ public function getMiddleware($controller, $method) { if (! method_exists($controller, 'getMiddleware')) { return []; } return collect($controller->getMiddleware())->reject(function ($data) use ($method) { return static::methodExcludedByOptions($method, $data['options']);
"downloadPattern"
array:2 [ 0 => Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "374" ]
protected function runCallable() { $callable = $this->action['uses']; return $callable(...array_values($this->resolveMethodDependencies( $this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses']) ))); } /** * Run the route action and return the response. * * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ protected function runController() { return $this->controllerDispatcher()->dispatch( $this, $this->getController(), $this->getControllerMethod() ); } /** * Get the controller instance for the route. * * @return mixed */ public function getController() { if (! $this->controller) { $class = $this->parseControllerCallback()[0]; $this->controller = $this->container->make(ltrim($class, '\\')); } return $this->controller; } /**
* * @throws \UnexpectedValueException */ protected function parseAction($action) { return RouteAction::parse($this->uri, $action); } /** * Run the route action and return the response. * * @return mixed */ public function run() { $this->container = $this->container ?: new Container; try { if ($this->isControllerAction()) { return $this->runController(); } return $this->runCallable(); } catch (HttpResponseException $e) { return $e->getResponse(); } } /** * Checks whether the route's action is a controller. * * @return bool */ protected function isControllerAction() { return is_string($this->action['uses']); } /** * Run the route action and return the response.
/** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /**
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ public function __construct(Registrar $router) { $this->router = $router; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->router->substituteBindings($route = $request->route()); $this->router->substituteImplicitBindings($route); return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#328 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#322 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Session\TokenMismatchException */ public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->inExceptArray($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } throw new TokenMismatchException; } /** * Determine if the HTTP request uses a ‘read’ verb. * * @param \Illuminate\Http\Request $request * @return bool */ protected function isReading($request) { return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']); } /** * Determine if the application is running unit tests. * * @return bool
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#413 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#328 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // If the current session has an "errors" variable bound to it, we will share // its value with all view instances so the views can easily access errors // without having to bind. An empty bag is set when there aren't errors. $this->view->share( 'errors', $request->session()->get('errors') ?: new ViewErrorBag ); // Putting the errors in the view for every view allows the developer to just // assume that some errors are always available, which is convenient since // they don't have to continually run checks for the presence of errors. return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#414 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#413 …} : "BFT\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->sessionHandled = true; // If a session driver has been configured, we will need to start the session here // so that the data is ready for an application. Note that the Laravel sessions // do not make use of PHP "native" sessions in any way since they are crappy. if ($this->sessionConfigured()) { $request->setLaravelSession( $session = $this->startSession($request) ); $this->collectGarbage($session); } $response = $next($request); // Again, if the session has been configured we will need to close out the session // so that the attributes may be persisted to some storage medium. We will also // add the session identifier cookie to the application response headers now. if ($this->sessionConfigured()) { $this->storeCurrentUrl($request, $session); $this->addCookieToResponse($response, $session); } return $response; } /** * Perform any final actions for the request lifecycle. * * @param \Illuminate\Http\Request $request * @param \Symfony\Component\HttpFoundation\Response $response * @return void */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#415 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#414 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies * @return void */ public function __construct(CookieJar $cookies) { $this->cookies = $cookies; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); foreach ($this->cookies->getQueuedCookies() as $cookie) { $response->headers->setCookie($cookie); } return $response; } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#416 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#415 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s). * * @param string|array $cookieName * @return void */ public function disableFor($cookieName) { $this->except = array_merge($this->except, (array) $cookieName); } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $this->encrypt($next($this->decrypt($request))); } /** * Decrypt the cookies on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Request */ protected function decrypt(Request $request) { foreach ($request->cookies as $key => $c) { if ($this->isDisabled($key)) { continue; } try { $request->cookies->set($key, $this->decryptCookie($c)); } catch (DecryptException $e) { $request->cookies->set($key, null); }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#417 : "Illuminate\Routing\Pipeline" : Pipeline {#317 …} : { : {} } : { : Closure {#416 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /** * Sort the given middleware by priority. *
return $route; } /** * Return the response for the given route. * * @param Route $route * @param Request $request * @return mixed */ protected function runRoute(Request $request, Route $route) { $request->setRouteResolver(function () use ($route) { return $route; }); $this->events->dispatch(new Events\RouteMatched($route, $request)); return $this->prepareResponse($request, $this->runRouteWithinStack($route, $request) ); } /** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware)
Route {#212}
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request) { $this->current = $route = $this->routes->match($request); $this->container->instance(Route::class, $route); return $route; } /** * Return the response for the given route. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#212}
* @return mixed */ public function respondWithRoute($name) { $route = tap($this->routes->getByName($name))->bind($this->currentRequest); return $this->runRoute($this->currentRequest, $route); } /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request)
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter() { return function ($request) { $this->app->instance('request', $request); return $this->router->dispatch($request); }; } /** * Call the terminate method on any terminable middleware. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return void */ public function terminate($request, $response) { $this->terminateMiddleware($request, $response); $this->app->terminate(); } /** * Call the terminate method on any terminable middleware. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{ $this->config = $config; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @throws \Symfony\Component\HttpKernel\Exception\HttpException * * @return mixed */ public function handle($request, Closure $next) { $this->setTrustedProxyHeaderNames($request); $this->setTrustedProxyIpAddresses($request); return $next($request); } /** * Sets the trusted proxies on the request to the value of trustedproxy.proxies * * @param \Illuminate\Http\Request $request */ protected function setTrustedProxyIpAddresses($request) { $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies'); // We only trust specific IP addresses if (is_array($trustedIps)) { return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); } // We trust any IP address that calls us, but not proxies further // up the forwarding chain. // TODO: Determine if this should only trust the first IP address // Currently it trusts the entire chain (array of IPs),
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#122 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#23 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#223 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#122 …} : "BFT\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#299 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#223 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Http\Exceptions\PostTooLargeException */ public function handle($request, Closure $next) { $max = $this->getPostMaxSize(); if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { throw new PostTooLargeException; } return $next($request); } /** * Determine the server 'post_max_size' as bytes. * * @return int */ protected function getPostMaxSize() { if (is_numeric($postMaxSize = ini_get('post_max_size'))) { return (int) $postMaxSize; } $metric = strtoupper(substr($postMaxSize, -1)); $postMaxSize = (int) $postMaxSize; switch ($metric) { case 'K': return $postMaxSize * 1024; case 'M':
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#300 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#299 …} : "BFT\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true); throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']); } return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#301 : "Illuminate\Routing\Pipeline" : Pipeline {#34 …} : { : {} } : { : Closure {#300 …} : "Illuminate\Foundation\Http\Middleware\ValidatePostSize" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); } /** * Bootstrap the application for HTTP requests. * * @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware); } foreach ($this->routeMiddleware as $key => $middleware) { $router->aliasMiddleware($key, $middleware); } } /** * Handle an incoming HTTP request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request); } catch (Exception $e) { $this->reportException($e); $response = $this->renderException($request, $e); } catch (Throwable $e) { $this->reportException($e = new FatalThrowableError($e)); $response = $this->renderException($request, $e); } $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; } /** * Send the given request through the middleware / router. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ $app = require_once __DIR__.'/../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#318 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#32 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#320 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#212 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/download-pattern/374" #requestUri: "/download-pattern/374" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
USER | "flobha"
|
HOME | "/home/flobha"
|
SCRIPT_NAME | "/index.php"
|
REQUEST_URI | "/download-pattern/374"
|
QUERY_STRING | "" |
REQUEST_METHOD | "GET"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REDIRECT_URL | "/download-pattern/374"
|
REMOTE_PORT | "36532"
|
SCRIPT_FILENAME | "/home/flobha/public_html/public/index.php"
|
SERVER_ADMIN | "webmaster@bharatfloorings.com"
|
CONTEXT_DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
CONTEXT_PREFIX | "" |
REQUEST_SCHEME | "https"
|
DOCUMENT_ROOT | "/home/flobha/public_html/public"
|
REMOTE_ADDR | "34.224.33.93"
|
SERVER_PORT | "443"
|
SERVER_ADDR | "95.216.37.147"
|
SERVER_NAME | "www.bharatfloorings.com"
|
SERVER_SOFTWARE | "Apache"
|
SERVER_SIGNATURE | "" |
PATH | "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin"
|
HTTP_X_HTTPS | "1"
|
HTTP_HOST | "www.bharatfloorings.com"
|
HTTP_USER_AGENT | "claudebot"
|
HTTP_ACCEPT | "*/*"
|
proxy-nokeepalive | "1"
|
SSL_TLS_SNI | "www.bharatfloorings.com"
|
HTTPS | "on"
|
SCRIPT_URI | "https://www.bharatfloorings.com/download-pattern/374"
|
SCRIPT_URL | "/download-pattern/374"
|
UNIQUE_ID | "ZgbkpvI-B6KiyKjjlN1CXwAAAH4"
|
REDIRECT_STATUS | "200"
|
REDIRECT_SSL_TLS_SNI | "www.bharatfloorings.com"
|
REDIRECT_HTTPS | "on"
|
REDIRECT_SCRIPT_URI | "https://www.bharatfloorings.com/download-pattern/374"
|
REDIRECT_SCRIPT_URL | "/download-pattern/374"
|
REDIRECT_UNIQUE_ID | "ZgbkpvI-B6KiyKjjlN1CXwAAAH4"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711727782.2473
|
REQUEST_TIME | 1711727782
|
argv | [] |
argc | 0
|