Ad Inserter — Ad Manager & AdSense Ads

Описание

Ad management plugin with many advanced advertising features to insert ad codes at optimal positions.

Поддерживает все виды объявлений, включая Google AdSense , Менеджер объявлений Google (DFP — DoubleClick для издателей), контекстные объявления Amazon Native Shopping , Media.net и вращающиеся баннеры.

This plugin is more than AdSense plugin or plugin for ads. It provides many advanced options to insert opt-in forms, header scripts, Javascript, CSS, HTML, PHP, analytics, tracking or advert code anywhere on the page.

Ставьте рекламу там, где другие плагины не могут .
Вся разница в настройках .

Отзывы о плагине:

Я уже пару лет пользуюсь другим менеджером по размещению рекламы и совсем недавно начал использовать Ad Inserter.

Я поражен его мощью и гибкостью.

Я !настоятельно! рекомендую этот плагин всем, кто ищет простой способ управления рекламой в WordPress.

Трудно выбрать, но, безусловно, плагин из ТОП 3 среди тех, которые я когда-либо использовал в WordPress.

Функции — проверьте документацию для получения полного списка

  • AdSense интеграция
  • Поддержка по Менеджеру объявлений Google (DoubleClick для издателей)
  • Syntax highlighting editor
  • Plain JavaScript code on front-end — no library dependencies
  • Code preview with visual CSS editor
  • Automatically inserts ads on posts and pages
  • Insert before or after post
  • Insert before or after content
  • Insert before or after paragraph
  • Insert before or after random paragraph
  • Insert before or after multiple paragraphs
  • Вставить до или после изображения
  • Insert before or after comments
  • Insert before or after excerpt
  • Insert near any element on the page (using CSS selectors)
  • Insert above the header (after <body> tag)
  • Insert in the footer (before </body> tag)
  • Insert at relative positions in posts
  • Insert between posts on blog pages (in-feed AdSense)
  • Insert between excerpts on blog pages
  • Insert between comments
  • Insert at custom hook positions (do_action () WP function)
  • Вставить до или после любого элемента HTML, используя селекторы CSS
  • Визуальный селектор HTML-элементов (DOM Explorer)
  • Avoid inserting ads near images or headers (AdSense TOS)
  • Disable ads on individual posts or pages
  • Insert header (<head> section) and footer code
  • Insert raw HTTP response header lines
  • Insert Google Analytics, Matomo (Piwik) or any other tracking code
  • Insert images, HTML, CSS, Javascript or PHP code
  • Insert into Ajax, RSS and REST requests
  • Code generator for banners and placeholders
  • AdSense code generator
  • Support to detect, hide or replace blank AdSense blocks
  • Visual advert editor — create adverts from scratch
  • Manual insertion: widgets, shortcodes, PHP function call
  • Sticky (fixed) widgets (sticky sidebar — the sidebar does not move when the page is scrolled)
  • Custom alignments and styles
  • Insert different ad codes on AMP pages
  • Custom CSS class name for wrapping divs to avoid ad blockers
  • Use shortcodes from other plugins
  • Use custom fields as defined in posts
  • Use post title, tags or category names to create contextual adverts
  • PHP code processing
  • Ad labels — show customized label above adverts
  • ads.txt редактор
  • Support for GDPR consent checks
  • Support for IAB TCF 2.0 GDPR consent API (used by Quantcast Choice)
  • Ad rotation (server-side and client-side — works with caching)
  • Timed ad rotation — define times to rotate adverts in a single ad block
  • Create rich media ads with standard WordPress TinyMCE editor
  • Ad blocking detection — popup message, page redirection
  • Desktop/mobile device detection (server-side and client-side — works with caching)
  • Blacklist/Whitelist categories, tags, taxonomies, post IDs, urls, url query parameters, cookies, referrers, browsers, operating systems
  • Easy copying and pasting ads or settings using internal clipboard
  • Use it with Google Site Kit or replace it to have more control over ad placement
  • Simple troubleshooting with many debugging functions
  • Function to visualize inserted blocks
  • Функция визуализации объявлений AdSense с именами и ID объявлений.
  • Function to visualize available insertion positions
  • Function to visualize HTML tags
  • You name it 🙂

