core.services.yml 58.3 KB
Newer Older
1
parameters:
2 3 4 5 6 7 8 9 10
  session.storage.options:
    gc_probability: 1
    gc_divisor: 100
    gc_maxlifetime: 200000
    cookie_lifetime: 2000000
  twig.config:
    debug: false
    auto_reload: null
    cache: true
11
  renderer.config:
12
    required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
13 14 15 16
    auto_placeholder_conditions:
      max-age: 0
      contexts: ['session', 'user']
      tags: []
17 18 19 20
  factory.keyvalue:
    default: keyvalue.database
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
21 22 23 24 25 26 27 28 29 30 31 32 33 34
  filter_protocols:
    - http
    - https
    - ftp
    - news
    - nntp
    - tel
    - telnet
    - mailto
    - irc
    - ssh
    - sftp
    - webcal
    - rtsp
35
services:
36 37
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
38
    class: Drupal\Core\Cache\Context\IpCacheContext
39 40 41 42
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.headers:
43
    class: Drupal\Core\Cache\Context\HeadersCacheContext
44 45 46 47
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
48
    class: Drupal\Core\Cache\Context\CookiesCacheContext
49 50 51
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
52 53 54 55 56
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
57
  cache_context.request_format:
58
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
59 60 61
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
62
  cache_context.url:
63
    class: Drupal\Core\Cache\Context\UrlCacheContext
64
    arguments: ['@request_stack']
65
    tags:
66
      - { name: cache.context }
67
  cache_context.url.site:
68
    class: Drupal\Core\Cache\Context\SiteCacheContext
69
    arguments: ['@request_stack']
70 71
    tags:
      - { name: cache.context }
72 73 74 75 76
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
77
  cache_context.url.query_args:
78
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
79 80 81 82
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
83
    class: Drupal\Core\Cache\Context\PagersCacheContext
84 85 86 87 88 89
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }

  # Complex cache contexts, that depend on the routing system.
  cache_context.route:
90
    class: Drupal\Core\Cache\Context\RouteCacheContext
91 92 93 94
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.name:
95
    class: Drupal\Core\Cache\Context\RouteNameCacheContext
96 97 98 99
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.menu_active_trails:
100
    class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
101 102 103 104 105 106 107 108 109
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: cache.context }

  # Complex cache contexts, that may be calculated from a combination of
  # multiple aspects of the request context plus additional logic. Hence they
  # are their own roots.
  cache_context.user:
110
    class: Drupal\Core\Cache\Context\UserCacheContext
111 112 113
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
114
  cache_context.user.permissions:
115
    class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
116 117 118
    arguments: ['@current_user', '@user_permissions_hash_generator']
    tags:
      - { name: cache.context}
119
  cache_context.user.roles:
120
    class: Drupal\Core\Cache\Context\UserRolesCacheContext
121
    arguments: ['@current_user']
122 123
    tags:
      - { name: cache.context}
124
  cache_context.user.is_super_user:
125
    class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
126 127 128 129
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
  cache_context.languages:
130
    class: Drupal\Core\Cache\Context\LanguagesCacheContext
131 132 133 134
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
135
    class: Drupal\Core\Cache\Context\ThemeCacheContext
136
    arguments: ['@theme.manager']
137 138
    tags:
      - { name: cache.context}
139
  cache_context.timezone:
140
    class: Drupal\Core\Cache\Context\TimeZoneCacheContext
141 142
    tags:
      - { name: cache.context}
143 144 145 146

  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
    arguments: ['@settings', '%cache_default_bin_backends%']
147 148
    calls:
      - [setContainer, ['@service_container']]
149
  cache_contexts_manager:
150
    class: Drupal\Core\Cache\Context\CacheContextsManager
151
    arguments: ['@service_container', '%cache_contexts%' ]
152 153 154 155 156 157 158 159 160 161 162 163
  cache_tags.invalidator:
    parent: container.trait
    class: Drupal\Core\Cache\CacheTagsInvalidator
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
  cache_tags.invalidator.checksum:
    class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
    arguments: ['@database']
    tags:
      - { name: cache_tags_invalidator}
164 165 166 167 168
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
169 170
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
171
    arguments: ['@database', '@cache_tags.invalidator.checksum']
172 173
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
174
    arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum']
175 176
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
177
    arguments: ['@cache_tags.invalidator.checksum']
