WordPress.org

Making WordPress.org

Ticket #3572: 3572.2.patch

File 3572.2.patch, 123.7 KB (added by keesiemeijer, 20 months ago)

Improvements

  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/comments-edit.php

     
     1<?php namespace DevHub;
     2/**
     3 * The Template for editing user contributed notes.
     4 *
     5 * @package wporg-developer
     6 */
     7
     8        get_header();
     9
     10        $comment_id = get_query_var( 'feedback_id' );
     11        $comment    = get_comment( $comment_id );
     12        $is_parent  = $comment->comment_parent ?  true : false;
     13        $post       = get_queried_object();
     14        $post_id    = get_queried_object_id();
     15        $post_url   = get_permalink( $post_id );
     16        $post_title = single_post_title( '', false );
     17        $post_link  = "<a href='{$post_url}'>{$post_title}</a>";
     18        $note_link  = "<a href='{$post_url}#comment-{$comment_id}'>note {$comment_id}</a>";
     19
     20        add_filter( 'breadcrumb_trail_items', function($items) use ( $post_link, $note_link  ) {
     21                $items[] = $post_link;
     22                $items[] = $note_link;
     23                return $items;
     24        } );
     25?>
     26
     27        <div id="content-area" <?php body_class( 'code-reference' ); ?>>
     28
     29                <?php breadcrumb_trail( array( 'show_title' => false ) ); ?>
     30
     31                <main id="main" class="site-main" role="main">
     32
     33                        <h1><?php printf( __( 'Edit Note %d', 'wporg' ), $comment_id ); ?></h1>
     34
     35                        <p>
     36                                <?php if( $is_parent ) : ?>
     37                                        <?php printf( __( 'This is a feedback note added to a note for %s.', 'wporg' ), $post_link ); ?>
     38                                <?php else : ?>
     39                                        <?php printf( __( 'This is a note added to %s.', 'wporg' ), $post_link ); ?>
     40                                <?php endif; ?>
     41
     42                                <?php echo ' ' . __( "You can edit this note as long as it's in moderation.", 'wporg' ); ?>
     43                        </p>
     44                        <?php
     45                                if( \DevHub\can_user_edit_note( $comment_id ) ) {
     46
     47                                        if( $is_parent ) {
     48                                                echo \DevHub_User_Submitted_Content::wp_editor_feedback( $comment, 'show', true );
     49                                        } else {
     50                                                $args = \DevHub_User_Submitted_Content::comment_form_args( $comment, 'edit');
     51                                                comment_form( $args );
     52                                        }
     53                                }
     54                        ?>
     55
     56                </main><!-- #main -->
     57        </div><!-- #primary -->
     58<?php get_footer(); ?>
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/comments.php

     
    6464
    6565        <?php if ( \DevHub\is_parsed_post_type() && DevHub\can_user_post_note( true, get_the_ID() ) ) : ?>
    6666
    67                 <?php $add_note_style = empty( $feedback_editor ) ? 'display:none;' : ''; ?>
    68                 <p id="add-user-note" style="<?php echo $add_note_style; ?>"><a href="<?php echo user_trailingslashit( get_permalink() ) . '#respond'; ?>"><?php _e( 'Have a note or feedback to contribute?', 'wporg' ); ?></a></p>
     67                <p id="add-user-note"><a href="<?php echo user_trailingslashit( get_permalink() ) . '#respond'; ?>"><?php _e( 'Have a note or feedback to contribute?', 'wporg' ); ?></a></p>
    6968
    7069                <?php
    71                 $args = array(
    72                         'logged_in_as'        => '<p class="logged-in-as">'
    73                                 . sprintf(
    74                                         /* translators: 1: user profile link, 2: accessibility text, 3: user name, 4: logout URL */
    75                                         __( '<a href="%1$s" aria-label="%2$s">Logged in as %3$s</a>. <a href="%4$s">Log out?</a>' ),
    76                                         'https://profiles.wordpress.org/' . esc_attr( wp_get_current_user()->user_nicename ),
    77                                         /* translators: %s: user name */
    78                                         esc_attr( sprintf( __( 'Logged in as %s. Edit your profile.' ), $user_identity ) ),
    79                                         $user_identity,
    80                                         wp_logout_url( apply_filters( 'the_permalink', get_permalink() ) )
    81                                 )
    82                                 . '</p><p><ul><li>'
    83                                 . __( 'Notes should supplement code reference entries, for example examples, tips, explanations, use-cases, and best practices.', 'wporg' )
    84                                 . '</li><li>'
    85                                 . __( 'Feedback can be to report errors or omissions with the documentation on this page. Such feedback will not be publicly posted.', 'wporg' )
    86                                 . '</li><li>'
    87                                 /* translators: 1: php button, 2: js button, 3: inline code button */
    88                                 . sprintf(
    89                                         __( 'You can enter text and code. Use the %1$s, %2$s, or %3$s buttons to wrap code snippets.', 'wporg' ),
    90                                         '<span class="text-button">php</span>',
    91                                         '<span class="text-button">js</span>',
    92                                         '<span class="text-button">' . __( 'inline code', 'wporg' ) . '</span>'
    93                                 )
    94                                 . '</li></ul></p>',
    95                         'comment_notes_after' => '<p>'
    96                                 . __( 'Submission Notes:', 'wporg' )
    97                                 . '<ul><li>'
    98                                 . __( 'This form is not for support requests, discussions, spam, bug reports, complaints, or self-promotion. Entries of this nature will be deleted.', 'wporg' )
    99                                 . '</li><li>'
    100                                 . __( 'In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key. In some cases the Esc key will need to be pressed twice before the Tab key will allow you to continue.', 'wporg' )
    101                                 . '</li><li class="user-notes-are-gpl">'
    102                                 . sprintf(
    103                                         /* translators: 1: GFDL link */
    104                                         __( '<strong>NOTE:</strong> All contributions are licensed under %s and are moderated before appearing on the site.', 'wporg' ),
    105                                         '<a href="https://gnu.org/licenses/fdl.html">GFDL</a>'
    106                                 )
    107                                 . '</li></ul></p>',
    108                         'label_submit'        => __( 'Add Note or Feedback', 'wporg' ),
    109                         'cancel_reply_link'   => '',
    110                         'must_log_in'         => '<p>' . sprintf(
    111                                 __( 'You must <a href="%s">log in</a> before being able to contribute a note or feedback.', 'wporg' ),
    112                                 'https://login.wordpress.org/?redirect_to=' . urlencode( get_comments_link() )
    113                         ) . '</p>',
    114                         'title_reply'         => '', //'Add Example'
    115                         'title_reply_to'      => '',
    116                 );
    117 
    118                 if ( class_exists( 'DevHub_Note_Preview' ) ) {
    119                         $args['comment_notes_after'] = DevHub_Note_Preview::comment_preview() . $args['comment_notes_after'];
    120                         $args['class_form']          = 'comment-form tab-container';
    121                 }
    122 
    123                 if ( class_exists( 'DevHub_User_Submitted_Content' ) ) {
    124                         $args['comment_field'] = DevHub_User_Submitted_Content::wp_editor_comments();
    125                 }
    126 
    12770                // Insert comment form if feedback form is not already used.
    128                 if ( empty( $feedback_editor ) ) {
     71                if ( empty( $feedback_editor ) && class_exists( 'DevHub_User_Submitted_Content' ) )  {
     72                        $args = \DevHub_User_Submitted_Content::comment_form_args();
    12973                        comment_form( $args );
    13074                }
    13175                ?>
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/functions.php

     
    5656require __DIR__ . '/inc/user-content-voting.php';
    5757
    5858/**
     59 * Editing for user-submitted content.
     60 */
     61require __DIR__ . '/inc/user-content-edit.php';
     62
     63/**
    5964 * CLI commands custom post type and importer.
    6065 */
    6166require __DIR__ . '/inc/cli.php';
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php

     
    202202                                // Feedback links to log in, add feedback or show feedback.
    203203                                echo "<footer class='feedback-links' >\n";
    204204                                if ( $can_user_post_note ) {
    205                                         echo "EEE";
    206205                                        $feedback_link = trailingslashit( get_permalink() ) . "?replytocom={$comment_id}#feedback-editor-{$comment_id}";
    207206                                        $display       = '';
    208207                                        $aria          = '';
     
    245244                        $is_voting      = class_exists( 'DevHub_User_Contributed_Notes_Voting' );
    246245                        $count          = $is_voting ? (int)  DevHub_User_Contributed_Notes_Voting::count_votes( $comment->comment_ID, 'difference' ) : 0;
    247246                        $curr_user_note = $is_voting ? (bool) DevHub_User_Contributed_Notes_Voting::is_current_user_note( $comment->comment_ID ) : false;
     247                        $user_can_edit  = current_user_can( 'edit_comment', $comment->comment_ID );
     248                        $edit_note      = class_exists( 'DevHub_User_Content_Edit' );
     249                        $edited_note_id = $edit_note ? DevHub_User_Content_Edit::get_edited_note() : 0;
    248250
    249251                        // Classes
    250252                        $comment_class = array();
     
    311313                                                        </time>
    312314                                                </a>
    313315                                                <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">&mdash; ', '</span>' ); ?>
     316                                                <?php if ( \DevHub\can_user_edit_note( $comment->comment_ID ) ) : ?>
     317                                                        <?php if ( ! $user_can_edit ) : ?>
     318                                                                &mdash; <span class="comment-author-edit-link">
     319                                                                        <a class="comment-edit-link" href="<?php echo site_url( "/reference/comment/edit/{$comment->comment_ID}" ); ?>"><?php _e( 'Edit', 'wporg' ); ?></a>
     320                                                                </span>
     321                                                        <?php endif; ?>
     322                                                        <?php if ( (int) $comment->comment_ID === $edited_note_id ) : ?>
     323                                                                &mdash; <span class="comment-edited">
     324                                                                <?php _e( 'edited', 'wporg' ); ?>
     325                                                                </span>
     326                                                        <?php endif; ?>
     327                                                <?php endif; ?>
    314328                                                <?php if ( ! $approved ) : ?>
    315329                                                        &mdash; <span class="comment-awaiting-moderation"><?php _e( 'awaiting moderation', 'wporg' ); ?></span>
    316330                                                <?php endif; ?>
     
    329343                                        $text .= ' <a href="'. esc_url( get_comment_link( $comment->comment_ID ) ) . '">';
    330344                                        $text .= '<time datetime="' . get_comment_time( 'c' ) . '">' . $date . '</time></a>';
    331345
    332                                         if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) {
     346                                        if ( $user_can_edit ) {
    333347                                                $text .= ' &mdash; <a class="comment-edit-link" href="' . get_edit_comment_link( $comment->comment_ID ) .'">';
    334348                                                $text .= __( 'Edit', 'wporg' ) . '</a>';
     349                                        } elseif ( \DevHub\can_user_edit_note( $comment->comment_ID ) ) {
     350                                                $text .= ' &mdash; <a class="comment-edit-link" href="' . site_url( "/reference/comment/edit/{$comment->comment_ID}" ) . '">';
     351                                                $text .= __( 'Edit', 'wporg' ) . '</a>';
     352                                                if( (int) $comment->comment_ID === $edited_note_id ) {
     353                                                        $text .= ' &mdash; <span class="comment-edited">' . __( 'edited', 'wporg' ) . '</span>';
     354                                                }
    335355                                        }
    336356
    337357                                        if ( ! $approved ) {
     
    13971417        }
    13981418
    13991419        /**
     1420         * Indicates if the current user can edit a user contibuted note.
     1421         *
     1422         * A user can edit a note if the note is from a parsed post type, and
     1423         *     the note is from the current user and it's not yet approved.
     1424         *     Or if the user has the 'edit_comment' capability.
     1425         *
     1426         * @param integer $note_id Note ID.
     1427         * @return bool True if the current user can edit the note.
     1428         */
     1429        function can_user_edit_note( $note_id = 0 ) {
     1430                $user = get_current_user_id();
     1431                $note = get_comment( $note_id );
     1432                if ( ! $user || ! $note ) {
     1433                        return false;
     1434                }
     1435
     1436                $post_id        = isset( $note->comment_post_ID ) ? (int) $note->comment_post_ID : 0;
     1437                $is_note_author = isset( $note->user_id ) && ( (int) $note->user_id === $user );
     1438                $is_approved    = isset( $note->comment_approved ) && ( 0 < (int) $note->comment_approved );
     1439                $can_edit_notes = isset( $note->comment_ID ) && current_user_can( 'edit_comment', $note->comment_ID );
     1440                $is_parsed_type = is_parsed_post_type( get_post_type( $post_id ) );
     1441
     1442                if ( $is_parsed_type && ( $can_edit_notes || ( $is_note_author && ! $is_approved ) ) ) {
     1443                        return true;
     1444                }
     1445
     1446                return false;
     1447        }
     1448
     1449        /**
    14001450         * Gets the summary.
    14011451         *
    14021452         * The summary (aka short description) is stored in the 'post_excerpt' field.
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/user-content-edit.php

     
     1<?php
     2/**
     3 * Code Reference edit user submitted content (comments, notes, etc).
     4 *
     5 * @package wporg-developer
     6 */
     7
     8/**
     9 * Class to handle editing user submitted content.
     10 */
     11class DevHub_User_Content_Edit {
     12
     13        private static $updated_note = 0;
     14
     15        /**
     16         * Initializer
     17         */
     18        public static function init() {
     19                add_action( 'init', array( __CLASS__, 'do_init' ) );
     20        }
     21
     22        /**
     23         * Handles adding/removing hooks to enable editing comments.
     24         * Adds rewrite rules for editing comments in the front end.
     25         */
     26        public static function do_init() {
     27                // Add the edit comment rewrite rule
     28                add_rewrite_rule( 'reference/comment/edit/([0-9]{1,})/?$', 'index.php?feedback_id=$matches[1]', 'top' );
     29
     30                // Add feedback_id query var for editing.
     31                add_filter( 'query_vars',                      array( __CLASS__, 'comment_query_var' ) );
     32
     33                // Redirect to home page is the edit request is invalid.
     34                add_action( 'template_redirect',               array( __CLASS__, 'redirect_invalid_edit_request' ) );
     35
     36                // Include the edit template.
     37                add_filter( 'template_include',                array( __CLASS__, 'template_include' ) );
     38
     39                // Set the post_type and post for the edit request.
     40                add_action( 'pre_get_posts',                   array( __CLASS__, 'pre_get_posts' ) );
     41
     42                // Update the comment.
     43                add_action( 'wp', array( __CLASS__, 'update_comment' ) );
     44        }
     45
     46        /**
     47         * Get the note ID that was edited.
     48         *
     49         * @return int Note ID that was edited or 0.
     50         */
     51        public static function get_edited_note() {
     52                return self::$updated_note ? (int) self::$updated_note : 0;
     53        }
     54
     55        /**
     56         * Add feedback_id to the public query vars.
     57         *
     58         * @param array $query_vars Array with public query vars.
     59         * @return array Public query vars.
     60         */
     61        public static function comment_query_var( $query_vars ) {
     62                $query_vars[] = 'feedback_id';
     63                return $query_vars;
     64        }
     65
     66        /**
     67         * Update a comment after editing.
     68         *
     69         */
     70        public static function update_comment() {
     71                self::$updated_note = 0;
     72
     73                if ( ! is_single() || ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) ) {
     74                        return;
     75                }
     76
     77                $comment_data = wp_unslash( $_POST );
     78
     79                $defaults = array(
     80                        'edit_contributed_note',
     81                        '_wpnonce',
     82                        'comment_ID',
     83                        'comment',
     84                        'comment_parent',
     85                        'comment_post_ID'
     86                );
     87
     88                foreach ( $defaults as $value ) {
     89                        if ( ! isset( $comment_data[ $value ] ) ) {
     90                                // Return if any of the default values is missing.
     91                                return;
     92                        }
     93                }
     94
     95                $action   = 'update-note_' . $comment_data['comment_ID'];
     96                $verified = wp_verify_nonce( $comment_data['_wpnonce'], $action );
     97
     98                if ( $verified && DevHub\can_user_edit_note( (int) $comment_data['comment_ID'] ) ) {
     99                        self::$updated_note = (int) $comment_data['comment_ID'];
     100                        $comment = trim( (string) $comment_data['comment'] );
     101                        $comment_data['comment_content'] = $comment;
     102                        wp_update_comment( $comment_data );
     103                }
     104        }
     105
     106        /**
     107         * Use the 'comments-edit.php' template for editing comments.
     108         *
     109         * @param string $template Template to include.
     110         * @return string           Template to include.
     111         */
     112        public static function template_include( $template ) {
     113                $comment = get_query_var( 'feedback_id' );
     114                if ( ! $comment ) {
     115                        return $template;
     116                }
     117
     118                $comment_template = get_query_template( "comments-edit" );
     119                if ( $comment_template ) {
     120                        $template = $comment_template;
     121                }
     122                return $template;
     123        }
     124
     125        /**
     126         * Redirects to the home page if the edit request is invalid for the current user.
     127         *
     128         * Redirects if the current user is not the comment author.
     129         * Redirects if the comment doesn't exist.
     130         * Redirects if the comment is not for a parsed post type.
     131         * Redirects if a comment is already approved.
     132         *
     133         * Doesn't redirect for users with the edit_comment capability.
     134         */
     135        public static function redirect_invalid_edit_request() {
     136                $comment_id = absint( get_query_var( 'feedback_id' ) );
     137                if ( ! $comment_id ) {
     138                        return;
     139                }
     140
     141                if ( !  DevHub\can_user_edit_note( $comment_id ) ) {
     142                        // Redirect if you're not the comment author.
     143                        wp_redirect( home_url() );
     144                        exit();
     145                }
     146        }
     147
     148        /**
     149         * Set's the post and post type for the edit request.
     150         *
     151         * Trows a 404 if the current user can't edit the requested note.
     152         *
     153         * @param WP_Query $query The WP_Query instance (passed by reference)
     154         */
     155        public static function pre_get_posts( $query ) {
     156                if ( ! ( $query->is_main_query() && $query->get( 'feedback_id' ) ) ) {
     157                        // Not a query for editing a note.
     158                        return;
     159                }
     160
     161                $comment_id = $query->get( 'feedback_id' );
     162
     163                if (  DevHub\can_user_edit_note( $comment_id ) ) {
     164                        $comment = get_comment( $comment_id );
     165                        if ( isset( $comment->comment_post_ID ) ) {
     166                                $query->is_singular = true;
     167                                $query->is_single = true;
     168                                $query->set( 'post_type', get_post_type( $comment->comment_post_ID ) );
     169                                $query->set( 'p', $comment->comment_post_ID );
     170                        }
     171                } else {
     172                        $query->set_404();
     173                }
     174        }
     175
     176} // DevHub_User_Content_Edit
     177
     178DevHub_User_Content_Edit::init();
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/user-content.php

     
    5050                remove_filter( 'comment_text',                 'capital_P_dangit',   31 );
    5151
    5252                // Enable shortcodes for comments
    53                 add_filter( 'comment_text',                    'do_shortcode');
     53                add_filter( 'comment_text',                    'do_shortcode' );
    5454
    5555                // Customize allowed tags
    5656                add_filter( 'wp_kses_allowed_html',            array( __CLASS__, 'wp_kses_allowed_html' ), 10, 2 );
     
    6767                // Allowed HTML for an edited child comment (There is no decent hook to filter child comments only)
    6868                add_action( 'edit_comment',                    array( __CLASS__, 'comment_edit_allowed_html' ) );
    6969
     70                // Adds hidden fields for editing to a comment form
     71                add_filter( 'comment_form_submit_field',       array( __CLASS__, 'add_hidden_fields' ), 10, 2 );
    7072        }
    7173
    7274        /**
     
    167169                        wp_enqueue_script( 'wporg-developer-user-notes', get_template_directory_uri() . '/js/user-notes.js', array( 'jquery', 'quicktags' ), '20180323', true );
    168170                        wp_enqueue_script( 'wporg-developer-user-notes-feedback', get_template_directory_uri() . '/js/user-notes-feedback.js', array( 'jquery', 'quicktags' ), '20180323', true );
    169171                        wp_localize_script( 'wporg-developer-user-notes-feedback', 'wporg_note_feedback', array(
    170                                 'show' => __( 'Show Feedback', 'wporg' ),
    171                                 'hide' => __( 'Hide Feedback', 'wporg' ),
    172                         ) );
     172                                        'show' => __( 'Show Feedback', 'wporg' ),
     173                                        'hide' => __( 'Hide Feedback', 'wporg' ),
     174                                ) );
    173175                }
    174176        }
    175177
     
    176178        /**
    177179         * Sets the default language for SyntaxHighlighter shortcode.
    178180         *
    179          * @param  array $atts Shortcode attributes.
     181         * @param array $atts Shortcode attributes.
    180182         * @return array
    181183         */
    182184        public static function syntaxhighlighter_shortcodeatts( $atts ) {
     
    187189        /**
    188190         * Subverts capital_P_dangit for SyntaxHighlighter shortcode.
    189191         *
    190          * @param  string $code
     192         * @param string $code
    191193         * @return string
    192194         */
    193195        public static function syntaxhighlighter_precode( $code ) {
     
    195197        }
    196198
    197199        /**
     200         * Add hidden fields to the comment form if the context is 'edit'
     201         *
     202         * @param string $submit_field HTML string with the submit button fields.
     203         * @param array  $args         Arguments for the comment form.
     204         * @return HTML string with the submit button fields.
     205         */
     206        public static function add_hidden_fields( $submit_field, $args ) {
     207                $context = isset( $args['context'] ) ? $args['context'] : '';
     208                $comment = isset( $args['comment_edit'] ) ? $args['comment_edit'] : false;
     209                if ( ! ( $comment && ( 'edit' === $context ) ) ) {
     210                        return $submit_field;
     211                }
     212
     213                $comment_id = isset( $comment->comment_ID ) ? $comment->comment_ID : 0;
     214
     215                return $submit_field . self::get_edit_fields( $comment_id, $instance = 0 );
     216        }
     217
     218        /**
     219         * Get the comment form arguments by context.
     220         *
     221         * @param WP_Comment|false $comment Comment object or false. Default false.
     222         * @param string           $context Context of arguments. Accepts 'edit' or empty string.
     223         * @return array Array with comment form arguments.
     224         */
     225        public static function comment_form_args( $comment = false, $context = '' ) {
     226                $label = _x( 'Add Note or Feedback', 'noun', 'wporg' );
     227                if ( 'edit' === $context ) {
     228                        $label = _x( 'Edit Note', 'noun', 'wporg' );
     229                }
     230
     231                $args = array(
     232                        'logged_in_as'        => '<p class="logged-in-as">'
     233                        . sprintf(
     234                                /* translators: 1: user profile link, 2: accessibility text, 3: user name, 4: logout URL */
     235                                __( '<a href="%1$s" aria-label="%2$s">Logged in as %3$s</a>. <a href="%4$s">Log out?</a>' ),
     236                                'https://profiles.wordpress.org/' . esc_attr( wp_get_current_user()->user_nicename ),
     237                                /* translators: %s: user name */
     238                                esc_attr( sprintf( __( 'Logged in as %s. Edit your profile.' ), $user_identity ) ),
     239                                $user_identity,
     240                                wp_logout_url( apply_filters( 'the_permalink', get_permalink() ) )
     241                        )
     242                        . '</p><p><ul><li>'
     243                        . __( 'Notes should supplement code reference entries, for example examples, tips, explanations, use-cases, and best practices.', 'wporg' )
     244                        . '</li><li>'
     245                        . __( 'Feedback can be to report errors or omissions with the documentation on this page. Such feedback will not be publicly posted.', 'wporg' )
     246                        . '</li><li>'
     247                        /* translators: 1: php button, 2: js button, 3: inline code button */
     248                        . sprintf(
     249                                __( 'You can enter text and code. Use the %1$s, %2$s, or %3$s buttons to wrap code snippets.', 'wporg' ),
     250                                '<span class="text-button">php</span>',
     251                                '<span class="text-button">js</span>',
     252                                '<span class="text-button">' . __( 'inline code', 'wporg' ) . '</span>'
     253                        )
     254                        . '</li></ul></p>',
     255                        'comment_notes_after' => '<p>' . __( 'Submission Notes:', 'wporg' ) . '</p>' . self::get_editor_rules(),
     256                        'label_submit'        => $label,
     257                        'cancel_reply_link'   => '',
     258                        'must_log_in'         => '<p>' . sprintf(
     259                                __( 'You must <a href="%s">log in</a> before being able to contribute a note or feedback.', 'wporg' ),
     260                                'https://login.wordpress.org/?redirect_to=' . urlencode( get_comments_link() )
     261                        ) . '</p>',
     262                        'title_reply'         => '', //'Add Example'
     263                        'title_reply_to'      => '',
     264                );
     265
     266                if ( class_exists( 'DevHub_Note_Preview' ) ) {
     267                        $args['comment_notes_after'] = DevHub_Note_Preview::comment_preview() . $args['comment_notes_after'];
     268                        $args['class_form']          = "comment-form tab-container";
     269                }
     270
     271                $args['comment_field'] = self::wp_editor_comments( $label, $comment );
     272                $args['context'] = $context;
     273                $args['comment_edit'] = $comment;
     274
     275                if ( $comment && ( 'edit' === $context ) ) {
     276                        $comment_id = isset( $comment->comment_ID ) ? $comment->comment_ID : 0;
     277                        $post_id    = isset( $comment->comment_post_ID ) ? $comment->comment_post_ID : 0;
     278
     279                        $args['action'] = get_permalink( $post_id ) . '#comment-' . $comment_id;
     280                }
     281
     282                return $args;
     283        }
     284
     285        /**
    198286         * Capture an {@see wp_editor()} instance as the 'User Contributed Notes' comment form.
    199287         *
    200288         * Uses output buffering to capture the editor instance for use with the {@see comments_form()}.
    201289         *
     290         * @param string           $label   Label used for the editor.
     291         * @param WP_Comment|false $comment Comment object or false. Default false.
    202292         * @return string HTML output for the wp_editor-ized comment form.
    203293         */
    204         public static function wp_editor_comments() {
     294        public static function wp_editor_comments( $label, $comment = false ) {
     295                $content = isset( $comment->comment_content ) ? $comment->comment_content : '';
     296
    205297                ob_start();
    206                 echo '<h3><label for="comment">' . _x( 'Add Note or Feedback', 'noun', 'wporg' ) . '</label></h3>';
     298                echo '<h3><label for="comment">' . $label . '</label></h3>';
    207299
    208300                if ( class_exists( 'DevHub_Note_Preview' ) ) {
    209                         echo '<ul class="tablist" style="display:none;">';
     301                        echo "<ul class='tablist' style='display: none;'>";
    210302                        echo '<li><a href="#comment-form-comment">' . __( 'Write', 'wporg' ) . '</a></li>';
    211303                        echo '<li><a href="#comment-preview">' . __( 'Preview', 'wporg' ) . '</a></li></ul>';
    212304                }
    213305
    214                 $style = '<style type="text/css">';
    215                 ob_start();
    216                 include get_stylesheet_directory() . '/stylesheets/editor-style.css';
    217                 $style .= ob_get_clean();
    218                 $style .=' </style>';
    219 
    220306                echo '<div class="comment-form-comment tab-section" id="comment-form-comment">';
    221                 wp_editor( '', 'comment', array(
    222                         'media_buttons' => false,
    223                         'editor_css'    => $style,
    224                         'textarea_name' => 'comment',
    225                         'textarea_rows' => 8,
    226                         'quicktags'     => array(
    227                                 'buttons' => 'strong,em,ul,ol,li'
    228                         ),
    229                         'teeny'         => true,
    230                         'tinymce'       => false,
    231                 ) );
     307                wp_editor( $content, 'comment', array(
     308                                'media_buttons' => false,
     309                                'editor_css'    => self::get_editor_style(),
     310                                'textarea_name' => 'comment',
     311                                'textarea_rows' => 8,
     312                                'quicktags'     => array(
     313                                        'buttons' => 'strong,em,ul,ol,li'
     314                                ),
     315                                'teeny'         => true,
     316                                'tinymce'       => false,
     317                        ) );
    232318                echo '</div>';
    233319                return ob_get_clean();
    234320        }
     
    238324         *
    239325         * Uses output buffering to capture the editor instance.
    240326         *
     327         * @param WP_Comment|false $comment Comment object or false. Default false.
     328         * @param string           $display Display the editor. Default 'show'.
     329         * @param bool             $edit    True if the editor used for editing a note. Default false.
    241330         * @return string HTML output for the wp_editor-ized feedback form.
    242331         */
    243         public static function wp_editor_feedback( $comment, $display = 'show', $content = '' ) {
     332        public static function wp_editor_feedback( $comment, $display = 'show', $edit = false ) {
    244333
    245334                if ( ! ( isset( $comment->comment_ID ) && absint( $comment->comment_ID ) ) ) {
    246335                        return '';
     
    252341                $instance++;
    253342
    254343                $display     = ( 'hide' === $display ) ? ' style="display: none;"' : '';
     344                $parent      = $comment_id;
     345                $action      = site_url( '/wp-comments-post.php' );
     346                $content     = '';
    255347                $title       = __( 'Add feedback to this note', 'wporg' );
    256348                $form_type   = '';
    257349                $button_text = __( 'Add Feedback', 'wporg' );
    258 
    259                 if ( $content ) {
     350                $post_id     = isset( $comment->comment_post_ID ) ? $comment->comment_post_ID : get_the_ID();
     351                if ( $edit ) {
     352                        $parent      = isset( $comment->comment_parent ) ? $comment->comment_parent : 0;
     353                        $content     = isset( $comment->comment_content ) ? $comment->comment_content : '';
    260354                        $title       = __( 'Edit feedback', 'wporg' );
    261355                        $form_type   = '-edit';
    262                         $button_text = __( 'Edit Feedback', 'wporg' );
     356                        $button_text = __( 'Edit Note', 'wporg' );
     357                        $action      = get_permalink( $post_id ) . '#comment-' . $comment_id;
    263358                }
    264359
    265360                $allowed_tags = '';
     
    269364
    270365                ob_start();
    271366                echo "<div id='feedback-editor-{$comment_id}' class='feedback-editor'{$display}>\n";
    272                 echo "<p class='feedback-editor-title'>{$title}</p>\n";
    273                 echo '<form id="feedback-form-' . $instance . $form_type . '" class="feedback-form" method="post" action="' . site_url( '/wp-comments-post.php' ) . '" name="feedback-form-' . $instance ."\">\n";
     367                if ( ! $edit ) {
     368                        echo "<p class='feedback-editor-title'>{$title}</p>\n";
     369                }
    274370
    275                 wp_editor( '', 'feedback-' . $instance, array(
    276                         'media_buttons' => false,
    277                         'textarea_name' => 'comment',
    278                         'textarea_rows' => 3,
    279                         'quicktags'     => array(
    280                                 'buttons' => 'strong,em'
    281                         ),
    282                         'teeny'         => true,
    283                         'tinymce'       => false,
    284                 ) );
     371                echo "<form id='feedback-form-{$instance}{$form_type}' class='feedback-form' method='post' action='{$action}' name='feedback-form-{$instance}'>\n";
     372                echo self::get_editor_rules( 'feedback' );
     373                wp_editor( $content, 'feedback-' . $instance, array(
     374                                'media_buttons' => false,
     375                                'textarea_name' => 'comment',
     376                                'textarea_rows' => 3,
     377                                'quicktags'     => array(
     378                                        'buttons' => 'strong,em'
     379                                ),
     380                                'editor_css'    => self::get_editor_style(),
     381                                'teeny'         => true,
     382                                'tinymce'       => false,
     383                        ) );
    285384
    286385                echo '<p><strong>' . __( 'Note', 'wporg' ) . '</strong>: ' . __( 'No newlines allowed', 'wporg' ) . '. ';
    287386                printf( __( 'Allowed tags: %s', 'wporg' ), trim( $allowed_tags, ', ' ) ) . "</p>\n";
    288                 echo "<p><input id='submit-{$instance}' class='submit' type='submit' value='Add Feedback' name='submit-{$instance}'>\n";
    289                 echo "<input type='hidden' name='comment_post_ID' value='" . get_the_ID() . "' id='comment_post_ID-{$instance}' />\n";
    290                 echo "<input type='hidden' name='comment_parent' id='comment_parent-{$instance}' value='{$comment_id}' />\n";
     387                echo "<p><input id='submit-{$instance}' class='submit' type='submit' value='{$button_text}' name='submit-{$instance}'>\n";
     388                echo "<input type='hidden' name='comment_post_ID' value='{$post_id}' id='comment_post_ID-{$instance}' />\n";
     389                echo "<input type='hidden' name='comment_parent' id='comment_parent-{$instance}' value='{$parent}' />\n";
     390                if ( $edit ) {
     391                        echo self::get_edit_fields( $comment_id, $instance );
     392                }
     393
    291394                echo "</p>\n</form>\n</div><!-- #feedback-editor-{$comment_id} -->\n";
    292395                return ob_get_clean();
    293396        }
    294397
     398        /**
     399         * Get the rules list for the comment form.
     400         *
     401         * @param string $context Accepts 'feedback' or empty sring
     402         * @return string Editor rules.
     403         */
     404        function get_editor_rules( $context = '' ) {
     405                if ( 'feedback' === $context ) {
     406                        return '<ul><li>'
     407                                . __( 'This form is not for support requests, spam, bug reports, complaints, or self-promotion. Entries of this nature will be deleted.', 'wporg' )
     408                                . '</li><li class="user-notes-are-gpl">'
     409
     410                                . sprintf(
     411                                /* translators: 1: GFDL link */
     412                                __( '<strong>NOTE:</strong> All contributions are licensed under %s and are moderated before appearing on the site.', 'wporg' ),
     413                                '<a href="https://gnu.org/licenses/fdl.html">GFDL</a>'
     414                        )
     415                                . '</li></ul>';
     416                }
     417
     418                return '<ul><li>'
     419                        . __( 'This form is not for support requests, discussions, spam, bug reports, complaints, or self-promotion. Entries of this nature will be deleted.', 'wporg' )
     420                        . '</li><li>'
     421                        . __( 'In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key. In some cases the Esc key will need to be pressed twice before the Tab key will allow you to continue.', 'wporg' )
     422                        . '</li><li class="user-notes-are-gpl">'
     423                        . sprintf(
     424                        /* translators: 1: GFDL link */
     425                        __( '<strong>NOTE:</strong> All contributions are licensed under %s and are moderated before appearing on the site.', 'wporg' ),
     426                        '<a href="https://gnu.org/licenses/fdl.html">GFDL</a>'
     427                )
     428                        . '</li></ul>';
     429
     430        }
     431
     432        /**
     433         * Get the editor styles.
     434         *
     435         * @return string Editor styles.
     436         */
     437        function get_editor_style() {
     438                $style = '<style type="text/css">';
     439                ob_start();
     440                include get_stylesheet_directory() . '/stylesheets/editor-style.css';
     441                $style .= ob_get_clean();
     442                $style .= ' </style>';
     443                return $style;
     444        }
     445
     446        /**
     447         * Get the hidden input fields HTML used when editing.
     448         *
     449         * @param int     $comment_id Comment ID.
     450         * @param integer $instance   Comment form instance number used in HTML id's.
     451         * @return string Hidden input fields HTML.
     452         */
     453        function get_edit_fields( $comment_id, $instance = 0 ) {
     454                $fields = "<input type='hidden' name='comment_ID' id='comment_ID-{$instance}' value='{$comment_id}' />\n";
     455                $fields .= "<input type='hidden' name='edit_contributed_note' id='edit_note_feedback-{$instance}' value='1' />\n";
     456                $fields .= wp_nonce_field( 'update-note_' . $comment_id, '_wpnonce', true, false );
     457
     458                return $fields;
     459        }
     460
    295461} // DevHub_User_Submitted_Content
    296462
    297463DevHub_User_Submitted_Content::init();
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/js/user-notes-feedback.js

     
    44                return;
    55        }
    66
     7        var wpAdminBar     = 0;
    78        var options        = wporg_note_feedback;
    8         var wpAdminBar     = $('#page.admin-bar').length ? 32 : 0;
    99        var feedbackToggle = $( '<a class="feedback-toggle" href="#">' + options.show + '</a>' );
    1010        var hash           = window.location.hash;
    1111
     
    7878
    7979        // Show hidden child comments if the fragment identifier is a comment ID (e.g. #comment-63). 
    8080        $( document ).ready( function() {
    81 
     81                wpAdminBar = $('#wpadminbar').length ? 32 : 0
    8282                var childComments = $( '.comment' ).find( 'ul.children' );
    8383
    84                 if ( !( hash.length && childComments.length ) ) {
     84                if ( ! ( hash.length && childComments.length ) ) {
    8585                        return;
    8686                }
    8787
    88                 var hashComment = childComments.find( hash ).first();
    89                 if ( hashComment.length ) {
    90                         // Child comment exists.
     88                var hashComment = childComments.find( hash + '.depth-2' ).first();
     89                if ( ! hashComment.length ) {
     90                        return;
     91                }
     92                // Child comment exists.
    9193
    92                         var parent = hashComment.closest( '.comment.depth-1' );
    93                         if ( parent.find( '.feedback' ).hasClass( 'hide-if-js' ) ) {
    94                                 // Show child comments.
    95                                 parent.find( '.feedback-toggle' ).first().trigger( 'click' );
    96                         }
     94                var parent = hashComment.closest( '.comment.depth-1' );
     95                if ( parent.find( '.feedback' ).hasClass( 'hide-if-js' ) ) {
     96                        // Show child comments.
     97                        parent.find( '.feedback-toggle' ).first().trigger( 'click' );
     98                }
    9799
    98                         // Scroll to the child comment.
    99                         var pos = hashComment.offset();
    100                         $( 'html,body' ).animate( {
    101                                 scrollTop: pos.top - wpAdminBar
    102                         }, 1 );
    103                 }
     100                // Scroll to the child comment minus admin bar offset.
     101                var pos = hashComment.offset();
     102                $( 'html,body' ).animate( {
     103                        scrollTop: pos.top - wpAdminBar
     104                }, 1 );
     105
    104106        } );
    105107
    106108        // Show/Hide feedback toggle link.
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/js/user-notes-preview.js

     
    2020                text = '';
    2121                processing = false;
    2222
     23                // Show tabs with Javascript.
     24                $( '#commentform .tablist').show();
     25
    2326                if ( textarea.length && preview.length && tabs.length ) {
    2427
    2528                        // Append spinner to preview tab
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/js/user-notes.js

     
    55
    66( function( $ ) {
    77
    8         var commentForm = $( '.comment-form textarea' );
     8        var commentForm = $( '.comment-form textarea' );       
     9        var hash = window.location.hash;
     10        var wpAdminBar = 0;
    911
     12        // Check if the fragment identifier is a comment ID (e.g. #comment-63)
     13        if ( !hash.match( /#comment\-[0-9]+$/ ) ) {
     14                hash = '';
     15        }
     16
    1017        if ( !commentForm.length ) {
    1118                return;
    1219        }
    1320
     21        $( document ).ready( function() {
     22                wpAdminBar = $( '#wpadminbar' ).length ? 32 : 0;
     23                if( ! wpAdminBar || ! hash ) {
     24                        return;
     25                }
     26
     27                var hashComment = $('#comments').find( hash + '.depth-1' ).first();
     28                if( ! hashComment.length  ) {
     29                        return;
     30                }
     31
     32                // Scroll to top level comment minus admin bar offset.
     33                var pos = hashComment.offset();
     34                $( 'html,body' ).animate( {
     35                        scrollTop: pos.top - wpAdminBar
     36                }, 1 );
     37        } );
     38
    1439        function showCommentForm() {
     40                $( '#add-user-note' ).hide();
    1541                $( '#respond' ).show();
    16                 $( '#add-user-note' ).hide();
    1742
    18                 var wpAdminBar = $( '#page.admin-bar' ).length ? 32 : 0;
    1943                var target     = $( '#commentform #add-note-or-feedback' );
    2044                if ( target.length ) {
    2145                        var pos = target.offset();
     
    2852                }
    2953        }
    3054
    31         $( '#respond, #add-user-note' ).toggle();
     55        if( $('#add-user-note').length ) {
     56                // Hide by default if #add-user-note exists
     57                $( '#respond' ).hide();
     58        }
     59
     60
    3261        $( '#add-user-note, .table-of-contents a[href="#add-note-or-feedback"]' ).click( function( e ) {
    3362                e.preventDefault();
    3463
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/package-lock.json

     
     1{
     2    "name": "wporg-developer",
     3    "requires": true,
     4    "lockfileVersion": 1,
     5    "dependencies": {
     6        "abbrev": {
     7            "version": "1.1.1",
     8            "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
     9            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
     10            "dev": true
     11        },
     12        "ajv": {
     13            "version": "5.5.2",
     14            "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
     15            "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
     16            "dev": true,
     17            "requires": {
     18                "co": "4.6.0",
     19                "fast-deep-equal": "1.1.0",
     20                "fast-json-stable-stringify": "2.0.0",
     21                "json-schema-traverse": "0.3.1"
     22            }
     23        },
     24        "amdefine": {
     25            "version": "1.0.1",
     26            "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
     27            "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
     28            "dev": true
     29        },
     30        "ansi-regex": {
     31            "version": "2.1.1",
     32            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
     33            "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
     34            "dev": true
     35        },
     36        "ansi-styles": {
     37            "version": "2.2.1",
     38            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
     39            "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
     40            "dev": true
     41        },
     42        "aproba": {
     43            "version": "1.2.0",
     44            "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
     45            "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
     46            "dev": true
     47        },
     48        "are-we-there-yet": {
     49            "version": "1.1.4",
     50            "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
     51            "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
     52            "dev": true,
     53            "requires": {
     54                "delegates": "1.0.0",
     55                "readable-stream": "2.3.6"
     56            }
     57        },
     58        "argparse": {
     59            "version": "0.1.16",
     60            "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
     61            "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
     62            "dev": true,
     63            "requires": {
     64                "underscore": "1.7.0",
     65                "underscore.string": "2.4.0"
     66            },
     67            "dependencies": {
     68                "underscore.string": {
     69                    "version": "2.4.0",
     70                    "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
     71                    "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
     72                    "dev": true
     73                }
     74            }
     75        },
     76        "array-find-index": {
     77            "version": "1.0.2",
     78            "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
     79            "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
     80            "dev": true
     81        },
     82        "asn1": {
     83            "version": "0.2.3",
     84            "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
     85            "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
     86            "dev": true
     87        },
     88        "assert-plus": {
     89            "version": "1.0.0",
     90            "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
     91            "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
     92            "dev": true
     93        },
     94        "async": {
     95            "version": "0.1.22",
     96            "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
     97            "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
     98            "dev": true
     99        },
     100        "async-foreach": {
     101            "version": "0.1.3",
     102            "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
     103            "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
     104            "dev": true
     105        },
     106        "asynckit": {
     107            "version": "0.4.0",
     108            "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
     109            "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
     110            "dev": true
     111        },
     112        "aws-sign2": {
     113            "version": "0.7.0",
     114            "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
     115            "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
     116            "dev": true
     117        },
     118        "aws4": {
     119            "version": "1.7.0",
     120            "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
     121            "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
     122            "dev": true
     123        },
     124        "balanced-match": {
     125            "version": "1.0.0",
     126            "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
     127            "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
     128            "dev": true
     129        },
     130        "bcrypt-pbkdf": {
     131            "version": "1.0.1",
     132            "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
     133            "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
     134            "dev": true,
     135            "optional": true,
     136            "requires": {
     137                "tweetnacl": "0.14.5"
     138            }
     139        },
     140        "block-stream": {
     141            "version": "0.0.9",
     142            "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
     143            "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
     144            "dev": true,
     145            "requires": {
     146                "inherits": "2.0.3"
     147            }
     148        },
     149        "boom": {
     150            "version": "4.3.1",
     151            "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
     152            "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
     153            "dev": true,
     154            "requires": {
     155                "hoek": "4.2.1"
     156            }
     157        },
     158        "brace-expansion": {
     159            "version": "1.1.11",
     160            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
     161            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
     162            "dev": true,
     163            "requires": {
     164                "balanced-match": "1.0.0",
     165                "concat-map": "0.0.1"
     166            }
     167        },
     168        "builtin-modules": {
     169            "version": "1.1.1",
     170            "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
     171            "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
     172            "dev": true
     173        },
     174        "camelcase": {
     175            "version": "2.1.1",
     176            "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
     177            "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
     178            "dev": true
     179        },
     180        "camelcase-keys": {
     181            "version": "2.1.0",
     182            "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
     183            "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
     184            "dev": true,
     185            "requires": {
     186                "camelcase": "2.1.1",
     187                "map-obj": "1.0.1"
     188            }
     189        },
     190        "caseless": {
     191            "version": "0.12.0",
     192            "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
     193            "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
     194            "dev": true
     195        },
     196        "chalk": {
     197            "version": "1.1.3",
     198            "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
     199            "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
     200            "dev": true,
     201            "requires": {
     202                "ansi-styles": "2.2.1",
     203                "escape-string-regexp": "1.0.5",
     204                "has-ansi": "2.0.0",
     205                "strip-ansi": "3.0.1",
     206                "supports-color": "2.0.0"
     207            }
     208        },
     209        "cliui": {
     210            "version": "3.2.0",
     211            "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
     212            "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
     213            "dev": true,
     214            "requires": {
     215                "string-width": "1.0.2",
     216                "strip-ansi": "3.0.1",
     217                "wrap-ansi": "2.1.0"
     218            }
     219        },
     220        "co": {
     221            "version": "4.6.0",
     222            "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
     223            "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
     224            "dev": true
     225        },
     226        "code-point-at": {
     227            "version": "1.1.0",
     228            "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
     229            "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
     230            "dev": true
     231        },
     232        "coffee-script": {
     233            "version": "1.3.3",
     234            "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
     235            "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=",
     236            "dev": true
     237        },
     238        "colors": {
     239            "version": "0.6.2",
     240            "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
     241            "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
     242            "dev": true
     243        },
     244        "combined-stream": {
     245            "version": "1.0.6",
     246            "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
     247            "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
     248            "dev": true,
     249            "requires": {
     250                "delayed-stream": "1.0.0"
     251            }
     252        },
     253        "concat-map": {
     254            "version": "0.0.1",
     255            "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
     256            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
     257            "dev": true
     258        },
     259        "console-control-strings": {
     260            "version": "1.1.0",
     261            "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
     262            "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
     263            "dev": true
     264        },
     265        "core-util-is": {
     266            "version": "1.0.2",
     267            "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
     268            "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
     269            "dev": true
     270        },
     271        "cross-spawn": {
     272            "version": "3.0.1",
     273            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
     274            "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
     275            "dev": true,
     276            "requires": {
     277                "lru-cache": "4.1.2",
     278                "which": "1.3.0"
     279            },
     280            "dependencies": {
     281                "lru-cache": {
     282                    "version": "4.1.2",
     283                    "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
     284                    "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
     285                    "dev": true,
     286                    "requires": {
     287                        "pseudomap": "1.0.2",
     288                        "yallist": "2.1.2"
     289                    }
     290                },
     291                "which": {
     292                    "version": "1.3.0",
     293                    "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
     294                    "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
     295                    "dev": true,
     296                    "requires": {
     297                        "isexe": "2.0.0"
     298                    }
     299                }
     300            }
     301        },
     302        "cryptiles": {
     303            "version": "3.1.2",
     304            "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
     305            "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
     306            "dev": true,
     307            "requires": {
     308                "boom": "5.2.0"
     309            },
     310            "dependencies": {
     311                "boom": {
     312                    "version": "5.2.0",
     313                    "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
     314                    "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
     315                    "dev": true,
     316                    "requires": {
     317                        "hoek": "4.2.1"
     318                    }
     319                }
     320            }
     321        },
     322        "currently-unhandled": {
     323            "version": "0.4.1",
     324            "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
     325            "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
     326            "dev": true,
     327            "requires": {
     328                "array-find-index": "1.0.2"
     329            }
     330        },
     331        "dashdash": {
     332            "version": "1.14.1",
     333            "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
     334            "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
     335            "dev": true,
     336            "requires": {
     337                "assert-plus": "1.0.0"
     338            }
     339        },
     340        "dateformat": {
     341            "version": "1.0.2-1.2.3",
     342            "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
     343            "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
     344            "dev": true
     345        },
     346        "debug": {
     347            "version": "0.7.4",
     348            "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
     349            "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
     350            "dev": true
     351        },
     352        "decamelize": {
     353            "version": "1.2.0",
     354            "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
     355            "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
     356            "dev": true
     357        },
     358        "delayed-stream": {
     359            "version": "1.0.0",
     360            "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
     361            "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
     362            "dev": true
     363        },
     364        "delegates": {
     365            "version": "1.0.0",
     366            "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
     367            "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
     368            "dev": true
     369        },
     370        "each-async": {
     371            "version": "1.1.1",
     372            "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
     373            "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
     374            "dev": true,
     375            "requires": {
     376                "onetime": "1.1.0",
     377                "set-immediate-shim": "1.0.1"
     378            }
     379        },
     380        "ecc-jsbn": {
     381            "version": "0.1.1",
     382            "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
     383            "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
     384            "dev": true,
     385            "optional": true,
     386            "requires": {
     387                "jsbn": "0.1.1"
     388            }
     389        },
     390        "error-ex": {
     391            "version": "1.3.1",
     392            "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
     393            "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
     394            "dev": true,
     395            "requires": {
     396                "is-arrayish": "0.2.1"
     397            }
     398        },
     399        "escape-string-regexp": {
     400            "version": "1.0.5",
     401            "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
     402            "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
     403            "dev": true
     404        },
     405        "esprima": {
     406            "version": "1.0.4",
     407            "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
     408            "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
     409            "dev": true
     410        },
     411        "eventemitter2": {
     412            "version": "0.4.14",
     413            "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
     414            "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
     415            "dev": true
     416        },
     417        "exit": {
     418            "version": "0.1.2",
     419            "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
     420            "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
     421            "dev": true
     422        },
     423        "extend": {
     424            "version": "3.0.1",
     425            "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
     426            "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
     427            "dev": true
     428        },
     429        "extsprintf": {
     430            "version": "1.3.0",
     431            "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
     432            "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
     433            "dev": true
     434        },
     435        "fast-deep-equal": {
     436            "version": "1.1.0",
     437            "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
     438            "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
     439            "dev": true
     440        },
     441        "fast-json-stable-stringify": {
     442            "version": "2.0.0",
     443            "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
     444            "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
     445            "dev": true
     446        },
     447        "faye-websocket": {
     448            "version": "0.4.4",
     449            "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz",
     450            "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=",
     451            "dev": true
     452        },
     453        "find-up": {
     454            "version": "1.1.2",
     455            "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
     456            "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
     457            "dev": true,
     458            "requires": {
     459                "path-exists": "2.1.0",
     460                "pinkie-promise": "2.0.1"
     461            }
     462        },
     463        "findup-sync": {
     464            "version": "0.1.3",
     465            "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
     466            "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
     467            "dev": true,
     468            "requires": {
     469                "glob": "3.2.11",
     470                "lodash": "2.4.2"
     471            },
     472            "dependencies": {
     473                "glob": {
     474                    "version": "3.2.11",
     475                    "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
     476                    "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
     477                    "dev": true,
     478                    "requires": {
     479                        "inherits": "2.0.3",
     480                        "minimatch": "0.3.0"
     481                    }
     482                },
     483                "lodash": {
     484                    "version": "2.4.2",
     485                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
     486                    "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
     487                    "dev": true
     488                },
     489                "minimatch": {
     490                    "version": "0.3.0",
     491                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
     492                    "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
     493                    "dev": true,
     494                    "requires": {
     495                        "lru-cache": "2.7.3",
     496                        "sigmund": "1.0.1"
     497                    }
     498                }
     499            }
     500        },
     501        "forever-agent": {
     502            "version": "0.6.1",
     503            "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
     504            "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
     505            "dev": true
     506        },
     507        "form-data": {
     508            "version": "2.3.2",
     509            "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
     510            "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
     511            "dev": true,
     512            "requires": {
     513                "asynckit": "0.4.0",
     514                "combined-stream": "1.0.6",
     515                "mime-types": "2.1.18"
     516            }
     517        },
     518        "fs.realpath": {
     519            "version": "1.0.0",
     520            "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
     521            "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
     522            "dev": true
     523        },
     524        "fstream": {
     525            "version": "1.0.11",
     526            "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
     527            "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
     528            "dev": true,
     529            "requires": {
     530                "graceful-fs": "4.1.11",
     531                "inherits": "2.0.3",
     532                "mkdirp": "0.5.1",
     533                "rimraf": "2.2.8"
     534            },
     535            "dependencies": {
     536                "graceful-fs": {
     537                    "version": "4.1.11",
     538                    "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
     539                    "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
     540                    "dev": true
     541                }
     542            }
     543        },
     544        "gauge": {
     545            "version": "2.7.4",
     546            "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
     547            "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
     548            "dev": true,
     549            "requires": {
     550                "aproba": "1.2.0",
     551                "console-control-strings": "1.1.0",
     552                "has-unicode": "2.0.1",
     553                "object-assign": "4.1.1",
     554                "signal-exit": "3.0.2",
     555                "string-width": "1.0.2",
     556                "strip-ansi": "3.0.1",
     557                "wide-align": "1.1.2"
     558            },
     559            "dependencies": {
     560                "object-assign": {
     561                    "version": "4.1.1",
     562                    "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
     563                    "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
     564                    "dev": true
     565                }
     566            }
     567        },
     568        "gaze": {
     569            "version": "0.5.2",
     570            "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
     571            "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
     572            "dev": true,
     573            "requires": {
     574                "globule": "0.1.0"
     575            }
     576        },
     577        "get-caller-file": {
     578            "version": "1.0.2",
     579            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
     580            "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
     581            "dev": true
     582        },
     583        "get-stdin": {
     584            "version": "4.0.1",
     585            "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
     586            "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
     587            "dev": true
     588        },
     589        "getobject": {
     590            "version": "0.1.0",
     591            "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
     592            "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
     593            "dev": true
     594        },
     595        "getpass": {
     596            "version": "0.1.7",
     597            "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
     598            "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
     599            "dev": true,
     600            "requires": {
     601                "assert-plus": "1.0.0"
     602            }
     603        },
     604        "glob": {
     605            "version": "3.1.21",
     606            "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
     607            "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
     608            "dev": true,
     609            "requires": {
     610                "graceful-fs": "1.2.3",
     611                "inherits": "1.0.2",
     612                "minimatch": "0.2.14"
     613            },
     614            "dependencies": {
     615                "inherits": {
     616                    "version": "1.0.2",
     617                    "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
     618                    "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
     619                    "dev": true
     620                }
     621            }
     622        },
     623        "globule": {
     624            "version": "0.1.0",
     625            "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
     626            "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
     627            "dev": true,
     628            "requires": {
     629                "glob": "3.1.21",
     630                "lodash": "1.0.2",
     631                "minimatch": "0.2.14"
     632            },
     633            "dependencies": {
     634                "lodash": {
     635                    "version": "1.0.2",
     636                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
     637                    "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
     638                    "dev": true
     639                }
     640            }
     641        },
     642        "graceful-fs": {
     643            "version": "1.2.3",
     644            "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
     645            "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
     646            "dev": true
     647        },
     648        "grunt": {
     649            "version": "0.4.5",
     650            "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
     651            "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
     652            "dev": true,
     653            "requires": {
     654                "async": "0.1.22",
     655                "coffee-script": "1.3.3",
     656                "colors": "0.6.2",
     657                "dateformat": "1.0.2-1.2.3",
     658                "eventemitter2": "0.4.14",
     659                "exit": "0.1.2",
     660                "findup-sync": "0.1.3",
     661                "getobject": "0.1.0",
     662                "glob": "3.1.21",
     663                "grunt-legacy-log": "0.1.3",
     664                "grunt-legacy-util": "0.2.0",
     665                "hooker": "0.2.3",
     666                "iconv-lite": "0.2.11",
     667                "js-yaml": "2.0.5",
     668                "lodash": "0.9.2",
     669                "minimatch": "0.2.14",
     670                "nopt": "1.0.10",
     671                "rimraf": "2.2.8",
     672                "underscore.string": "2.2.1",
     673                "which": "1.0.9"
     674            }
     675        },
     676        "grunt-contrib-watch": {
     677            "version": "0.6.1",
     678            "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz",
     679            "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=",
     680            "dev": true,
     681            "requires": {
     682                "async": "0.2.10",
     683                "gaze": "0.5.2",
     684                "lodash": "2.4.2",
     685                "tiny-lr-fork": "0.0.5"
     686            },
     687            "dependencies": {
     688                "async": {
     689                    "version": "0.2.10",
     690                    "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
     691                    "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
     692                    "dev": true
     693                },
     694                "lodash": {
     695                    "version": "2.4.2",
     696                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
     697                    "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
     698                    "dev": true
     699                }
     700            }
     701        },
     702        "grunt-legacy-log": {
     703            "version": "0.1.3",
     704            "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
     705            "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
     706            "dev": true,
     707            "requires": {
     708                "colors": "0.6.2",
     709                "grunt-legacy-log-utils": "0.1.1",
     710                "hooker": "0.2.3",
     711                "lodash": "2.4.2",
     712                "underscore.string": "2.3.3"
     713            },
     714            "dependencies": {
     715                "lodash": {
     716                    "version": "2.4.2",
     717                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
     718                    "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
     719                    "dev": true
     720                },
     721                "underscore.string": {
     722                    "version": "2.3.3",
     723                    "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
     724                    "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
     725                    "dev": true
     726                }
     727            }
     728        },
     729        "grunt-legacy-log-utils": {
     730            "version": "0.1.1",
     731            "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
     732            "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
     733            "dev": true,
     734            "requires": {
     735                "colors": "0.6.2",
     736                "lodash": "2.4.2",
     737                "underscore.string": "2.3.3"
     738            },
     739            "dependencies": {
     740                "lodash": {
     741                    "version": "2.4.2",
     742                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
     743                    "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
     744                    "dev": true
     745                },
     746                "underscore.string": {
     747                    "version": "2.3.3",
     748                    "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
     749                    "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
     750                    "dev": true
     751                }
     752            }
     753        },
     754        "grunt-legacy-util": {
     755            "version": "0.2.0",
     756            "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
     757            "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
     758            "dev": true,
     759            "requires": {
     760                "async": "0.1.22",
     761                "exit": "0.1.2",
     762                "getobject": "0.1.0",
     763                "hooker": "0.2.3",
     764                "lodash": "0.9.2",
     765                "underscore.string": "2.2.1",
     766                "which": "1.0.9"
     767            }
     768        },
     769        "grunt-sass": {
     770            "version": "1.0.0",
     771            "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-1.0.0.tgz",
     772            "integrity": "sha1-hGAqmrD8sP40BzdhKkulbMNhu8Q=",
     773            "dev": true,
     774            "requires": {
     775                "each-async": "1.1.1",
     776                "node-sass": "3.13.1",
     777                "object-assign": "2.1.1"
     778            }
     779        },
     780        "har-schema": {
     781            "version": "2.0.0",
     782            "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
     783            "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
     784            "dev": true
     785        },
     786        "har-validator": {
     787            "version": "5.0.3",
     788            "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
     789            "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
     790            "dev": true,
     791            "requires": {
     792                "ajv": "5.5.2",
     793                "har-schema": "2.0.0"
     794            }
     795        },
     796        "has-ansi": {
     797            "version": "2.0.0",
     798            "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
     799            "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
     800            "dev": true,
     801            "requires": {
     802                "ansi-regex": "2.1.1"
     803            }
     804        },
     805        "has-unicode": {
     806            "version": "2.0.1",
     807            "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
     808            "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
     809            "dev": true
     810        },
     811        "hawk": {
     812            "version": "6.0.2",
     813            "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
     814            "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
     815            "dev": true,
     816            "requires": {
     817                "boom": "4.3.1",
     818                "cryptiles": "3.1.2",
     819                "hoek": "4.2.1",
     820                "sntp": "2.1.0"
     821            }
     822        },
     823        "hoek": {
     824            "version": "4.2.1",
     825            "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
     826            "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
     827            "dev": true
     828        },
     829        "hooker": {
     830            "version": "0.2.3",
     831            "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
     832            "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
     833            "dev": true
     834        },
     835        "hosted-git-info": {
     836            "version": "2.6.0",
     837            "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
     838            "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
     839            "dev": true
     840        },
     841        "http-signature": {
     842            "version": "1.2.0",
     843            "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
     844            "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
     845            "dev": true,
     846            "requires": {
     847                "assert-plus": "1.0.0",
     848                "jsprim": "1.4.1",
     849                "sshpk": "1.14.1"
     850            }
     851        },
     852        "iconv-lite": {
     853            "version": "0.2.11",
     854            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
     855            "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
     856            "dev": true
     857        },
     858        "in-publish": {
     859            "version": "2.0.0",
     860            "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
     861            "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
     862            "dev": true
     863        },
     864        "indent-string": {
     865            "version": "2.1.0",
     866            "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
     867            "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
     868            "dev": true,
     869            "requires": {
     870                "repeating": "2.0.1"
     871            }
     872        },
     873        "inflight": {
     874            "version": "1.0.6",
     875            "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
     876            "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
     877            "dev": true,
     878            "requires": {
     879                "once": "1.4.0",
     880                "wrappy": "1.0.2"
     881            }
     882        },
     883        "inherits": {
     884            "version": "2.0.3",
     885            "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
     886            "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
     887            "dev": true
     888        },
     889        "invert-kv": {
     890            "version": "1.0.0",
     891            "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
     892            "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
     893            "dev": true
     894        },
     895        "is-arrayish": {
     896            "version": "0.2.1",
     897            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
     898            "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
     899            "dev": true
     900        },
     901        "is-builtin-module": {
     902            "version": "1.0.0",
     903            "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
     904            "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
     905            "dev": true,
     906            "requires": {
     907                "builtin-modules": "1.1.1"
     908            }
     909        },
     910        "is-finite": {
     911            "version": "1.0.2",
     912            "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
     913            "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
     914            "dev": true,
     915            "requires": {
     916                "number-is-nan": "1.0.1"
     917            }
     918        },
     919        "is-fullwidth-code-point": {
     920            "version": "1.0.0",
     921            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
     922            "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
     923            "dev": true,
     924            "requires": {
     925                "number-is-nan": "1.0.1"
     926            }
     927        },
     928        "is-typedarray": {
     929            "version": "1.0.0",
     930            "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
     931            "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
     932            "dev": true
     933        },
     934        "is-utf8": {
     935            "version": "0.2.1",
     936            "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
     937            "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
     938            "dev": true
     939        },
     940        "isarray": {
     941            "version": "1.0.0",
     942            "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
     943            "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
     944            "dev": true
     945        },
     946        "isexe": {
     947            "version": "2.0.0",
     948            "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
     949            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
     950            "dev": true
     951        },
     952        "isstream": {
     953            "version": "0.1.2",
     954            "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
     955            "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
     956            "dev": true
     957        },
     958        "js-base64": {
     959            "version": "2.4.3",
     960            "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
     961            "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
     962            "dev": true
     963        },
     964        "js-yaml": {
     965            "version": "2.0.5",
     966            "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
     967            "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
     968            "dev": true,
     969            "requires": {
     970                "argparse": "0.1.16",
     971                "esprima": "1.0.4"
     972            }
     973        },
     974        "jsbn": {
     975            "version": "0.1.1",
     976            "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
     977            "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
     978            "dev": true,
     979            "optional": true
     980        },
     981        "json-schema": {
     982            "version": "0.2.3",
     983            "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
     984            "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
     985            "dev": true
     986        },
     987        "json-schema-traverse": {
     988            "version": "0.3.1",
     989            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
     990            "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
     991            "dev": true
     992        },
     993        "json-stringify-safe": {
     994            "version": "5.0.1",
     995            "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
     996            "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
     997            "dev": true
     998        },
     999        "jsprim": {
     1000            "version": "1.4.1",
     1001            "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
     1002            "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
     1003            "dev": true,
     1004            "requires": {
     1005                "assert-plus": "1.0.0",
     1006                "extsprintf": "1.3.0",
     1007                "json-schema": "0.2.3",
     1008                "verror": "1.10.0"
     1009            }
     1010        },
     1011        "lcid": {
     1012            "version": "1.0.0",
     1013            "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
     1014            "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
     1015            "dev": true,
     1016            "requires": {
     1017                "invert-kv": "1.0.0"
     1018            }
     1019        },
     1020        "load-json-file": {
     1021            "version": "1.1.0",
     1022            "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
     1023            "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
     1024            "dev": true,
     1025            "requires": {
     1026                "graceful-fs": "4.1.11",
     1027                "parse-json": "2.2.0",
     1028                "pify": "2.3.0",
     1029                "pinkie-promise": "2.0.1",
     1030                "strip-bom": "2.0.0"
     1031            },
     1032            "dependencies": {
     1033                "graceful-fs": {
     1034                    "version": "4.1.11",
     1035                    "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
     1036                    "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
     1037                    "dev": true
     1038                }
     1039            }
     1040        },
     1041        "lodash": {
     1042            "version": "0.9.2",
     1043            "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
     1044            "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
     1045            "dev": true
     1046        },
     1047        "lodash.assign": {
     1048            "version": "4.2.0",
     1049            "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
     1050            "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
     1051            "dev": true
     1052        },
     1053        "lodash.clonedeep": {
     1054            "version": "4.5.0",
     1055            "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
     1056            "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
     1057            "dev": true
     1058        },
     1059        "loud-rejection": {
     1060            "version": "1.6.0",
     1061            "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
     1062            "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
     1063            "dev": true,
     1064            "requires": {
     1065                "currently-unhandled": "0.4.1",
     1066                "signal-exit": "3.0.2"
     1067            }
     1068        },
     1069        "lru-cache": {
     1070            "version": "2.7.3",
     1071            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
     1072            "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
     1073            "dev": true
     1074        },
     1075        "map-obj": {
     1076            "version": "1.0.1",
     1077            "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
     1078            "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
     1079            "dev": true
     1080        },
     1081        "matchdep": {
     1082            "version": "0.3.0",
     1083            "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-0.3.0.tgz",
     1084            "integrity": "sha1-Qo5knOXCgY0iDgRj7/XA3p5Z1S4=",
     1085            "dev": true,
     1086            "requires": {
     1087                "findup-sync": "0.1.3",
     1088                "globule": "0.1.0",
     1089                "resolve": "0.5.1",
     1090                "stack-trace": "0.0.7"
     1091            }
     1092        },
     1093        "meow": {
     1094            "version": "3.7.0",
     1095            "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
     1096            "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
     1097            "dev": true,
     1098            "requires": {
     1099                "camelcase-keys": "2.1.0",
     1100                "decamelize": "1.2.0",
     1101                "loud-rejection": "1.6.0",
     1102                "map-obj": "1.0.1",
     1103                "minimist": "1.2.0",
     1104                "normalize-package-data": "2.4.0",
     1105                "object-assign": "4.1.1",
     1106                "read-pkg-up": "1.0.1",
     1107                "redent": "1.0.0",
     1108                "trim-newlines": "1.0.0"
     1109            },
     1110            "dependencies": {
     1111                "object-assign": {
     1112                    "version": "4.1.1",
     1113                    "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
     1114                    "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
     1115                    "dev": true
     1116                }
     1117            }
     1118        },
     1119        "mime-db": {
     1120            "version": "1.33.0",
     1121            "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
     1122            "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
     1123            "dev": true
     1124        },
     1125        "mime-types": {
     1126            "version": "2.1.18",
     1127            "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
     1128            "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
     1129            "dev": true,
     1130            "requires": {
     1131                "mime-db": "1.33.0"
     1132            }
     1133        },
     1134        "minimatch": {
     1135            "version": "0.2.14",
     1136            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
     1137            "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
     1138            "dev": true,
     1139            "requires": {
     1140                "lru-cache": "2.7.3",
     1141                "sigmund": "1.0.1"
     1142            }
     1143        },
     1144        "minimist": {
     1145            "version": "1.2.0",
     1146            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
     1147            "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
     1148            "dev": true
     1149        },
     1150        "mkdirp": {
     1151            "version": "0.5.1",
     1152            "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
     1153            "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
     1154            "dev": true,
     1155            "requires": {
     1156                "minimist": "0.0.8"
     1157            },
     1158            "dependencies": {
     1159                "minimist": {
     1160                    "version": "0.0.8",
     1161                    "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
     1162                    "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
     1163                    "dev": true
     1164                }
     1165            }
     1166        },
     1167        "nan": {
     1168            "version": "2.10.0",
     1169            "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
     1170            "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
     1171            "dev": true
     1172        },
     1173        "node-gyp": {
     1174            "version": "3.6.2",
     1175            "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
     1176            "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
     1177            "dev": true,
     1178            "requires": {
     1179                "fstream": "1.0.11",
     1180                "glob": "7.1.2",
     1181                "graceful-fs": "4.1.11",
     1182                "minimatch": "3.0.4",
     1183                "mkdirp": "0.5.1",
     1184                "nopt": "3.0.6",
     1185                "npmlog": "4.1.2",
     1186                "osenv": "0.1.5",
     1187                "request": "2.85.0",
     1188                "rimraf": "2.2.8",
     1189                "semver": "5.3.0",
     1190                "tar": "2.2.1",
     1191                "which": "1.0.9"
     1192            },
     1193            "dependencies": {
     1194                "glob": {
     1195                    "version": "7.1.2",
     1196                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
     1197                    "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
     1198                    "dev": true,
     1199                    "requires": {
     1200                        "fs.realpath": "1.0.0",
     1201                        "inflight": "1.0.6",
     1202                        "inherits": "2.0.3",
     1203                        "minimatch": "3.0.4",
     1204                        "once": "1.4.0",
     1205                        "path-is-absolute": "1.0.1"
     1206                    }
     1207                },
     1208                "graceful-fs": {
     1209                    "version": "4.1.11",
     1210                    "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
     1211                    "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
     1212                    "dev": true
     1213                },
     1214                "minimatch": {
     1215                    "version": "3.0.4",
     1216                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
     1217                    "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
     1218                    "dev": true,
     1219                    "requires": {
     1220                        "brace-expansion": "1.1.11"
     1221                    }
     1222                },
     1223                "nopt": {
     1224                    "version": "3.0.6",
     1225                    "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
     1226                    "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
     1227                    "dev": true,
     1228                    "requires": {
     1229                        "abbrev": "1.1.1"
     1230                    }
     1231                },
     1232                "semver": {
     1233                    "version": "5.3.0",
     1234                    "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
     1235                    "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
     1236                    "dev": true
     1237                }
     1238            }
     1239        },
     1240        "node-sass": {
     1241            "version": "3.13.1",
     1242            "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.13.1.tgz",
     1243            "integrity": "sha1-ckD7v/I5YwS0IjUn7TAgWJwAT8I=",
     1244            "dev": true,
     1245            "requires": {
     1246                "async-foreach": "0.1.3",
     1247                "chalk": "1.1.3",
     1248                "cross-spawn": "3.0.1",
     1249                "gaze": "1.1.2",
     1250                "get-stdin": "4.0.1",
     1251                "glob": "7.1.2",
     1252                "in-publish": "2.0.0",
     1253                "lodash.assign": "4.2.0",
     1254                "lodash.clonedeep": "4.5.0",
     1255                "meow": "3.7.0",
     1256                "mkdirp": "0.5.1",
     1257                "nan": "2.10.0",
     1258                "node-gyp": "3.6.2",
     1259                "npmlog": "4.1.2",
     1260                "request": "2.85.0",
     1261                "sass-graph": "2.2.4"
     1262            },
     1263            "dependencies": {
     1264                "gaze": {
     1265                    "version": "1.1.2",
     1266                    "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
     1267                    "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
     1268                    "dev": true,
     1269                    "requires": {
     1270                        "globule": "1.2.0"
     1271                    }
     1272                },
     1273                "glob": {
     1274                    "version": "7.1.2",
     1275                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
     1276                    "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
     1277                    "dev": true,
     1278                    "requires": {
     1279                        "fs.realpath": "1.0.0",
     1280                        "inflight": "1.0.6",
     1281                        "inherits": "2.0.3",
     1282                        "minimatch": "3.0.4",
     1283                        "once": "1.4.0",
     1284                        "path-is-absolute": "1.0.1"
     1285                    }
     1286                },
     1287                "globule": {
     1288                    "version": "1.2.0",
     1289                    "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
     1290                    "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
     1291                    "dev": true,
     1292                    "requires": {
     1293                        "glob": "7.1.2",
     1294                        "lodash": "4.17.5",
     1295                        "minimatch": "3.0.4"
     1296                    }
     1297                },
     1298                "lodash": {
     1299                    "version": "4.17.5",
     1300                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
     1301                    "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
     1302                    "dev": true
     1303                },
     1304                "minimatch": {
     1305                    "version": "3.0.4",
     1306                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
     1307                    "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
     1308                    "dev": true,
     1309                    "requires": {
     1310                        "brace-expansion": "1.1.11"
     1311                    }
     1312                }
     1313            }
     1314        },
     1315        "nopt": {
     1316            "version": "1.0.10",
     1317            "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
     1318            "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
     1319            "dev": true,
     1320            "requires": {
     1321                "abbrev": "1.1.1"
     1322            }
     1323        },
     1324        "noptify": {
     1325            "version": "0.0.3",
     1326            "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz",
     1327            "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=",
     1328            "dev": true,
     1329            "requires": {
     1330                "nopt": "2.0.0"
     1331            },
     1332            "dependencies": {
     1333                "nopt": {
     1334                    "version": "2.0.0",
     1335                    "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz",
     1336                    "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=",
     1337                    "dev": true,
     1338                    "requires": {
     1339                        "abbrev": "1.1.1"
     1340                    }
     1341                }
     1342            }
     1343        },
     1344        "normalize-package-data": {
     1345            "version": "2.4.0",
     1346            "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
     1347            "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
     1348            "dev": true,
     1349            "requires": {
     1350                "hosted-git-info": "2.6.0",
     1351                "is-builtin-module": "1.0.0",
     1352                "semver": "5.5.0",
     1353                "validate-npm-package-license": "3.0.3"
     1354            }
     1355        },
     1356        "npmlog": {
     1357            "version": "4.1.2",
     1358            "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
     1359            "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
     1360            "dev": true,
     1361            "requires": {
     1362                "are-we-there-yet": "1.1.4",
     1363                "console-control-strings": "1.1.0",
     1364                "gauge": "2.7.4",
     1365                "set-blocking": "2.0.0"
     1366            }
     1367        },
     1368        "number-is-nan": {
     1369            "version": "1.0.1",
     1370            "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
     1371            "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
     1372            "dev": true
     1373        },
     1374        "oauth-sign": {
     1375            "version": "0.8.2",
     1376            "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
     1377            "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
     1378            "dev": true
     1379        },
     1380        "object-assign": {
     1381            "version": "2.1.1",
     1382            "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
     1383            "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
     1384            "dev": true
     1385        },
     1386        "once": {
     1387            "version": "1.4.0",
     1388            "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
     1389            "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
     1390            "dev": true,
     1391            "requires": {
     1392                "wrappy": "1.0.2"
     1393            }
     1394        },
     1395        "onetime": {
     1396            "version": "1.1.0",
     1397            "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
     1398            "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
     1399            "dev": true
     1400        },
     1401        "os-homedir": {
     1402            "version": "1.0.2",
     1403            "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
     1404            "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
     1405            "dev": true
     1406        },
     1407        "os-locale": {
     1408            "version": "1.4.0",
     1409            "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
     1410            "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
     1411            "dev": true,
     1412            "requires": {
     1413                "lcid": "1.0.0"
     1414            }
     1415        },
     1416        "os-tmpdir": {
     1417            "version": "1.0.2",
     1418            "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
     1419            "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
     1420            "dev": true
     1421        },
     1422        "osenv": {
     1423            "version": "0.1.5",
     1424            "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
     1425            "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
     1426            "dev": true,
     1427            "requires": {
     1428                "os-homedir": "1.0.2",
     1429                "os-tmpdir": "1.0.2"
     1430            }
     1431        },
     1432        "parse-json": {
     1433            "version": "2.2.0",
     1434            "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
     1435            "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
     1436            "dev": true,
     1437            "requires": {
     1438                "error-ex": "1.3.1"
     1439            }
     1440        },
     1441        "path-exists": {
     1442            "version": "2.1.0",
     1443            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
     1444            "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
     1445            "dev": true,
     1446            "requires": {
     1447                "pinkie-promise": "2.0.1"
     1448            }
     1449        },
     1450        "path-is-absolute": {
     1451            "version": "1.0.1",
     1452            "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
     1453            "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
     1454            "dev": true
     1455        },
     1456        "path-type": {
     1457            "version": "1.1.0",
     1458            "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
     1459            "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
     1460            "dev": true,
     1461            "requires": {
     1462                "graceful-fs": "4.1.11",
     1463                "pify": "2.3.0",
     1464                "pinkie-promise": "2.0.1"
     1465            },
     1466            "dependencies": {
     1467                "graceful-fs": {
     1468                    "version": "4.1.11",
     1469                    "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
     1470                    "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
     1471                    "dev": true
     1472                }
     1473            }
     1474        },
     1475        "performance-now": {
     1476            "version": "2.1.0",
     1477            "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
     1478            "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
     1479            "dev": true
     1480        },
     1481        "pify": {
     1482            "version": "2.3.0",
     1483            "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
     1484            "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
     1485            "dev": true
     1486        },
     1487        "pinkie": {
     1488            "version": "2.0.4",
     1489            "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
     1490            "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
     1491            "dev": true
     1492        },
     1493        "pinkie-promise": {
     1494            "version": "2.0.1",
     1495            "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
     1496            "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
     1497            "dev": true,
     1498            "requires": {
     1499                "pinkie": "2.0.4"
     1500            }
     1501        },
     1502        "process-nextick-args": {
     1503            "version": "2.0.0",
     1504            "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
     1505            "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
     1506            "dev": true
     1507        },
     1508        "pseudomap": {
     1509            "version": "1.0.2",
     1510            "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
     1511            "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
     1512            "dev": true
     1513        },
     1514        "punycode": {
     1515            "version": "1.4.1",
     1516            "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
     1517            "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
     1518            "dev": true
     1519        },
     1520        "qs": {
     1521            "version": "0.5.6",
     1522            "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz",
     1523            "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=",
     1524            "dev": true
     1525        },
     1526        "read-pkg": {
     1527            "version": "1.1.0",
     1528            "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
     1529            "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
     1530            "dev": true,
     1531            "requires": {
     1532                "load-json-file": "1.1.0",
     1533                "normalize-package-data": "2.4.0",
     1534                "path-type": "1.1.0"
     1535            }
     1536        },
     1537        "read-pkg-up": {
     1538            "version": "1.0.1",
     1539            "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
     1540            "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
     1541            "dev": true,
     1542            "requires": {
     1543                "find-up": "1.1.2",
     1544                "read-pkg": "1.1.0"
     1545            }
     1546        },
     1547        "readable-stream": {
     1548            "version": "2.3.6",
     1549            "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
     1550            "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
     1551            "dev": true,
     1552            "requires": {
     1553                "core-util-is": "1.0.2",
     1554                "inherits": "2.0.3",
     1555                "isarray": "1.0.0",
     1556                "process-nextick-args": "2.0.0",
     1557                "safe-buffer": "5.1.1",
     1558                "string_decoder": "1.1.1",
     1559                "util-deprecate": "1.0.2"
     1560            }
     1561        },
     1562        "redent": {
     1563            "version": "1.0.0",
     1564            "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
     1565            "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
     1566            "dev": true,
     1567            "requires": {
     1568                "indent-string": "2.1.0",
     1569                "strip-indent": "1.0.1"
     1570            }
     1571        },
     1572        "repeating": {
     1573            "version": "2.0.1",
     1574            "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
     1575            "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
     1576            "dev": true,
     1577            "requires": {
     1578                "is-finite": "1.0.2"
     1579            }
     1580        },
     1581        "request": {
     1582            "version": "2.85.0",
     1583            "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
     1584            "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
     1585            "dev": true,
     1586            "requires": {
     1587                "aws-sign2": "0.7.0",
     1588                "aws4": "1.7.0",
     1589                "caseless": "0.12.0",
     1590                "combined-stream": "1.0.6",
     1591                "extend": "3.0.1",
     1592                "forever-agent": "0.6.1",
     1593                "form-data": "2.3.2",
     1594                "har-validator": "5.0.3",
     1595                "hawk": "6.0.2",
     1596                "http-signature": "1.2.0",
     1597                "is-typedarray": "1.0.0",
     1598                "isstream": "0.1.2",
     1599                "json-stringify-safe": "5.0.1",
     1600                "mime-types": "2.1.18",
     1601                "oauth-sign": "0.8.2",
     1602                "performance-now": "2.1.0",
     1603                "qs": "6.5.1",
     1604                "safe-buffer": "5.1.1",
     1605                "stringstream": "0.0.5",
     1606                "tough-cookie": "2.3.4",
     1607                "tunnel-agent": "0.6.0",
     1608                "uuid": "3.2.1"
     1609            },
     1610            "dependencies": {
     1611                "qs": {
     1612                    "version": "6.5.1",
     1613                    "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
     1614                    "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
     1615                    "dev": true
     1616                }
     1617            }
     1618        },
     1619        "require-directory": {
     1620            "version": "2.1.1",
     1621            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
     1622            "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
     1623            "dev": true
     1624        },
     1625        "require-main-filename": {
     1626            "version": "1.0.1",
     1627            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
     1628            "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
     1629            "dev": true
     1630        },
     1631        "resolve": {
     1632            "version": "0.5.1",
     1633            "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.5.1.tgz",
     1634            "integrity": "sha1-FeSiIsQja81M+FRUQSwtD7ZSRXY=",
     1635            "dev": true
     1636        },
     1637        "rimraf": {
     1638            "version": "2.2.8",
     1639            "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
     1640            "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
     1641            "dev": true
     1642        },
     1643        "safe-buffer": {
     1644            "version": "5.1.1",
     1645            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
     1646            "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
     1647            "dev": true
     1648        },
     1649        "sass-graph": {
     1650            "version": "2.2.4",
     1651            "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
     1652            "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
     1653            "dev": true,
     1654            "requires": {
     1655                "glob": "7.1.2",
     1656                "lodash": "4.17.5",
     1657                "scss-tokenizer": "0.2.3",
     1658                "yargs": "7.1.0"
     1659            },
     1660            "dependencies": {
     1661                "glob": {
     1662                    "version": "7.1.2",
     1663                    "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
     1664                    "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
     1665                    "dev": true,
     1666                    "requires": {
     1667                        "fs.realpath": "1.0.0",
     1668                        "inflight": "1.0.6",
     1669                        "inherits": "2.0.3",
     1670                        "minimatch": "3.0.4",
     1671                        "once": "1.4.0",
     1672                        "path-is-absolute": "1.0.1"
     1673                    }
     1674                },
     1675                "lodash": {
     1676                    "version": "4.17.5",
     1677                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
     1678                    "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
     1679                    "dev": true
     1680                },
     1681                "minimatch": {
     1682                    "version": "3.0.4",
     1683                    "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
     1684                    "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
     1685                    "dev": true,
     1686                    "requires": {
     1687                        "brace-expansion": "1.1.11"
     1688                    }
     1689                }
     1690            }
     1691        },
     1692        "scss-tokenizer": {
     1693            "version": "0.2.3",
     1694            "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
     1695            "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
     1696            "dev": true,
     1697            "requires": {
     1698                "js-base64": "2.4.3",
     1699                "source-map": "0.4.4"
     1700            }
     1701        },
     1702        "semver": {
     1703            "version": "5.5.0",
     1704            "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
     1705            "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
     1706            "dev": true
     1707        },
     1708        "set-blocking": {
     1709            "version": "2.0.0",
     1710            "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
     1711            "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
     1712            "dev": true
     1713        },
     1714        "set-immediate-shim": {
     1715            "version": "1.0.1",
     1716            "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
     1717            "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
     1718            "dev": true
     1719        },
     1720        "sigmund": {
     1721            "version": "1.0.1",
     1722            "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
     1723            "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
     1724            "dev": true
     1725        },
     1726        "signal-exit": {
     1727            "version": "3.0.2",
     1728            "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
     1729            "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
     1730            "dev": true
     1731        },
     1732        "sntp": {
     1733            "version": "2.1.0",
     1734            "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
     1735            "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
     1736            "dev": true,
     1737            "requires": {
     1738                "hoek": "4.2.1"
     1739            }
     1740        },
     1741        "source-map": {
     1742            "version": "0.4.4",
     1743            "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
     1744            "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
     1745            "dev": true,
     1746            "requires": {
     1747                "amdefine": "1.0.1"
     1748            }
     1749        },
     1750        "spdx-correct": {
     1751            "version": "3.0.0",
     1752            "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
     1753            "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
     1754            "dev": true,
     1755            "requires": {
     1756                "spdx-expression-parse": "3.0.0",
     1757                "spdx-license-ids": "3.0.0"
     1758            }
     1759        },
     1760        "spdx-exceptions": {
     1761            "version": "2.1.0",
     1762            "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
     1763            "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
     1764            "dev": true
     1765        },
     1766        "spdx-expression-parse": {
     1767            "version": "3.0.0",
     1768            "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
     1769            "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
     1770            "dev": true,
     1771            "requires": {
     1772                "spdx-exceptions": "2.1.0",
     1773                "spdx-license-ids": "3.0.0"
     1774            }
     1775        },
     1776        "spdx-license-ids": {
     1777            "version": "3.0.0",
     1778            "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
     1779            "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
     1780            "dev": true
     1781        },
     1782        "sshpk": {
     1783            "version": "1.14.1",
     1784            "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
     1785            "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
     1786            "dev": true,
     1787            "requires": {
     1788                "asn1": "0.2.3",
     1789                "assert-plus": "1.0.0",
     1790                "bcrypt-pbkdf": "1.0.1",
     1791                "dashdash": "1.14.1",
     1792                "ecc-jsbn": "0.1.1",
     1793                "getpass": "0.1.7",
     1794                "jsbn": "0.1.1",
     1795                "tweetnacl": "0.14.5"
     1796            }
     1797        },
     1798        "stack-trace": {
     1799            "version": "0.0.7",
     1800            "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz",
     1801            "integrity": "sha1-xy4Il0T8Nln1CM3ONiGvVjTsD/8=",
     1802            "dev": true
     1803        },
     1804        "string-width": {
     1805            "version": "1.0.2",
     1806            "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
     1807            "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
     1808            "dev": true,
     1809            "requires": {
     1810                "code-point-at": "1.1.0",
     1811                "is-fullwidth-code-point": "1.0.0",
     1812                "strip-ansi": "3.0.1"
     1813            }
     1814        },
     1815        "string_decoder": {
     1816            "version": "1.1.1",
     1817            "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
     1818            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
     1819            "dev": true,
     1820            "requires": {
     1821                "safe-buffer": "5.1.1"
     1822            }
     1823        },
     1824        "stringstream": {
     1825            "version": "0.0.5",
     1826            "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
     1827            "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
     1828            "dev": true
     1829        },
     1830        "strip-ansi": {
     1831            "version": "3.0.1",
     1832            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
     1833            "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
     1834            "dev": true,
     1835            "requires": {
     1836                "ansi-regex": "2.1.1"
     1837            }
     1838        },
     1839        "strip-bom": {
     1840            "version": "2.0.0",
     1841            "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
     1842            "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
     1843            "dev": true,
     1844            "requires": {
     1845                "is-utf8": "0.2.1"
     1846            }
     1847        },
     1848        "strip-indent": {
     1849            "version": "1.0.1",
     1850            "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
     1851            "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
     1852            "dev": true,
     1853            "requires": {
     1854                "get-stdin": "4.0.1"
     1855            }
     1856        },
     1857        "supports-color": {
     1858            "version": "2.0.0",
     1859            "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
     1860            "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
     1861            "dev": true
     1862        },
     1863        "tar": {
     1864            "version": "2.2.1",
     1865            "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
     1866            "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
     1867            "dev": true,
     1868            "requires": {
     1869                "block-stream": "0.0.9",
     1870                "fstream": "1.0.11",
     1871                "inherits": "2.0.3"
     1872            }
     1873        },
     1874        "tiny-lr-fork": {
     1875            "version": "0.0.5",
     1876            "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz",
     1877            "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=",
     1878            "dev": true,
     1879            "requires": {
     1880                "debug": "0.7.4",
     1881                "faye-websocket": "0.4.4",
     1882                "noptify": "0.0.3",
     1883                "qs": "0.5.6"
     1884            }
     1885        },
     1886        "tough-cookie": {
     1887            "version": "2.3.4",
     1888            "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
     1889            "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
     1890            "dev": true,
     1891            "requires": {
     1892                "punycode": "1.4.1"
     1893            }
     1894        },
     1895        "trim-newlines": {
     1896            "version": "1.0.0",
     1897            "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
     1898            "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
     1899            "dev": true
     1900        },
     1901        "tunnel-agent": {
     1902            "version": "0.6.0",
     1903            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
     1904            "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
     1905            "dev": true,
     1906            "requires": {
     1907                "safe-buffer": "5.1.1"
     1908            }
     1909        },
     1910        "tweetnacl": {
     1911            "version": "0.14.5",
     1912            "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
     1913            "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
     1914            "dev": true,
     1915            "optional": true
     1916        },
     1917        "underscore": {
     1918            "version": "1.7.0",
     1919            "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
     1920            "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
     1921            "dev": true
     1922        },
     1923        "underscore.string": {
     1924            "version": "2.2.1",
     1925            "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
     1926            "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
     1927            "dev": true
     1928        },
     1929        "util-deprecate": {
     1930            "version": "1.0.2",
     1931            "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
     1932            "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
     1933            "dev": true
     1934        },
     1935        "uuid": {
     1936            "version": "3.2.1",
     1937            "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
     1938            "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
     1939            "dev": true
     1940        },
     1941        "validate-npm-package-license": {
     1942            "version": "3.0.3",
     1943            "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
     1944            "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
     1945            "dev": true,
     1946            "requires": {
     1947                "spdx-correct": "3.0.0",
     1948                "spdx-expression-parse": "3.0.0"
     1949            }
     1950        },
     1951        "verror": {
     1952            "version": "1.10.0",
     1953            "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
     1954            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
     1955            "dev": true,
     1956            "requires": {
     1957                "assert-plus": "1.0.0",
     1958                "core-util-is": "1.0.2",
     1959                "extsprintf": "1.3.0"
     1960            }
     1961        },
     1962        "which": {
     1963            "version": "1.0.9",
     1964            "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
     1965            "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
     1966            "dev": true
     1967        },
     1968        "which-module": {
     1969            "version": "1.0.0",
     1970            "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
     1971            "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
     1972            "dev": true
     1973        },
     1974        "wide-align": {
     1975            "version": "1.1.2",
     1976            "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
     1977            "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
     1978            "dev": true,
     1979            "requires": {
     1980                "string-width": "1.0.2"
     1981            }
     1982        },
     1983        "wrap-ansi": {
     1984            "version": "2.1.0",
     1985            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
     1986            "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
     1987            "dev": true,
     1988            "requires": {
     1989                "string-width": "1.0.2",
     1990                "strip-ansi": "3.0.1"
     1991            }
     1992        },
     1993        "wrappy": {
     1994            "version": "1.0.2",
     1995            "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
     1996            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
     1997            "dev": true
     1998        },
     1999        "y18n": {
     2000            "version": "3.2.1",
     2001            "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
     2002            "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
     2003            "dev": true
     2004        },
     2005        "yallist": {
     2006            "version": "2.1.2",
     2007            "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
     2008            "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
     2009            "dev": true
     2010        },
     2011        "yargs": {
     2012            "version": "7.1.0",
     2013            "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
     2014            "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
     2015            "dev": true,
     2016            "requires": {
     2017                "camelcase": "3.0.0",
     2018                "cliui": "3.2.0",
     2019                "decamelize": "1.2.0",
     2020                "get-caller-file": "1.0.2",
     2021                "os-locale": "1.4.0",
     2022                "read-pkg-up": "1.0.1",
     2023                "require-directory": "2.1.1",
     2024                "require-main-filename": "1.0.1",
     2025                "set-blocking": "2.0.0",
     2026                "string-width": "1.0.2",
     2027                "which-module": "1.0.0",
     2028                "y18n": "3.2.1",
     2029                "yargs-parser": "5.0.0"
     2030            },
     2031            "dependencies": {
     2032                "camelcase": {
     2033                    "version": "3.0.0",
     2034                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
     2035                    "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
     2036                    "dev": true
     2037                }
     2038            }
     2039        },
     2040        "yargs-parser": {
     2041            "version": "5.0.0",
     2042            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
     2043            "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
     2044            "dev": true,
     2045            "requires": {
     2046                "camelcase": "3.0.0"
     2047            },
     2048            "dependencies": {
     2049                "camelcase": {
     2050                    "version": "3.0.0",
     2051                    "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
     2052                    "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
     2053                    "dev": true
     2054                }
     2055            }
     2056        }
     2057    }
     2058}
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/package.json

     
    1414        "matchdep": "~0.3.0"
    1515    }
    1616}
    17 
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/scss/main.scss

     
    11371137                        opacity: 1;
    11381138                }
    11391139
    1140                 .comment-awaiting-moderation {
     1140                .comment-awaiting-moderation,
     1141                .comment-edited {
    11411142                        background-color: #fff8e5;
    11421143                        padding: .2em .5em;
     1144                        margin-right: .5em;
    11431145                        border-radius: 3px;
    11441146                        border: 1px solid #ffb900;
    11451147                }
    11461148
    1147                 .depth-2 .comment-awaiting-moderation {
     1149                .depth-2 .comment-awaiting-moderation,
     1150                .depth-2 .comment-edited {
    11481151                        display: inline-block;
    11491152                        margin: 2px 0;
    11501153                }
     
    11701173                .comment-list li.depth-1,
    11711174                #comment-preview {
    11721175                        border: 1px solid #dfdfdf;
    1173                         border-radius: 2px;
     1176                        border-radius: 2px;     
     1177                        width: 100%;
    11741178                }
    11751179
    11761180                // Feedback
     
    13621366                        padding: 0 5px;
    13631367                }
    13641368
    1365                 .comment-form ul {
     1369                .comment-form ul, .feedback-form ul {
    13661370                        margin-left: 1.5em;
    13671371                }
     1372
     1373                .feedback-form ul li {
     1374                        margin: 0;
     1375                        overflow: visible;
     1376                }
    13681377        }
    13691378
    13701379        &.single-post {
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/stylesheets/main.css

     
    15141514  opacity: 1;
    15151515}
    15161516
    1517 .devhub-wrap .single-wp-parser-function .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-method .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-hook .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-class .comment-awaiting-moderation {
     1517.devhub-wrap .single-wp-parser-function .comment-awaiting-moderation,
     1518.devhub-wrap .single-wp-parser-function .comment-edited, .devhub-wrap .single-wp-parser-method .comment-awaiting-moderation,
     1519.devhub-wrap .single-wp-parser-method .comment-edited, .devhub-wrap .single-wp-parser-hook .comment-awaiting-moderation,
     1520.devhub-wrap .single-wp-parser-hook .comment-edited, .devhub-wrap .single-wp-parser-class .comment-awaiting-moderation,
     1521.devhub-wrap .single-wp-parser-class .comment-edited {
    15181522  background-color: #fff8e5;
    15191523  padding: .2em .5em;
     1524  margin-right: .5em;
    15201525  border-radius: 3px;
    15211526  border: 1px solid #ffb900;
    15221527}
    15231528
    1524 .devhub-wrap .single-wp-parser-function .depth-2 .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-method .depth-2 .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-hook .depth-2 .comment-awaiting-moderation, .devhub-wrap .single-wp-parser-class .depth-2 .comment-awaiting-moderation {
     1529.devhub-wrap .single-wp-parser-function .depth-2 .comment-awaiting-moderation,
     1530.devhub-wrap .single-wp-parser-function .depth-2 .comment-edited, .devhub-wrap .single-wp-parser-method .depth-2 .comment-awaiting-moderation,
     1531.devhub-wrap .single-wp-parser-method .depth-2 .comment-edited, .devhub-wrap .single-wp-parser-hook .depth-2 .comment-awaiting-moderation,
     1532.devhub-wrap .single-wp-parser-hook .depth-2 .comment-edited, .devhub-wrap .single-wp-parser-class .depth-2 .comment-awaiting-moderation,
     1533.devhub-wrap .single-wp-parser-class .depth-2 .comment-edited {
    15251534  display: inline-block;
    15261535  margin: 2px 0;
    15271536}
     
    15611570.devhub-wrap .single-wp-parser-class #comment-preview {
    15621571  border: 1px solid #dfdfdf;
    15631572  border-radius: 2px;
     1573  width: 100%;
    15641574}
    15651575
    15661576.devhub-wrap .single-wp-parser-function .comment-list li.depth-2, .devhub-wrap .single-wp-parser-method .comment-list li.depth-2, .devhub-wrap .single-wp-parser-hook .comment-list li.depth-2, .devhub-wrap .single-wp-parser-class .comment-list li.depth-2 {
     
    17351745  padding: 0 5px;
    17361746}
    17371747
    1738 .devhub-wrap .single-wp-parser-function .comment-form ul, .devhub-wrap .single-wp-parser-method .comment-form ul, .devhub-wrap .single-wp-parser-hook .comment-form ul, .devhub-wrap .single-wp-parser-class .comment-form ul {
     1748.devhub-wrap .single-wp-parser-function .comment-form ul, .devhub-wrap .single-wp-parser-function .feedback-form ul, .devhub-wrap .single-wp-parser-method .comment-form ul, .devhub-wrap .single-wp-parser-method .feedback-form ul, .devhub-wrap .single-wp-parser-hook .comment-form ul, .devhub-wrap .single-wp-parser-hook .feedback-form ul, .devhub-wrap .single-wp-parser-class .comment-form ul, .devhub-wrap .single-wp-parser-class .feedback-form ul {
    17391749  margin-left: 1.5em;
    17401750}
    17411751
     1752.devhub-wrap .single-wp-parser-function .feedback-form ul li, .devhub-wrap .single-wp-parser-method .feedback-form ul li, .devhub-wrap .single-wp-parser-hook .feedback-form ul li, .devhub-wrap .single-wp-parser-class .feedback-form ul li {
     1753  margin: 0;
     1754  overflow: visible;
     1755}
     1756
    17421757.devhub-wrap.single-post .comment-list,
    17431758.devhub-wrap.single-post .comment-list ol {
    17441759  list-style: none;