👉 TEST the plugin on a demo website

Review on WP Mayor

The Best WordPress Ad Management Plugin?

Отзывы на ShoutMeLoud

Both Google and Amazon recommend this plugin for inserting ads, which is a testament to its quality

Одобрено Google Как вставить рекламный код на свой сайт WordPress

If you’re new to AdSense, one of your first tasks is to connect your site to AdSense. This requires you to copy the code on your AdSense homepage and paste it into the HTML of your page, between the <head> and </head> tags.

Одобрено Amazon Руководство по интеграции в WordPress объявлений нативных магазинов .

Native Shopping Ads provide highly relevant and dynamic product recommendations in a stylishly designed and responsive ad unit that can be placed at the end or within your content to create a more compelling visitor experience and shopping opportunity.

Pro версия поддерживает дополнительные расширенные функции :

  • Geolocation using internal or MaxMind databases (works also with caching)
  • Геотаргетинг на уровне страны, штата, региона и города
  • Blacklist/Whitelist IP addresses or countries/cities (works also with caching)
  • Ad impression and click statistics (works also with <iframe> Javascript ads like Google AdSense)
  • Отчеты статистики для клиентов в формате PDF или в формате публичной веб-страницы
  • External tracking via Google Analytics or Matomo (Piwik)
  • A/B testing — discover adverts and settings that perform best
  • Ограничение частоты — ограничение показов или кликов
  • Защита от мошенничества
  • reCaptcha v3 score check to hide ads from invalid traffic
  • Delayed loading of ad scripts until user interacts with the website
  • Lazy loading — delayed loading of ad scripts until the page is scrolled
  • Sticky ads with optional close button
  • Sticky sidebar ads (stick to the screen or to the content)
  • Floating slide-in banner adverts
  • Sticky (floating) ads with animations (fade, slide, turn, flip, zoom)
  • Animation trigger for sticky ads (page scroll in % or px, HTML element becomes visible)
  • background ads (skin ads)
  • Parallax ads
  • Поддержка липкой рекламной панели
  • Support for scheduling date and time with fallback option
  • Support to show ads as soon as the GDPR consent is given
  • Поддержка рекламы в iframes
  • Anti ad blocking features — replace ads, protect content
  • Ad blocking statistics
  • Multisite options to limit settings on the sites
  • Individual post/page exception management
  • Export and import of settings
  • Support via email

Ведёте блог, связанный с WordPress? Есть опыт работы с AdSense? Заинтересованы в обзоре плагина или хотите стать партнером? Дайте о себе знать .

Есть опыт работы с темой WordPress или переводом плагинов? Мы ищем переводчиков! Свяжитесь с нами .

Check documentation pages for detailed description of all the features and some common settings for quick start.

Вы также можете использовать шорткоды из других плагинов (например, для вставки контента из других плагинов).

Ищете плагин для AdSense с простой настройкой рекламы на лучших позициях?

Ad Inserter can insert ads where other plugins fail.
It’s all about the settings.

Average Rating: 5 out of 5 stars — check Ad Inserter reviews

One of the best adsense plugins
Most comprehensive Ad plugin available
Better than the old Google adsense plugin
The best WP Ad management plugin
Very flexible and excellent documentation
Excellent Ad Plugin
Easy to use and also does more than I need
Exactly what I needed to sell advertising spots
Awesome Plugin and Super Support!
Lots of options and easy to use
Crazy flexible
Great plugin that makes it simple
Superb Plugin and Support team also so good
Best in same kind of plugins
Must Have Plugin for Each WP Site
Best Ad Placement Plugin
Best Solution for Advertisement Management
Comprehensive, flexible and well supported
God bless these guys!
PRO for Free

Please support plugin development