178 179 180 181 182 183 184 185 186
  cache.backend.memory:
    class: Drupal\Core\Cache\MemoryBackendFactory
  # A special cache bin that does not persist beyond the length of the request.
  cache.static:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin, default_backend: cache.backend.memory }
    factory: cache_factory:get
    arguments: [static]
187 188 189
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
190
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
191
    factory: cache_factory:get
192
    arguments: [bootstrap]
193 194 195
  cache.config:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
196
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
197
    factory: cache_factory:get
198
    arguments: [config]
199
  cache.default:
200 201 202
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
203
    factory: cache_factory:get
204
    arguments: [default]
205 206 207 208
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
209
    factory: cache_factory:get
210
    arguments: [entity]
211 212 213 214
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
215
    factory: cache_factory:get
216
    arguments: [menu]
217
  cache.render:
218 219 220
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
221
    factory: cache_factory:get
222 223
    arguments: [render]
  cache.data:
224 225 226
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
227
    factory: cache_factory:get
228
    arguments: [data]
229 230 231
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
232
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
233
    factory: cache_factory:get
234
    arguments: [discovery]
235 236 237 238
  cache_router_rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
    tags:
      - { name: event_subscriber }
239 240
  page_cache_request_policy:
    class: Drupal\Core\PageCache\DefaultRequestPolicy
241
    arguments: ['@session_configuration']
242 243 244 245 246 247
    tags:
      - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
  page_cache_response_policy:
    class: Drupal\Core\PageCache\ChainResponsePolicy
    tags:
      - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
248
    lazy: true
249 250 251 252
  page_cache_kill_switch:
    class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
    tags:
      - { name: page_cache_response_policy }
253
      - { name: dynamic_page_cache_response_policy }
254 255 256 257 258 259
  page_cache_no_cache_routes:
    class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
    arguments: ['@current_route_match']
    public: false
    tags:
      - { name: page_cache_response_policy }
260
      - { name: dynamic_page_cache_response_policy }
261 262 263 264 265
  page_cache_no_server_error:
    class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
    public: false
    tags:
      - { name: page_cache_response_policy }
266
      - { name: dynamic_page_cache_response_policy }
267 268
  config.manager:
    class: Drupal\Core\Config\ConfigManager
269
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
270 271 272
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
273
      - { name: event_subscriber }
274
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
275
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
276 277 278 279
  config.importer_subscriber:
    class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
    tags:
      - { name: event_subscriber }
280 281
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
282
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
283
    lazy: true
284
  config.storage:
285 286
    class: Drupal\Core\Config\CachedStorage
    arguments: ['@config.storage.active', '@cache.config']
287 288 289
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
290
    public: false
291 292
    tags:
      - { name: backend_overridable }
293 294
  config.storage.staging:
    class: Drupal\Core\Config\FileStorage
295
    factory: Drupal\Core\Config\FileStorageFactory::getStaging
296 297 298
  config.storage.snapshot:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', config_snapshot]
299 300
    tags:
      - { name: backend_overridable }
301
  config.storage.schema:
302 303
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
304 305
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
306 307 308
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
309 310 311
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
312 313 314
  context.repository:
    class: Drupal\Core\Plugin\Context\LazyContextRepository
    arguments: ['@service_container']
315 316
  cron:
    class: Drupal\Core\Cron
317
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
318
    lazy: true
319 320 321
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
322 323
  database:
    class: Drupal\Core\Database\Connection
324
    factory: Drupal\Core\Database\Database::getConnection
325
    arguments: [default]
326 327 328
  file_system:
    class: Drupal\Core\File\FileSystem
    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
329 330
  form_builder:
    class: Drupal\Core\Form\FormBuilder
331
    arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
332 333
  form_validator:
    class: Drupal\Core\Form\FormValidator
334
    arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
335 336 337
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
338 339
  form_error_handler:
    class: Drupal\Core\Form\FormErrorHandler
340
    arguments: ['@string_translation', '@link_generator', '@renderer']
341 342
  form_cache:
    class: Drupal\Core\Form\FormCache
343
    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
344
    public: false  # Private to form_builder
345 346
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
347
    arguments: ['@service_container', '%factory.keyvalue%']
348 349
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
350
    arguments: ['@serialization.phpserialize', '@database']
351 352
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
353
    arguments: ['@service_container', '%factory.keyvalue.expirable%']
