$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_snappy6606e51c4943c0.79655972.html' '/tmp/knp_snappy6606e51c494cf6.38887649.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 @317 1 => Closed resource @318 2 => Closed resource @319 ]
"/home/flobha/public_html/public"
array:45 [ "USER" => "flobha" "HOME" => "/home/flobha" "SCRIPT_NAME" => "/index.php" "REQUEST_URI" => "/download-pattern/208" "QUERY_STRING" => "" "REQUEST_METHOD" => "GET" "SERVER_PROTOCOL" => "HTTP/1.1" "GATEWAY_INTERFACE" => "CGI/1.1" "REDIRECT_URL" => "/download-pattern/208" "REMOTE_PORT" => "43246" "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" => "44.200.175.46" "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/208" "SCRIPT_URL" => "/download-pattern/208" "UNIQUE_ID" => "ZgblHOSh_seJIBzrH-3rZgAAAAI" "REDIRECT_STATUS" => "200" "REDIRECT_SSL_TLS_SNI" => "www.bharatfloorings.com" "REDIRECT_HTTPS" => "on" "REDIRECT_SCRIPT_URI" => "https://www.bharatfloorings.com/download-pattern/208" "REDIRECT_SCRIPT_URL" => "/download-pattern/208" "REDIRECT_UNIQUE_ID" => "ZgblHOSh_seJIBzrH-3rZgAAAAI" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1711727900.2299 "REQUEST_TIME" => 1711727900 "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_snappy6606e51c4943c0.79655972.html' '/tmp/knp_snappy6606e51c494cf6.38887649.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_snappy6606e51c4943c0.79655972.html" ]
"/tmp/knp_snappy6606e51c494cf6.38887649.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_snappy6606e51c4943c0.79655972.html" ]
"/tmp/knp_snappy6606e51c494cf6.38887649.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_snappy6606e51c4943c0.79655972.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="1Pha0qrGuUUnkdoIFPLcrzL5aa0G6jc3RNv7dXE8" />\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>MURADASSHU TYPE A - 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: MURADASSHU TYPE A</p>\n <p>Collection Name: BFT+ Designer Tiles</p>\n <p>Sub-Collection Name: Japanese Line</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="Default MURADASSHU TYPE A">\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 <div><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" 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="#EABA79" fill-rule="nonzero" points="529,528.113 -0,528.113 -0,0.00236221 529,0.00236221 " class="tile-element" data-element="1"></polygon> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 331.906c0,-1.69016 0,-5.03859 3.06142,-20.1142 1.01575,-5.04686 3.04725,-15.1099 6.09922,-30.1949 1.02166,-5.01733 3.06615,-15.0603 0,-45.2493 -1.01929,-10.063 -3.05197,-30.1772 -3.05197,-45.2741 0,-5.0256 0,-15.0886 12.2079,-25.1398 4.0689,-3.35788 12.2091,-10.063 24.4323,-15.0921 4.05119,-1.67362 12.1902,-5.02205 18.3048,0 2.0315,1.69252 6.10395,5.02914 9.15592,10.0713 1.01693,1.66299 3.04371,5.02087 0,30.1607 -1.02402,8.3823 -3.05197,25.1469 0,55.3241 1.01693,10.0595 3.04371,30.1831 0,65.3942 -1.02402,11.7307 -3.05197,35.2028 -6.11694,40.2237 -1.00748,1.68189 -3.03898,5.02914 -18.3012,10.0547 -5.10119,1.6937 -15.2646,5.02678 -30.5256,-5.0256 -5.08347,-3.34725 -15.2646,-10.05 -15.2646,-15.0839l0 -10.0547 -0.0011811 0z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M312.662 497.867c-6.52442,-5.03859 -19.5177,-15.0851 -16.2603,-30.1902 1.06654,-5.01733 3.2504,-15.0638 3.2504,-30.156 0,-5.03032 0,-15.0933 -3.2504,-70.4281 -1.09961,-18.4193 -3.25749,-55.304 0,-65.367 1.06654,-3.35315 3.2504,-10.0677 19.5189,-15.0898 5.42481,-1.67599 16.2685,-5.04213 29.2996,-10.0583 4.33347,-1.68071 13.0146,-5.03387 16.2815,10.0583 1.09134,5.02087 3.24922,15.0898 6.51615,100.576 1.08307,28.5178 3.24567,85.5072 0,90.5411 -1.09606,1.66299 -3.26693,5.02914 -6.51615,20.1142 -1.0748,5.02087 -3.26693,15.0921 -16.2815,15.0921 -4.33229,0 -13.0311,0 -32.5583,-15.0921l0 0z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M296.402 206.169c-1.10079,-5.02087 -3.25749,-15.0969 0,-40.2355 1.06654,-8.37875 3.24922,-25.1433 0,-70.3973 -1.10079,-15.1063 -3.25749,-45.2788 0,-50.3044 1.06654,-1.67244 3.24922,-5.02914 29.2843,-10.063 8.68112,-1.6689 26.0422,-5.03032 26.0422,0 0,1.67953 0,5.03387 3.25749,10.063 1.10079,1.67599 3.25394,5.0256 6.51497,40.2272 1.09252,11.7496 3.2504,35.2205 0,75.4537 -1.0748,13.3949 -3.26221,40.2355 3.2504,45.2575 2.17087,1.66418 6.51261,5.03387 -3.2504,20.1142 -3.26221,5.03032 -9.77246,15.0851 -35.8158,5.03032 -8.66458,-3.34134 -26.0339,-10.0654 -29.2831,-25.1457l0 0z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M169.122 528.207c0.540946,-17.361 1.61221,-52.0938 4.75631,-62.1615 1.03347,-3.3567 3.13229,-10.0512 0,-20.1095 -1.04528,-3.3626 -3.1441,-10.0677 0,-15.0851 1.03347,-1.68425 3.13229,-5.04213 28.2473,-5.04213 8.37875,0 25.1138,0 25.1138,20.1272 0,6.70158 0,20.1095 -0.940159,83.0635l-57.1773 -0.792521z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M234.877 365.297c0,-3.34725 0,-10.0666 -3.32126,-50.2902 -1.11614,-13.4256 -3.34134,-40.2414 -3.34134,-80.4769 0,-13.4126 0,-40.2331 -3.33308,-45.2469 -1.10079,-1.69607 -3.32599,-5.04568 -3.32599,-15.0921 0,-3.36615 0,-10.076 -3.32481,-15.1016 -1.10788,-1.6689 -3.34134,-5.01615 -29.9587,10.0677 -8.876,5.03387 -26.6398,15.0803 -26.6398,20.126 0,1.66418 0,5.01379 6.65907,60.3391 2.21693,18.4406 6.64962,55.3253 3.32481,60.3509 -1.10788,1.67599 -3.32481,5.03387 -3.32481,15.0839 0,3.35788 0,10.063 3.32481,15.0815 1.10433,1.68898 3.32481,5.04686 0,10.076 -1.10788,1.68071 -3.32481,5.01733 0,10.063 1.10433,1.67244 3.32481,5.02087 23.3008,20.1012 6.65788,5.04213 19.9713,15.0886 29.9634,5.04213 3.33308,-3.36142 9.99687,-10.0666 9.99687,-20.1225l0 -0.0011811z" class="tile-element" data-element="6" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M224.791 -0.00236221c-0.0200788,5.47087 -0.257481,16.2201 -3.13937,43.904 -1.05354,10.0677 -3.13111,30.1855 0,35.2064 1.05354,1.68544 3.14056,5.0256 0,10.063 -1.05354,1.67362 -3.13111,5.03032 -15.7063,15.0898 -4.18583,3.34489 -12.5481,10.0547 -28.2378,-5.03741 -5.23938,-5.02087 -15.7028,-15.0898 -15.7028,-20.1142l0 -15.0756c0,-3.37441 0,-10.0642 3.14056,-10.0642 1.04646,0 3.13583,0 0,-10.0677 -1.04055,-3.34016 -3.14056,-10.0512 0,-30.1607 0.409843,-2.64804 1.15866,-7.43741 1.84134,-13.7421l57.8044 0 0 -0.0011811z" class="tile-element" data-element="7" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 528.044l0 -15.0851 0 -30.1784c0,-3.36378 0,-10.0583 10.9902,-30.1689 3.65434,-6.70867 11.0008,-20.1213 25.6453,-25.1599 4.88268,-1.67953 14.6398,-5.02087 18.3048,0 1.22599,1.68071 3.66024,5.03859 7.32166,15.0851 1.22953,3.36615 3.66497,10.0748 0,35.2146 -0.922442,6.4134 -2.79922,19.2473 -1.30512,50.2926l-60.9568 0z" class="tile-element" data-element="8" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M486.53 -0.00236221c0.201969,3.5126 0.522048,8.47678 1.05118,15.1677 1.22953,15.0886 3.66497,45.267 3.66497,60.3556 0,5.0256 0,15.0886 -7.32639,20.1177 -2.43544,1.66772 -7.32639,5.02205 -32.9575,5.02205 -8.54293,0 -25.6441,0 -25.6441,-10.0524l0 -10.063 0 -20.1142 0 -40.2402 0 -20.1933 61.2107 0 0.0011811 0z" class="tile-element" data-element="9" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M43.0961 472.72c-4.44568,-3.34843 -13.3299,-10.0595 -9.9886,-20.1095 1.10433,-3.3626 3.31654,-10.076 3.31654,-20.1225l0 -45.2741c0,-11.7284 0,-35.1981 -3.31654,-55.3087 -1.1126,-6.70631 -3.34134,-20.1142 0,-35.2241 1.10433,-5.02087 3.31654,-15.0851 19.9843,-25.1398 5.53938,-3.35315 16.6477,-10.0547 26.6221,-15.0839 3.34725,-1.67244 9.99214,-5.03032 9.99214,0 0,1.68425 0,5.02914 3.32245,35.2028 1.12087,10.0666 3.34489,30.1784 6.66615,85.5072 1.1126,18.4418 3.3378,55.3217 -3.32126,80.4604 -2.2252,8.3823 -6.66733,25.1563 -13.3122,30.1737 -2.22638,1.68071 -6.67206,5.02914 -16.6512,0 -3.34252,-1.6689 -9.99332,-5.01733 -23.3138,-15.0803l0 -0.0011811z" class="tile-element" data-element="10" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M29.7674 186.046c0,-1.68544 0,-5.02087 3.67323,-20.1142 1.21772,-5.01969 3.66969,-15.0933 0,-75.4348 -1.22599,-20.1307 -3.67323,-60.3603 10.9914,-65.3847 4.87087,-1.67717 14.6563,-5.0256 29.3008,-5.0256 4.89095,0 14.6445,0 18.3166,5.0256 1.21772,1.67244 3.65434,5.0256 7.30985,15.0898 1.23071,3.35552 3.67441,10.0547 0,15.0921 -1.21772,1.66772 -3.65552,5.03387 -3.65552,40.2402l0 60.3355c0,8.38938 0,25.1552 3.65552,35.2016 1.23071,3.3626 3.67441,10.076 -3.65552,25.1481 -2.43662,5.02914 -7.32639,15.0933 -21.9709,10.063 -4.87442,-1.67599 -14.6445,-5.03387 -29.3008,-15.0803 -4.89213,-3.36969 -14.6646,-10.0547 -14.6646,-15.0921l0 -10.063 0 -0.0011811z" class="tile-element" data-element="11" data-connected="element_2"></path> </g></svg></div>\n </div>\n <div class="single-tiles-svg top-right-tile no-cursor">\n <div><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" 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="#EABA79" fill-rule="nonzero" points="529,528.113 -0,528.113 -0,0.00236221 529,0.00236221 " class="tile-element" data-element="1"></polygon> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 331.906c0,-1.69016 0,-5.03859 3.06142,-20.1142 1.01575,-5.04686 3.04725,-15.1099 6.09922,-30.1949 1.02166,-5.01733 3.06615,-15.0603 0,-45.2493 -1.01929,-10.063 -3.05197,-30.1772 -3.05197,-45.2741 0,-5.0256 0,-15.0886 12.2079,-25.1398 4.0689,-3.35788 12.2091,-10.063 24.4323,-15.0921 4.05119,-1.67362 12.1902,-5.02205 18.3048,0 2.0315,1.69252 6.10395,5.02914 9.15592,10.0713 1.01693,1.66299 3.04371,5.02087 0,30.1607 -1.02402,8.3823 -3.05197,25.1469 0,55.3241 1.01693,10.0595 3.04371,30.1831 0,65.3942 -1.02402,11.7307 -3.05197,35.2028 -6.11694,40.2237 -1.00748,1.68189 -3.03898,5.02914 -18.3012,10.0547 -5.10119,1.6937 -15.2646,5.02678 -30.5256,-5.0256 -5.08347,-3.34725 -15.2646,-10.05 -15.2646,-15.0839l0 -10.0547 -0.0011811 0z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M312.662 497.867c-6.52442,-5.03859 -19.5177,-15.0851 -16.2603,-30.1902 1.06654,-5.01733 3.2504,-15.0638 3.2504,-30.156 0,-5.03032 0,-15.0933 -3.2504,-70.4281 -1.09961,-18.4193 -3.25749,-55.304 0,-65.367 1.06654,-3.35315 3.2504,-10.0677 19.5189,-15.0898 5.42481,-1.67599 16.2685,-5.04213 29.2996,-10.0583 4.33347,-1.68071 13.0146,-5.03387 16.2815,10.0583 1.09134,5.02087 3.24922,15.0898 6.51615,100.576 1.08307,28.5178 3.24567,85.5072 0,90.5411 -1.09606,1.66299 -3.26693,5.02914 -6.51615,20.1142 -1.0748,5.02087 -3.26693,15.0921 -16.2815,15.0921 -4.33229,0 -13.0311,0 -32.5583,-15.0921l0 0z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M296.402 206.169c-1.10079,-5.02087 -3.25749,-15.0969 0,-40.2355 1.06654,-8.37875 3.24922,-25.1433 0,-70.3973 -1.10079,-15.1063 -3.25749,-45.2788 0,-50.3044 1.06654,-1.67244 3.24922,-5.02914 29.2843,-10.063 8.68112,-1.6689 26.0422,-5.03032 26.0422,0 0,1.67953 0,5.03387 3.25749,10.063 1.10079,1.67599 3.25394,5.0256 6.51497,40.2272 1.09252,11.7496 3.2504,35.2205 0,75.4537 -1.0748,13.3949 -3.26221,40.2355 3.2504,45.2575 2.17087,1.66418 6.51261,5.03387 -3.2504,20.1142 -3.26221,5.03032 -9.77246,15.0851 -35.8158,5.03032 -8.66458,-3.34134 -26.0339,-10.0654 -29.2831,-25.1457l0 0z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M169.122 528.207c0.540946,-17.361 1.61221,-52.0938 4.75631,-62.1615 1.03347,-3.3567 3.13229,-10.0512 0,-20.1095 -1.04528,-3.3626 -3.1441,-10.0677 0,-15.0851 1.03347,-1.68425 3.13229,-5.04213 28.2473,-5.04213 8.37875,0 25.1138,0 25.1138,20.1272 0,6.70158 0,20.1095 -0.940159,83.0635l-57.1773 -0.792521z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M234.877 365.297c0,-3.34725 0,-10.0666 -3.32126,-50.2902 -1.11614,-13.4256 -3.34134,-40.2414 -3.34134,-80.4769 0,-13.4126 0,-40.2331 -3.33308,-45.2469 -1.10079,-1.69607 -3.32599,-5.04568 -3.32599,-15.0921 0,-3.36615 0,-10.076 -3.32481,-15.1016 -1.10788,-1.6689 -3.34134,-5.01615 -29.9587,10.0677 -8.876,5.03387 -26.6398,15.0803 -26.6398,20.126 0,1.66418 0,5.01379 6.65907,60.3391 2.21693,18.4406 6.64962,55.3253 3.32481,60.3509 -1.10788,1.67599 -3.32481,5.03387 -3.32481,15.0839 0,3.35788 0,10.063 3.32481,15.0815 1.10433,1.68898 3.32481,5.04686 0,10.076 -1.10788,1.68071 -3.32481,5.01733 0,10.063 1.10433,1.67244 3.32481,5.02087 23.3008,20.1012 6.65788,5.04213 19.9713,15.0886 29.9634,5.04213 3.33308,-3.36142 9.99687,-10.0666 9.99687,-20.1225l0 -0.0011811z" class="tile-element" data-element="6" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M224.791 -0.00236221c-0.0200788,5.47087 -0.257481,16.2201 -3.13937,43.904 -1.05354,10.0677 -3.13111,30.1855 0,35.2064 1.05354,1.68544 3.14056,5.0256 0,10.063 -1.05354,1.67362 -3.13111,5.03032 -15.7063,15.0898 -4.18583,3.34489 -12.5481,10.0547 -28.2378,-5.03741 -5.23938,-5.02087 -15.7028,-15.0898 -15.7028,-20.1142l0 -15.0756c0,-3.37441 0,-10.0642 3.14056,-10.0642 1.04646,0 3.13583,0 0,-10.0677 -1.04055,-3.34016 -3.14056,-10.0512 0,-30.1607 0.409843,-2.64804 1.15866,-7.43741 1.84134,-13.7421l57.8044 0 0 -0.0011811z" class="tile-element" data-element="7" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 528.044l0 -15.0851 0 -30.1784c0,-3.36378 0,-10.0583 10.9902,-30.1689 3.65434,-6.70867 11.0008,-20.1213 25.6453,-25.1599 4.88268,-1.67953 14.6398,-5.02087 18.3048,0 1.22599,1.68071 3.66024,5.03859 7.32166,15.0851 1.22953,3.36615 3.66497,10.0748 0,35.2146 -0.922442,6.4134 -2.79922,19.2473 -1.30512,50.2926l-60.9568 0z" class="tile-element" data-element="8" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M486.53 -0.00236221c0.201969,3.5126 0.522048,8.47678 1.05118,15.1677 1.22953,15.0886 3.66497,45.267 3.66497,60.3556 0,5.0256 0,15.0886 -7.32639,20.1177 -2.43544,1.66772 -7.32639,5.02205 -32.9575,5.02205 -8.54293,0 -25.6441,0 -25.6441,-10.0524l0 -10.063 0 -20.1142 0 -40.2402 0 -20.1933 61.2107 0 0.0011811 0z" class="tile-element" data-element="9" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M43.0961 472.72c-4.44568,-3.34843 -13.3299,-10.0595 -9.9886,-20.1095 1.10433,-3.3626 3.31654,-10.076 3.31654,-20.1225l0 -45.2741c0,-11.7284 0,-35.1981 -3.31654,-55.3087 -1.1126,-6.70631 -3.34134,-20.1142 0,-35.2241 1.10433,-5.02087 3.31654,-15.0851 19.9843,-25.1398 5.53938,-3.35315 16.6477,-10.0547 26.6221,-15.0839 3.34725,-1.67244 9.99214,-5.03032 9.99214,0 0,1.68425 0,5.02914 3.32245,35.2028 1.12087,10.0666 3.34489,30.1784 6.66615,85.5072 1.1126,18.4418 3.3378,55.3217 -3.32126,80.4604 -2.2252,8.3823 -6.66733,25.1563 -13.3122,30.1737 -2.22638,1.68071 -6.67206,5.02914 -16.6512,0 -3.34252,-1.6689 -9.99332,-5.01733 -23.3138,-15.0803l0 -0.0011811z" class="tile-element" data-element="10" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M29.7674 186.046c0,-1.68544 0,-5.02087 3.67323,-20.1142 1.21772,-5.01969 3.66969,-15.0933 0,-75.4348 -1.22599,-20.1307 -3.67323,-60.3603 10.9914,-65.3847 4.87087,-1.67717 14.6563,-5.0256 29.3008,-5.0256 4.89095,0 14.6445,0 18.3166,5.0256 1.21772,1.67244 3.65434,5.0256 7.30985,15.0898 1.23071,3.35552 3.67441,10.0547 0,15.0921 -1.21772,1.66772 -3.65552,5.03387 -3.65552,40.2402l0 60.3355c0,8.38938 0,25.1552 3.65552,35.2016 1.23071,3.3626 3.67441,10.076 -3.65552,25.1481 -2.43662,5.02914 -7.32639,15.0933 -21.9709,10.063 -4.87442,-1.67599 -14.6445,-5.03387 -29.3008,-15.0803 -4.89213,-3.36969 -14.6646,-10.0547 -14.6646,-15.0921l0 -10.063 0 -0.0011811z" class="tile-element" data-element="11" data-connected="element_2"></path> </g></svg></div>\n </div>\n <div class="single-tiles-svg bottom-left-tile no-cursor">\n <div><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" 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="#EABA79" fill-rule="nonzero" points="529,528.113 -0,528.113 -0,0.00236221 529,0.00236221 " class="tile-element" data-element="1"></polygon> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 331.906c0,-1.69016 0,-5.03859 3.06142,-20.1142 1.01575,-5.04686 3.04725,-15.1099 6.09922,-30.1949 1.02166,-5.01733 3.06615,-15.0603 0,-45.2493 -1.01929,-10.063 -3.05197,-30.1772 -3.05197,-45.2741 0,-5.0256 0,-15.0886 12.2079,-25.1398 4.0689,-3.35788 12.2091,-10.063 24.4323,-15.0921 4.05119,-1.67362 12.1902,-5.02205 18.3048,0 2.0315,1.69252 6.10395,5.02914 9.15592,10.0713 1.01693,1.66299 3.04371,5.02087 0,30.1607 -1.02402,8.3823 -3.05197,25.1469 0,55.3241 1.01693,10.0595 3.04371,30.1831 0,65.3942 -1.02402,11.7307 -3.05197,35.2028 -6.11694,40.2237 -1.00748,1.68189 -3.03898,5.02914 -18.3012,10.0547 -5.10119,1.6937 -15.2646,5.02678 -30.5256,-5.0256 -5.08347,-3.34725 -15.2646,-10.05 -15.2646,-15.0839l0 -10.0547 -0.0011811 0z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M312.662 497.867c-6.52442,-5.03859 -19.5177,-15.0851 -16.2603,-30.1902 1.06654,-5.01733 3.2504,-15.0638 3.2504,-30.156 0,-5.03032 0,-15.0933 -3.2504,-70.4281 -1.09961,-18.4193 -3.25749,-55.304 0,-65.367 1.06654,-3.35315 3.2504,-10.0677 19.5189,-15.0898 5.42481,-1.67599 16.2685,-5.04213 29.2996,-10.0583 4.33347,-1.68071 13.0146,-5.03387 16.2815,10.0583 1.09134,5.02087 3.24922,15.0898 6.51615,100.576 1.08307,28.5178 3.24567,85.5072 0,90.5411 -1.09606,1.66299 -3.26693,5.02914 -6.51615,20.1142 -1.0748,5.02087 -3.26693,15.0921 -16.2815,15.0921 -4.33229,0 -13.0311,0 -32.5583,-15.0921l0 0z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M296.402 206.169c-1.10079,-5.02087 -3.25749,-15.0969 0,-40.2355 1.06654,-8.37875 3.24922,-25.1433 0,-70.3973 -1.10079,-15.1063 -3.25749,-45.2788 0,-50.3044 1.06654,-1.67244 3.24922,-5.02914 29.2843,-10.063 8.68112,-1.6689 26.0422,-5.03032 26.0422,0 0,1.67953 0,5.03387 3.25749,10.063 1.10079,1.67599 3.25394,5.0256 6.51497,40.2272 1.09252,11.7496 3.2504,35.2205 0,75.4537 -1.0748,13.3949 -3.26221,40.2355 3.2504,45.2575 2.17087,1.66418 6.51261,5.03387 -3.2504,20.1142 -3.26221,5.03032 -9.77246,15.0851 -35.8158,5.03032 -8.66458,-3.34134 -26.0339,-10.0654 -29.2831,-25.1457l0 0z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M169.122 528.207c0.540946,-17.361 1.61221,-52.0938 4.75631,-62.1615 1.03347,-3.3567 3.13229,-10.0512 0,-20.1095 -1.04528,-3.3626 -3.1441,-10.0677 0,-15.0851 1.03347,-1.68425 3.13229,-5.04213 28.2473,-5.04213 8.37875,0 25.1138,0 25.1138,20.1272 0,6.70158 0,20.1095 -0.940159,83.0635l-57.1773 -0.792521z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M234.877 365.297c0,-3.34725 0,-10.0666 -3.32126,-50.2902 -1.11614,-13.4256 -3.34134,-40.2414 -3.34134,-80.4769 0,-13.4126 0,-40.2331 -3.33308,-45.2469 -1.10079,-1.69607 -3.32599,-5.04568 -3.32599,-15.0921 0,-3.36615 0,-10.076 -3.32481,-15.1016 -1.10788,-1.6689 -3.34134,-5.01615 -29.9587,10.0677 -8.876,5.03387 -26.6398,15.0803 -26.6398,20.126 0,1.66418 0,5.01379 6.65907,60.3391 2.21693,18.4406 6.64962,55.3253 3.32481,60.3509 -1.10788,1.67599 -3.32481,5.03387 -3.32481,15.0839 0,3.35788 0,10.063 3.32481,15.0815 1.10433,1.68898 3.32481,5.04686 0,10.076 -1.10788,1.68071 -3.32481,5.01733 0,10.063 1.10433,1.67244 3.32481,5.02087 23.3008,20.1012 6.65788,5.04213 19.9713,15.0886 29.9634,5.04213 3.33308,-3.36142 9.99687,-10.0666 9.99687,-20.1225l0 -0.0011811z" class="tile-element" data-element="6" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M224.791 -0.00236221c-0.0200788,5.47087 -0.257481,16.2201 -3.13937,43.904 -1.05354,10.0677 -3.13111,30.1855 0,35.2064 1.05354,1.68544 3.14056,5.0256 0,10.063 -1.05354,1.67362 -3.13111,5.03032 -15.7063,15.0898 -4.18583,3.34489 -12.5481,10.0547 -28.2378,-5.03741 -5.23938,-5.02087 -15.7028,-15.0898 -15.7028,-20.1142l0 -15.0756c0,-3.37441 0,-10.0642 3.14056,-10.0642 1.04646,0 3.13583,0 0,-10.0677 -1.04055,-3.34016 -3.14056,-10.0512 0,-30.1607 0.409843,-2.64804 1.15866,-7.43741 1.84134,-13.7421l57.8044 0 0 -0.0011811z" class="tile-element" data-element="7" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 528.044l0 -15.0851 0 -30.1784c0,-3.36378 0,-10.0583 10.9902,-30.1689 3.65434,-6.70867 11.0008,-20.1213 25.6453,-25.1599 4.88268,-1.67953 14.6398,-5.02087 18.3048,0 1.22599,1.68071 3.66024,5.03859 7.32166,15.0851 1.22953,3.36615 3.66497,10.0748 0,35.2146 -0.922442,6.4134 -2.79922,19.2473 -1.30512,50.2926l-60.9568 0z" class="tile-element" data-element="8" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M486.53 -0.00236221c0.201969,3.5126 0.522048,8.47678 1.05118,15.1677 1.22953,15.0886 3.66497,45.267 3.66497,60.3556 0,5.0256 0,15.0886 -7.32639,20.1177 -2.43544,1.66772 -7.32639,5.02205 -32.9575,5.02205 -8.54293,0 -25.6441,0 -25.6441,-10.0524l0 -10.063 0 -20.1142 0 -40.2402 0 -20.1933 61.2107 0 0.0011811 0z" class="tile-element" data-element="9" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M43.0961 472.72c-4.44568,-3.34843 -13.3299,-10.0595 -9.9886,-20.1095 1.10433,-3.3626 3.31654,-10.076 3.31654,-20.1225l0 -45.2741c0,-11.7284 0,-35.1981 -3.31654,-55.3087 -1.1126,-6.70631 -3.34134,-20.1142 0,-35.2241 1.10433,-5.02087 3.31654,-15.0851 19.9843,-25.1398 5.53938,-3.35315 16.6477,-10.0547 26.6221,-15.0839 3.34725,-1.67244 9.99214,-5.03032 9.99214,0 0,1.68425 0,5.02914 3.32245,35.2028 1.12087,10.0666 3.34489,30.1784 6.66615,85.5072 1.1126,18.4418 3.3378,55.3217 -3.32126,80.4604 -2.2252,8.3823 -6.66733,25.1563 -13.3122,30.1737 -2.22638,1.68071 -6.67206,5.02914 -16.6512,0 -3.34252,-1.6689 -9.99332,-5.01733 -23.3138,-15.0803l0 -0.0011811z" class="tile-element" data-element="10" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M29.7674 186.046c0,-1.68544 0,-5.02087 3.67323,-20.1142 1.21772,-5.01969 3.66969,-15.0933 0,-75.4348 -1.22599,-20.1307 -3.67323,-60.3603 10.9914,-65.3847 4.87087,-1.67717 14.6563,-5.0256 29.3008,-5.0256 4.89095,0 14.6445,0 18.3166,5.0256 1.21772,1.67244 3.65434,5.0256 7.30985,15.0898 1.23071,3.35552 3.67441,10.0547 0,15.0921 -1.21772,1.66772 -3.65552,5.03387 -3.65552,40.2402l0 60.3355c0,8.38938 0,25.1552 3.65552,35.2016 1.23071,3.3626 3.67441,10.076 -3.65552,25.1481 -2.43662,5.02914 -7.32639,15.0933 -21.9709,10.063 -4.87442,-1.67599 -14.6445,-5.03387 -29.3008,-15.0803 -4.89213,-3.36969 -14.6646,-10.0547 -14.6646,-15.0921l0 -10.063 0 -0.0011811z" class="tile-element" data-element="11" data-connected="element_2"></path> </g></svg></div>\n </div>\n <div class="single-tiles-svg bottom-right-tile no-cursor">\n <div><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="102px" height="102px" 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="#EABA79" fill-rule="nonzero" points="529,528.113 -0,528.113 -0,0.00236221 529,0.00236221 " class="tile-element" data-element="1"></polygon> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 331.906c0,-1.69016 0,-5.03859 3.06142,-20.1142 1.01575,-5.04686 3.04725,-15.1099 6.09922,-30.1949 1.02166,-5.01733 3.06615,-15.0603 0,-45.2493 -1.01929,-10.063 -3.05197,-30.1772 -3.05197,-45.2741 0,-5.0256 0,-15.0886 12.2079,-25.1398 4.0689,-3.35788 12.2091,-10.063 24.4323,-15.0921 4.05119,-1.67362 12.1902,-5.02205 18.3048,0 2.0315,1.69252 6.10395,5.02914 9.15592,10.0713 1.01693,1.66299 3.04371,5.02087 0,30.1607 -1.02402,8.3823 -3.05197,25.1469 0,55.3241 1.01693,10.0595 3.04371,30.1831 0,65.3942 -1.02402,11.7307 -3.05197,35.2028 -6.11694,40.2237 -1.00748,1.68189 -3.03898,5.02914 -18.3012,10.0547 -5.10119,1.6937 -15.2646,5.02678 -30.5256,-5.0256 -5.08347,-3.34725 -15.2646,-10.05 -15.2646,-15.0839l0 -10.0547 -0.0011811 0z" class="tile-element" data-element="2" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M312.662 497.867c-6.52442,-5.03859 -19.5177,-15.0851 -16.2603,-30.1902 1.06654,-5.01733 3.2504,-15.0638 3.2504,-30.156 0,-5.03032 0,-15.0933 -3.2504,-70.4281 -1.09961,-18.4193 -3.25749,-55.304 0,-65.367 1.06654,-3.35315 3.2504,-10.0677 19.5189,-15.0898 5.42481,-1.67599 16.2685,-5.04213 29.2996,-10.0583 4.33347,-1.68071 13.0146,-5.03387 16.2815,10.0583 1.09134,5.02087 3.24922,15.0898 6.51615,100.576 1.08307,28.5178 3.24567,85.5072 0,90.5411 -1.09606,1.66299 -3.26693,5.02914 -6.51615,20.1142 -1.0748,5.02087 -3.26693,15.0921 -16.2815,15.0921 -4.33229,0 -13.0311,0 -32.5583,-15.0921l0 0z" class="tile-element" data-element="3" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M296.402 206.169c-1.10079,-5.02087 -3.25749,-15.0969 0,-40.2355 1.06654,-8.37875 3.24922,-25.1433 0,-70.3973 -1.10079,-15.1063 -3.25749,-45.2788 0,-50.3044 1.06654,-1.67244 3.24922,-5.02914 29.2843,-10.063 8.68112,-1.6689 26.0422,-5.03032 26.0422,0 0,1.67953 0,5.03387 3.25749,10.063 1.10079,1.67599 3.25394,5.0256 6.51497,40.2272 1.09252,11.7496 3.2504,35.2205 0,75.4537 -1.0748,13.3949 -3.26221,40.2355 3.2504,45.2575 2.17087,1.66418 6.51261,5.03387 -3.2504,20.1142 -3.26221,5.03032 -9.77246,15.0851 -35.8158,5.03032 -8.66458,-3.34134 -26.0339,-10.0654 -29.2831,-25.1457l0 0z" class="tile-element" data-element="4" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M169.122 528.207c0.540946,-17.361 1.61221,-52.0938 4.75631,-62.1615 1.03347,-3.3567 3.13229,-10.0512 0,-20.1095 -1.04528,-3.3626 -3.1441,-10.0677 0,-15.0851 1.03347,-1.68425 3.13229,-5.04213 28.2473,-5.04213 8.37875,0 25.1138,0 25.1138,20.1272 0,6.70158 0,20.1095 -0.940159,83.0635l-57.1773 -0.792521z" class="tile-element" data-element="5" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M234.877 365.297c0,-3.34725 0,-10.0666 -3.32126,-50.2902 -1.11614,-13.4256 -3.34134,-40.2414 -3.34134,-80.4769 0,-13.4126 0,-40.2331 -3.33308,-45.2469 -1.10079,-1.69607 -3.32599,-5.04568 -3.32599,-15.0921 0,-3.36615 0,-10.076 -3.32481,-15.1016 -1.10788,-1.6689 -3.34134,-5.01615 -29.9587,10.0677 -8.876,5.03387 -26.6398,15.0803 -26.6398,20.126 0,1.66418 0,5.01379 6.65907,60.3391 2.21693,18.4406 6.64962,55.3253 3.32481,60.3509 -1.10788,1.67599 -3.32481,5.03387 -3.32481,15.0839 0,3.35788 0,10.063 3.32481,15.0815 1.10433,1.68898 3.32481,5.04686 0,10.076 -1.10788,1.68071 -3.32481,5.01733 0,10.063 1.10433,1.67244 3.32481,5.02087 23.3008,20.1012 6.65788,5.04213 19.9713,15.0886 29.9634,5.04213 3.33308,-3.36142 9.99687,-10.0666 9.99687,-20.1225l0 -0.0011811z" class="tile-element" data-element="6" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M224.791 -0.00236221c-0.0200788,5.47087 -0.257481,16.2201 -3.13937,43.904 -1.05354,10.0677 -3.13111,30.1855 0,35.2064 1.05354,1.68544 3.14056,5.0256 0,10.063 -1.05354,1.67362 -3.13111,5.03032 -15.7063,15.0898 -4.18583,3.34489 -12.5481,10.0547 -28.2378,-5.03741 -5.23938,-5.02087 -15.7028,-15.0898 -15.7028,-20.1142l0 -15.0756c0,-3.37441 0,-10.0642 3.14056,-10.0642 1.04646,0 3.13583,0 0,-10.0677 -1.04055,-3.34016 -3.14056,-10.0512 0,-30.1607 0.409843,-2.64804 1.15866,-7.43741 1.84134,-13.7421l57.8044 0 0 -0.0011811z" class="tile-element" data-element="7" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M425.319 528.044l0 -15.0851 0 -30.1784c0,-3.36378 0,-10.0583 10.9902,-30.1689 3.65434,-6.70867 11.0008,-20.1213 25.6453,-25.1599 4.88268,-1.67953 14.6398,-5.02087 18.3048,0 1.22599,1.68071 3.66024,5.03859 7.32166,15.0851 1.22953,3.36615 3.66497,10.0748 0,35.2146 -0.922442,6.4134 -2.79922,19.2473 -1.30512,50.2926l-60.9568 0z" class="tile-element" data-element="8" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M486.53 -0.00236221c0.201969,3.5126 0.522048,8.47678 1.05118,15.1677 1.22953,15.0886 3.66497,45.267 3.66497,60.3556 0,5.0256 0,15.0886 -7.32639,20.1177 -2.43544,1.66772 -7.32639,5.02205 -32.9575,5.02205 -8.54293,0 -25.6441,0 -25.6441,-10.0524l0 -10.063 0 -20.1142 0 -40.2402 0 -20.1933 61.2107 0 0.0011811 0z" class="tile-element" data-element="9" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M43.0961 472.72c-4.44568,-3.34843 -13.3299,-10.0595 -9.9886,-20.1095 1.10433,-3.3626 3.31654,-10.076 3.31654,-20.1225l0 -45.2741c0,-11.7284 0,-35.1981 -3.31654,-55.3087 -1.1126,-6.70631 -3.34134,-20.1142 0,-35.2241 1.10433,-5.02087 3.31654,-15.0851 19.9843,-25.1398 5.53938,-3.35315 16.6477,-10.0547 26.6221,-15.0839 3.34725,-1.67244 9.99214,-5.03032 9.99214,0 0,1.68425 0,5.02914 3.32245,35.2028 1.12087,10.0666 3.34489,30.1784 6.66615,85.5072 1.1126,18.4418 3.3378,55.3217 -3.32126,80.4604 -2.2252,8.3823 -6.66733,25.1563 -13.3122,30.1737 -2.22638,1.68071 -6.67206,5.02914 -16.6512,0 -3.34252,-1.6689 -9.99332,-5.01733 -23.3138,-15.0803l0 -0.0011811z" class="tile-element" data-element="10" data-connected="element_2"></path> <path fill="#E3A048" fill-rule="nonzero" d="M29.7674 186.046c0,-1.68544 0,-5.02087 3.67323,-20.1142 1.21772,-5.01969 3.66969,-15.0933 0,-75.4348 -1.22599,-20.1307 -3.67323,-60.3603 10.9914,-65.3847 4.87087,-1.67717 14.6563,-5.0256 29.3008,-5.0256 4.89095,0 14.6445,0 18.3166,5.0256 1.21772,1.67244 3.65434,5.0256 7.30985,15.0898 1.23071,3.35552 3.67441,10.0547 0,15.0921 -1.21772,1.66772 -3.65552,5.03387 -3.65552,40.2402l0 60.3355c0,8.38938 0,25.1552 3.65552,35.2016 1.23071,3.3626 3.67441,10.076 -3.65552,25.1481 -2.43662,5.02914 -7.32639,15.0933 -21.9709,10.063 -4.87442,-1.67599 -14.6445,-5.03387 -29.3008,-15.0803 -4.89213,-3.36969 -14.6646,-10.0547 -14.6646,-15.0921l0 -10.063 0 -0.0011811z" class="tile-element" data-element="11" data-connected="element_2"></path> </g></svg></div>\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: #EABA79;"></span>\n <label>Buttercup Yellow</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); } } }
"MURADASSHU TYPE A.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/208" #requestUri: "/download-pattern/208" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
"208"
/** * 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/208" #requestUri: "/download-pattern/208" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "208" ]
{ $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/208" #requestUri: "/download-pattern/208" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#429} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" } "id" => "208" ]
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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208" #requestUri: "/download-pattern/208" #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/208"
|
QUERY_STRING | "" |
REQUEST_METHOD | "GET"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REDIRECT_URL | "/download-pattern/208"
|
REMOTE_PORT | "43246"
|
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 | "44.200.175.46"
|
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/208"
|
SCRIPT_URL | "/download-pattern/208"
|
UNIQUE_ID | "ZgblHOSh_seJIBzrH-3rZgAAAAI"
|
REDIRECT_STATUS | "200"
|
REDIRECT_SSL_TLS_SNI | "www.bharatfloorings.com"
|
REDIRECT_HTTPS | "on"
|
REDIRECT_SCRIPT_URI | "https://www.bharatfloorings.com/download-pattern/208"
|
REDIRECT_SCRIPT_URL | "/download-pattern/208"
|
REDIRECT_UNIQUE_ID | "ZgblHOSh_seJIBzrH-3rZgAAAAI"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711727900.2299
|
REQUEST_TIME | 1711727900
|
argv | [] |
argc | 0
|