├── Queue ├── ShouldQueue.php ├── ShouldBeUnique.php ├── ShouldBeEncrypted.php ├── ShouldQueueAfterCommit.php ├── ShouldBeUniqueUntilProcessing.php ├── ClearableQueue.php ├── Factory.php ├── EntityResolver.php ├── EntityNotFoundException.php ├── QueueableEntity.php ├── Monitor.php ├── QueueableCollection.php ├── Queue.php └── Job.php ├── Console ├── Isolatable.php ├── PromptsForMissingInput.php ├── Application.php └── Kernel.php ├── Debug ├── ShouldntReport.php └── ExceptionHandler.php ├── Broadcasting ├── ShouldRescue.php ├── ShouldBeUnique.php ├── ShouldBroadcastNow.php ├── Factory.php ├── ShouldBroadcast.php ├── HasBroadcastChannel.php └── Broadcaster.php ├── Container ├── ContextualAttribute.php ├── SelfBuilding.php ├── BindingResolutionException.php ├── CircularDependencyException.php ├── ContextualBindingBuilder.php └── Container.php ├── Database ├── Events │ └── MigrationEvent.php ├── Query │ ├── ConditionExpression.php │ ├── Builder.php │ └── Expression.php ├── Eloquent │ ├── Builder.php │ ├── Castable.php │ ├── ComparesCastableAttributes.php │ ├── CastsInboundAttributes.php │ ├── SerializesCastableAttributes.php │ ├── DeviatesCastableAttributes.php │ ├── SupportsPartialRelations.php │ └── CastsAttributes.php ├── LostConnectionDetector.php ├── ConcurrencyErrorDetector.php └── ModelIdentifier.php ├── Events ├── ShouldDispatchAfterCommit.php ├── ShouldHandleEventsAfterCommit.php └── Dispatcher.php ├── Auth ├── Middleware │ └── AuthenticatesRequests.php ├── PasswordBrokerFactory.php ├── Access │ ├── Authorizable.php │ └── Gate.php ├── CanResetPassword.php ├── Factory.php ├── SupportsBasicAuth.php ├── MustVerifyEmail.php ├── Authenticatable.php ├── Guard.php ├── PasswordBroker.php ├── StatefulGuard.php └── UserProvider.php ├── Session ├── Middleware │ └── AuthenticatesSessions.php └── Session.php ├── Cache ├── LockTimeoutException.php ├── Factory.php ├── LockProvider.php ├── Lock.php ├── Store.php └── Repository.php ├── Redis ├── LimiterTimeoutException.php ├── Factory.php ├── Connector.php └── Connection.php ├── View ├── ViewCompilationException.php ├── Engine.php ├── View.php └── Factory.php ├── Filesystem ├── FileNotFoundException.php ├── LockTimeoutException.php ├── Cloud.php ├── Factory.php └── Filesystem.php ├── Encryption ├── DecryptException.php ├── EncryptException.php ├── StringEncrypter.php └── Encrypter.php ├── Log └── ContextLogProcessor.php ├── Validation ├── ImplicitRule.php ├── ValidatesWhenResolved.php ├── DataAwareRule.php ├── UncompromisedVerifier.php ├── ValidatorAwareRule.php ├── CompilableRules.php ├── ValidationRule.php ├── Rule.php ├── InvokableRule.php ├── Factory.php └── Validator.php ├── Support ├── ValidatedData.php ├── Htmlable.php ├── Renderable.php ├── DeferrableProvider.php ├── Jsonable.php ├── MessageProvider.php ├── HasOnceHash.php ├── Arrayable.php ├── DeferringDisplayableValue.php ├── Responsable.php ├── CanBeEscapedWhenCastToString.php └── MessageBag.php ├── Mail ├── Attachable.php ├── Factory.php ├── MailQueue.php ├── Mailer.php └── Mailable.php ├── Translation ├── HasLocalePreference.php ├── Loader.php └── Translator.php ├── Foundation ├── ExceptionRenderer.php ├── CachesRoutes.php ├── CachesConfiguration.php ├── MaintenanceMode.php └── Application.php ├── Pipeline ├── Hub.php └── Pipeline.php ├── Concurrency └── Driver.php ├── Routing ├── BindingRegistrar.php ├── UrlRoutable.php ├── Registrar.php ├── UrlGenerator.php └── ResponseFactory.php ├── Cookie ├── QueueingFactory.php └── Factory.php ├── Notifications ├── Dispatcher.php └── Factory.php ├── Bus ├── QueueingDispatcher.php └── Dispatcher.php ├── Pagination ├── LengthAwarePaginator.php ├── Paginator.php └── CursorPaginator.php ├── composer.json ├── Http └── Kernel.php ├── LICENSE.md ├── Hashing └── Hasher.php ├── Config └── Repository.php ├── JsonSchema └── JsonSchema.php └── Process ├── InvokedProcess.php └── ProcessResult.php /Queue/ShouldQueue.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function toArray(); 17 | } 18 | -------------------------------------------------------------------------------- /Filesystem/Factory.php: -------------------------------------------------------------------------------- 1 | |CastsAttributes|CastsInboundAttributes 12 | */ 13 | public static function castUsing(array $arguments); 14 | } 15 | -------------------------------------------------------------------------------- /Validation/CompilableRules.php: -------------------------------------------------------------------------------- 1 | $attributes 16 | * @return mixed 17 | */ 18 | public function set(Model $model, string $key, mixed $value, array $attributes); 19 | } 20 | -------------------------------------------------------------------------------- /Queue/QueueableEntity.php: -------------------------------------------------------------------------------- 1 | $attributes 16 | * @return mixed 17 | */ 18 | public function serialize(Model $model, string $key, mixed $value, array $attributes); 19 | } 20 | -------------------------------------------------------------------------------- /Foundation/CachesConfiguration.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | interface LengthAwarePaginator extends Paginator 13 | { 14 | /** 15 | * Create a range of pagination URLs. 16 | * 17 | * @param int $start 18 | * @param int $end 19 | * @return array 20 | */ 21 | public function getUrlRange($start, $end); 22 | 23 | /** 24 | * Determine the total number of items in the data store. 25 | * 26 | * @return int 27 | */ 28 | public function total(); 29 | 30 | /** 31 | * Get the page number of the last available page. 32 | * 33 | * @return int 34 | */ 35 | public function lastPage(); 36 | } 37 | -------------------------------------------------------------------------------- /Queue/QueueableCollection.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | public function getQueueableIds(); 20 | 21 | /** 22 | * Get the relationships of the entities being queued. 23 | * 24 | * @return array 25 | */ 26 | public function getQueueableRelations(); 27 | 28 | /** 29 | * Get the connection of the entities being queued. 30 | * 31 | * @return string|null 32 | */ 33 | public function getQueueableConnection(); 34 | } 35 | -------------------------------------------------------------------------------- /Database/Eloquent/DeviatesCastableAttributes.php: -------------------------------------------------------------------------------- 1 | $attributes 20 | * @return TGet|null 21 | */ 22 | public function get(Model $model, string $key, mixed $value, array $attributes); 23 | 24 | /** 25 | * Transform the attribute to its underlying model values. 26 | * 27 | * @param \Illuminate\Database\Eloquent\Model $model 28 | * @param string $key 29 | * @param TSet|null $value 30 | * @param array $attributes 31 | * @return mixed 32 | */ 33 | public function set(Model $model, string $key, mixed $value, array $attributes); 34 | } 35 | -------------------------------------------------------------------------------- /Container/ContextualBindingBuilder.php: -------------------------------------------------------------------------------- 1 | )|array $properties 13 | * @return \Illuminate\JsonSchema\Types\ObjectType 14 | */ 15 | public function object(Closure|array $properties = []); 16 | 17 | /** 18 | * Create a new array property instance. 19 | * 20 | * @return \Illuminate\JsonSchema\Types\ArrayType 21 | */ 22 | public function array(); 23 | 24 | /** 25 | * Create a new string property instance. 26 | * 27 | * @return \Illuminate\JsonSchema\Types\StringType 28 | */ 29 | public function string(); 30 | 31 | /** 32 | * Create a new integer property instance. 33 | * 34 | * @return \Illuminate\JsonSchema\Types\IntegerType 35 | */ 36 | public function integer(); 37 | 38 | /** 39 | * Create a new number property instance. 40 | * 41 | * @return \Illuminate\JsonSchema\Types\NumberType 42 | */ 43 | public function number(); 44 | 45 | /** 46 | * Create a new boolean property instance. 47 | * 48 | * @return \Illuminate\JsonSchema\Types\BooleanType 49 | */ 50 | public function boolean(); 51 | } 52 | -------------------------------------------------------------------------------- /Auth/PasswordBroker.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | public $class; 13 | 14 | /** 15 | * The unique identifier of the model. 16 | * 17 | * This may be either a single ID or an array of IDs. 18 | * 19 | * @var mixed 20 | */ 21 | public $id; 22 | 23 | /** 24 | * The relationships loaded on the model. 25 | * 26 | * @var array 27 | */ 28 | public $relations; 29 | 30 | /** 31 | * The connection name of the model. 32 | * 33 | * @var string|null 34 | */ 35 | public $connection; 36 | 37 | /** 38 | * The class name of the model collection. 39 | * 40 | * @var class-string<\Illuminate\Database\Eloquent\Collection>|null 41 | */ 42 | public $collectionClass; 43 | 44 | /** 45 | * Create a new model identifier. 46 | * 47 | * @param class-string<\Illuminate\Database\Eloquent\Model> $class 48 | * @param mixed $id 49 | * @param array $relations 50 | * @param mixed $connection 51 | */ 52 | public function __construct($class, $id, array $relations, $connection) 53 | { 54 | $this->id = $id; 55 | $this->class = $class; 56 | $this->relations = $relations; 57 | $this->connection = $connection; 58 | } 59 | 60 | /** 61 | * Specify the collection class that should be used when serializing / restoring collections. 62 | * 63 | * @param class-string<\Illuminate\Database\Eloquent\Collection> $collectionClass 64 | * @return $this 65 | */ 66 | public function useCollectionClass(?string $collectionClass) 67 | { 68 | $this->collectionClass = $collectionClass; 69 | 70 | return $this; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Process/ProcessResult.php: -------------------------------------------------------------------------------- 1 | 64 | */ 65 | public function items(); 66 | 67 | /** 68 | * Get the "index" of the first item being paginated. 69 | * 70 | * @return int|null 71 | */ 72 | public function firstItem(); 73 | 74 | /** 75 | * Get the "index" of the last item being paginated. 76 | * 77 | * @return int|null 78 | */ 79 | public function lastItem(); 80 | 81 | /** 82 | * Determine how many items are being shown per page. 83 | * 84 | * @return int 85 | */ 86 | public function perPage(); 87 | 88 | /** 89 | * Determine the current page being paginated. 90 | * 91 | * @return int 92 | */ 93 | public function currentPage(); 94 | 95 | /** 96 | * Determine if there are enough items to split into multiple pages. 97 | * 98 | * @return bool 99 | */ 100 | public function hasPages(); 101 | 102 | /** 103 | * Determine if there are more items in the data store. 104 | * 105 | * @return bool 106 | */ 107 | public function hasMorePages(); 108 | 109 | /** 110 | * Get the base path for paginator generated URLs. 111 | * 112 | * @return string|null 113 | */ 114 | public function path(); 115 | 116 | /** 117 | * Determine if the list of items is empty or not. 118 | * 119 | * @return bool 120 | */ 121 | public function isEmpty(); 122 | 123 | /** 124 | * Determine if the list of items is not empty. 125 | * 126 | * @return bool 127 | */ 128 | public function isNotEmpty(); 129 | 130 | /** 131 | * Render the paginator using a given view. 132 | * 133 | * @param string|null $view 134 | * @param array $data 135 | * @return string 136 | */ 137 | public function render($view = null, $data = []); 138 | } 139 | -------------------------------------------------------------------------------- /Pagination/CursorPaginator.php: -------------------------------------------------------------------------------- 1 | 64 | */ 65 | public function items(); 66 | 67 | /** 68 | * Get the "cursor" of the previous set of items. 69 | * 70 | * @return \Illuminate\Pagination\Cursor|null 71 | */ 72 | public function previousCursor(); 73 | 74 | /** 75 | * Get the "cursor" of the next set of items. 76 | * 77 | * @return \Illuminate\Pagination\Cursor|null 78 | */ 79 | public function nextCursor(); 80 | 81 | /** 82 | * Determine how many items are being shown per page. 83 | * 84 | * @return int 85 | */ 86 | public function perPage(); 87 | 88 | /** 89 | * Get the current cursor being paginated. 90 | * 91 | * @return \Illuminate\Pagination\Cursor|null 92 | */ 93 | public function cursor(); 94 | 95 | /** 96 | * Determine if there are enough items to split into multiple pages. 97 | * 98 | * @return bool 99 | */ 100 | public function hasPages(); 101 | 102 | /** 103 | * Determine if there are more items in the data source. 104 | * 105 | * @return bool 106 | */ 107 | public function hasMorePages(); 108 | 109 | /** 110 | * Get the base path for paginator generated URLs. 111 | * 112 | * @return string|null 113 | */ 114 | public function path(); 115 | 116 | /** 117 | * Determine if the list of items is empty or not. 118 | * 119 | * @return bool 120 | */ 121 | public function isEmpty(); 122 | 123 | /** 124 | * Determine if the list of items is not empty. 125 | * 126 | * @return bool 127 | */ 128 | public function isNotEmpty(); 129 | 130 | /** 131 | * Render the paginator using a given view. 132 | * 133 | * @param string|null $view 134 | * @param array $data 135 | * @return string 136 | */ 137 | public function render($view = null, $data = []); 138 | } 139 | -------------------------------------------------------------------------------- /Routing/UrlGenerator.php: -------------------------------------------------------------------------------- 1 | 177 | */ 178 | public function files($directory = null, $recursive = false); 179 | 180 | /** 181 | * Get all of the files from the given directory (recursive). 182 | * 183 | * @param string|null $directory 184 | * @return array 185 | */ 186 | public function allFiles($directory = null); 187 | 188 | /** 189 | * Get all of the directories within a given directory. 190 | * 191 | * @param string|null $directory 192 | * @param bool $recursive 193 | * @return array 194 | */ 195 | public function directories($directory = null, $recursive = false); 196 | 197 | /** 198 | * Get all (recursive) of the directories within a given directory. 199 | * 200 | * @param string|null $directory 201 | * @return array 202 | */ 203 | public function allDirectories($directory = null); 204 | 205 | /** 206 | * Create a directory. 207 | * 208 | * @param string $path 209 | * @return bool 210 | */ 211 | public function makeDirectory($path); 212 | 213 | /** 214 | * Recursively delete a directory. 215 | * 216 | * @param string $directory 217 | * @return bool 218 | */ 219 | public function deleteDirectory($directory); 220 | } 221 | -------------------------------------------------------------------------------- /Routing/ResponseFactory.php: -------------------------------------------------------------------------------- 1 | '); 72 | 73 | /** 74 | * Create a new streamed response instance. 75 | * 76 | * @param callable $callback 77 | * @param int $status 78 | * @param array $headers 79 | * @return \Symfony\Component\HttpFoundation\StreamedResponse 80 | */ 81 | public function stream($callback, $status = 200, array $headers = []); 82 | 83 | /** 84 | * Create a new streamed JSON response instance. 85 | * 86 | * @param array $data 87 | * @param int $status 88 | * @param array $headers 89 | * @param int $encodingOptions 90 | * @return \Symfony\Component\HttpFoundation\StreamedJsonResponse 91 | */ 92 | public function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15); 93 | 94 | /** 95 | * Create a new streamed response instance as a file download. 96 | * 97 | * @param callable $callback 98 | * @param string|null $name 99 | * @param array $headers 100 | * @param string|null $disposition 101 | * @return \Symfony\Component\HttpFoundation\StreamedResponse 102 | */ 103 | public function streamDownload($callback, $name = null, array $headers = [], $disposition = 'attachment'); 104 | 105 | /** 106 | * Create a new file download response. 107 | * 108 | * @param \SplFileInfo|string $file 109 | * @param string|null $name 110 | * @param array $headers 111 | * @param string|null $disposition 112 | * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 113 | */ 114 | public function download($file, $name = null, array $headers = [], $disposition = 'attachment'); 115 | 116 | /** 117 | * Return the raw contents of a binary file. 118 | * 119 | * @param \SplFileInfo|string $file 120 | * @param array $headers 121 | * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 122 | */ 123 | public function file($file, array $headers = []); 124 | 125 | /** 126 | * Create a new redirect response to the given path. 127 | * 128 | * @param string $path 129 | * @param int $status 130 | * @param array $headers 131 | * @param bool|null $secure 132 | * @return \Illuminate\Http\RedirectResponse 133 | */ 134 | public function redirectTo($path, $status = 302, $headers = [], $secure = null); 135 | 136 | /** 137 | * Create a new redirect response to a named route. 138 | * 139 | * @param \BackedEnum|string $route 140 | * @param mixed $parameters 141 | * @param int $status 142 | * @param array $headers 143 | * @return \Illuminate\Http\RedirectResponse 144 | */ 145 | public function redirectToRoute($route, $parameters = [], $status = 302, $headers = []); 146 | 147 | /** 148 | * Create a new redirect response to a controller action. 149 | * 150 | * @param array|string $action 151 | * @param mixed $parameters 152 | * @param int $status 153 | * @param array $headers 154 | * @return \Illuminate\Http\RedirectResponse 155 | */ 156 | public function redirectToAction($action, $parameters = [], $status = 302, $headers = []); 157 | 158 | /** 159 | * Create a new redirect response, while putting the current URL in the session. 160 | * 161 | * @param string $path 162 | * @param int $status 163 | * @param array $headers 164 | * @param bool|null $secure 165 | * @return \Illuminate\Http\RedirectResponse 166 | */ 167 | public function redirectGuest($path, $status = 302, $headers = [], $secure = null); 168 | 169 | /** 170 | * Create a new redirect response to the previously intended location. 171 | * 172 | * @param string $default 173 | * @param int $status 174 | * @param array $headers 175 | * @param bool|null $secure 176 | * @return \Illuminate\Http\RedirectResponse 177 | */ 178 | public function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null); 179 | } 180 | -------------------------------------------------------------------------------- /Foundation/Application.php: -------------------------------------------------------------------------------- 1 | $id 16 | * @return ($id is class-string ? TClass : mixed) 17 | */ 18 | public function get(string $id); 19 | 20 | /** 21 | * Determine if the given abstract type has been bound. 22 | * 23 | * @param string $abstract 24 | * @return bool 25 | */ 26 | public function bound($abstract); 27 | 28 | /** 29 | * Alias a type to a different name. 30 | * 31 | * @param string $abstract 32 | * @param string $alias 33 | * @return void 34 | * 35 | * @throws \LogicException 36 | */ 37 | public function alias($abstract, $alias); 38 | 39 | /** 40 | * Assign a set of tags to a given binding. 41 | * 42 | * @param array|string $abstracts 43 | * @param mixed ...$tags 44 | * @return void 45 | */ 46 | public function tag($abstracts, $tags); 47 | 48 | /** 49 | * Resolve all of the bindings for a given tag. 50 | * 51 | * @param string $tag 52 | * @return iterable 53 | */ 54 | public function tagged($tag); 55 | 56 | /** 57 | * Register a binding with the container. 58 | * 59 | * @param \Closure|string $abstract 60 | * @param \Closure|string|null $concrete 61 | * @param bool $shared 62 | * @return void 63 | */ 64 | public function bind($abstract, $concrete = null, $shared = false); 65 | 66 | /** 67 | * Bind a callback to resolve with Container::call. 68 | * 69 | * @param array|string $method 70 | * @param \Closure $callback 71 | * @return void 72 | */ 73 | public function bindMethod($method, $callback); 74 | 75 | /** 76 | * Register a binding if it hasn't already been registered. 77 | * 78 | * @param \Closure|string $abstract 79 | * @param \Closure|string|null $concrete 80 | * @param bool $shared 81 | * @return void 82 | */ 83 | public function bindIf($abstract, $concrete = null, $shared = false); 84 | 85 | /** 86 | * Register a shared binding in the container. 87 | * 88 | * @param \Closure|string $abstract 89 | * @param \Closure|string|null $concrete 90 | * @return void 91 | */ 92 | public function singleton($abstract, $concrete = null); 93 | 94 | /** 95 | * Register a shared binding if it hasn't already been registered. 96 | * 97 | * @param \Closure|string $abstract 98 | * @param \Closure|string|null $concrete 99 | * @return void 100 | */ 101 | public function singletonIf($abstract, $concrete = null); 102 | 103 | /** 104 | * Register a scoped binding in the container. 105 | * 106 | * @param \Closure|string $abstract 107 | * @param \Closure|string|null $concrete 108 | * @return void 109 | */ 110 | public function scoped($abstract, $concrete = null); 111 | 112 | /** 113 | * Register a scoped binding if it hasn't already been registered. 114 | * 115 | * @param \Closure|string $abstract 116 | * @param \Closure|string|null $concrete 117 | * @return void 118 | */ 119 | public function scopedIf($abstract, $concrete = null); 120 | 121 | /** 122 | * "Extend" an abstract type in the container. 123 | * 124 | * @param \Closure|string $abstract 125 | * @param \Closure $closure 126 | * @return void 127 | * 128 | * @throws \InvalidArgumentException 129 | */ 130 | public function extend($abstract, Closure $closure); 131 | 132 | /** 133 | * Register an existing instance as shared in the container. 134 | * 135 | * @template TInstance of mixed 136 | * 137 | * @param \Closure|string $abstract 138 | * @param TInstance $instance 139 | * @return TInstance 140 | */ 141 | public function instance($abstract, $instance); 142 | 143 | /** 144 | * Add a contextual binding to the container. 145 | * 146 | * @param string $concrete 147 | * @param \Closure|string $abstract 148 | * @param \Closure|string $implementation 149 | * @return void 150 | */ 151 | public function addContextualBinding($concrete, $abstract, $implementation); 152 | 153 | /** 154 | * Define a contextual binding. 155 | * 156 | * @param string|array $concrete 157 | * @return \Illuminate\Contracts\Container\ContextualBindingBuilder 158 | */ 159 | public function when($concrete); 160 | 161 | /** 162 | * Get a closure to resolve the given type from the container. 163 | * 164 | * @template TClass of object 165 | * 166 | * @param string|class-string $abstract 167 | * @return ($abstract is class-string ? \Closure(): TClass : \Closure(): mixed) 168 | */ 169 | public function factory($abstract); 170 | 171 | /** 172 | * Flush the container of all bindings and resolved instances. 173 | * 174 | * @return void 175 | */ 176 | public function flush(); 177 | 178 | /** 179 | * Resolve the given type from the container. 180 | * 181 | * @template TClass of object 182 | * 183 | * @param string|class-string $abstract 184 | * @param array $parameters 185 | * @return ($abstract is class-string ? TClass : mixed) 186 | * 187 | * @throws \Illuminate\Contracts\Container\BindingResolutionException 188 | */ 189 | public function make($abstract, array $parameters = []); 190 | 191 | /** 192 | * Call the given Closure / class@method and inject its dependencies. 193 | * 194 | * @param callable|string $callback 195 | * @param array $parameters 196 | * @param string|null $defaultMethod 197 | * @return mixed 198 | */ 199 | public function call($callback, array $parameters = [], $defaultMethod = null); 200 | 201 | /** 202 | * Determine if the given abstract type has been resolved. 203 | * 204 | * @param string $abstract 205 | * @return bool 206 | */ 207 | public function resolved($abstract); 208 | 209 | /** 210 | * Register a new before resolving callback. 211 | * 212 | * @param \Closure|string $abstract 213 | * @param \Closure|null $callback 214 | * @return void 215 | */ 216 | public function beforeResolving($abstract, ?Closure $callback = null); 217 | 218 | /** 219 | * Register a new resolving callback. 220 | * 221 | * @param \Closure|string $abstract 222 | * @param \Closure|null $callback 223 | * @return void 224 | */ 225 | public function resolving($abstract, ?Closure $callback = null); 226 | 227 | /** 228 | * Register a new after resolving callback. 229 | * 230 | * @param \Closure|string $abstract 231 | * @param \Closure|null $callback 232 | * @return void 233 | */ 234 | public function afterResolving($abstract, ?Closure $callback = null); 235 | } 236 | --------------------------------------------------------------------------------