354 355
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
356
    arguments: ['@serialization.phpserialize', '@database']
357 358 359 360 361
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
362 363
  logger.channel_base:
    abstract: true
364
    class: Drupal\Core\Logger\LoggerChannel
365
    factory: logger.factory:get
366 367
  logger.channel.default:
    parent: logger.channel_base
368
    arguments: ['system']
369
  logger.channel.php:
370
    parent: logger.channel_base
371
    arguments: ['php']
372
  logger.channel.image:
373
    parent: logger.channel_base
374
    arguments: ['image']
375
  logger.channel.cron:
376
    parent: logger.channel_base
377
    arguments: ['cron']
378 379
  logger.channel.file:
    class: Drupal\Core\Logger\LoggerChannel
380
    factory: logger.factory:get
381
    arguments: ['file']
382
  logger.channel.form:
383
    parent: logger.channel_base
384
    arguments: ['form']
385 386
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
387 388 389 390 391 392 393 394

  serialization.json:
    class: Drupal\Component\Serialization\Json
  serialization.phpserialize:
    class: Drupal\Component\Serialization\PhpSerialize
  serialization.yaml:
    class: Drupal\Component\Serialization\Yaml

395
  settings:
396
    class: Drupal\Core\Site\Settings
397
    factory: Drupal\Core\Site\Settings::getInstance
398
  state:
399
    class: Drupal\Core\State\State
400
    arguments: ['@keyvalue']
401 402 403 404 405 406 407 408 409 410 411 412
  queue:
    class: Drupal\Core\Queue\QueueFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
  queue.database:
    class: Drupal\Core\Queue\QueueDatabaseFactory
    arguments: ['@database']
  path.alias_whitelist:
    class: Drupal\Core\Path\AliasWhitelist
    tags:
      - { name: needs_destruction }
413
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
414 415
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
416
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
417 418 419
  path.current:
    class: Drupal\Core\Path\CurrentPathStack
    arguments: ['@request_stack']
420 421 422 423 424 425 426 427 428
  http_handler_stack:
    class: GuzzleHttp\HandlerStack
    public: false
    factory: GuzzleHttp\HandlerStack::create
    configurator: ['@http_handler_stack_configurator', configure]
  http_handler_stack_configurator:
    class: Drupal\Core\Http\HandlerStackConfigurator
    public: false
    arguments: ['@service_container']
429
  http_client:
430 431 432 433 434
    class: GuzzleHttp\Client
    factory: http_client_factory:fromOptions
  http_client_factory:
    class: Drupal\Core\Http\ClientFactory
    arguments: ['@http_handler_stack']
435 436
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
437
    arguments: ['@access_check.theme']
438 439
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
440 441 442 443 444 445 446
  theme.negotiator.default:
    class: Drupal\Core\Theme\DefaultNegotiator
    arguments: ['@config.factory']
    tags:
      - { name: theme_negotiator, priority: -100 }
  theme.negotiator.ajax_base_page:
    class: Drupal\Core\Theme\AjaxBasePageNegotiator
447
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
448 449
    tags:
      - { name: theme_negotiator, priority: 1000 }
450 451 452
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
453 454 455 456
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
457 458
  default_plugin_manager:
    abstract: true
459
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
460
  module_handler:
461
    class: Drupal\Core\Extension\ModuleHandler
462 463 464
    arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
  module_installer:
    class: Drupal\Core\Extension\ModuleInstaller
465 466
    tags:
      - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
467
    arguments: ['@app.root', '@module_handler', '@kernel']
468
    lazy: true
469 470 471 472
  content_uninstall_validator:
    class: Drupal\Core\Entity\ContentUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
473
    arguments: ['@entity.manager', '@string_translation']
474
    lazy: true
475 476 477 478
  field_uninstall_validator:
    class: Drupal\Core\Field\FieldModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
479
    arguments: ['@entity.manager', '@string_translation']
480
    lazy: true
481 482 483 484 485 486
  required_module_uninstall_validator:
    class: Drupal\Core\Extension\RequiredModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
    arguments: ['@string_translation']
    lazy: true
487 488
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
489 490 491 492
    arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
  theme_installer:
    class: Drupal\Core\Extension\ThemeInstaller
    arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
493
  entity.manager:
494
    class: Drupal\Core\Entity\EntityManager