Support the advancement of this plugin:

  • Напишите краткий обзор . Положительные отзывы — это отличный способ выразить свою признательность за мою работу. Помимо того, что отзывы невероятно повышают мой моральный дух, они также являются отличным стимулом для исправления любой ошибки, обнаруженной в программном обеспечении, и добавления новых функций для лучшей монетизации вашего сайта.
  • Donate if Ad Inserter helps you to make money with advertising
  • Зарегистрируйтесь для участия в партнерской программе Ad Inserter Pro , продвигайте плагин на своем веб-сайте и получайте комиссионные за каждую покупку приглашенных вами пользователей.
  • Buy license for Ad Inserter Pro

Скриншоты

  • Настройки для одного блока кода (Перед контентом).
  • Code preview with visual CSS editor
  • Code preview with visual CSS editor - highlighted code
  • Post / Page Ad Inserter Individual Exceptions
  • Some Ad Inserter Pro features: IP address and country lists, Scheduling between dates with fallback
  • Ad Inserter plugin settings
  • Visualization of HTML tags in post
  • Visualization of positions for automatic insertion in post
  • Visualization of inserted block in post
  • Automatic insertion, Alignment and Style settings
  • Rotation code editor and banner code generator
  • Settings for automatic insertion before/after paragraphs
  • Settings for custom hooks
  • Settings automatic insertion at custom hook positions
  • Settings ad blocking detection
  • AdSense code generator
  • Complete settings for one code block (Before Paragraph)

Часто задаваемые вопросы

Settings for …

Проверьте общие настройки

Does Ad Inserter insert any internal ads?

No revenue sharing and no such thing as «internal ads» or «our ads» on your website. Period. What you configure is what will be inserted (+ some internal scripts for plugin features).
Ad Inserter is free, open source plugin and inserts only the code you configure (blocks, Header, Footer). The code you see is the code that will be inserted. Please check page source code before you make any conclusion.
Of course, if you configure block with some JavaScript ad code, then this code may insert some additional code or show ads. But please, don’t blame the plugin for this.
You can also use this plugin to insert code for AdSense Auto ads on each page (usually in the header). However, the exact placement of ads will be done by the ad code, not Ad Inserter!
https://adinserter.pro/documentation/adsense-ads#auto-ads

The easiest way to check inserted blocks is to use Label blocks debugging function:
https://adinserter.pro/documentation/debugging

Обратите внимание, что при отключении плагина вы также отключаете вставку всех настроенных вами кодов и блоков.
Поэтому, если ваши проблемы исчезнут, когда вы отключите плагин, ЭТО НЕ УКАЗЫВАЕТ на проблемы с плагином! Вам нужно отключить отдельные коды , чтобы узнать, какой из них вызывает проблемы.

What is remote debugging?

Ad Inserter is basically used to insert ad codes according to the settings.
When the code is not inserted where it is expected or the inserted HTML/Javascript code does not display anything, you as the site administrator can use debugging functions to diagnose insertions.

Those tools are normally available to the administrator of the website and are shown as a menu item in the admin bar.
When you will ask for help on the support forum we’ll ask you to enable remote debugging so the support team will be able to access debugging tools via url.

This will allow the support team to:

  • Label inserted blocks — a border will be drawn around the blocks and a bar will be shown above them so the support will be able to see if/where and which blocks are inserted.
  • Show possible positions for automatic insertion — in places where WP hooks are called a label is placed so the support will be able to see where your theme calls WP hooks
  • See processing log — the log is inserted as HTML comment at the end of the page and shows data and settings used by Ad Inserter and the log of the plugin functions/hooks called during page generation — the support will be able to see the reason why some block was not inserted, how many times the_content hook is called, etc.
  • Disable block insertions — sometimes the issues are caused by the inserted code — this way the support will be able to quickly disable insertions of Ad Inserter blocks to see the difference

Pages with debugging info are not cached — the debugging process will not be visible to anybody else. Once the help is not needed anymore you can disable remote debugging.

