@ 2016-09-23T15:14:59Z <?php
function wp_insert_post( $postarr, $wp_error = false ) {
global $wpdb;
$user_id = get_current_user_id();
$defaults = array(
'post_author' => $user_id,
'post_content' => '',
'post_content_filtered' => '',
'post_title' => '',
'post_excerpt' => '',
'post_status' => 'draft',
'post_type' => 'post',
'comment_status' => '',
'ping_status' => '',
'post_password' => '',
'to_ping' => '',
'pinged' => '',
'post_parent' => 0,
'menu_order' => 0,
'guid' => '',
'import_id' => 0,
'context' => '',
);
$postarr = wp_parse_args($postarr, $defaults);
unset( $postarr[ 'filter' ] );
$postarr = sanitize_post($postarr, 'db');
// Are we updating or creating?
$post_ID = 0;
$update = false;
$guid = $postarr['guid'];
if ( ! empty( $postarr['ID'] ) ) {
$update = true;
// Get the post ID and GUID.
$post_ID = $postarr['ID'];
$post_before = get_post( $post_ID );
if ( is_null( $post_before ) ) {
if ( $wp_error ) {
return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
}
return 0;
}
$guid = get_post_field( 'guid', $post_ID );
$previous_status = get_post_field('post_status', $post_ID );
} else {
$previous_status = 'new';
}
$post_type = empty( $postarr['post_type'] ) ? 'post' : $postarr['post_type'];
$post_title = $postarr['post_title'];
$post_content = $postarr['post_content'];
$post_excerpt = $postarr['post_excerpt'];
if ( isset( $postarr['post_name'] ) ) {
$post_name = $postarr['post_name'];
}
$maybe_empty = 'attachment' !== $post_type
&& ! $post_content && ! $post_title && ! $post_excerpt
&& post_type_supports( $post_type, 'editor' )
&& post_type_supports( $post_type, 'title' )
&& post_type_supports( $post_type, 'excerpt' );
/**
* Filter whether the post should be considered "empty".
*
* The post is considered "empty" if both:
* 1. The post type supports the title, editor, and excerpt fields
* 2. The title, editor, and excerpt fields are all empty
*
* Returning a truthy value to the filter will effectively short-circuit
* the new post being inserted, returning 0. If $wp_error is true, a WP_Error
* will be returned instead.
*
* @since 3.3.0
*
* @param bool $maybe_empty Whether the post should be considered "empty".
* @param array $postarr Array of post data.
*/
if ( apply_filters( 'wp_insert_post_empty_content', $maybe_empty, $postarr ) ) {
if ( $wp_error ) {
return new WP_Error( 'empty_content', __( 'Content, title, and excerpt are empty.' ) );
} else {
return 0;
}
}
$post_status = empty( $postarr['post_status'] ) ? 'draft' : $postarr['post_status'];
if ( 'attachment' === $post_type && ! in_array( $post_status, array( 'inherit', 'private', 'trash' ) ) ) {
$post_status = 'inherit';
}
if ( ! empty( $postarr['post_category'] ) ) {
// Filter out empty terms.
$post_category = array_filter( $postarr['post_category'] );
}
// Make sure we set a valid category.
if ( empty( $post_category ) || 0 == count( $post_category ) || ! is_array( $post_category ) ) {
// 'post' requires at least one category.
if ( 'post' == $post_type && 'auto-draft' != $post_status ) {
$post_category = array( get_option('default_category') );
} else {
$post_category = array();
}
}
// Don't allow contributors to set the post slug for pending review posts.
if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) ) {
$post_name = '';
}
/*
* Create a valid post name. Drafts and pending posts are allowed to have
* an empty post name.
*/
if ( empty($post_name) ) {
if ( !in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) ) {
$post_name = sanitize_title($post_title);
} else {
$post_name = '';
}
} else {
// On updates, we need to check to see if it's using the old, fixed sanitization context.
$check_name = sanitize_title( $post_name, '', 'old-save' );
if ( $update && strtolower( urlencode( $post_name ) ) == $check_name && get_post_field( 'post_name', $post_ID ) == $check_name ) {
$post_name = $check_name;
} else { // new post, or slug has changed.
$post_name = sanitize_title($post_name);
}
}
/*
* If the post date is empty (due to having been new or a draft) and status
* is not 'draft' or 'pending', set date to now.
*/
if ( empty( $postarr['post_date'] ) || '0000-00-00 00:00:00' == $postarr['post_date'] ) {
if ( empty( $postarr['post_date_gmt'] ) || '0000-00-00 00:00:00' == $postarr['post_date_gmt'] ) {
$post_date = current_time( 'mysql' );
} else {
$post_date = get_date_from_gmt( $postarr['post_date_gmt'] );
}
} else {
$post_date = $postarr['post_date'];
}
// Validate the date.
$mm = substr( $post_date, 5, 2 );
$jj = substr( $post_date, 8, 2 );
$aa = substr( $post_date, 0, 4 );
$valid_date = wp_checkdate( $mm, $jj, $aa, $post_date );
if ( ! $valid_date ) {
if ( $wp_error ) {
return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
} else {
return 0;
}
}
if ( empty( $postarr['post_date_gmt'] ) || '0000-00-00 00:00:00' == $postarr['post_date_gmt'] ) {
if ( ! in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) ) {
$post_date_gmt = get_gmt_from_date( $post_date );
} else {
$post_date_gmt = '0000-00-00 00:00:00';
}
} else {
$post_date_gmt = $postarr['post_date_gmt'];
}
if ( $update || '0000-00-00 00:00:00' == $post_date ) {
$post_modified = current_time( 'mysql' );
$post_modified_gmt = current_time( 'mysql', 1 );
} else {
$post_modified = $post_date;
$post_modified_gmt = $post_date_gmt;
}
if ( 'attachment' !== $post_type ) {
if ( 'publish' == $post_status ) {
$now = gmdate('Y-m-d H:i:59');
if ( mysql2date('U', $post_date_gmt, false) > mysql2date('U', $now, false) ) {
$post_status = 'future';
}
} elseif ( 'future' == $post_status ) {
$now = gmdate('Y-m-d H:i:59');
if ( mysql2date('U', $post_date_gmt, false) <= mysql2date('U', $now, false) ) {
$post_status = 'publish';
}
}
}
// Comment status.
if ( empty( $postarr['comment_status'] ) ) {
if ( $update ) {
$comment_status = 'closed';
} else {
$comment_status = get_default_comment_status( $post_type );
}
} else {
$comment_status = $postarr['comment_status'];
}
// These variables are needed by compact() later.
$post_content_filtered = $postarr['post_content_filtered'];
$post_author = isset( $postarr['post_author'] ) ? $postarr['post_author'] : $user_id;
$ping_status = empty( $postarr['ping_status'] ) ? get_default_comment_status( $post_type, 'pingback' ) : $postarr['ping_status'];
$to_ping = isset( $postarr['to_ping'] ) ? sanitize_trackback_urls( $postarr['to_ping'] ) : '';
$pinged = isset( $postarr['pinged'] ) ? $postarr['pinged'] : '';
$import_id = isset( $postarr['import_id'] ) ? $postarr['import_id'] : 0;
/*
* The 'wp_insert_post_parent' filter expects all variables to be present.
* Previously, these variables would have already been extracted
*/
if ( isset( $postarr['menu_order'] ) ) {
$menu_order = (int) $postarr['menu_order'];
} else {
$menu_order = 0;
}
$post_password = isset( $postarr['post_password'] ) ? $postarr['post_password'] : '';
if ( 'private' == $post_status ) {
$post_password = '';
}
if ( isset( $postarr['post_parent'] ) ) {
$post_parent = (int) $postarr['post_parent'];
} else {
$post_parent = 0;
}
/**
* Filter the post parent -- used to check for and prevent hierarchy loops.
*
* @since 3.1.0
*
* @param int $post_parent Post parent ID.
* @param int $post_ID Post ID.
* @param array $new_postarr Array of parsed post data.
* @param array $postarr Array of sanitized, but otherwise unmodified post data.
*/
$post_parent = apply_filters( 'wp_insert_post_parent', $post_parent, $post_ID, compact( array_keys( $postarr ) ), $postarr );
$post_name = wp_unique_post_slug( $post_name, $post_ID, $post_status, $post_type, $post_parent );
// Don't unslash.
$post_mime_type = isset( $postarr['post_mime_type'] ) ? $postarr['post_mime_type'] : '';
// Expected_slashed (everything!).
$data = compact( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' );
$emoji_fields = array( 'post_title', 'post_content', 'post_excerpt' );
foreach ( $emoji_fields as $emoji_field ) {
if ( isset( $data[ $emoji_field ] ) ) {
$charset = $wpdb->get_col_charset( $wpdb->posts, $emoji_field );
if ( 'utf8' === $charset ) {
$data[ $emoji_field ] = wp_encode_emoji( $data[ $emoji_field ] );
}
}
}
if ( 'attachment' === $post_type ) {
/**
* Filter attachment post data before it is updated in or added to the database.
*
* @since 3.9.0
*
* @param array $data An array of sanitized attachment post data.
* @param array $postarr An array of unsanitized attachment post data.
*/
$data = apply_filters( 'wp_insert_attachment_data', $data, $postarr );
} else {
/**
* Filter slashed post data just before it is inserted into the database.
*
* @since 2.7.0
*
* @param array $data An array of slashed post data.
* @param array $postarr An array of sanitized, but otherwise unmodified post data.
*/
$data = apply_filters( 'wp_insert_post_data', $data, $postarr );
}
$data = wp_unslash( $data );
$where = array( 'ID' => $post_ID );
if ( $update ) {
/**
* Fires immediately before an existing post is updated in the database.
*
* @since 2.5.0
*
* @param int $post_ID Post ID.
* @param array $data Array of unslashed post data.
*/
do_action( 'pre_post_update', $post_ID, $data );
if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
if ( $wp_error ) {
return new WP_Error('db_update_error', __('Could not update post in the database'), $wpdb->last_error);
} else {
return 0;
}
}
} else {
// If there is a suggested ID, use it if not already present.
if ( ! empty( $import_id ) ) {
$import_id = (int) $import_id;
if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {
$data['ID'] = $import_id;
}
}
if ( false === $wpdb->insert( $wpdb->posts, $data ) ) {
if ( $wp_error ) {
return new WP_Error('db_insert_error', __('Could not insert post into the database'), $wpdb->last_error);
} else {
return 0;
}
}
$post_ID = (int) $wpdb->insert_id;
// Use the newly generated $post_ID.
$where = array( 'ID' => $post_ID );
}
if ( empty( $data['post_name'] ) && ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
clean_post_cache( $post_ID );
}
if ( is_object_in_taxonomy( $post_type, 'category' ) ) {
wp_set_post_categories( $post_ID, $post_category );
}
if ( isset( $postarr['tags_input'] ) && is_object_in_taxonomy( $post_type, 'post_tag' ) ) {
wp_set_post_tags( $post_ID, $postarr['tags_input'] );
}
// New-style support for all custom taxonomies.
if ( ! empty( $postarr['tax_input'] ) ) {
foreach ( $postarr['tax_input'] as $taxonomy => $tags ) {
$taxonomy_obj = get_taxonomy($taxonomy);
if ( ! $taxonomy_obj ) {
/* translators: %s: taxonomy name */
_doing_it_wrong( __FUNCTION__, sprintf( __( 'Invalid taxonomy: %s.' ), $taxonomy ), '4.4.0' );
continue;
}
// array = hierarchical, string = non-hierarchical.
if ( is_array( $tags ) ) {
$tags = array_filter($tags);
}
if ( current_user_can( $taxonomy_obj->cap->assign_terms ) ) {
wp_set_post_terms( $post_ID, $tags, $taxonomy );
}
}
}
if ( ! empty( $postarr['meta_input'] ) ) {
foreach ( $postarr['meta_input'] as $field => $value ) {
update_post_meta( $post_ID, $field, $value );
}
}
$current_guid = get_post_field( 'guid', $post_ID );
// Set GUID.
if ( ! $update && '' == $current_guid ) {
$wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_ID ) ), $where );
}
if ( 'attachment' === $postarr['post_type'] ) {
if ( ! empty( $postarr['file'] ) ) {
update_attached_file( $post_ID, $postarr['file'] );
}
if ( ! empty( $postarr['context'] ) ) {
add_post_meta( $post_ID, '_wp_attachment_context', $postarr['context'], true );
}
}
clean_post_cache( $post_ID );
$post = get_post( $post_ID );
if ( ! empty( $postarr['page_template'] ) && 'page' == $data['post_type'] ) {
$post->page_template = $postarr['page_template'];
$page_templates = wp_get_theme()->get_page_templates( $post );
if ( 'default' != $postarr['page_template'] && ! isset( $page_templates[ $postarr['page_template'] ] ) ) {
if ( $wp_error ) {
return new WP_Error('invalid_page_template', __('The page template is invalid.'));
}
update_post_meta( $post_ID, '_wp_page_template', 'default' );
} else {
update_post_meta( $post_ID, '_wp_page_template', $postarr['page_template'] );
}
}
if ( 'attachment' !== $postarr['post_type'] ) {
wp_transition_post_status( $data['post_status'], $previous_status, $post );
} else {
if ( $update ) {
/**
* Fires once an existing attachment has been updated.
*
* @since 2.0.0
*
* @param int $post_ID Attachment ID.
*/
do_action( 'edit_attachment', $post_ID );
$post_after = get_post( $post_ID );
/**
* Fires once an existing attachment has been updated.
*
* @since 4.4.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post_after Post object following the update.
* @param WP_Post $post_before Post object before the update.
*/
do_action( 'attachment_updated', $post_ID, $post_after, $post_before );
} else {
/**
* Fires once an attachment has been added.
*
* @since 2.0.0
*
* @param int $post_ID Attachment ID.
*/
do_action( 'add_attachment', $post_ID );
}
return $post_ID;
}
if ( $update ) {
/**
* Fires once an existing post has been updated.
*
* @since 1.2.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post Post object.
*/
do_action( 'edit_post', $post_ID, $post );
$post_after = get_post($post_ID);
/**
* Fires once an existing post has been updated.
*
* @since 3.0.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post_after Post object following the update.
* @param WP_Post $post_before Post object before the update.
*/
do_action( 'post_updated', $post_ID, $post_after, $post_before);
}
/**
* Fires once a post has been saved.
*
* The dynamic portion of the hook name, `$post->post_type`, refers to
* the post type slug.
*
* @since 3.7.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post Post object.
* @param bool $update Whether this is an existing post being updated or not.
*/
do_action( "save_post_{$post->post_type}", $post_ID, $post, $update );
/**
* Fires once a post has been saved.
*
* @since 1.5.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post Post object.
* @param bool $update Whether this is an existing post being updated or not.
*/
do_action( 'save_post', $post_ID, $post, $update );
/**
* Fires once a post has been saved.
*
* @since 2.0.0
*
* @param int $post_ID Post ID.
* @param WP_Post $post Post object.
* @param bool $update Whether this is an existing post being updated or not.
*/
do_action( 'wp_insert_post', $post_ID, $post, $update );
return $post_ID;
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Abusive script This script was stopped while abusing our resources
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.11 0.003 0.006 20.94 8.3.10 0.006 0.003 16.86 8.3.9 0.004 0.004 18.56 8.3.8 0.003 0.006 18.30 8.3.7 0.010 0.010 16.88 8.3.6 0.004 0.011 16.75 8.3.5 0.020 0.000 21.09 8.3.4 0.006 0.012 18.70 8.3.3 0.007 0.007 18.84 8.3.2 0.004 0.004 20.55 8.3.1 0.005 0.003 20.26 8.3.0 0.008 0.000 22.03 8.2.23 0.004 0.004 22.58 8.2.22 0.008 0.000 24.06 8.2.21 0.006 0.003 26.77 8.2.20 0.010 0.003 16.88 8.2.19 0.012 0.003 16.75 8.2.18 0.016 0.006 18.41 8.2.17 0.007 0.007 22.96 8.2.16 0.007 0.007 19.59 8.2.15 0.008 0.000 24.18 8.2.14 0.008 0.000 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.010 0.010 17.50 8.2.11 0.006 0.003 22.25 8.2.10 0.003 0.009 17.84 8.2.9 0.005 0.003 19.36 8.2.8 0.000 0.009 17.97 8.2.7 0.000 0.009 17.63 8.2.6 0.006 0.003 18.05 8.2.5 0.008 0.000 19.59 8.2.4 0.008 0.000 20.80 8.2.3 0.000 0.008 19.27 8.2.2 0.000 0.008 18.15 8.2.1 0.004 0.004 18.04 8.2.0 0.005 0.005 17.80 8.1.29 0.000 0.011 30.84 8.1.28 0.009 0.009 25.92 8.1.27 0.007 0.007 24.66 8.1.26 0.008 0.000 26.35 8.1.25 0.004 0.004 28.09 8.1.24 0.007 0.011 23.64 8.1.23 0.004 0.007 22.82 8.1.22 0.006 0.003 17.74 8.1.21 0.006 0.003 18.77 8.1.20 0.005 0.005 17.25 8.1.19 0.008 0.000 17.36 8.1.18 0.000 0.008 18.10 8.1.17 0.007 0.006 18.76 8.1.16 0.004 0.004 22.38 8.1.15 0.003 0.006 18.99 8.1.14 0.003 0.005 19.75 8.1.13 0.000 0.007 17.68 8.1.12 0.000 0.007 17.54 8.1.11 0.005 0.003 17.45 8.1.10 0.000 0.007 17.55 8.1.9 0.004 0.004 17.53 8.1.8 0.007 0.000 17.58 8.1.7 0.003 0.006 17.63 8.1.6 0.000 0.008 17.67 8.1.5 0.003 0.006 17.56 8.1.4 0.003 0.005 17.61 8.1.3 0.003 0.006 17.77 8.1.2 0.005 0.003 17.83 8.1.1 0.004 0.008 17.54 8.1.0 0.004 0.004 17.47 8.0.30 0.000 0.008 18.77 8.0.29 0.006 0.003 16.88 8.0.28 0.004 0.004 18.61 8.0.27 0.000 0.008 17.37 8.0.26 0.003 0.003 17.70 8.0.25 0.008 0.000 17.06 8.0.24 0.000 0.008 16.96 8.0.23 0.000 0.007 17.09 8.0.22 0.003 0.003 16.98 8.0.21 0.003 0.003 16.99 8.0.20 0.000 0.007 17.07 8.0.19 0.003 0.005 17.09 8.0.18 0.004 0.004 17.07 8.0.17 0.004 0.004 17.04 8.0.16 0.003 0.006 17.04 8.0.15 0.008 0.000 16.89 8.0.14 0.004 0.004 17.00 8.0.13 0.006 0.000 13.39 8.0.12 0.005 0.003 16.87 8.0.11 0.000 0.008 17.00 8.0.10 0.000 0.007 16.99 8.0.9 0.000 0.008 16.86 8.0.8 0.009 0.006 17.01 8.0.7 0.003 0.007 16.90 8.0.6 0.003 0.006 17.12 8.0.5 0.004 0.004 16.89 8.0.3 0.006 0.014 17.16 8.0.2 0.009 0.014 17.40 8.0.1 0.000 0.008 17.00 8.0.0 0.013 0.006 16.82 7.4.33 0.003 0.003 15.08 7.4.32 0.003 0.003 16.70 7.4.30 0.000 0.007 16.63 7.4.29 0.000 0.009 16.71 7.4.28 0.006 0.003 16.69 7.4.27 0.003 0.005 16.67 7.4.26 0.004 0.004 16.73 7.4.25 0.000 0.007 16.63 7.4.24 0.000 0.007 16.72 7.4.23 0.004 0.004 16.74 7.4.22 0.013 0.013 16.63 7.4.21 0.006 0.009 16.75 7.4.20 0.007 0.000 16.51 7.4.16 0.008 0.008 16.65 7.4.15 0.012 0.009 17.40 7.4.14 0.016 0.004 17.86 7.4.13 0.017 0.005 16.55 7.4.12 0.011 0.007 16.71 7.4.11 0.009 0.010 16.66 7.4.10 0.007 0.010 16.69 7.4.9 0.012 0.006 16.60 7.4.8 0.010 0.017 19.39 7.4.7 0.009 0.009 16.51 7.4.6 0.009 0.009 16.50 7.4.5 0.007 0.007 16.15 7.4.4 0.009 0.012 16.68 7.4.3 0.012 0.009 16.80 7.4.1 0.004 0.011 14.89 7.4.0 0.006 0.009 14.97 7.3.33 0.005 0.003 13.36 7.3.32 0.003 0.003 13.43 7.3.31 0.000 0.007 16.30 7.3.30 0.003 0.005 16.40 7.3.29 0.007 0.008 16.40 7.3.28 0.008 0.009 16.42 7.3.27 0.020 0.023 17.40 7.3.26 0.011 0.008 16.59 7.3.25 0.010 0.008 16.47 7.3.24 0.008 0.010 16.37 7.3.23 0.010 0.011 16.44 7.3.21 0.003 0.013 16.73 7.3.20 0.029 0.019 16.70 7.3.19 0.007 0.010 16.42 7.3.18 0.004 0.018 16.32 7.3.17 0.009 0.014 16.44 7.3.16 0.003 0.014 16.45 7.3.13 0.004 0.014 15.03 7.3.12 0.007 0.011 14.83 7.3.11 0.013 0.006 14.77 7.3.10 0.007 0.007 14.49 7.3.9 0.003 0.014 14.70 7.3.8 0.004 0.008 15.07 7.3.7 0.011 0.007 15.03 7.3.6 0.000 0.009 14.91 7.3.5 0.004 0.011 14.79 7.3.4 0.006 0.009 14.64 7.3.3 0.003 0.006 14.92 7.3.2 0.010 0.006 16.37 7.3.1 0.008 0.004 16.20 7.3.0 0.007 0.003 16.60 7.2.33 0.009 0.009 16.61 7.2.32 0.016 0.007 16.68 7.2.31 0.011 0.007 16.68 7.2.30 0.007 0.010 16.71 7.2.29 0.003 0.017 16.48 7.2.26 0.008 0.008 14.86 7.2.25 0.006 0.006 14.77 7.2.24 0.003 0.010 14.98 7.2.23 0.004 0.012 14.91 7.2.22 0.007 0.010 15.08 7.2.21 0.012 0.003 15.07 7.2.20 0.006 0.010 15.10 7.2.19 0.003 0.010 14.82 7.2.18 0.000 0.016 14.86 7.2.17 0.007 0.007 15.02 7.2.16 0.006 0.006 15.05 7.2.15 0.007 0.010 16.62 7.2.14 0.007 0.010 16.60 7.2.13 0.007 0.007 16.69 7.2.12 0.004 0.007 16.78 7.2.11 0.010 0.007 16.66 7.2.10 0.006 0.010 16.69 7.2.9 0.006 0.009 16.65 7.2.8 0.007 0.010 16.77 7.2.7 0.012 0.000 16.61 7.2.6 0.005 0.010 16.63 7.2.5 0.004 0.009 16.53 7.2.4 0.018 0.004 16.79 7.2.3 0.010 0.007 16.65 7.2.2 0.003 0.013 16.59 7.2.1 0.013 0.007 16.78 7.2.0 0.005 0.008 18.00 7.1.33 0.003 0.010 15.72 7.1.32 0.012 0.003 15.64 7.1.31 0.006 0.009 15.74 7.1.30 0.009 0.006 15.27 7.1.29 0.009 0.006 15.65 7.1.28 0.000 0.014 15.64 7.1.27 0.000 0.015 15.65 7.1.26 0.003 0.014 15.75 7.1.25 0.000 0.015 15.36 7.1.24 0.000 0.014 15.56 7.1.23 0.009 0.006 15.36 7.1.22 0.003 0.013 15.62 7.1.21 0.006 0.008 15.54 7.1.20 0.006 0.007 15.68 7.1.19 0.008 0.006 15.30 7.1.18 0.003 0.010 15.68 7.1.17 0.004 0.011 15.72 7.1.16 0.003 0.012 15.60 7.1.15 0.006 0.003 15.68 7.1.14 0.003 0.013 15.40 7.1.13 0.007 0.007 15.64 7.1.12 0.006 0.006 15.70 7.1.11 0.006 0.008 15.62 7.1.10 0.009 0.006 15.73 7.1.9 0.007 0.007 15.44 7.1.8 0.004 0.015 15.78 7.1.7 0.005 0.007 16.16 7.1.6 0.001 0.008 16.41 7.1.5 0.003 0.010 15.62 7.1.4 0.010 0.007 15.66 7.1.3 0.007 0.007 15.55 7.1.2 0.003 0.010 15.62 7.1.1 0.007 0.007 15.50 7.1.0 0.002 0.044 18.98 7.0.33 0.004 0.011 15.27 7.0.32 0.010 0.007 15.23 7.0.31 0.008 0.004 15.34 7.0.30 0.006 0.009 15.21 7.0.29 0.003 0.006 15.11 7.0.28 0.003 0.013 15.20 7.0.27 0.004 0.007 14.95 7.0.26 0.007 0.007 15.16 7.0.25 0.003 0.006 15.41 7.0.24 0.009 0.006 15.39 7.0.23 0.006 0.013 15.33 7.0.22 0.004 0.014 15.08 7.0.21 0.005 0.003 15.15 7.0.20 0.018 0.010 14.96 7.0.19 0.009 0.009 15.04 7.0.18 0.004 0.014 15.37 7.0.17 0.004 0.012 15.29 7.0.16 0.003 0.013 15.30 7.0.15 0.004 0.008 15.38 7.0.14 0.004 0.012 15.33 7.0.13 0.004 0.007 15.34 7.0.12 0.000 0.016 15.41 7.0.11 0.025 0.027 17.78 7.0.10 0.019 0.034 17.73 7.0.9 0.022 0.045 17.96 7.0.8 0.025 0.039 17.99 7.0.7 0.018 0.036 17.80 7.0.6 0.020 0.031 17.89 7.0.5 0.037 0.032 17.98 7.0.4 1.395 0.038 13.46 7.0.3 0.034 0.039 16.84 7.0.2 0.017 0.035 16.97 7.0.1 1.036 0.038 16.88 7.0.0 0.019 0.033 16.86 5.6.40 0.003 0.010 14.14 5.6.39 0.012 0.003 14.42 5.6.38 0.006 0.012 14.02 5.6.37 0.003 0.010 14.43 5.6.36 0.009 0.012 14.00 5.6.35 0.007 0.007 14.24 5.6.34 0.010 0.003 14.54 5.6.33 0.009 0.009 14.17 5.6.32 0.006 0.006 14.21 5.6.31 0.009 0.006 14.46 5.6.30 0.006 0.009 14.07 5.6.29 0.006 0.006 14.10 5.6.28 0.004 0.011 14.36 5.6.27 0.006 0.006 14.13 5.6.26 0.013 0.028 17.63 5.6.25 0.009 0.035 17.54 5.6.24 0.009 0.038 17.75 5.6.23 0.014 0.038 17.54 5.6.22 0.008 0.032 17.69 5.6.21 0.015 0.040 17.63 5.6.20 0.007 0.047 17.70 5.6.19 0.005 0.051 17.76 5.6.18 0.007 0.037 17.57 5.6.17 0.013 0.030 17.51 5.6.16 0.007 0.033 17.57 5.6.15 0.011 0.041 17.81 5.6.14 0.007 0.035 17.62 5.6.13 0.003 0.037 17.48 5.6.12 0.007 0.036 17.59 5.6.11 0.005 0.036 17.60 5.6.10 0.009 0.037 17.61 5.6.9 0.012 0.030 17.50 5.6.8 0.011 0.028 17.18 5.6.7 0.013 0.028 17.24 5.6.6 0.011 0.031 17.28 5.6.5 0.017 0.028 17.37 5.6.4 0.013 0.040 17.30 5.6.3 0.014 0.028 17.43 5.6.2 0.003 0.036 17.32 5.6.1 0.012 0.030 17.20 5.6.0 0.013 0.036 17.28
preferences:dark mode live preview
60.54 ms | 403 KiB | 5 Q