495
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@language_manager', '@string_translation', '@class_resolver', '@typed_data_manager', '@keyvalue', '@event_dispatcher']
496
    parent: container.trait
497 498
    tags:
      - { name: plugin_manager_cache_clear }
499 500 501 502 503
  entity_route_subscriber:
    class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
    arguments: ['@entity.manager']
    tags:
      - { name: event_subscriber }
504 505 506
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
507 508 509
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
510 511 512 513 514
  entity.bundle_config_import_validator:
    class: Drupal\Core\Entity\Event\BundleConfigImportValidate
    arguments: ['@config.manager', '@entity.manager']
    tags:
      - { name: event_subscriber }
515 516 517
  entity.autocomplete_matcher:
    class: Drupal\Core\Entity\EntityAutocompleteMatcher
    arguments: ['@plugin.manager.entity_reference_selection']
518 519 520
  plugin.manager.entity_reference_selection:
    class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
    parent: default_plugin_manager
521 522 523
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
524 525
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
526
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
527 528
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
529
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
530 531
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
532
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
533 534
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
535
    parent: default_plugin_manager
536 537
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
538
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
539 540 541
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
542 543
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
544
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
545 546
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
547
    arguments: ['@access_manager', '@current_user', '@entity.query']
548 549
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
550 551 552
    arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
    tags:
      - { name: needs_destruction }
553 554 555
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
556 557
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
558
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
559 560
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
561
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
562 563
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
564
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
565 566 567
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
568 569 570
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
571 572
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
573
    lazy: true
574 575 576 577 578
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
579
    lazy: true
580 581
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
582
    arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
583
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
584 585
    tags:
      - { name: backend_overridable }
586 587 588
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
589 590
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
591 592
    tags:
      - { name: persist }
593 594 595
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
596
  event_dispatcher:
597
    class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
598
    arguments: ['@service_container']
599 600
  app.root:
    class: SplString
601
    factory: app.root.factory:get
602 603
    tags:
      - { name: parameter_service }
604 605 606
  app.root.factory:
    class: Drupal\Core\AppRootFactory
    arguments: ['@kernel']
607
    public: false
608 609 610 611 612 613 614 615 616
  site.path:
    class: SplString
    factory: site.path.factory:get
    tags:
      - { name: parameter_service }
  site.path.factory:
    class: Drupal\Core\SitePathFactory
    arguments: ['@kernel']
    public: false
617
  controller_resolver:
618
    class: Drupal\Core\Controller\ControllerResolver
619
    arguments: ['@psr7.http_message_factory', '@class_resolver']
620 621 622 623
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
624 625 626
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
627
  http_kernel:
628
    class: Stack\StackedHttpKernel
629
  http_kernel.basic:
630
    class: Symfony\Component\HttpKernel\HttpKernel
631
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
632 633 634 635
  http_middleware.negotiation:
    class: Drupal\Core\StackMiddleware\NegotiationMiddleware
    tags:
      - { name: http_middleware, priority: 400 }
636 637 638 639 640 641 642 643 644 645
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
646 647 648 649 650 651
  http_middleware.session:
    class: Drupal\Core\StackMiddleware\Session
    tags:
      - { name: http_middleware, priority: 50 }
    calls:
      - [setContainer, ['@service_container']]
652 653 654 655
  psr7.http_foundation_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
  psr7.http_message_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
656 657
  language_manager:
    class: Drupal\Core\Language\LanguageManager
658
    arguments: ['@language.default']
659 660 661 662 663
  language.current_language_context:
    class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
    arguments: ['@language_manager']
    tags:
      - { name: 'context_provider' }
664 665 666
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
667 668
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
669
    arguments: ['@settings']
670 671 672 673
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
674
    arguments: ['@language_manager', '@state']
675 676
    calls:
      - [initLanguageManager]
677 678
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
679
  database.replica:
680
    class: Drupal\Core\Database\Connection
681
    factory: Drupal\Core\Database\Database::getConnection
682
    arguments: [replica]
683
  typed_data_manager:
684
    class: Drupal\Core\TypedData\TypedDataManager
685
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
686 687
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
688 689
    tags:
      - { name: plugin_manager_cache_clear }
690 691
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
692
    parent: default_plugin_manager
693 694
    tags:
      - { name: plugin_manager_cache_clear }
695 696
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
697
    arguments: ['@database']
698 699
    tags:
      - { name: backend_overridable }
