├── comments.php
├── screenshot-1.png
├── screenshot-2.png
├── .github
├── dependabot.yml
└── workflows
│ ├── code-style.yml
│ └── phpcs-fix.yml
├── .gitignore
├── composer.json
├── .php_cs.dist
├── phpcs.xml
├── README.md
├── remove-comments-absolute.php
├── LICENSE
└── composer.lock
/comments.php:
--------------------------------------------------------------------------------
1 | =5.3"
22 | },
23 | "require-dev": {
24 | "dealerdirect/phpcodesniffer-composer-installer": "*",
25 | "friendsofphp/php-cs-fixer": "*",
26 | "phpcompatibility/phpcompatibility-wp": "*",
27 | "wp-coding-standards/wpcs": "*"
28 | },
29 | "scripts": {
30 | "ci": "vendor/bin/phpcs",
31 | "cf": "vendor/bin/php-cs-fixer fix --diff --dry-run -vvv"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/.php_cs.dist:
--------------------------------------------------------------------------------
1 | exclude('.github')
10 | ->in(__DIR__)
11 | ;
12 |
13 | return PhpCsFixer\Config::create()
14 | ->setRules([
15 | 'single_quote' => true,
16 | 'indentation_type' => true,
17 | 'array_indentation' => true,
18 | 'trailing_comma_in_multiline_array' => [
19 | 'after_heredoc' => true
20 | ],
21 | 'braces' => [
22 | 'position_after_functions_and_oop_constructs' => 'same'
23 | ],
24 | 'class_attributes_separation' => [
25 | 'elements' => [
26 | 'const',
27 | 'property',
28 | ],
29 | ],
30 | 'elseif' => true,
31 | 'full_opening_tag' => true,
32 | 'no_trailing_whitespace' => true,
33 | 'no_trailing_whitespace_in_comment' => true,
34 | 'no_blank_lines_after_phpdoc' => true,
35 | 'no_extra_blank_lines' => ['extra'],
36 | 'no_closing_tag' => true,
37 | 'not_operator_with_successor_space' => true,
38 | 'ternary_operator_spaces' => true,
39 | 'unary_operator_spaces' => true,
40 | 'binary_operator_spaces' => true,
41 | 'switch_case_space' => true,
42 | 'whitespace_after_comma_in_array' => true,
43 | 'method_argument_space' => true,
44 | 'cast_spaces' => [
45 | 'space' => 'single'
46 | ],
47 | 'no_spaces_after_function_name' => true,
48 | 'no_spaces_inside_parenthesis' => false,
49 | ])
50 | ->setIndent("\t")
51 | ->setLineEnding("\r\n")
52 | ->setUsingCache(false)
53 | ->setFinder($finder)
54 | ;
55 |
--------------------------------------------------------------------------------
/phpcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Rules for the WordPress project
4 |
5 |
6 | .
7 |
9 | ./vendor/
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
20 |
22 |
23 |
25 |
26 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Remove Comments Absolutely
2 | Deactivate comments functions and remove areas absolutely from the WordPress install
3 |
4 | ## Note
5 | Remove Comments Absolutely is abandoned. Please use https://github.com/inpsyde/disable-comments instead. This plugin supports all new features, like Gutenberg blocks to remove all comments features.
6 |
7 | ## Description
8 | The comment feature in WordPress is an essential component of blogs - but not in all cases it's needed,
9 | especially if you use it as a traditional CMS.
10 |
11 | Sure, you can just leave out the comment form while you are creating a theme and disable the comment options
12 | in your backend. But this is not the best way for everyone. In such a case, I turn the comments off completely,
13 | making sure that the posts can not have that option and also remove the fields for the comments in the backend.
14 | That way the user gets exactly what he needs. Meanwhile, I have needed this so often that I created a small
15 | Plugin and I'm able to immediately „switch off“ the functions and comment areas.
16 |
17 | Also see the [post](http://wpengineer.com/2230/removing-comments-absolutely-wordpress/)
18 | about the idea.
19 |
20 | ### Screenshots
21 | 1. [Different areas on the dashboard, there will be removed](https://raw.github.com/bueltge/Remove-Comments-Absolutely/master/screenshot-1.png)
22 | 2. [Remove commets areas in edit post page](https://raw.github.com/bueltge/Remove-Comments-Absolutely/master/screenshot-2.png)
23 |
24 | ## Other Notes
25 | ### Bugs, technical hints or contribute
26 | Please give me feedback, contribute and file technical bugs on this
27 | [GitHub Repo](https://github.com/bueltge/Remove-Comments-Absolutely/issues), use Issues.
28 |
29 | ### License
30 | Good news, this plugin is free for everyone! Since it's released under the GPL,
31 | you can use it free of charge on your personal or commercial blog. But if you enjoy this plugin,
32 | you can thank me and leave a
33 | [small donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6069955 "Paypal Donate link")
34 | for the time I've spent writing and supporting this plugin.
35 | And I really don't want to know how many hours of my life this plugin has already eaten ;)
36 |
37 | ### Contact & Feedback
38 | The plugin is designed and developed by me ([Frank Bültge](https://bueltge.de))
39 | The plugin was also maintained about the last time with the help from [barryceelen](https://github.com/barryceelen) - Thanks a lot.
40 |
41 | Please let me know if you like the plugin or you hate it or whatever ...
42 | Please fork it, add an issue for ideas and bugs.
43 |
44 | ### Disclaimer
45 | I'm German and my English might be gruesome here and there.
46 | So please be patient with me and let me know of typos or grammatical farts. Thanks
47 |
--------------------------------------------------------------------------------
/remove-comments-absolute.php:
--------------------------------------------------------------------------------
1 | to empty string.
98 | add_filter( 'post_comments_feed_link', '__return_empty_string' );
99 |
100 | // Set content of to empty string.
101 | add_filter( 'get_comments_number', '__return_zero' );
102 |
103 | // Return empty string for post comment link, which takes care of .
104 | add_filter( 'get_comments_link', '__return_empty_string' );
105 |
106 | // Remove comments popup.
107 | add_filter( 'query_vars', array( $this, 'filter_query_vars' ) );
108 |
109 | // Remove 'Discussion Settings' help tab from post edit screen.
110 | add_action( 'admin_head-post.php', array( $this, 'remove_help_tabs' ), 10, 3 );
111 |
112 | // Remove rewrite rules used for comment feed archives.
113 | add_filter( 'comments_rewrite_rules', '__return_empty_array', 99 );
114 | // Remove rewrite rules for the legacy comment feed and post type comment pages.
115 | add_filter( 'rewrite_rules_array', array( $this, 'filter_rewrite_rules_array' ), 99 );
116 |
117 | // Return an object with each comment stat set to zero.
118 | add_filter( 'wp_count_comments', array( $this, 'filter_count_comments' ) );
119 | }
120 |
121 | /**
122 | * Handler for the action 'init'. Instantiates this class.
123 | *
124 | * @access public
125 | * @since 0.0.1
126 | * @return null|Remove_Comments_Absolute $classobj object
127 | */
128 | public static function get_object() {
129 | if ( null === self::$classobj ) {
130 | self::$classobj = new self;
131 | }
132 |
133 | return self::$classobj;
134 | }
135 |
136 | /**
137 | * Disable plugin update notifications.
138 | *
139 | * @since 1.0.0 04/02/2012
140 | * @link http://dd32.id.au/2011/03/01/disable-plugin-update-notification-for-a-specific-plugin-in-wordpress-3-1/
141 | *
142 | * @param array|string $value
143 | *
144 | * @return array|string $value
145 | */
146 | public function remove_update_nag( $value ) {
147 | if ( isset( $value->response[ plugin_basename( __FILE__ ) ] )
148 | && ! empty( $value->response[ plugin_basename( __FILE__ ) ] )
149 | ) {
150 | unset( $value->response[ plugin_basename( __FILE__ ) ] );
151 | }
152 |
153 | return $value;
154 | }
155 |
156 | /**
157 | * Set the status on posts and pages - is_singular().
158 | *
159 | * @access public
160 | * @since 0.0.1
161 | * @uses is_singular
162 | *
163 | * @param WP_Post[] $posts
164 | *
165 | * @return WP_Post[] $posts Possibly empty array of post objects.
166 | */
167 | public function set_comment_status( $posts ) {
168 |
169 | // 1. if no posts at all
170 | if ( empty( $posts ) ) {
171 | return $posts;
172 | }
173 |
174 | // 2. if not a WP_Post, we can act on
175 | if ( isset( $posts[ 0 ] ) && ! is_a( $posts[ 0 ], 'WP_Post') ) {
176 | return $posts;
177 | }
178 |
179 | // 3. if comments aren't supported at all by that post_type
180 | if ( ! post_type_supports( get_post_type( $posts[ 0 ] ), 'comments' ) ) {
181 | return $posts;
182 | }
183 |
184 | // x. if is_singular()
185 | if ( ! is_singular() ) {
186 | return $posts;
187 | }
188 |
189 | $posts[ 0 ]->comment_status = 'closed';
190 | $posts[ 0 ]->ping_status = 'closed';
191 |
192 | return $posts;
193 | }
194 |
195 | /**
196 | * Close comments, if open.
197 | *
198 | * @access public
199 | * @since 0.0.1
200 | *
201 | * @param string|boolean $open
202 | * @param string|integer $post_id
203 | *
204 | * @return bool|string $open
205 | */
206 | public function close_comments( $open, $post_id ) {
207 |
208 | // If not open, than back.
209 | if ( ! $open ) {
210 | return $open;
211 | }
212 |
213 | $post = get_post( $post_id );
214 | // For all post types.
215 | if ( $post->post_type ) {
216 | return false;
217 | } // 'closed' don`t work; @see http://codex.wordpress.org/Option_Reference#Discussion
218 |
219 | return $open;
220 | }
221 |
222 | /**
223 | * Return default closed comment status.
224 | *
225 | * @since 04/08/2013
226 | * @return string
227 | */
228 | public function return_closed() {
229 | return 'closed';
230 | }
231 |
232 | /**
233 | * Change options for don't use comments.
234 | *
235 | * Remove meta boxes on edit pages.
236 | * Remove support on all post types for comments.
237 | * Remove menu-entries.
238 | * Disallow comments pages direct access.
239 | *
240 | * @access public
241 | * @since 0.0.1
242 | * @return void
243 | */
244 | public function remove_comments() {
245 | global $pagenow;
246 |
247 | // For integer values.
248 | foreach ( array( 'comments_notify', 'default_pingback_flag' ) as $option ) {
249 | add_filter( 'pre_option_' . $option, '__return_zero' );
250 | }
251 | // For string false.
252 | foreach ( array( 'default_comment_status', 'default_ping_status' ) as $option ) {
253 | add_filter( 'pre_option_' . $option, array( $this, 'return_closed' ) );
254 | }
255 | // For all post types.
256 | // As alternative define an array( 'post', 'page' ).
257 | foreach ( get_post_types() as $post_type ) {
258 | // Remove the comments and comments status meta box.
259 | remove_meta_box( 'commentstatusdiv', $post_type, 'normal' );
260 | remove_meta_box( 'commentsdiv', $post_type, 'normal' );
261 | // Remove the trackbacks meta box.
262 | remove_meta_box( 'trackbacksdiv', $post_type, 'normal' );
263 | // Remove all comments/trackbacks from tables.
264 | if ( post_type_supports( $post_type, 'comments' ) ) {
265 | remove_post_type_support( $post_type, 'comments' );
266 | remove_post_type_support( $post_type, 'trackbacks' );
267 | }
268 | }
269 | // Filter for different pages.
270 | if ( in_array( $pagenow, self::$comment_pages, false ) ) {
271 | wp_die(
272 | esc_html__( 'Comments are disabled on this site.', 'remove_comments_absolute' ),
273 | '',
274 | array( 'response' => 403 )
275 | );
276 | exit();
277 | }
278 |
279 | // Remove dashboard meta box for recents comments.
280 | remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
281 | }
282 |
283 | /**
284 | * Remove menu-entries.
285 | *
286 | * @access public
287 | * @since 0.0.3
288 | * @uses remove_meta_box, remove_post_type_support
289 | * @return void
290 | */
291 | public function remove_menu_items() {
292 | remove_menu_page( 'edit-comments.php' );
293 | remove_submenu_page( 'options-general.php', 'options-discussion.php' );
294 | }
295 |
296 | /**
297 | * Add class for last menu entry with no 20.
298 | *
299 | * @access public
300 | * @since 0.0.1
301 | *
302 | * @param array|string $menu
303 | *
304 | * @return array|string $menu
305 | */
306 | public function add_menu_classes( $menu ) {
307 | if ( isset( $menu[ 20 ][ 4 ] ) ) {
308 | $menu[ 20 ][ 4 ] .= ' menu-top-last';
309 | }
310 |
311 | return $menu;
312 | }
313 |
314 | /**
315 | * Remove comment related elements from the admin dashboard via JS.
316 | *
317 | * @access public
318 | * @since 0.0.1
319 | * $return string with js
320 | */
321 | public function remove_dashboard_comments_areas() {
322 | ?>
323 |
337 | remove_node( 'blog-' . $GLOBALS['blog_id'] . '-c' );
358 | }
359 | // Remove entry in admin bar.
360 | $wp_admin_bar->remove_node( 'comments' );
361 | }
362 |
363 | /**
364 | * Remove comments item on network admin bar.
365 | *
366 | * @since 04/08/2013
367 | * @internal param Array $wp_admin_bar
368 | * @return void
369 | */
370 | public function remove_network_comment_items() {
371 | if ( ! is_admin_bar_showing() ) {
372 | return null;
373 | }
374 |
375 | global $wp_admin_bar;
376 |
377 | if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
378 | require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
379 | }
380 |
381 | if ( is_multisite() && is_plugin_active_for_network( plugin_basename( __FILE__ ) ) ) {
382 | foreach ( (array) $wp_admin_bar->user->blogs as $blog ) {
383 | $wp_admin_bar->remove_node( 'blog-' . $blog->userblog_id . '-c' );
384 | }
385 | }
386 | }
387 |
388 | /**
389 | * Display the links to the general feeds, without comments.
390 | *
391 | * @access public
392 | * @since 0.0.4
393 | * @uses current_theme_supports, wp_parse_args, feed_content_type, get_bloginfo, esc_attr, get_feed_link, _x, __
394 | *
395 | * @param array $args Optional arguments
396 | *
397 | * @return string
398 | */
399 | public function feed_links( $args ) {
400 | if ( ! current_theme_supports( 'automatic-feed-links' ) ) {
401 | return null;
402 | }
403 |
404 | $defaults = array(
405 | // Translators: Separator between blog name and feed type in feed links.
406 | 'separator' => _x(
407 | '»',
408 | 'feed link',
409 | 'remove_comments_absolute'
410 | ),
411 | // Translators: 1: blog title, 2: separator (raquo).
412 | 'feedtitle' => __( '%1$s %2$s Feed', 'remove_comments_absolute' ),
413 | );
414 |
415 | $args = wp_parse_args( $args, $defaults );
416 |
417 | echo '' . "\n";
425 | }
426 |
427 | /**
428 | * Display the links to the extra feeds such as category feeds.
429 | *
430 | * Copy from WP default, but without comment feed; no filter available.
431 | *
432 | * @since 04/08/2013
433 | *
434 | * @param array $args Optional argument.
435 | */
436 | public function feed_links_extra( $args ) {
437 | $defaults = array(
438 | /* Translators: Separator between blog name and feed type in feed links. */
439 | 'separator' => _x( '»', 'feed link' ),
440 | /* Translators: 1: blog name, 2: separator(raquo), 3: category name. */
441 | 'cattitle' => __( '%1$s %2$s %3$s Category Feed' ),
442 | /* Translators: 1: blog name, 2: separator(raquo), 3: tag name. */
443 | 'tagtitle' => __( '%1$s %2$s %3$s Tag Feed' ),
444 | /* Translators: 1: blog name, 2: separator(raquo), 3: author name. */
445 | 'authortitle' => __( '%1$s %2$s Posts by %3$s Feed' ),
446 | /* Translators: 1: blog name, 2: separator(raquo), 3: search phrase. */
447 | 'searchtitle' => __( '%1$s %2$s Search Results for “%3$s” Feed' ),
448 | /* Translators: 1: blog name, 2: separator(raquo), 3: post type name. */
449 | 'posttypetitle' => __( '%1$s %2$s %3$s Feed' ),
450 | );
451 |
452 | $args = wp_parse_args( $args, $defaults );
453 |
454 | if ( is_category() ) {
455 | $term = get_queried_object();
456 |
457 | if ( $term && is_object($term) ) {
458 | $title = sprintf( $args['cattitle' ], get_bloginfo( 'name' ), $args['separator' ], $term->name );
459 | $href = get_category_feed_link( $term->term_id );
460 | }
461 | } elseif ( is_tag() ) {
462 | $term = get_queried_object();
463 |
464 | if ( $term && is_object($term) ) {
465 | $title = sprintf( $args['tagtitle' ], get_bloginfo( 'name' ), $args['separator' ], $term->name );
466 | $href = get_tag_feed_link( $term->term_id );
467 | }
468 | } elseif ( is_author() ) {
469 | $author_id = (int) get_query_var( 'author' );
470 |
471 | $title = sprintf(
472 | $args['authortitle' ], get_bloginfo( 'name' ), $args['separator' ],
473 | get_the_author_meta( 'display_name', $author_id )
474 | );
475 | $href = get_author_feed_link( $author_id );
476 | } elseif ( is_search() ) {
477 | $title = sprintf(
478 | $args['searchtitle' ], get_bloginfo( 'name' ), $args['separator' ], get_search_query( false )
479 | );
480 | $href = get_search_feed_link();
481 | } elseif ( is_post_type_archive() ) {
482 | $title = sprintf(
483 | $args['posttypetitle' ], get_bloginfo( 'name' ), $args['separator' ],
484 | post_type_archive_title( '', false )
485 | );
486 | $href = get_post_type_archive_feed_link( get_queried_object()->name );
487 | }
488 |
489 | if ( isset( $title, $href ) ) {
490 | echo '' . "\n";
493 | }
494 | }
495 |
496 | /**
497 | * Redirect on comment feed, set status 301.
498 | *
499 | * @since 04/08/2013
500 | * @return null
501 | */
502 | public function filter_query() {
503 | if ( ! is_comment_feed() ) {
504 | return null;
505 | }
506 |
507 | if ( isset( $_GET['feed'] ) ) {
508 | wp_safe_redirect( remove_query_arg( 'feed' ), 301 );
509 | exit();
510 | }
511 | // Redirect_canonical will do the rest.
512 | set_query_var( 'feed', '' );
513 | }
514 |
515 | /**
516 | * Unset additional HTTP headers for pingback.
517 | *
518 | * @since 04/07/2013
519 | *
520 | * @param array $headers
521 | *
522 | * @return array $headers
523 | */
524 | public function filter_wp_headers( $headers ) {
525 | unset( $headers['X-Pingback'] );
526 |
527 | return $headers;
528 | }
529 |
530 | /**
531 | * Unregister default comment widget.
532 | *
533 | * @since 07/16/2012
534 | */
535 | public function unregister_default_wp_widgets() {
536 | unregister_widget( 'WP_Widget_Recent_Comments' );
537 | }
538 |
539 | /**
540 | * Remove options for Keyboard Shortcuts on profile page.
541 | *
542 | * @since 09/03/2012
543 | *
544 | * @return void
545 | */
546 | public function remove_profile_items() {
547 | ?>
548 |
555 | get_help_tab( 'discussion-settings' ) ) {
643 | $current_screen->remove_help_tab( 'discussion-settings' );
644 | }
645 | }
646 |
647 | /**
648 | * Remove rewrite rules for the legacy comment feed and post type comment pages.
649 | *
650 | * @since 2016-02-16
651 | *
652 | * @param array $rules The compiled array of rewrite rules.
653 | *
654 | * @return array The filtered array of rewrite rules.
655 | */
656 | public function filter_rewrite_rules_array( $rules ) {
657 | if ( is_array( $rules ) ) {
658 |
659 | // Remove the legacy comment feed rule.
660 | foreach ( $rules as $k => $v ) {
661 | if ( false !== strpos( $k, '|commentsrss2' ) ) {
662 | $new_k = str_replace( '|commentsrss2', '', $k );
663 | unset( $rules[ $k ] );
664 | $rules[ $new_k ] = $v;
665 | }
666 | }
667 |
668 | // Remove all other comment related rules.
669 | foreach ( $rules as $k => $v ) {
670 | if ( false !== strpos( $k, 'comment-page-' ) ) {
671 | unset( $rules[ $k ] );
672 | }
673 | }
674 | }
675 |
676 | return $rules;
677 | }
678 |
679 | /**
680 | * Return an object with each comment stat set to zero.
681 | *
682 | * Prevents 'wp_count_comments' form performing a database query.
683 | *
684 | * @since 2016-08-29
685 | * @see wp_count_comments
686 | * @return object Comment stats.
687 | */
688 | public function filter_count_comments() {
689 | return (object) array( 'approved' => 0,
690 | 'spam' => 0,
691 | 'trash' => 0,
692 | 'post-trashed' => 0,
693 | 'total_comments' => 0,
694 | 'all' => 0,
695 | 'moderated' => 0,
696 | );
697 | }
698 | } // end class
699 | } // end if class exists
700 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "3451d5d0d1fcd8501494ed7b28ca3125",
8 | "packages": [],
9 | "packages-dev": [
10 | {
11 | "name": "composer/semver",
12 | "version": "3.2.6",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/composer/semver.git",
16 | "reference": "83e511e247de329283478496f7a1e114c9517506"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506",
21 | "reference": "83e511e247de329283478496f7a1e114c9517506",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "php": "^5.3.2 || ^7.0 || ^8.0"
26 | },
27 | "require-dev": {
28 | "phpstan/phpstan": "^0.12.54",
29 | "symfony/phpunit-bridge": "^4.2 || ^5"
30 | },
31 | "type": "library",
32 | "extra": {
33 | "branch-alias": {
34 | "dev-main": "3.x-dev"
35 | }
36 | },
37 | "autoload": {
38 | "psr-4": {
39 | "Composer\\Semver\\": "src"
40 | }
41 | },
42 | "notification-url": "https://packagist.org/downloads/",
43 | "license": [
44 | "MIT"
45 | ],
46 | "authors": [
47 | {
48 | "name": "Nils Adermann",
49 | "email": "naderman@naderman.de",
50 | "homepage": "http://www.naderman.de"
51 | },
52 | {
53 | "name": "Jordi Boggiano",
54 | "email": "j.boggiano@seld.be",
55 | "homepage": "http://seld.be"
56 | },
57 | {
58 | "name": "Rob Bast",
59 | "email": "rob.bast@gmail.com",
60 | "homepage": "http://robbast.nl"
61 | }
62 | ],
63 | "description": "Semver library that offers utilities, version constraint parsing and validation.",
64 | "keywords": [
65 | "semantic",
66 | "semver",
67 | "validation",
68 | "versioning"
69 | ],
70 | "funding": [
71 | {
72 | "url": "https://packagist.com",
73 | "type": "custom"
74 | },
75 | {
76 | "url": "https://github.com/composer",
77 | "type": "github"
78 | },
79 | {
80 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
81 | "type": "tidelift"
82 | }
83 | ],
84 | "time": "2021-10-25T11:34:17+00:00"
85 | },
86 | {
87 | "name": "composer/xdebug-handler",
88 | "version": "2.0.2",
89 | "source": {
90 | "type": "git",
91 | "url": "https://github.com/composer/xdebug-handler.git",
92 | "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
93 | },
94 | "dist": {
95 | "type": "zip",
96 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
97 | "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
98 | "shasum": ""
99 | },
100 | "require": {
101 | "php": "^5.3.2 || ^7.0 || ^8.0",
102 | "psr/log": "^1 || ^2 || ^3"
103 | },
104 | "require-dev": {
105 | "phpstan/phpstan": "^0.12.55",
106 | "symfony/phpunit-bridge": "^4.2 || ^5"
107 | },
108 | "type": "library",
109 | "autoload": {
110 | "psr-4": {
111 | "Composer\\XdebugHandler\\": "src"
112 | }
113 | },
114 | "notification-url": "https://packagist.org/downloads/",
115 | "license": [
116 | "MIT"
117 | ],
118 | "authors": [
119 | {
120 | "name": "John Stevenson",
121 | "email": "john-stevenson@blueyonder.co.uk"
122 | }
123 | ],
124 | "description": "Restarts a process without Xdebug.",
125 | "keywords": [
126 | "Xdebug",
127 | "performance"
128 | ],
129 | "funding": [
130 | {
131 | "url": "https://packagist.com",
132 | "type": "custom"
133 | },
134 | {
135 | "url": "https://github.com/composer",
136 | "type": "github"
137 | },
138 | {
139 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
140 | "type": "tidelift"
141 | }
142 | ],
143 | "time": "2021-07-31T17:03:58+00:00"
144 | },
145 | {
146 | "name": "dealerdirect/phpcodesniffer-composer-installer",
147 | "version": "v1.0.0",
148 | "source": {
149 | "type": "git",
150 | "url": "https://github.com/PHPCSStandards/composer-installer.git",
151 | "reference": "4be43904336affa5c2f70744a348312336afd0da"
152 | },
153 | "dist": {
154 | "type": "zip",
155 | "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da",
156 | "reference": "4be43904336affa5c2f70744a348312336afd0da",
157 | "shasum": ""
158 | },
159 | "require": {
160 | "composer-plugin-api": "^1.0 || ^2.0",
161 | "php": ">=5.4",
162 | "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
163 | },
164 | "require-dev": {
165 | "composer/composer": "*",
166 | "ext-json": "*",
167 | "ext-zip": "*",
168 | "php-parallel-lint/php-parallel-lint": "^1.3.1",
169 | "phpcompatibility/php-compatibility": "^9.0",
170 | "yoast/phpunit-polyfills": "^1.0"
171 | },
172 | "type": "composer-plugin",
173 | "extra": {
174 | "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
175 | },
176 | "autoload": {
177 | "psr-4": {
178 | "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
179 | }
180 | },
181 | "notification-url": "https://packagist.org/downloads/",
182 | "license": [
183 | "MIT"
184 | ],
185 | "authors": [
186 | {
187 | "name": "Franck Nijhof",
188 | "email": "franck.nijhof@dealerdirect.com",
189 | "homepage": "http://www.frenck.nl",
190 | "role": "Developer / IT Manager"
191 | },
192 | {
193 | "name": "Contributors",
194 | "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors"
195 | }
196 | ],
197 | "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
198 | "homepage": "http://www.dealerdirect.com",
199 | "keywords": [
200 | "PHPCodeSniffer",
201 | "PHP_CodeSniffer",
202 | "code quality",
203 | "codesniffer",
204 | "composer",
205 | "installer",
206 | "phpcbf",
207 | "phpcs",
208 | "plugin",
209 | "qa",
210 | "quality",
211 | "standard",
212 | "standards",
213 | "style guide",
214 | "stylecheck",
215 | "tests"
216 | ],
217 | "time": "2023-01-05T11:28:13+00:00"
218 | },
219 | {
220 | "name": "doctrine/annotations",
221 | "version": "v1.4.0",
222 | "source": {
223 | "type": "git",
224 | "url": "https://github.com/doctrine/annotations.git",
225 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97"
226 | },
227 | "dist": {
228 | "type": "zip",
229 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97",
230 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97",
231 | "shasum": ""
232 | },
233 | "require": {
234 | "doctrine/lexer": "1.*",
235 | "php": "^5.6 || ^7.0"
236 | },
237 | "require-dev": {
238 | "doctrine/cache": "1.*",
239 | "phpunit/phpunit": "^5.7"
240 | },
241 | "type": "library",
242 | "extra": {
243 | "branch-alias": {
244 | "dev-master": "1.4.x-dev"
245 | }
246 | },
247 | "autoload": {
248 | "psr-4": {
249 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
250 | }
251 | },
252 | "notification-url": "https://packagist.org/downloads/",
253 | "license": [
254 | "MIT"
255 | ],
256 | "authors": [
257 | {
258 | "name": "Roman Borschel",
259 | "email": "roman@code-factory.org"
260 | },
261 | {
262 | "name": "Benjamin Eberlei",
263 | "email": "kontakt@beberlei.de"
264 | },
265 | {
266 | "name": "Guilherme Blanco",
267 | "email": "guilhermeblanco@gmail.com"
268 | },
269 | {
270 | "name": "Jonathan Wage",
271 | "email": "jonwage@gmail.com"
272 | },
273 | {
274 | "name": "Johannes Schmitt",
275 | "email": "schmittjoh@gmail.com"
276 | }
277 | ],
278 | "description": "Docblock Annotations Parser",
279 | "homepage": "http://www.doctrine-project.org",
280 | "keywords": [
281 | "annotations",
282 | "docblock",
283 | "parser"
284 | ],
285 | "time": "2017-02-24T16:22:25+00:00"
286 | },
287 | {
288 | "name": "doctrine/lexer",
289 | "version": "1.0.2",
290 | "source": {
291 | "type": "git",
292 | "url": "https://github.com/doctrine/lexer.git",
293 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8"
294 | },
295 | "dist": {
296 | "type": "zip",
297 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8",
298 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8",
299 | "shasum": ""
300 | },
301 | "require": {
302 | "php": ">=5.3.2"
303 | },
304 | "require-dev": {
305 | "phpunit/phpunit": "^4.5"
306 | },
307 | "type": "library",
308 | "extra": {
309 | "branch-alias": {
310 | "dev-master": "1.0.x-dev"
311 | }
312 | },
313 | "autoload": {
314 | "psr-4": {
315 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
316 | }
317 | },
318 | "notification-url": "https://packagist.org/downloads/",
319 | "license": [
320 | "MIT"
321 | ],
322 | "authors": [
323 | {
324 | "name": "Roman Borschel",
325 | "email": "roman@code-factory.org"
326 | },
327 | {
328 | "name": "Guilherme Blanco",
329 | "email": "guilhermeblanco@gmail.com"
330 | },
331 | {
332 | "name": "Johannes Schmitt",
333 | "email": "schmittjoh@gmail.com"
334 | }
335 | ],
336 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
337 | "homepage": "https://www.doctrine-project.org/projects/lexer.html",
338 | "keywords": [
339 | "annotations",
340 | "docblock",
341 | "lexer",
342 | "parser",
343 | "php"
344 | ],
345 | "time": "2019-06-08T11:03:04+00:00"
346 | },
347 | {
348 | "name": "friendsofphp/php-cs-fixer",
349 | "version": "v2.19.3",
350 | "source": {
351 | "type": "git",
352 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
353 | "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8"
354 | },
355 | "dist": {
356 | "type": "zip",
357 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/75ac86f33fab4714ea5a39a396784d83ae3b5ed8",
358 | "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8",
359 | "shasum": ""
360 | },
361 | "require": {
362 | "composer/semver": "^1.4 || ^2.0 || ^3.0",
363 | "composer/xdebug-handler": "^1.2 || ^2.0",
364 | "doctrine/annotations": "^1.2",
365 | "ext-json": "*",
366 | "ext-tokenizer": "*",
367 | "php": "^5.6 || ^7.0 || ^8.0",
368 | "php-cs-fixer/diff": "^1.3",
369 | "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0",
370 | "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
371 | "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
372 | "symfony/finder": "^3.0 || ^4.0 || ^5.0",
373 | "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
374 | "symfony/polyfill-php70": "^1.0",
375 | "symfony/polyfill-php72": "^1.4",
376 | "symfony/process": "^3.0 || ^4.0 || ^5.0",
377 | "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
378 | },
379 | "require-dev": {
380 | "justinrainbow/json-schema": "^5.0",
381 | "keradus/cli-executor": "^1.4",
382 | "mikey179/vfsstream": "^1.6",
383 | "php-coveralls/php-coveralls": "^2.4.2",
384 | "php-cs-fixer/accessible-object": "^1.0",
385 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
386 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
387 | "phpspec/prophecy-phpunit": "^1.1 || ^2.0",
388 | "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5",
389 | "phpunitgoodpractices/polyfill": "^1.5",
390 | "phpunitgoodpractices/traits": "^1.9.1",
391 | "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1",
392 | "symfony/phpunit-bridge": "^5.2.1",
393 | "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
394 | },
395 | "suggest": {
396 | "ext-dom": "For handling output formats in XML",
397 | "ext-mbstring": "For handling non-UTF8 characters.",
398 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
399 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
400 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
401 | },
402 | "bin": [
403 | "php-cs-fixer"
404 | ],
405 | "type": "application",
406 | "extra": {
407 | "branch-alias": {
408 | "dev-master": "2.19-dev"
409 | }
410 | },
411 | "autoload": {
412 | "psr-4": {
413 | "PhpCsFixer\\": "src/"
414 | },
415 | "classmap": [
416 | "tests/Test/AbstractFixerTestCase.php",
417 | "tests/Test/AbstractIntegrationCaseFactory.php",
418 | "tests/Test/AbstractIntegrationTestCase.php",
419 | "tests/Test/Assert/AssertTokensTrait.php",
420 | "tests/Test/IntegrationCase.php",
421 | "tests/Test/IntegrationCaseFactory.php",
422 | "tests/Test/IntegrationCaseFactoryInterface.php",
423 | "tests/Test/InternalIntegrationCaseFactory.php",
424 | "tests/Test/IsIdenticalConstraint.php",
425 | "tests/Test/TokensWithObservedTransformers.php",
426 | "tests/TestCase.php"
427 | ]
428 | },
429 | "notification-url": "https://packagist.org/downloads/",
430 | "license": [
431 | "MIT"
432 | ],
433 | "authors": [
434 | {
435 | "name": "Fabien Potencier",
436 | "email": "fabien@symfony.com"
437 | },
438 | {
439 | "name": "Dariusz Rumiński",
440 | "email": "dariusz.ruminski@gmail.com"
441 | }
442 | ],
443 | "description": "A tool to automatically fix PHP code style",
444 | "funding": [
445 | {
446 | "url": "https://github.com/keradus",
447 | "type": "github"
448 | }
449 | ],
450 | "time": "2021-11-15T17:17:55+00:00"
451 | },
452 | {
453 | "name": "paragonie/random_compat",
454 | "version": "v2.0.20",
455 | "source": {
456 | "type": "git",
457 | "url": "https://github.com/paragonie/random_compat.git",
458 | "reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a"
459 | },
460 | "dist": {
461 | "type": "zip",
462 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0f1f60250fccffeaf5dda91eea1c018aed1adc2a",
463 | "reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a",
464 | "shasum": ""
465 | },
466 | "require": {
467 | "php": ">=5.2.0"
468 | },
469 | "require-dev": {
470 | "phpunit/phpunit": "4.*|5.*"
471 | },
472 | "suggest": {
473 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
474 | },
475 | "type": "library",
476 | "autoload": {
477 | "files": [
478 | "lib/random.php"
479 | ]
480 | },
481 | "notification-url": "https://packagist.org/downloads/",
482 | "license": [
483 | "MIT"
484 | ],
485 | "authors": [
486 | {
487 | "name": "Paragon Initiative Enterprises",
488 | "email": "security@paragonie.com",
489 | "homepage": "https://paragonie.com"
490 | }
491 | ],
492 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
493 | "keywords": [
494 | "csprng",
495 | "polyfill",
496 | "pseudorandom",
497 | "random"
498 | ],
499 | "time": "2021-04-17T09:33:01+00:00"
500 | },
501 | {
502 | "name": "php-cs-fixer/diff",
503 | "version": "v1.3.1",
504 | "source": {
505 | "type": "git",
506 | "url": "https://github.com/PHP-CS-Fixer/diff.git",
507 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759"
508 | },
509 | "dist": {
510 | "type": "zip",
511 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759",
512 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759",
513 | "shasum": ""
514 | },
515 | "require": {
516 | "php": "^5.6 || ^7.0 || ^8.0"
517 | },
518 | "require-dev": {
519 | "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0",
520 | "symfony/process": "^3.3"
521 | },
522 | "type": "library",
523 | "autoload": {
524 | "classmap": [
525 | "src/"
526 | ]
527 | },
528 | "notification-url": "https://packagist.org/downloads/",
529 | "license": [
530 | "BSD-3-Clause"
531 | ],
532 | "authors": [
533 | {
534 | "name": "Sebastian Bergmann",
535 | "email": "sebastian@phpunit.de"
536 | },
537 | {
538 | "name": "Kore Nordmann",
539 | "email": "mail@kore-nordmann.de"
540 | },
541 | {
542 | "name": "SpacePossum"
543 | }
544 | ],
545 | "description": "sebastian/diff v2 backport support for PHP5.6",
546 | "homepage": "https://github.com/PHP-CS-Fixer",
547 | "keywords": [
548 | "diff"
549 | ],
550 | "abandoned": true,
551 | "time": "2020-10-14T08:39:05+00:00"
552 | },
553 | {
554 | "name": "phpcompatibility/php-compatibility",
555 | "version": "9.3.5",
556 | "source": {
557 | "type": "git",
558 | "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
559 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
560 | },
561 | "dist": {
562 | "type": "zip",
563 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
564 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
565 | "shasum": ""
566 | },
567 | "require": {
568 | "php": ">=5.3",
569 | "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
570 | },
571 | "conflict": {
572 | "squizlabs/php_codesniffer": "2.6.2"
573 | },
574 | "require-dev": {
575 | "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
576 | },
577 | "suggest": {
578 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
579 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
580 | },
581 | "type": "phpcodesniffer-standard",
582 | "notification-url": "https://packagist.org/downloads/",
583 | "license": [
584 | "LGPL-3.0-or-later"
585 | ],
586 | "authors": [
587 | {
588 | "name": "Wim Godden",
589 | "homepage": "https://github.com/wimg",
590 | "role": "lead"
591 | },
592 | {
593 | "name": "Juliette Reinders Folmer",
594 | "homepage": "https://github.com/jrfnl",
595 | "role": "lead"
596 | },
597 | {
598 | "name": "Contributors",
599 | "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
600 | }
601 | ],
602 | "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
603 | "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
604 | "keywords": [
605 | "compatibility",
606 | "phpcs",
607 | "standards"
608 | ],
609 | "time": "2019-12-27T09:44:58+00:00"
610 | },
611 | {
612 | "name": "phpcompatibility/phpcompatibility-paragonie",
613 | "version": "1.3.2",
614 | "source": {
615 | "type": "git",
616 | "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
617 | "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26"
618 | },
619 | "dist": {
620 | "type": "zip",
621 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26",
622 | "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26",
623 | "shasum": ""
624 | },
625 | "require": {
626 | "phpcompatibility/php-compatibility": "^9.0"
627 | },
628 | "require-dev": {
629 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
630 | "paragonie/random_compat": "dev-master",
631 | "paragonie/sodium_compat": "dev-master"
632 | },
633 | "suggest": {
634 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
635 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
636 | },
637 | "type": "phpcodesniffer-standard",
638 | "notification-url": "https://packagist.org/downloads/",
639 | "license": [
640 | "LGPL-3.0-or-later"
641 | ],
642 | "authors": [
643 | {
644 | "name": "Wim Godden",
645 | "role": "lead"
646 | },
647 | {
648 | "name": "Juliette Reinders Folmer",
649 | "role": "lead"
650 | }
651 | ],
652 | "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
653 | "homepage": "http://phpcompatibility.com/",
654 | "keywords": [
655 | "compatibility",
656 | "paragonie",
657 | "phpcs",
658 | "polyfill",
659 | "standards",
660 | "static analysis"
661 | ],
662 | "time": "2022-10-25T01:46:02+00:00"
663 | },
664 | {
665 | "name": "phpcompatibility/phpcompatibility-wp",
666 | "version": "2.1.4",
667 | "source": {
668 | "type": "git",
669 | "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
670 | "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5"
671 | },
672 | "dist": {
673 | "type": "zip",
674 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5",
675 | "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5",
676 | "shasum": ""
677 | },
678 | "require": {
679 | "phpcompatibility/php-compatibility": "^9.0",
680 | "phpcompatibility/phpcompatibility-paragonie": "^1.0"
681 | },
682 | "require-dev": {
683 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7"
684 | },
685 | "suggest": {
686 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
687 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
688 | },
689 | "type": "phpcodesniffer-standard",
690 | "notification-url": "https://packagist.org/downloads/",
691 | "license": [
692 | "LGPL-3.0-or-later"
693 | ],
694 | "authors": [
695 | {
696 | "name": "Wim Godden",
697 | "role": "lead"
698 | },
699 | {
700 | "name": "Juliette Reinders Folmer",
701 | "role": "lead"
702 | }
703 | ],
704 | "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
705 | "homepage": "http://phpcompatibility.com/",
706 | "keywords": [
707 | "compatibility",
708 | "phpcs",
709 | "standards",
710 | "static analysis",
711 | "wordpress"
712 | ],
713 | "time": "2022-10-24T09:00:36+00:00"
714 | },
715 | {
716 | "name": "psr/log",
717 | "version": "1.1.4",
718 | "source": {
719 | "type": "git",
720 | "url": "https://github.com/php-fig/log.git",
721 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
722 | },
723 | "dist": {
724 | "type": "zip",
725 | "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
726 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
727 | "shasum": ""
728 | },
729 | "require": {
730 | "php": ">=5.3.0"
731 | },
732 | "type": "library",
733 | "extra": {
734 | "branch-alias": {
735 | "dev-master": "1.1.x-dev"
736 | }
737 | },
738 | "autoload": {
739 | "psr-4": {
740 | "Psr\\Log\\": "Psr/Log/"
741 | }
742 | },
743 | "notification-url": "https://packagist.org/downloads/",
744 | "license": [
745 | "MIT"
746 | ],
747 | "authors": [
748 | {
749 | "name": "PHP-FIG",
750 | "homepage": "https://www.php-fig.org/"
751 | }
752 | ],
753 | "description": "Common interface for logging libraries",
754 | "homepage": "https://github.com/php-fig/log",
755 | "keywords": [
756 | "log",
757 | "psr",
758 | "psr-3"
759 | ],
760 | "time": "2021-05-03T11:20:27+00:00"
761 | },
762 | {
763 | "name": "squizlabs/php_codesniffer",
764 | "version": "3.7.1",
765 | "source": {
766 | "type": "git",
767 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
768 | "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
769 | },
770 | "dist": {
771 | "type": "zip",
772 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
773 | "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
774 | "shasum": ""
775 | },
776 | "require": {
777 | "ext-simplexml": "*",
778 | "ext-tokenizer": "*",
779 | "ext-xmlwriter": "*",
780 | "php": ">=5.4.0"
781 | },
782 | "require-dev": {
783 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
784 | },
785 | "bin": [
786 | "bin/phpcs",
787 | "bin/phpcbf"
788 | ],
789 | "type": "library",
790 | "extra": {
791 | "branch-alias": {
792 | "dev-master": "3.x-dev"
793 | }
794 | },
795 | "notification-url": "https://packagist.org/downloads/",
796 | "license": [
797 | "BSD-3-Clause"
798 | ],
799 | "authors": [
800 | {
801 | "name": "Greg Sherwood",
802 | "role": "lead"
803 | }
804 | ],
805 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
806 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
807 | "keywords": [
808 | "phpcs",
809 | "standards"
810 | ],
811 | "time": "2022-06-18T07:21:10+00:00"
812 | },
813 | {
814 | "name": "symfony/console",
815 | "version": "v3.4.47",
816 | "source": {
817 | "type": "git",
818 | "url": "https://github.com/symfony/console.git",
819 | "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81"
820 | },
821 | "dist": {
822 | "type": "zip",
823 | "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81",
824 | "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81",
825 | "shasum": ""
826 | },
827 | "require": {
828 | "php": "^5.5.9|>=7.0.8",
829 | "symfony/debug": "~2.8|~3.0|~4.0",
830 | "symfony/polyfill-mbstring": "~1.0"
831 | },
832 | "conflict": {
833 | "symfony/dependency-injection": "<3.4",
834 | "symfony/process": "<3.3"
835 | },
836 | "provide": {
837 | "psr/log-implementation": "1.0"
838 | },
839 | "require-dev": {
840 | "psr/log": "~1.0",
841 | "symfony/config": "~3.3|~4.0",
842 | "symfony/dependency-injection": "~3.4|~4.0",
843 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
844 | "symfony/lock": "~3.4|~4.0",
845 | "symfony/process": "~3.3|~4.0"
846 | },
847 | "suggest": {
848 | "psr/log": "For using the console logger",
849 | "symfony/event-dispatcher": "",
850 | "symfony/lock": "",
851 | "symfony/process": ""
852 | },
853 | "type": "library",
854 | "autoload": {
855 | "psr-4": {
856 | "Symfony\\Component\\Console\\": ""
857 | },
858 | "exclude-from-classmap": [
859 | "/Tests/"
860 | ]
861 | },
862 | "notification-url": "https://packagist.org/downloads/",
863 | "license": [
864 | "MIT"
865 | ],
866 | "authors": [
867 | {
868 | "name": "Fabien Potencier",
869 | "email": "fabien@symfony.com"
870 | },
871 | {
872 | "name": "Symfony Community",
873 | "homepage": "https://symfony.com/contributors"
874 | }
875 | ],
876 | "description": "Symfony Console Component",
877 | "homepage": "https://symfony.com",
878 | "funding": [
879 | {
880 | "url": "https://symfony.com/sponsor",
881 | "type": "custom"
882 | },
883 | {
884 | "url": "https://github.com/fabpot",
885 | "type": "github"
886 | },
887 | {
888 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
889 | "type": "tidelift"
890 | }
891 | ],
892 | "time": "2020-10-24T10:57:07+00:00"
893 | },
894 | {
895 | "name": "symfony/debug",
896 | "version": "v3.4.47",
897 | "source": {
898 | "type": "git",
899 | "url": "https://github.com/symfony/debug.git",
900 | "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae"
901 | },
902 | "dist": {
903 | "type": "zip",
904 | "url": "https://api.github.com/repos/symfony/debug/zipball/ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
905 | "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
906 | "shasum": ""
907 | },
908 | "require": {
909 | "php": "^5.5.9|>=7.0.8",
910 | "psr/log": "~1.0"
911 | },
912 | "conflict": {
913 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
914 | },
915 | "require-dev": {
916 | "symfony/http-kernel": "~2.8|~3.0|~4.0"
917 | },
918 | "type": "library",
919 | "autoload": {
920 | "psr-4": {
921 | "Symfony\\Component\\Debug\\": ""
922 | },
923 | "exclude-from-classmap": [
924 | "/Tests/"
925 | ]
926 | },
927 | "notification-url": "https://packagist.org/downloads/",
928 | "license": [
929 | "MIT"
930 | ],
931 | "authors": [
932 | {
933 | "name": "Fabien Potencier",
934 | "email": "fabien@symfony.com"
935 | },
936 | {
937 | "name": "Symfony Community",
938 | "homepage": "https://symfony.com/contributors"
939 | }
940 | ],
941 | "description": "Symfony Debug Component",
942 | "homepage": "https://symfony.com",
943 | "funding": [
944 | {
945 | "url": "https://symfony.com/sponsor",
946 | "type": "custom"
947 | },
948 | {
949 | "url": "https://github.com/fabpot",
950 | "type": "github"
951 | },
952 | {
953 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
954 | "type": "tidelift"
955 | }
956 | ],
957 | "abandoned": "symfony/error-handler",
958 | "time": "2020-10-24T10:57:07+00:00"
959 | },
960 | {
961 | "name": "symfony/event-dispatcher",
962 | "version": "v3.4.47",
963 | "source": {
964 | "type": "git",
965 | "url": "https://github.com/symfony/event-dispatcher.git",
966 | "reference": "31fde73757b6bad247c54597beef974919ec6860"
967 | },
968 | "dist": {
969 | "type": "zip",
970 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/31fde73757b6bad247c54597beef974919ec6860",
971 | "reference": "31fde73757b6bad247c54597beef974919ec6860",
972 | "shasum": ""
973 | },
974 | "require": {
975 | "php": "^5.5.9|>=7.0.8"
976 | },
977 | "conflict": {
978 | "symfony/dependency-injection": "<3.3"
979 | },
980 | "require-dev": {
981 | "psr/log": "~1.0",
982 | "symfony/config": "~2.8|~3.0|~4.0",
983 | "symfony/debug": "~3.4|~4.4",
984 | "symfony/dependency-injection": "~3.3|~4.0",
985 | "symfony/expression-language": "~2.8|~3.0|~4.0",
986 | "symfony/stopwatch": "~2.8|~3.0|~4.0"
987 | },
988 | "suggest": {
989 | "symfony/dependency-injection": "",
990 | "symfony/http-kernel": ""
991 | },
992 | "type": "library",
993 | "autoload": {
994 | "psr-4": {
995 | "Symfony\\Component\\EventDispatcher\\": ""
996 | },
997 | "exclude-from-classmap": [
998 | "/Tests/"
999 | ]
1000 | },
1001 | "notification-url": "https://packagist.org/downloads/",
1002 | "license": [
1003 | "MIT"
1004 | ],
1005 | "authors": [
1006 | {
1007 | "name": "Fabien Potencier",
1008 | "email": "fabien@symfony.com"
1009 | },
1010 | {
1011 | "name": "Symfony Community",
1012 | "homepage": "https://symfony.com/contributors"
1013 | }
1014 | ],
1015 | "description": "Symfony EventDispatcher Component",
1016 | "homepage": "https://symfony.com",
1017 | "funding": [
1018 | {
1019 | "url": "https://symfony.com/sponsor",
1020 | "type": "custom"
1021 | },
1022 | {
1023 | "url": "https://github.com/fabpot",
1024 | "type": "github"
1025 | },
1026 | {
1027 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1028 | "type": "tidelift"
1029 | }
1030 | ],
1031 | "time": "2020-10-24T10:57:07+00:00"
1032 | },
1033 | {
1034 | "name": "symfony/filesystem",
1035 | "version": "v3.4.47",
1036 | "source": {
1037 | "type": "git",
1038 | "url": "https://github.com/symfony/filesystem.git",
1039 | "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
1040 | },
1041 | "dist": {
1042 | "type": "zip",
1043 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
1044 | "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
1045 | "shasum": ""
1046 | },
1047 | "require": {
1048 | "php": "^5.5.9|>=7.0.8",
1049 | "symfony/polyfill-ctype": "~1.8"
1050 | },
1051 | "type": "library",
1052 | "autoload": {
1053 | "psr-4": {
1054 | "Symfony\\Component\\Filesystem\\": ""
1055 | },
1056 | "exclude-from-classmap": [
1057 | "/Tests/"
1058 | ]
1059 | },
1060 | "notification-url": "https://packagist.org/downloads/",
1061 | "license": [
1062 | "MIT"
1063 | ],
1064 | "authors": [
1065 | {
1066 | "name": "Fabien Potencier",
1067 | "email": "fabien@symfony.com"
1068 | },
1069 | {
1070 | "name": "Symfony Community",
1071 | "homepage": "https://symfony.com/contributors"
1072 | }
1073 | ],
1074 | "description": "Symfony Filesystem Component",
1075 | "homepage": "https://symfony.com",
1076 | "funding": [
1077 | {
1078 | "url": "https://symfony.com/sponsor",
1079 | "type": "custom"
1080 | },
1081 | {
1082 | "url": "https://github.com/fabpot",
1083 | "type": "github"
1084 | },
1085 | {
1086 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1087 | "type": "tidelift"
1088 | }
1089 | ],
1090 | "time": "2020-10-24T10:57:07+00:00"
1091 | },
1092 | {
1093 | "name": "symfony/finder",
1094 | "version": "v3.4.47",
1095 | "source": {
1096 | "type": "git",
1097 | "url": "https://github.com/symfony/finder.git",
1098 | "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e"
1099 | },
1100 | "dist": {
1101 | "type": "zip",
1102 | "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
1103 | "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
1104 | "shasum": ""
1105 | },
1106 | "require": {
1107 | "php": "^5.5.9|>=7.0.8"
1108 | },
1109 | "type": "library",
1110 | "autoload": {
1111 | "psr-4": {
1112 | "Symfony\\Component\\Finder\\": ""
1113 | },
1114 | "exclude-from-classmap": [
1115 | "/Tests/"
1116 | ]
1117 | },
1118 | "notification-url": "https://packagist.org/downloads/",
1119 | "license": [
1120 | "MIT"
1121 | ],
1122 | "authors": [
1123 | {
1124 | "name": "Fabien Potencier",
1125 | "email": "fabien@symfony.com"
1126 | },
1127 | {
1128 | "name": "Symfony Community",
1129 | "homepage": "https://symfony.com/contributors"
1130 | }
1131 | ],
1132 | "description": "Symfony Finder Component",
1133 | "homepage": "https://symfony.com",
1134 | "funding": [
1135 | {
1136 | "url": "https://symfony.com/sponsor",
1137 | "type": "custom"
1138 | },
1139 | {
1140 | "url": "https://github.com/fabpot",
1141 | "type": "github"
1142 | },
1143 | {
1144 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1145 | "type": "tidelift"
1146 | }
1147 | ],
1148 | "time": "2020-11-16T17:02:08+00:00"
1149 | },
1150 | {
1151 | "name": "symfony/options-resolver",
1152 | "version": "v3.4.47",
1153 | "source": {
1154 | "type": "git",
1155 | "url": "https://github.com/symfony/options-resolver.git",
1156 | "reference": "c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744"
1157 | },
1158 | "dist": {
1159 | "type": "zip",
1160 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744",
1161 | "reference": "c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744",
1162 | "shasum": ""
1163 | },
1164 | "require": {
1165 | "php": "^5.5.9|>=7.0.8"
1166 | },
1167 | "type": "library",
1168 | "autoload": {
1169 | "psr-4": {
1170 | "Symfony\\Component\\OptionsResolver\\": ""
1171 | },
1172 | "exclude-from-classmap": [
1173 | "/Tests/"
1174 | ]
1175 | },
1176 | "notification-url": "https://packagist.org/downloads/",
1177 | "license": [
1178 | "MIT"
1179 | ],
1180 | "authors": [
1181 | {
1182 | "name": "Fabien Potencier",
1183 | "email": "fabien@symfony.com"
1184 | },
1185 | {
1186 | "name": "Symfony Community",
1187 | "homepage": "https://symfony.com/contributors"
1188 | }
1189 | ],
1190 | "description": "Symfony OptionsResolver Component",
1191 | "homepage": "https://symfony.com",
1192 | "keywords": [
1193 | "config",
1194 | "configuration",
1195 | "options"
1196 | ],
1197 | "funding": [
1198 | {
1199 | "url": "https://symfony.com/sponsor",
1200 | "type": "custom"
1201 | },
1202 | {
1203 | "url": "https://github.com/fabpot",
1204 | "type": "github"
1205 | },
1206 | {
1207 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1208 | "type": "tidelift"
1209 | }
1210 | ],
1211 | "time": "2020-10-24T10:57:07+00:00"
1212 | },
1213 | {
1214 | "name": "symfony/polyfill-ctype",
1215 | "version": "v1.19.0",
1216 | "source": {
1217 | "type": "git",
1218 | "url": "https://github.com/symfony/polyfill-ctype.git",
1219 | "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
1220 | },
1221 | "dist": {
1222 | "type": "zip",
1223 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
1224 | "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
1225 | "shasum": ""
1226 | },
1227 | "require": {
1228 | "php": ">=5.3.3"
1229 | },
1230 | "suggest": {
1231 | "ext-ctype": "For best performance"
1232 | },
1233 | "type": "library",
1234 | "extra": {
1235 | "branch-alias": {
1236 | "dev-main": "1.19-dev"
1237 | },
1238 | "thanks": {
1239 | "name": "symfony/polyfill",
1240 | "url": "https://github.com/symfony/polyfill"
1241 | }
1242 | },
1243 | "autoload": {
1244 | "files": [
1245 | "bootstrap.php"
1246 | ],
1247 | "psr-4": {
1248 | "Symfony\\Polyfill\\Ctype\\": ""
1249 | }
1250 | },
1251 | "notification-url": "https://packagist.org/downloads/",
1252 | "license": [
1253 | "MIT"
1254 | ],
1255 | "authors": [
1256 | {
1257 | "name": "Gert de Pagter",
1258 | "email": "BackEndTea@gmail.com"
1259 | },
1260 | {
1261 | "name": "Symfony Community",
1262 | "homepage": "https://symfony.com/contributors"
1263 | }
1264 | ],
1265 | "description": "Symfony polyfill for ctype functions",
1266 | "homepage": "https://symfony.com",
1267 | "keywords": [
1268 | "compatibility",
1269 | "ctype",
1270 | "polyfill",
1271 | "portable"
1272 | ],
1273 | "funding": [
1274 | {
1275 | "url": "https://symfony.com/sponsor",
1276 | "type": "custom"
1277 | },
1278 | {
1279 | "url": "https://github.com/fabpot",
1280 | "type": "github"
1281 | },
1282 | {
1283 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1284 | "type": "tidelift"
1285 | }
1286 | ],
1287 | "time": "2020-10-23T09:01:57+00:00"
1288 | },
1289 | {
1290 | "name": "symfony/polyfill-mbstring",
1291 | "version": "v1.19.0",
1292 | "source": {
1293 | "type": "git",
1294 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1295 | "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
1296 | },
1297 | "dist": {
1298 | "type": "zip",
1299 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
1300 | "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
1301 | "shasum": ""
1302 | },
1303 | "require": {
1304 | "php": ">=5.3.3"
1305 | },
1306 | "suggest": {
1307 | "ext-mbstring": "For best performance"
1308 | },
1309 | "type": "library",
1310 | "extra": {
1311 | "branch-alias": {
1312 | "dev-main": "1.19-dev"
1313 | },
1314 | "thanks": {
1315 | "name": "symfony/polyfill",
1316 | "url": "https://github.com/symfony/polyfill"
1317 | }
1318 | },
1319 | "autoload": {
1320 | "files": [
1321 | "bootstrap.php"
1322 | ],
1323 | "psr-4": {
1324 | "Symfony\\Polyfill\\Mbstring\\": ""
1325 | }
1326 | },
1327 | "notification-url": "https://packagist.org/downloads/",
1328 | "license": [
1329 | "MIT"
1330 | ],
1331 | "authors": [
1332 | {
1333 | "name": "Nicolas Grekas",
1334 | "email": "p@tchwork.com"
1335 | },
1336 | {
1337 | "name": "Symfony Community",
1338 | "homepage": "https://symfony.com/contributors"
1339 | }
1340 | ],
1341 | "description": "Symfony polyfill for the Mbstring extension",
1342 | "homepage": "https://symfony.com",
1343 | "keywords": [
1344 | "compatibility",
1345 | "mbstring",
1346 | "polyfill",
1347 | "portable",
1348 | "shim"
1349 | ],
1350 | "funding": [
1351 | {
1352 | "url": "https://symfony.com/sponsor",
1353 | "type": "custom"
1354 | },
1355 | {
1356 | "url": "https://github.com/fabpot",
1357 | "type": "github"
1358 | },
1359 | {
1360 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1361 | "type": "tidelift"
1362 | }
1363 | ],
1364 | "time": "2020-10-23T09:01:57+00:00"
1365 | },
1366 | {
1367 | "name": "symfony/polyfill-php70",
1368 | "version": "v1.19.0",
1369 | "source": {
1370 | "type": "git",
1371 | "url": "https://github.com/symfony/polyfill-php70.git",
1372 | "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
1373 | },
1374 | "dist": {
1375 | "type": "zip",
1376 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
1377 | "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
1378 | "shasum": ""
1379 | },
1380 | "require": {
1381 | "paragonie/random_compat": "~1.0|~2.0|~9.99",
1382 | "php": ">=5.3.3"
1383 | },
1384 | "type": "library",
1385 | "extra": {
1386 | "branch-alias": {
1387 | "dev-main": "1.19-dev"
1388 | },
1389 | "thanks": {
1390 | "name": "symfony/polyfill",
1391 | "url": "https://github.com/symfony/polyfill"
1392 | }
1393 | },
1394 | "autoload": {
1395 | "files": [
1396 | "bootstrap.php"
1397 | ],
1398 | "psr-4": {
1399 | "Symfony\\Polyfill\\Php70\\": ""
1400 | },
1401 | "classmap": [
1402 | "Resources/stubs"
1403 | ]
1404 | },
1405 | "notification-url": "https://packagist.org/downloads/",
1406 | "license": [
1407 | "MIT"
1408 | ],
1409 | "authors": [
1410 | {
1411 | "name": "Nicolas Grekas",
1412 | "email": "p@tchwork.com"
1413 | },
1414 | {
1415 | "name": "Symfony Community",
1416 | "homepage": "https://symfony.com/contributors"
1417 | }
1418 | ],
1419 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
1420 | "homepage": "https://symfony.com",
1421 | "keywords": [
1422 | "compatibility",
1423 | "polyfill",
1424 | "portable",
1425 | "shim"
1426 | ],
1427 | "funding": [
1428 | {
1429 | "url": "https://symfony.com/sponsor",
1430 | "type": "custom"
1431 | },
1432 | {
1433 | "url": "https://github.com/fabpot",
1434 | "type": "github"
1435 | },
1436 | {
1437 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1438 | "type": "tidelift"
1439 | }
1440 | ],
1441 | "time": "2020-10-23T09:01:57+00:00"
1442 | },
1443 | {
1444 | "name": "symfony/polyfill-php72",
1445 | "version": "v1.19.0",
1446 | "source": {
1447 | "type": "git",
1448 | "url": "https://github.com/symfony/polyfill-php72.git",
1449 | "reference": "beecef6b463b06954638f02378f52496cb84bacc"
1450 | },
1451 | "dist": {
1452 | "type": "zip",
1453 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
1454 | "reference": "beecef6b463b06954638f02378f52496cb84bacc",
1455 | "shasum": ""
1456 | },
1457 | "require": {
1458 | "php": ">=5.3.3"
1459 | },
1460 | "type": "library",
1461 | "extra": {
1462 | "branch-alias": {
1463 | "dev-main": "1.19-dev"
1464 | },
1465 | "thanks": {
1466 | "name": "symfony/polyfill",
1467 | "url": "https://github.com/symfony/polyfill"
1468 | }
1469 | },
1470 | "autoload": {
1471 | "files": [
1472 | "bootstrap.php"
1473 | ],
1474 | "psr-4": {
1475 | "Symfony\\Polyfill\\Php72\\": ""
1476 | }
1477 | },
1478 | "notification-url": "https://packagist.org/downloads/",
1479 | "license": [
1480 | "MIT"
1481 | ],
1482 | "authors": [
1483 | {
1484 | "name": "Nicolas Grekas",
1485 | "email": "p@tchwork.com"
1486 | },
1487 | {
1488 | "name": "Symfony Community",
1489 | "homepage": "https://symfony.com/contributors"
1490 | }
1491 | ],
1492 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
1493 | "homepage": "https://symfony.com",
1494 | "keywords": [
1495 | "compatibility",
1496 | "polyfill",
1497 | "portable",
1498 | "shim"
1499 | ],
1500 | "funding": [
1501 | {
1502 | "url": "https://symfony.com/sponsor",
1503 | "type": "custom"
1504 | },
1505 | {
1506 | "url": "https://github.com/fabpot",
1507 | "type": "github"
1508 | },
1509 | {
1510 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1511 | "type": "tidelift"
1512 | }
1513 | ],
1514 | "time": "2020-10-23T09:01:57+00:00"
1515 | },
1516 | {
1517 | "name": "symfony/process",
1518 | "version": "v3.4.47",
1519 | "source": {
1520 | "type": "git",
1521 | "url": "https://github.com/symfony/process.git",
1522 | "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca"
1523 | },
1524 | "dist": {
1525 | "type": "zip",
1526 | "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca",
1527 | "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca",
1528 | "shasum": ""
1529 | },
1530 | "require": {
1531 | "php": "^5.5.9|>=7.0.8"
1532 | },
1533 | "type": "library",
1534 | "autoload": {
1535 | "psr-4": {
1536 | "Symfony\\Component\\Process\\": ""
1537 | },
1538 | "exclude-from-classmap": [
1539 | "/Tests/"
1540 | ]
1541 | },
1542 | "notification-url": "https://packagist.org/downloads/",
1543 | "license": [
1544 | "MIT"
1545 | ],
1546 | "authors": [
1547 | {
1548 | "name": "Fabien Potencier",
1549 | "email": "fabien@symfony.com"
1550 | },
1551 | {
1552 | "name": "Symfony Community",
1553 | "homepage": "https://symfony.com/contributors"
1554 | }
1555 | ],
1556 | "description": "Symfony Process Component",
1557 | "homepage": "https://symfony.com",
1558 | "funding": [
1559 | {
1560 | "url": "https://symfony.com/sponsor",
1561 | "type": "custom"
1562 | },
1563 | {
1564 | "url": "https://github.com/fabpot",
1565 | "type": "github"
1566 | },
1567 | {
1568 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1569 | "type": "tidelift"
1570 | }
1571 | ],
1572 | "time": "2020-10-24T10:57:07+00:00"
1573 | },
1574 | {
1575 | "name": "symfony/stopwatch",
1576 | "version": "v3.4.47",
1577 | "source": {
1578 | "type": "git",
1579 | "url": "https://github.com/symfony/stopwatch.git",
1580 | "reference": "298b81faad4ce60e94466226b2abbb8c9bca7462"
1581 | },
1582 | "dist": {
1583 | "type": "zip",
1584 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/298b81faad4ce60e94466226b2abbb8c9bca7462",
1585 | "reference": "298b81faad4ce60e94466226b2abbb8c9bca7462",
1586 | "shasum": ""
1587 | },
1588 | "require": {
1589 | "php": "^5.5.9|>=7.0.8"
1590 | },
1591 | "type": "library",
1592 | "autoload": {
1593 | "psr-4": {
1594 | "Symfony\\Component\\Stopwatch\\": ""
1595 | },
1596 | "exclude-from-classmap": [
1597 | "/Tests/"
1598 | ]
1599 | },
1600 | "notification-url": "https://packagist.org/downloads/",
1601 | "license": [
1602 | "MIT"
1603 | ],
1604 | "authors": [
1605 | {
1606 | "name": "Fabien Potencier",
1607 | "email": "fabien@symfony.com"
1608 | },
1609 | {
1610 | "name": "Symfony Community",
1611 | "homepage": "https://symfony.com/contributors"
1612 | }
1613 | ],
1614 | "description": "Symfony Stopwatch Component",
1615 | "homepage": "https://symfony.com",
1616 | "funding": [
1617 | {
1618 | "url": "https://symfony.com/sponsor",
1619 | "type": "custom"
1620 | },
1621 | {
1622 | "url": "https://github.com/fabpot",
1623 | "type": "github"
1624 | },
1625 | {
1626 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1627 | "type": "tidelift"
1628 | }
1629 | ],
1630 | "time": "2020-10-24T10:57:07+00:00"
1631 | },
1632 | {
1633 | "name": "wp-coding-standards/wpcs",
1634 | "version": "2.3.0",
1635 | "source": {
1636 | "type": "git",
1637 | "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
1638 | "reference": "7da1894633f168fe244afc6de00d141f27517b62"
1639 | },
1640 | "dist": {
1641 | "type": "zip",
1642 | "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
1643 | "reference": "7da1894633f168fe244afc6de00d141f27517b62",
1644 | "shasum": ""
1645 | },
1646 | "require": {
1647 | "php": ">=5.4",
1648 | "squizlabs/php_codesniffer": "^3.3.1"
1649 | },
1650 | "require-dev": {
1651 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
1652 | "phpcompatibility/php-compatibility": "^9.0",
1653 | "phpcsstandards/phpcsdevtools": "^1.0",
1654 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
1655 | },
1656 | "suggest": {
1657 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
1658 | },
1659 | "type": "phpcodesniffer-standard",
1660 | "notification-url": "https://packagist.org/downloads/",
1661 | "license": [
1662 | "MIT"
1663 | ],
1664 | "authors": [
1665 | {
1666 | "name": "Contributors",
1667 | "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
1668 | }
1669 | ],
1670 | "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
1671 | "keywords": [
1672 | "phpcs",
1673 | "standards",
1674 | "wordpress"
1675 | ],
1676 | "time": "2020-05-13T23:57:56+00:00"
1677 | }
1678 | ],
1679 | "aliases": [],
1680 | "minimum-stability": "stable",
1681 | "stability-flags": [],
1682 | "prefer-stable": false,
1683 | "prefer-lowest": false,
1684 | "platform": {
1685 | "php": ">=5.3"
1686 | },
1687 | "platform-dev": [],
1688 | "plugin-api-version": "1.1.0"
1689 | }
1690 |
--------------------------------------------------------------------------------