I have installed code for AdSense and I see ads placed at random positions.

You are probably using code for AdSense Auto ads.

Автореклама (также известная как реклама на уровне страницы) — это код, который вы вставляете на каждую страницу один раз, и он автоматически отображает объявления на позициях, выбранных самим кодом.
Код использует машинное обучение Google, чтобы выбирать лучшие места размещения на ваших страницах для показа рекламы.

Auto ads may not be suitable for some WordPress themes or layouts. In such cases it is easier to place ads at wanted locations by using normal AdSense code and specifying exact locations where the code should be inserted.

I have installed code for AdSense but the ad blocks are blank.

Blank ad block means that the code is inserted properly, only the ad code doesn’t display ads.
This happens when Google for some reason does not serve ads for the website, page or specific ad block — the block remains unfilled.
Ad Inserter can detect, hide or replace blank AdSense blocks.
Please check Ads Not Displayed for more information.

What is GDPR?

The GDPR (General Data Protection Regulation) is a regulation in European Union (EU) on data protection and privacy for all individuals within the EU and the European Economic Area (EEA) that was designed to harmonize data privacy laws across Europe. If you collect personal information from any EU citizen (within or outside the EU), you must first obtain explicit and unambiguous consent.

GDPR compliance: What cookies does the plugin use

Ad Inserter itself does not use cookies except for ad blocking detection when you use delayed action.

In this case 3 cookies may be used (to store pageviews and action settings): aiADB, aiADB_PV and aiADB_PR. However, no personal data is stored in the cookies.

Of course, the ads you may insert with the plugin may use own cookies — please check with ad networks for details.

How to display a GDPR compliant cookie message?

You can use any plugin for GDPR compliance / cookie consent. You can also prevent inserting ad codes and displaying ads before the consent is given — check How to show ads based on visitors’ consent.

PLEASE NOTE: Installing GDPR plugin alone does not make your site GDPR compliant. Since ads you insert may use various cookies, you may need to make sure you have necessary configurations in place. Please check next question regarding showing ads based on visitor’s consent.

How to show ads based on visitor’s consent?

Ad Inserter supports inserting ad codes (and showing ads) based on cookies or cookie values. You can define cookie conditions by black/whitelisting Url parameters (where also cookies are checked).

PLEASE NOTE: If you are using caching (very likely) you also need to set Dynamic blocks to Client-side insert (tab ⚙ / tab General) in order to check cookies in visitor’s browser and not when the page is generated.

For example, If you are using one of the following plugins for the consents you need to whitelist the following cookie and value in Url parameter list:

Make sure Dynamic blocks are set to Client-side insert (tab ⚙ / tab General). For more details please check How to show ads based on visitors’ consent.

Will Ad Inserter work when jQuery is deferred?

Yes!

Ad Inserter uses plain JavaScript code on front-end and does not depend on jQuery library.

How to minimize redirects?

Ad Inserter does not do any redirects, it only inserts ad codes as configured.

If you see any report (for example from GTmetrix) suggesting to minimize redirects you need to first check where the redirects are located (on which page or domain) — if they are on other (ad network) domains you don’t control, then there is nothing you can do (nobody except ad network can change this).

For details please check this page: How to optimize plugin settings

Что такое плагин, использующий отслеживание?

Когда эта функция включена, информация о среде WordPress и использовании Ad Inserter будет собираться и отправляться разработчикам плагинов (один раз в месяц, либо при таких событиях, как активация / деактивация плагина). Смотрите подробное объяснение ниже.

Политика конфиденциальности — использование отслеживания плагином

Когда эта функция включена, информация о среде WordPress и использовании Ad Inserter будет собираться и отправляться разработчикам плагинов (один раз в месяц или при таких событиях, как активация / деактивация плагина).

Это совершенно необязательно и может быть отключено в любое время. Поэтому, если вы выбрали (нажав «Разрешить» при запросе разрешения) и теперь хотите отключить отслеживание, перейдите в Общие настройки, выберите Отключить для отслеживания использования плагина и сохраните настройки.

