°·€V’€„·€V0°·€V’Ø·€VH°·€V’ Ø·€V`°·€V’p§·€Vx°·€V’§·€V°·€V’@Ø·€Vذ·€V’`Ø·€VĄ°·€V’°§·€VŲ°·€V’Ч·€Vš°·€V’€Ø·€V±·€V’ Ø·€V ±·€V’ Æ·€V8±·€V’@Æ·€VP±·€V’©·€Vh±·€V’0©·€V€±·€V’ą©·€V˜±·€V’Ŗ·€V°±·€V’ Ŗ·€Vȱ·€V’@Ŗ·€Vą±·€V’`Ŗ·€Vų±·€V’€Ŗ·€V(²·€V’ Ŗ·€V@²·€V’Ą·€V²·€V’ąæ·€VX²·€V’ Ą·€Vˆ²·€V’@Ą·€Vв·€V’ ­·€V ²·€V’ŠĮ·€Vp²·€V’ĄŖ·€V³·€V’p淀Vø²·€V’°æ·€V0³·€V’šĮ·€Vč²·€V’æ·€V`³·€V’0Š·€V³·€V’š®·€V³·€V’Ąįć€VH³·€V’ įć€VĄ³·€V’Š·€Vx³·€V’`Š·€Vš³·€V’ĄŠ·€Vس·€V’М·€V “·€V’šŠ·€VŲ³·€V’šœ·€V8“·€V’0·€V“·€V’·€VP“·€V’ Ń·€Vh“·€V’ ©·€V˜“·€V’`įć€V°“·€V’Ą©·€V€“·€V’€įć€VČ“·€V’Ņ·€Vą“·€V’ĄŃ·€Vų“·€V’ąŃ·€Vµ·€V’P©·€V(µ·€V’p©·€V@µ·€V’pŅ·€VXµ·€V’Ņ·€Vpµ·€V’°Ņ·€Vˆµ·€V’ŠŅ·€V µ·€V’PŃ·€Vøµ·€V’pŃ·€Vе·€V’0Ó·€Včµ·€V’PÓ·€V¶·€V’ĄØ·€V¶·€V’਷€V0¶·€V’šŅ·€VH¶·€V’Ó·€V`¶·€V’ Ņ·€Vx¶·€V’@Ņ·€V¶·€V’ĄÓ·€Vض·€V’ąÓ·€VĄ¶·€V’PŌ·€VŲ¶·€V’pŌ·€Vš¶·€V’Ō·€V··€V’°Ō·€V ··€V’ŠŌ·€V8··€V’šŌ·€Vh··€V’Ō·€V€··€V’ Ō·€VP··€V’ąÕ·€V°··€V’ Ā·€Vø·€V’Õ·€VČ··€V’PÖ·€Vą··€V’­·€V˜··€V’Šąć€V@ø·€V’šąć€Vų··€V’0Õ·€Vpø·€V’Ö·€V(ø·€V’€<V ø·€V’p¦·€VXø·€V’ Ö·€VŠø·€V’ äy€Vˆø·€V’¦·€V¹·€V’`äy€Vøø·€V’@äy€V0¹·€V’ąĄ·€Včø·€V’€äy€V`¹·€V’°<V¹·€V’ äy€VĄ¹·€V’Ó·€Vx¹·€V’Ń·€V¹·€V’Š=VH¹·€V’pÓ·€VŲ¹·€V’Į·€Vع·€V’×·€Vš¹·€V’ Į·€Vŗ·€V’°Ö·€V ŗ·€V’ Õ·€V8ŗ·€V’ĄÕ·€Vhŗ·€V’ŠÖ·€V€ŗ·€V’pĢy€VPŗ·€V’šÖ·€V˜ŗ·€V’`>V°ŗ·€V’0Ģy€VČŗ·€V’PĢy€Vąŗ·€V’Šćy€Vųŗ·€V’€>V»·€V’Š y€V(»·€V’š y€V@»·€V’°«·€VX»·€V’”y€Vp»·€V’PæŌ€Vˆ»·€V’pæŌ€V »·€V’Š„·€Vø»·€V’š„·€VŠ»·€V’PÕ·€Vč»·€V’æŌ€V¼·€V’ą<V¼·€V’=V0¼·€V’†ć€VH¼·€V’¦·€V`¼·€V’ ×·€Vx¼·€V’Ą×·€V¼·€V’0Ų·€Vؼ·€V’PŲ·€VĄ¼·€V’pŲ·€VŲ¼·€V’Ų·€Vš¼·€V’°Ų·€V½·€V’ŠŲ·€V ½·€V’ą×·€VP½·€V’šćy€V€½·€V’pÕ·€Vh½·€V’ Ż·€V8½·€V’Š«·€V˜½·€V’ †ć€VȽ·€V’Ų·€V¾·€V’>Vą½·€V’ Ś·€V°½·€V’p×·€V@¾·€V’@Ū·€Vų½·€V’ŠŪ·€Vp¾·€V’ Ł·€V(¾·€V’€Ł·€V ¾·€V’0×·€VX¾·€V’0>Vо·€V’ ÅŌ€Vˆ¾·€V’P×·€V淀V’ >Vø¾·€V’ĄÅŌ€V0淀V’pÖ·€Vč¾·€V’@@VØAV’ąÅŌ€V淀V’Ö·€VBV’@Ś·€V(įąŚ~V`O€V with a trimmed base path, e.g. * the front controller, this difference becomes significant. It's the task * of the user to handle both "" and "/". * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.3. * * As an example, if the value should include a slash ("/") not intended as * delimiter between path segments, that value MUST be passed in encoded * form (e.g., "%2F") to the instance. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.3 * @return string The URI path. */ public function getPath(); /** * Retrieve the query string of the URI. * * If no query string is present, this method MUST return an empty string. * * The leading "?" character is not part of the query and MUST NOT be * added. * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.4. * * As an example, if a value in a key/value pair of the query string should * include an ampersand ("&") not intended as a delimiter between values, * that value MUST be passed in encoded form (e.g., "%26") to the instance. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.4 * @return string The URI query string. */ public function getQuery(); /** * Retrieve the fragment component of the URI. * * If no fragment is present, this method MUST return an empty string. * * The leading "#" character is not part of the fragment and MUST NOT be * added. * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.5. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.5 * @return string The URI fragment. */ public function getFragment(); /** * Return an instance with the specified scheme. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified scheme. * * Implementations MUST support the schemes "http" and "https" case * insensitively, and MAY accommodate other schemes if required. * * An empty scheme is equivalent to removing the scheme. * * @param string $scheme The scheme to use with the new instance. * @return static A new instance with the specified scheme. * @throws \InvalidArgumentException for invalid or unsupported schemes. */ public function withScheme($scheme); /** * Return an instance with the specified user information. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified user information. * * Password is optional, but the user information MUST include the * user; an empty string for the user is equivalent to removing user * information. * * @param string $user The user name to use for authority. * @param null|string $password The password associated with $user. * @return static A new instance with the specified user information. */ public function withUserInfo($user, $password = null); /** * Return an instance with the specified host. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified host. * * An empty host value is equivalent to removing the host. * * @param string $host The hostname to use with the new instance. * @return static A new instance with the specified host. * @throws \InvalidArgumentException for invalid hostnames. */ public function withHost($host); /** * Return an instance with the specified port. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified port. * * Implementations MUST raise an exception for ports outside the * established TCP and UDP port ranges. * * A null value provided for the port is equivalent to removing the port * information. * * @param null|int $port The port to use with the new instance; a null value * removes the port information. * @return static A new instance with the specified port. * @throws \InvalidArgumentException for invalid ports. */ public function withPort($port); /** * Return an instance with the specified path. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified path. * * The path can either be empty or absolute (starting with a slash) or * rootless (not starting with a slash). Implementations MUST support all * three syntaxes. * * If the path is intended to be domain-relative rather than path relative then * it must begin with a slash ("/"). Paths not starting with a slash ("/") * are assumed to be relative to some base path known to the application or * consumer. * * Users can provide both encoded and decoded path characters. * Implementations ensure the correct encoding as outlined in getPath(). * * @param string $path The path to use with the new instance. * @return static A new instance with the specified path. * @throws \InvalidArgumentException for invalid paths. */ public function withPath($path); /** * Return an instance with the specified query string. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified query string. * * Users can provide both encoded and decoded query characters. * Implementations ensure the correct encoding as outlined in getQuery(). * * An empty query string value is equivalent to removing the query string. * * @param string $query The query string to use with the new instance. * @return static A new instance with the specified query string. * @throws \InvalidArgumentException for invalid query strings. */ public function withQuery($query); /** * Return an instance with the specified URI fragment. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified URI fragment. * * Users can provide both encoded and decoded fragment characters. * Implementations ensure the correct encoding as outlined in getFragment(). * * An empty fragment value is equivalent to removing the fragment. * * @param string $fragment The fragment to use with the new instance. * @return static A new instance with the specified fragment. */ public function withFragment($fragment); /** * Return the string representation as a URI reference. * * Depending on which components of the URI are present, the resulting * string is either a full URI or relative reference according to RFC 3986, * Section 4.1. The method concatenates the various components of the URI, * using the appropriate delimiters: * * - If a scheme is present, it MUST be suffixed by ":". * - If an authority is present, it MUST be prefixed by "//". * - The path can be concatenated without delimiters. But there are two * cases where the path has to be adjusted to make the URI reference * valid as PHP does not allow to throw an exception in __toString(): * - If the path is rootless and an authority is present, the path MUST * be prefixed by "/". * - If the path is starting with more than one "/" and no authority is * present, the starting slashes MUST be reduced to one. * - If a query is present, it MUST be prefixed by "?". * - If a fragment is present, it MUST be prefixed by "#". * * @see http://tools.ietf.org/html/rfc3986#section-4.1 * @return string */ public function __toString(); }