700
    lazy: true
701 702 703
  lock.persistent:
    class: Drupal\Core\Lock\PersistentDatabaseLockBackend
    arguments: ['@database']
704 705
    tags:
      - { name: backend_overridable }
706
    lazy: true
707
  router.request_context:
708
    class: Drupal\Core\Routing\RequestContext
709 710
    tags:
      - { name: persist }
711 712
    calls:
      - [fromRequestStack, ['@request_stack']]
713 714
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
715
    arguments: ['@current_route_match']
716 717
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
718
    arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator']
719 720
    tags:
      - { name: event_subscriber }
721
      - { name: backend_overridable }
722 723
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
724
    arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
725 726
    tags:
      - { name: 'event_subscriber' }
727 728
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
729
    arguments: ['@path.current']
730 731 732 733 734
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
735
    tags:
736 737 738 739 740 741 742 743 744 745 746
      - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
  route_filter.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteFilter
    tags:
      - { name: non_lazy_route_filter }
    parent: container.trait
  route_filter_subscriber:
    class: Drupal\Core\EventSubscriber\RouteFilterSubscriber
    arguments: ['@route_filter.lazy_collector']
    tags:
      - { name: event_subscriber }
747
  url_generator.non_bubbling:
748
    class: Drupal\Core\Routing\UrlGenerator
749
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
750 751 752 753 754 755
    public: false
    calls:
      - [setContext, ['@?router.request_context']]
  url_generator:
    class: Drupal\Core\Render\MetadataBubblingUrlGenerator
    arguments: ['@url_generator.non_bubbling', '@renderer']
756
    calls:
757
      - [setContext, ['@?router.request_context']]
758 759 760
  redirect.destination:
    class: Drupal\Core\Routing\RedirectDestination
    arguments: ['@request_stack', '@url_generator']
761 762
  unrouted_url_assembler:
    class: Drupal\Core\Utility\UnroutedUrlAssembler
763
    arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
764 765
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
766
    arguments: ['@url_generator', '@module_handler', '@renderer']
767 768 769
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
770 771
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
772
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
773
    tags:
774
      - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
775
  router.no_access_checks:
776 777 778 779
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
780 781 782 783 784
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
785 786
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
787
    arguments: ['@entity.manager']
788 789 790 791
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
792 793 794
    arguments: ['@config.factory', '@keyvalue', '@config.manager']
    tags:
      - { name: event_subscriber }
795 796 797
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
798 799
    tags:
      - { name: backend_overridable }
800 801 802
  pgsql.entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
    arguments: ['@database']
803 804
  entity.query.null:
    class: Drupal\Core\Entity\Query\Null\QueryFactory
805 806 807
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
808 809
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
810
    arguments: ['@database', '@state']
811 812
    tags:
      - { name: backend_overridable }
813
    lazy: true
814 815
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
816
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
817
    lazy: true
818
    tags:
819
      - { name: needs_destruction }
820 821 822
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
823 824
    tags:
      - { name: event_subscriber }
825 826
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
827
    arguments: ['@database', '@module_handler']
828 829
    tags:
      - { name: backend_overridable }
830 831
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
832
    arguments: ['@config.factory', '@current_route_match']
833 834
  path.validator:
    class: Drupal\Core\Path\PathValidator
835
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
836

837 838 839 840 841 842 843 844 845
# The argument to the hashing service defined in services.yml, to the
# constructor of PhpassHashedPassword is the log2 number of iterations for
# password stretching.
# @todo increase by 1 every Drupal version in order to counteract increases in
# the speed and power of computers available to crack the hashes. The current
# password hashing method was introduced in Drupal 7 with a log2 count of 15.
  password:
    class: Drupal\Core\Password\PhpassHashedPassword
    arguments: [16]
846 847
  request_format_route_filter:
    class: Drupal\Core\Routing\RequestFormatRouteFilter
848 849 850 851
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
852 853 854 855
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
856 857
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
858 859 860 861 862
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
863 864 865 866
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
867
    arguments: ['@entity.manager']
868 869 870 871 872 873
  paramconverter.configentity_admin:
    class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
    tags:
      # Use a higher priority than EntityConverter, see the class for details.
      - { name: paramconverter, priority: 5 }
    arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
874
    lazy: true
875 876 877 878 879
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
880 881
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
882
    arguments: ['@entity.manager', '@class_resolver']
