text: /*******************************
      Internal Task Collection
  *******************************/
  
  /* These tasks create packaged files from **dist** components
     Not intended to be called directly by a user because
     these do not build fresh from **src**
  */
  
  module.exports = function(gulp) {
  
    var
      // node dependencies
      fs         = require('fs'),
      chmod      = require('gulp-chmod'),
      concat     = require('gulp-concat'),
      concatCSS  = require('gulp-concat-css'),
      clone      = require('gulp-clone'),
      dedupe     = require('gulp-dedupe'),
      gulpif     = require('gulp-if'),
      indent     = require('gulp-indent'),
      header     = require('gulp-header'),
      footer     = require('gulp-footer'),
      less       = require('gulp-less'),
      minifyCSS  = require('gulp-clean-css'),
      plumber    = require('gulp-plumber'),
      print      = require('gulp-print'),
      rename     = require('gulp-rename'),
      replace    = require('gulp-replace'),
      uglify     = require('gulp-uglify'),
  
      // user config
      config     = require('./../config/user'),
      docsConfig = require('./../config/docs'),
  
      // install config
      tasks      = require('./../config/tasks'),
      release    = require('./../config/project/release'),
  
      // shorthand
      globs      = config.globs,
      assets     = config.paths.assets,
      output     = config.paths.output,
  
      banner     = tasks.banner,
      head       = tasks.head,
      foot       = tasks.foot,
      filenames  = tasks.filenames,
      log        = tasks.log,
      settings   = tasks.settings
    ;
  
    /*--------------
        Packaged
    ---------------*/
  
    gulp.task('package uncompressed css', function() {
      return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
        .pipe(plumber())
        .pipe(dedupe())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(header(banner, settings.header))
          .pipe(gulp.dest(output.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package compressed css', function() {
      return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
        .pipe(plumber())
        .pipe(dedupe())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(minifyCSS(settings.concatMinify))
          .pipe(header(banner, settings.header))
          .pipe(gulp.dest(output.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package uncompressed js', function() {
      return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js')
        .pipe(plumber())
        .pipe(dedupe())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concat(filenames.concatenatedJS))
          .pipe(indent({
            tabs:true,
            amount:1
          }))
          .pipe(header(banner + head, settings.header))
          .pipe(footer(foot))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(output.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package compressed js', function() {
      return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js')
        .pipe(plumber())
        .pipe(dedupe())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concat(filenames.concatenatedMinifiedJS))
          .pipe(indent({
            tabs:true,
            amount:1
          }))
          .pipe(header(head))
          .pipe(footer(foot))
          .pipe(uglify(settings.concatUglify))
          .pipe(header(banner, settings.header))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(output.packaged))
          .pipe(print(log.created))
      ;
    });
  
    /*--------------
          RTL
    ---------------*/
  
    if(config.rtl) {
  
      gulp.task('package uncompressed rtl css', function () {
        return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignoredRTL + '.rtl.css')
          .pipe(dedupe())
          .pipe(replace(assets.uncompressed, assets.packaged))
          .pipe(concatCSS(filenames.concatenatedRTLCSS, settings.concatCSS))
            .pipe(gulpif(config.hasPermission, chmod(config.permission)))
            .pipe(header(banner, settings.header))
            .pipe(gulp.dest(output.packaged))
            .pipe(print(log.created))
        ;
      });
  
      gulp.task('package compressed rtl css', function () {
        return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignoredRTL + '.rtl.css')
          .pipe(dedupe())
          .pipe(replace(assets.uncompressed, assets.packaged))
          .pipe(concatCSS(filenames.concatenatedMinifiedRTLCSS, settings.concatCSS))
            .pipe(gulpif(config.hasPermission, chmod(config.permission)))
            .pipe(minifyCSS(settings.concatMinify))
            .pipe(header(banner, settings.header))
            .pipe(gulp.dest(output.packaged))
            .pipe(print(log.created))
        ;
      });
  
      gulp.task('package uncompressed docs css', function() {
        return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
          .pipe(dedupe())
          .pipe(plumber())
          .pipe(replace(assets.uncompressed, assets.packaged))
          .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS))
            .pipe(gulpif(config.hasPermission, chmod(config.permission)))
            .pipe(gulp.dest(output.packaged))
            .pipe(print(log.created))
        ;
      });
  
      gulp.task('package compressed docs css', function() {
        return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
          .pipe(dedupe())
          .pipe(plumber())
          .pipe(replace(assets.uncompressed, assets.packaged))
          .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS))
            .pipe(minifyCSS(settings.concatMinify))
            .pipe(header(banner, settings.header))
            .pipe(gulpif(config.hasPermission, chmod(config.permission)))
            .pipe(gulp.dest(output.packaged))
            .pipe(print(log.created))
        ;
      });
  
    }
  
    /*--------------
          Docs
    ---------------*/
  
    var
      docsOutput = docsConfig.paths.output
    ;
  
    gulp.task('package uncompressed docs css', function() {
      return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
        .pipe(dedupe())
        .pipe(plumber())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concatCSS(filenames.concatenatedCSS, settings.concatCSS))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(docsOutput.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package compressed docs css', function() {
      return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.css')
        .pipe(dedupe())
        .pipe(plumber())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concatCSS(filenames.concatenatedMinifiedCSS, settings.concatCSS))
          .pipe(minifyCSS(settings.concatMinify))
          .pipe(header(banner, settings.header))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(docsOutput.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package uncompressed docs js', function() {
      return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.js')
        .pipe(dedupe())
        .pipe(plumber())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concat(filenames.concatenatedJS))
          .pipe(indent({
            tabs:true,
            amount:1
          }))
          .pipe(header(banner + head, settings.header))
          .pipe(footer(foot))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(docsOutput.packaged))
          .pipe(print(log.created))
      ;
    });
  
    gulp.task('package compressed docs js', function() {
      return gulp.src(docsOutput.uncompressed + '/**/' + globs.components + globs.ignored + '.js')
        .pipe(dedupe())
        .pipe(plumber())
        .pipe(replace(assets.uncompressed, assets.packaged))
        .pipe(concat(filenames.concatenatedMinifiedJS))
          .pipe(uglify(settings.concatUglify))
          .pipe(indent({
            tabs:true,
            amount:1
          }))
          .pipe(header(banner + head, settings.header))
          .pipe(footer(foot))
          .pipe(gulpif(config.hasPermission, chmod(config.permission)))
          .pipe(gulp.dest(docsOutput.packaged))
          .pipe(print(log.created))
      ;
    });
  
  };
  