Если этот настройка недоступна, значит, вы еще не выбрали ни одной опции — отслеживание отключено, если явно не включено, нажав «Разрешить» при запросе разрешения (или если для этого параметра установлено значение «Включить»).

Какие данные собираются: версия Ad Inserter, статус активации, количество активных блоков, дата установки, дата последних сохраненных настроек, статус уведомления о проверке и удаленной отладки, имя класса блока, местоположение, URL и имя веб-сайта, версия WordPress, язык , направление текста, кодировка, количество постов, активная тема и версия, список установленных плагинов, версия PHP, имя сервера, IP-адрес (используется для определения страны), количество сайтов для многосайтовой установки, причины деактивации и детали (если есть).

Ad Inserter — это только плагин для программного управления контентом WordPress. Он работает вместе с WordPress, другими установленными плагинами и выбранной темой.

Эти данные предоставляют возможность сделать плагин совместимым с как можно большим количеством сред, протестировать плагин с другими часто используемыми плагинами и темами, понять, почему пользователи деактивируют (и удаляют) плагин, и получить идеи для улучшения плагина.

Если вы не хотите раскрывать эту информацию и вы включили ее, просто отключите отслеживание использования, как описано выше.

Ваше решение будет соблюдено.

Отзывы

05.03.2024 5 ответов
The developer of our theme, GeneratePress, suggested using Ads Inserter to incorporate in-content ads and better manage the display ads on our website. After installing the plugin, noticed site performance dropped significantly. After multiple 503 errors, I reached out to our shared hosting provider to see what the issue was, and they specifically called out Ads Inserter, saying other clients of theirs have similar performance issues. Additionally, when trying to insert code within the Ads Inserter dashboard, the dashboard is super slow to respond to inputs. Clicking "save" won't do anything until the little hand appears, which can take 15 seconds or more. We only have 12 ad blocks going, and we don't have a significant amount of code in each. So, if you use a shared hosting provider like BlueHost, HostGator or literally any of the low-cost WordPress hosting solutions on the market, Ads Inserter is going to cause you some major headaches. It's too bad, because the plug-in looks like it could be a powerful solution for ad-supported publishers — if only it worked better.
27.02.2024 1 ответ
日本語版でもっと細かい所の説明があったり、稼働においてどれくらい重さがあるのかを知りたい でもすごく使えるのでおすすめ
18.02.2024 1 ответ
It's tough to believe that it's a free plugin. I am really impressed. I appreciate their hard work. Keep it up and stay blessed.
Посмотреть все 2 260 отзывов

Участники и разработчики

«Ad Inserter — Ad Manager & AdSense Ads» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

«Ad Inserter — Ad Manager & AdSense Ads» переведён на 14 языков. Благодарим переводчиков за их работу.

Перевести «Ad Inserter — Ad Manager & AdSense Ads» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