883 884 885 886
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
887
    arguments: ['@resolver_manager.entity']
888 889 890
  ajax_response.subscriber:
    class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
    arguments: ['@ajax_response.attachments_processor']
891 892
    tags:
      - { name: event_subscriber }
893 894
  form_ajax_subscriber:
    class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
895
    arguments: ['@form_ajax_response_builder', '@string_translation']
896 897
    tags:
      - { name: event_subscriber }
898 899 900 901 902 903 904 905 906 907
  route_enhancer.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteEnhancer
    tags:
      - { name: non_lazy_route_enhancer, priority: 5000 }
    parent: container.trait
  route_enhancer_subscriber:
    class: Drupal\Core\EventSubscriber\RouteEnhancerSubscriber
    arguments: ['@route_enhancer.lazy_collector']
    tags:
      - { name: event_subscriber }
908 909 910 911 912 913
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
914 915
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
916
    tags:
917
      - { name: route_enhancer, priority: 20 }
918 919 920 921
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    tags:
      - { name: event_subscriber }
922 923 924 925
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
926 927 928 929
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
930 931 932 933 934
  psr_response_view_subscriber:
    class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
    arguments: ['@psr7.http_foundation_factory']
    tags:
      - { name: event_subscriber }
935 936 937 938 939 940 941

  # Main content view subscriber plus the renderers it uses.
  main_content_view_subscriber:
    class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
    arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
    tags:
      - { name: event_subscriber }
942 943 944 945
  accept_negotiation_406:
    class: Drupal\Core\EventSubscriber\AcceptNegotiation406
    tags:
      - { name: event_subscriber }
946 947
  main_content_renderer.html:
    class: Drupal\Core\Render\MainContent\HtmlRenderer
948
    arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%']
949 950 951 952 953 954 955
    tags:
      - { name: render.main_content_renderer, format: html }
  main_content_renderer.ajax:
    class: Drupal\Core\Render\MainContent\AjaxRenderer
    arguments: ['@element_info']
    tags:
      - { name: render.main_content_renderer, format: drupal_ajax }
956
      - { name: render.main_content_renderer, format: iframeupload }
957 958 959 960 961 962 963 964 965 966
  main_content_renderer.dialog:
    class: Drupal\Core\Render\MainContent\DialogRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_dialog }
  main_content_renderer.modal:
    class: Drupal\Core\Render\MainContent\ModalRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_modal }
967 968 969 970 971 972
  controller.form:
    class: Drupal\Core\Controller\HtmlFormController
    arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
  controller.entity_form:
    class: Drupal\Core\Entity\HtmlEntityFormController
    arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
973 974 975
  form_ajax_response_builder:
    class: Drupal\Core\Form\FormAjaxResponseBuilder
    arguments: ['@main_content_renderer.ajax', '@current_route_match']
976 977 978 979
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
980
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
981 982
  bare_html_page_renderer:
    class: Drupal\Core\Render\BareHtmlPageRenderer
983
    arguments: ['@renderer', '@html_response.attachments_processor']
984
    lazy: true
985 986 987 988 989
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
990
    arguments: ['@private_key', '@session_manager.metadata_bag']
991 992
  access_arguments_resolver_factory:
    class: Drupal\Core\Access\AccessArgumentsResolverFactory
993 994
  access_manager:
    class: Drupal\Core\Access\AccessManager
995 996 997
    arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
  access_manager.check_provider:
    class: Drupal\Core\Access\CheckProvider
998 999
    calls:
      - [setContainer, ['@service_container']]
1000
    public: false
1001 1002 1003
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
1004
      - { name: access_check, applies_to: _access }
1005 1006 1007
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
1008
      - { name: access_check, applies_to: _entity_access }
1009 1010
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
1011
    arguments: ['@entity.manager']
1012
    tags:
1013
      - { name: access_check, applies_to: _entity_create_access }
1014 1015
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
1016
    arguments: ['@theme_handler']
1017
    tags:
1018
      - { name: access_check, applies_to: _access_theme }
1019 1020
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
1021
    arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
1022
    tags:
1023
      - { name: access_check, applies_to: _custom_access }
1024 1025 1026
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
1027
      - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
1028
    arguments: ['@csrf_token']