2.7.33

  • Changed widget class name
  • Added option to define maximum number of list selection items
  • Fix for Amazon external script causing false ad blocking detection
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.32

  • Added experimental support for REST requests
  • Added support for data shortcode for url parameters
  • Added option for shortcodes to ignore category, tag, taxonomy and post ID lists
  • Added support for background parallax ads (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.31

  • Security fix for some data revealed via remote debugging data
  • Added support to remove ad label when no code is inserted
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.30

  • Improved debugging
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.29

  • Added support for shortcode for reusable blocks by name
  • Added support to force using get_queried_object function to get post id
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.28

  • Added support for shortcode for reusable blocks
  • Fix for PDF reports when site_url is different from home_url (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.27

  • Fix for ad blocking detection external script trying to download a file

2.7.26

  • Improved compatibility with PHP 8.2
  • Security fix for deserialization
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.25

  • Improved theme compatibility for sticky widgets with CSS mode
  • Improved tracking for Google Analytics (Pro only)
  • Added information bar when Wait for jQuery is enabled
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.24

  • Added CSS Push mode for sticky widgets
  • Added support for sticky ads (push mode) inside post/page content (Pro only)
  • Added support for multiple activations of rotation groups
  • Added support for %N@M format for filter counting
  • Added support to prepend and append code to rotation option codes
  • Added hook for click on the close button (Pro only)
  • Improved front-end code
  • Fix for client-side device detection on AMP pages
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.23

  • Few minor bug fixes, cosmetic changes and code improvements

2.7.22

  • Few minor bug fixes, cosmetic changes and code improvements

2.7.21

  • Added support for Ad Inserter menu position
  • Added support for random paragraph ranges
  • Added support for default waiting time for user interaction (Pro only)
  • Improved front-end code
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.20

  • Fix for front-end translation

2.7.19

  • Added constant to disable AdSense API
  • Fix for rotation code editor
  • Fix for advaced click tracker for banners (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.18

  • Added support to hide ad label when unfilled AdSense block is hidden
  • Simplified AdSense API authorization process
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.17

  • Fixed bug for url parameters check
  • Added support for reCaptcha v3 score check (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.16

  • Added support for adb redirection page with url queries
  • Added support for tcf-no-google shortcut
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.15

  • Added filter hooks for ad labels
  • Added support for constants
  • Added support for rotation option index attribute
  • Added shortcodes for block number and block name
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.14

  • Added support for demo settings
  • Added support for background transparency
  • Added support for background for sticky ads (Pro only)
  • Added support for statistics for check options (Pro only)
  • Added support for individual rotation option statistics (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.13

  • Few minor bug fixes, cosmetic changes and code improvements

2.7.12

  • Security fix for settings page save url
  • Added support to disable ad blocking detection for specific devices
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.11

  • Security fix for sites using constants to prevent file editing or unfiltered HTML
  • Added filters before the options are saved
  • Added support for a shortcode for comma separated list of categories with quotes (for Google Ad Manager)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.10

  • Security fix for XSS (Reported by Krzysztof Zajac via WPScan)
  • Added support to detect and replace blank AdSense blocks
  • Added support to load and save plugins settings to a file (Pro only)
  • Added support for parallax ads (Pro only)
  • Few fixes

2.7.9

  • Bug fix for timed rotations
  • Bug fix for tr_TR translation
  • Improved checks for cookies
  • Improved compatibility with PHP 8.1
  • Added separate list for cookies
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.8

  • Bug fix for paragraph counting and clearance
  • Bug fix for undefined constant error

2.7.7

  • Few bug fixes

2.7.6

  • Improved compatibility with PHP 8
  • Added translation for tr_TR
  • Added support to wait for an interaction before the block is loaded (Pro only)
  • Added support to delay insertion of the block (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.5

  • Few minor bug fixes, cosmetic changes and code improvements

2.7.4

  • Updated Google API
  • Improved labels for AdSense Auto ads
  • Added external tracking support for WP username (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.3

  • Improved ad blocking detection
  • Improved compatibility with PHP 8
  • Improved check for update server accessibility (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.2

  • Added shortcuts for TCF v2 consent cookie checks
  • Added support for adinserter shortcode to get post ID
  • Improved ad blocking detection
  • Changed internal IP to country database (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.1

  • Added shortcuts for TCF v2 consent cookie checks
  • Improved ad blocking detection
  • Changed internal IP to country database (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.1

  • Improved ad blocking detection
  • Few minor bug fixes, cosmetic changes and code improvements

2.7.0

  • Added support to list range of post IDs
  • Added support for browser language in client lists
  • Added support for client-side checks for filter hook ai_block_insertion_check
  • Added support for remote plugin managenent (Pro only)
  • Added support for scheduling check shortcode (Pro only)
  • Added support for daily scheduling time (Pro onlyl)
  • Added support for css attribute in check options (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements

Earlier versions

For the changelog of earlier versions, please refer to the separate changelog.txt file.