1029 1030 1031
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
1032 1033
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
1034
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
1035 1036 1037 1038 1039 1040
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
1041
    arguments: ['@path.alias_manager', '@path.current']
1042 1043 1044 1045 1046 1047 1048 1049
  route_access_response_subscriber:
    class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
    tags:
      - { name: event_subscriber }
  client_error_response_subscriber:
    class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
    tags:
      - { name: event_subscriber }
1050 1051 1052 1053 1054
  anonymous_user_response_subscriber:
    class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@current_user']
1055 1056 1057 1058 1059 1060 1061
  ajax_response.attachments_processor:
    class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
    tags:
    arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
  html_response.attachments_processor:
    class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
    tags:
1062
    arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
1063 1064 1065 1066 1067
  html_response.subscriber:
    class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@html_response.attachments_processor']
1068 1069 1070 1071
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
1072
    arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager']
1073 1074 1075 1076
  response_generator_subscriber:
    class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
    tags:
      - { name: event_subscriber }
1077 1078
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
1079
    arguments: ['@url_generator', '@router.request_context']
1080 1081
    tags:
      - { name: event_subscriber }
1082 1083 1084 1085
  redirect_leading_slashes_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
    tags:
      - { name: event_subscriber }
1086 1087 1088 1089 1090
  request_close_subscriber:
    class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
1091 1092 1093 1094
  config_import_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
    tags:
      - { name: event_subscriber }
1095
    arguments: ['@theme_handler']
1096 1097 1098 1099
  config_snapshot_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
    tags:
      - { name: event_subscriber }
1100
    arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
1101 1102 1103 1104 1105 1106 1107 1108
  exception.default_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
  exception.default_html:
    class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
1109
    arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination']
1110 1111 1112 1113
  exception.default:
    class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
    tags:
      - { name: event_subscriber }
1114
    arguments: ['@config.factory']
1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128
  exception.logger:
    class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@logger.factory']
  exception.custom_page_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel']
  exception.custom_page_html:
    class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
1129
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel', '@logger.channel.php', '@redirect.destination']
1130 1131 1132 1133 1134 1135 1136
  exception.fast_404_html:
    class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@http_kernel']
  exception.test_site:
    class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
1137 1138
    tags:
      - { name: event_subscriber }
1139 1140 1141 1142
  exception.enforced_form_response:
    class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
    tags:
      - { name: event_subscriber }
1143 1144
  route_processor_manager:
    class: Drupal\Core\RouteProcessor\RouteProcessorManager
1145 1146
    tags:
      - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
1147 1148
  path_processor_manager:
    class: Drupal\Core\PathProcessor\PathProcessorManager
1149 1150 1151
    tags:
      - { name: service_collector, tag: path_processor_inbound, call: addInbound }
      - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
1152 1153 1154 1155 1156 1157 1158 1159
  path_processor_decode:
    class: Drupal\Core\PathProcessor\PathProcessorDecode
    tags:
      - { name: path_processor_inbound, priority: 1000 }
  path_processor_front:
    class: Drupal\Core\PathProcessor\PathProcessorFront
    tags:
      - { name: path_processor_inbound, priority: 200 }
1160
      - { name: path_processor_outbound, priority: 200 }
1161
    arguments: ['@config.factory']
1162 1163 1164
  route_processor_current:
    class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
    arguments: ['@current_route_match']
1165
    tags:
1166
      - { name: route_processor_outbound, priority: 200 }
1167 1168 1169 1170
  path_processor_alias:
    class: Drupal\Core\PathProcessor\PathProcessorAlias
    tags:
      - { name: path_processor_inbound, priority: 100 }
1171
      - { name: path_processor_outbound, priority: 300 }
1172
    arguments: ['@path.alias_manager']
1173
  route_processor_csrf:
1174 1175 1176 1177
    class: Drupal\Core\Access\RouteProcessorCsrf
    tags:
      - { name: route_processor_outbound }
    arguments: ['@csrf_token']
1178
  transliteration:
1179
    class: Drupal\Core\Transliteration\PhpTransliteration
1180
    arguments: [null, '@module_handler']
1181 1182
  flood:
    class: Drupal\Core\Flood\DatabaseBackend
1183
    arguments: ['@database', '@request_stack']
1184 1185
    tags:
      - { name: backend_overridable }
1186 1187
  plugin.manager.mail:
    class: Drupal\Core\Mail\MailManager
1188
    arguments: ['