pax_global_header00006660000000000000000000000064126663724450014531gustar00rootroot0000000000000052 comment=85150c7bfef1279911cb844eefdcd7b2c31ad9d1 grunt-contrib-copy-1.0.0/000077500000000000000000000000001266637244500152745ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/.gitattributes000066400000000000000000000000131266637244500201610ustar00rootroot00000000000000* text=autogrunt-contrib-copy-1.0.0/.gitignore000066400000000000000000000000361266637244500172630ustar00rootroot00000000000000node_modules npm-debug.log tmpgrunt-contrib-copy-1.0.0/.jshintrc000066400000000000000000000003211266637244500171150ustar00rootroot00000000000000{ "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "immed": true, "latedef": true, "newcap": true, "noarg": true, "node": true, "sub": true, "undef": true, "unused": true } grunt-contrib-copy-1.0.0/.travis.yml000066400000000000000000000003071266637244500174050ustar00rootroot00000000000000sudo: false language: node_js node_js: - "0.10" - "0.12" - "4" - "5" - "iojs" before_install: - npm install -g npm before_script: - npm install -g grunt-cli matrix: fast_finish: true grunt-contrib-copy-1.0.0/AUTHORS000066400000000000000000000003421266637244500163430ustar00rootroot00000000000000Chris Talkington (http://christalkington.com/) Tyler Kellen (http://goingslowly.com/) Kyle Robinson Young (http://twitter.com/shamakry) Nathan Bleigh (http://www.nathanbleigh.com) Eric Clemmons (http://ericclemmons.github.com)grunt-contrib-copy-1.0.0/CHANGELOG000066400000000000000000000043341266637244500165120ustar00rootroot00000000000000v1.0.0: date: 2016-03-04 changes: - Bump devDependencies. - Add example of using relative path. - Point main to task and remove peerDeps. v0.8.2: date: 2015-10-19 changes: - Fix expand-less copies with multiple files. v0.8.1: date: 2015-08-20 changes: - Update `chalk` dependency. v0.8.0: date: 2015-02-20 changes: - Performance improvements. - The `mode` option now also applies to directories. - Fix path issue on Windows. v0.7.0: date: 2014-10-15 changes: - Add timestamp option to disable preserving timestamp when copying. v0.6.0: date: 2014-09-17 changes: - Update chalk dependency and other devDependencies. - Preserve file timestamp when copying. v0.5.0: date: 2013-12-23 changes: - If an encoding is specified, overwrite grunt.file.defaultEncoding. - Rename processContent/processContentExclude to process/noProcess to match Grunt API. - mode option to copy existing or set file permissions. v0.4.1: date: 2013-03-26 changes: - Output summary by default ("Copied N files, created M folders"). Individual transaction output available via `--verbose`. v0.4.0: date: 2013-02-15 changes: - First official release for Grunt 0.4.0. v0.4.0rc7: date: 2013-01-23 changes: - Updating grunt/gruntplugin dependencies to rc7. - Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. v0.4.0rc5: date: 2013-01-14 changes: - Updating to work with grunt v0.4.0rc5. - Conversion to grunt v0.4 conventions. - Replace basePath with cwd. - Empty directory support. v0.3.2: date: 2012-10-18 changes: - Pass copyOptions on single file copy. v0.3.1: date: 2012-10-12 changes: - Rename grunt-contrib-lib dep to grunt-lib-contrib. v0.3.0: date: 2012-09-24 changes: - General cleanup and consolidation. - Global options depreciated. v0.2.4: date: 2012-09-18 changes: - No valid source check. v0.2.3: date: 2012-09-17 changes: - Path.sep fallback for node <= 0.7.9. v0.2.2: date: 2012-09-17 changes: - Single file copy support. - Test refactoring. v0.2.0: date: 2012-09-07 changes: - Refactored from grunt-contrib into individual repo. grunt-contrib-copy-1.0.0/CONTRIBUTING.md000066400000000000000000000001771266637244500175320ustar00rootroot00000000000000Please see the [Contributing to grunt](http://gruntjs.com/contributing) guide for information on contributing to this project. grunt-contrib-copy-1.0.0/Gruntfile.js000066400000000000000000000074421266637244500176000ustar00rootroot00000000000000/* * grunt-contrib-copy * http://gruntjs.com/ * * Copyright (c) 2016 Chris Talkington, contributors * Licensed under the MIT license. */ module.exports = function(grunt) { 'use strict'; // Make an empty dir for testing as git doesn't track empty folders. grunt.file.mkdir('test/fixtures/empty_folder'); grunt.file.mkdir('test/expected/copy_test_mix/empty_folder'); // Project configuration. grunt.initConfig({ jshint: { all: [ 'Gruntfile.js', 'tasks/*.js', '<%= nodeunit.tests %>' ], options: { jshintrc: '.jshintrc' } }, // Before generating any new files, remove any previously-created files. clean: { test: ['tmp'] }, test_vars: { name: 'grunt-contrib-copy', version: '0.1.0', match: 'folder_one/*' }, // Configuration to be run (and then tested). copy: { main: { files: [ {expand: true, cwd: 'test/fixtures', src: ['*.js'], dest: 'tmp/copy_test_files/'}, {expand: true, cwd: 'test/fixtures', src: ['**', '!*.wav'], dest: 'tmp/copy_test_mix/'}, {expand: true, cwd: 'test/fixtures', src: ['<%= test_vars.match %>'], dest: 'tmp/copy_test_v<%= test_vars.version %>/'} ] }, noexpandWild: { files: [ {src: 'test/fixtures/*.js', dest: 'tmp/copy_test_noexpandWild/'} ] }, flatten: { files: [ {expand: true, flatten: true, filter: 'isFile', src: ['test/fixtures/**', '!**/*.wav'], dest: 'tmp/copy_test_flatten/'} ] }, single: { files: [ {src: ['test/fixtures/test.js'], dest: 'tmp/single.js'} ] }, verbose: { files: [ {expand: true, src: ['test/fixtures/**'], dest: 'tmp/copy_test_verbose/'} ] }, mode: { options: { mode: '0444' }, src: ['test/fixtures/test2.js'], dest: 'tmp/mode.js' }, modeDir: { options: { mode: '0777' }, files: [ { expand: true, cwd: 'test/fixtures/', src: ['time_folder/**'], dest: 'tmp/copy_test_modeDir/'} ] }, process: { options: { noProcess: ['test/fixtures/beep.wav'], process: function (content) { return content + '/* comment */'; } }, files: [{ expand: true, cwd: 'test/fixtures', src: ['test2.js', 'beep.wav'], dest: 'tmp/process/' }] }, timestamp: { options: { process: function (content, srcpath) { if (srcpath === 'test/fixtures/time_folder/test_process.js') { return 'with process and file contents were changed'; } else { return content; } }, timestamp: true }, files: [ {expand: true, cwd: 'test/fixtures/time_folder/', src: ['**'], dest: 'tmp/copy_test_timestamp/'}, {src: 'test/fixtures/time_folder/test.js', dest:'tmp/copy_test_timestamp/test1.js'} ] } }, // Unit tests. nodeunit: { tests: ['test/*_test.js'] } }); // Actually load this plugin's task(s). grunt.loadTasks('tasks'); // These plugins provide necessary tasks. grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-nodeunit'); grunt.loadNpmTasks('grunt-contrib-internal'); // Whenever the "test" task is run, first clean the "tmp" dir, then run this // plugin's task(s), then test the result. grunt.registerTask('test', ['jshint', 'clean', 'copy', 'nodeunit']); // By default, lint and run all tests. grunt.registerTask('default', ['test', 'build-contrib']); }; grunt-contrib-copy-1.0.0/LICENSE-MIT000066400000000000000000000020611266637244500167270ustar00rootroot00000000000000Copyright (c) 2016 Chris Talkington, contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.grunt-contrib-copy-1.0.0/README.md000066400000000000000000000205661266637244500165640ustar00rootroot00000000000000# grunt-contrib-copy v1.0.0 [![Build Status: Linux](https://travis-ci.org/gruntjs/grunt-contrib-copy.svg?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-copy) [![Build Status: Windows](https://ci.appveyor.com/api/projects/status/fe6l517l01ys2y86/branch/master?svg=true)](https://ci.appveyor.com/project/gruntjs/grunt-contrib-copy/branch/master) > Copy files and folders ## Getting Started If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: ```shell npm install grunt-contrib-copy --save-dev ``` Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: ```js grunt.loadNpmTasks('grunt-contrib-copy'); ``` *This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can't please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-copy/tree/grunt-0.3-stable).* ## Copy task _Run this task with the `grunt copy` command._ Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. ### Options #### process Type: `Function(content, srcpath)` This option is passed to `grunt.file.copy` as an advanced way to control the file contents that are copied. *`processContent` has been renamed to `process` and the option name will be removed in the future.* #### noProcess Type: `String` This option is passed to `grunt.file.copy` as an advanced way to control which file contents are processed. *`processContentExclude` has been renamed to `noProcess` and the option name will be removed in the future.* #### encoding Type: `String` Default: `grunt.file.defaultEncoding` The file encoding to copy files with. #### mode Type: `Boolean` or `String` Default: `false` Whether to copy or set the destination file and directory permissions. Set to `true` to copy the existing file and directories permissions. Or set to the mode, i.e.: `0644`, that copied files will be set to. #### timestamp Type: `Boolean` Default: `false` Whether to preserve the timestamp attributes(`atime` and `mtime`) when copying files. Set to `true` to preserve files timestamp. But timestamp will *not* be preserved when the file contents or name are changed during copying. ### Usage Examples ```js copy: { main: { files: [ // includes files within path {expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // includes files within path and its sub-directories {expand: true, src: ['path/**'], dest: 'dest/'}, // makes all src relative to cwd {expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, // flattens results to a single level {expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'}, ], }, }, ``` This task supports all the file mapping format Grunt supports. Please read [Globbing patterns](http://gruntjs.com/configuring-tasks#globbing-patterns) and [Building the files object dynamically](http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically) for additional details. Here are some additional examples, given the following file tree: ```shell $ tree -I node_modules . ├── Gruntfile.js └── src ├── a └── subdir └── b 2 directories, 3 files ``` **Copy a single file tree:** ```js copy: { main: { expand: true, src: 'src/*', dest: 'dest/', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Created 1 directories, copied 1 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │   └── src │   ├── a │   └── subdir └── src ├── a └── subdir └── b 5 directories, 4 files ``` **Copying without full path:** ```js copy: { main: { expand: true, cwd: 'src', src: '**', dest: 'dest/', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Created 2 directories, copied 2 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │ ├── a │ └── subdir │ └── b └── src ├── a └── subdir └── b 5 directories, 5 files ``` **Flattening the filepath output:** ```js copy: { main: { expand: true, cwd: 'src/', src: '**', dest: 'dest/', flatten: true, filter: 'isFile', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Copied 2 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │   ├── a │   └── b └── src ├── a └── subdir └── b 3 directories, 5 files ``` **Copy and modify a file:** To change the contents of a file as it is copied, set an `options.process` function as follows: ```js copy: { main: { src: 'src/a', dest: 'src/a.bak', options: { process: function (content, srcpath) { return content.replace(/[sad ]/g,"_"); }, }, }, }, ``` Here all occurrences of the letters "s", "a" and "d", as well as all spaces, will be changed to underlines in "a.bak". Of course, you are not limited to just using regex replacements. To process all files in a directory, the `process` function is used in exactly the same way. NOTE: If `process` is not working, be aware it was called `processContent` in v0.4.1 and earlier. ##### Troubleshooting By default, if a file or directory is not found it is quietly ignored. If the file should exist, and non-existence generate an error, then add `nonull:true`. For instance, this Gruntfile.js entry: ```js copy: { main: { nonull: true, src: 'not-there', dest: 'create-me', }, }, ``` gives this output: ```shell $ grunt copy Running "copy:main" (copy) task Warning: Unable to read "not-there" file (Error code: ENOENT). Use --force to continue. Aborted due to warnings. ``` ## Release History * 2016-03-04   v1.0.0   Bump devDependencies. Add example of using relative path. Point main to task and remove peerDeps. * 2015-10-19   v0.8.2   Fix expand-less copies with multiple files. * 2015-08-20   v0.8.1   Update `chalk` dependency. * 2015-02-20   v0.8.0   Performance improvements. The `mode` option now also applies to directories. Fix path issue on Windows. * 2014-10-15   v0.7.0   Add timestamp option to disable preserving timestamp when copying. * 2014-09-17   v0.6.0   Update chalk dependency and other devDependencies. Preserve file timestamp when copying. * 2013-12-23   v0.5.0   If an encoding is specified, overwrite grunt.file.defaultEncoding. Rename processContent/processContentExclude to process/noProcess to match Grunt API. mode option to copy existing or set file permissions. * 2013-03-26   v0.4.1   Output summary by default ("Copied N files, created M folders"). Individual transaction output available via `--verbose`. * 2013-02-15   v0.4.0   First official release for Grunt 0.4.0. * 2013-01-23   v0.4.0rc7   Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. * 2013-01-14   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Conversion to grunt v0.4 conventions. Replace basePath with cwd. Empty directory support. * 2012-10-18   v0.3.2   Pass copyOptions on single file copy. * 2012-10-12   v0.3.1   Rename grunt-contrib-lib dep to grunt-lib-contrib. * 2012-09-24   v0.3.0   General cleanup and consolidation. Global options depreciated. * 2012-09-18   v0.2.4   No valid source check. * 2012-09-17   v0.2.3   Path.sep fallback for node <= 0.7.9. * 2012-09-17   v0.2.2   Single file copy support. Test refactoring. * 2012-09-07   v0.2.0   Refactored from grunt-contrib into individual repo. --- Task submitted by [Chris Talkington](http://christalkington.com/) *This file was generated on Fri Mar 04 2016 15:50:24.* grunt-contrib-copy-1.0.0/appveyor.yml000066400000000000000000000020071266637244500176630ustar00rootroot00000000000000# Fix line endings on Windows init: - git config --global core.autocrlf true # What combinations to test environment: matrix: - nodejs_version: "0.10" - nodejs_version: "0.12" - nodejs_version: "4" - nodejs_version: "5" platform: - x86 - x64 install: - ps: Install-Product node $env:nodejs_version - npm install -g npm - npm install -g grunt-cli - npm install test_script: # Output useful info for debugging. - node --version && npm --version # We test multiple Windows shells because of prior stdout buffering issues # filed against Grunt. https://github.com/joyent/node/issues/3584 - ps: "npm test # PowerShell" # Pass comment to PS for easier debugging - cmd: npm test build: off matrix: fast_finish: true cache: - C:\Users\appveyor\AppData\Roaming\npm\node_modules -> package.json # global npm modules - C:\Users\appveyor\AppData\Roaming\npm-cache -> package.json # npm cache - node_modules -> package.json # local npm modules grunt-contrib-copy-1.0.0/docs/000077500000000000000000000000001266637244500162245ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/docs/copy-examples.md000066400000000000000000000071701266637244500213410ustar00rootroot00000000000000# Usage Examples ```js copy: { main: { files: [ // includes files within path {expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // includes files within path and its sub-directories {expand: true, src: ['path/**'], dest: 'dest/'}, // makes all src relative to cwd {expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, // flattens results to a single level {expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'}, ], }, }, ``` This task supports all the file mapping format Grunt supports. Please read [Globbing patterns](http://gruntjs.com/configuring-tasks#globbing-patterns) and [Building the files object dynamically](http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically) for additional details. Here are some additional examples, given the following file tree: ```shell $ tree -I node_modules . ├── Gruntfile.js └── src ├── a └── subdir └── b 2 directories, 3 files ``` **Copy a single file tree:** ```js copy: { main: { expand: true, src: 'src/*', dest: 'dest/', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Created 1 directories, copied 1 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │   └── src │   ├── a │   └── subdir └── src ├── a └── subdir └── b 5 directories, 4 files ``` **Copying without full path:** ```js copy: { main: { expand: true, cwd: 'src', src: '**', dest: 'dest/', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Created 2 directories, copied 2 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │ ├── a │ └── subdir │ └── b └── src ├── a └── subdir └── b 5 directories, 5 files ``` **Flattening the filepath output:** ```js copy: { main: { expand: true, cwd: 'src/', src: '**', dest: 'dest/', flatten: true, filter: 'isFile', }, }, ``` ```shell $ grunt copy Running "copy:main" (copy) task Copied 2 files Done, without errors. $ tree -I node_modules . ├── Gruntfile.js ├── dest │   ├── a │   └── b └── src ├── a └── subdir └── b 3 directories, 5 files ``` **Copy and modify a file:** To change the contents of a file as it is copied, set an `options.process` function as follows: ```js copy: { main: { src: 'src/a', dest: 'src/a.bak', options: { process: function (content, srcpath) { return content.replace(/[sad ]/g,"_"); }, }, }, }, ``` Here all occurrences of the letters "s", "a" and "d", as well as all spaces, will be changed to underlines in "a.bak". Of course, you are not limited to just using regex replacements. To process all files in a directory, the `process` function is used in exactly the same way. NOTE: If `process` is not working, be aware it was called `processContent` in v0.4.1 and earlier. ### Troubleshooting By default, if a file or directory is not found it is quietly ignored. If the file should exist, and non-existence generate an error, then add `nonull:true`. For instance, this Gruntfile.js entry: ```js copy: { main: { nonull: true, src: 'not-there', dest: 'create-me', }, }, ``` gives this output: ```shell $ grunt copy Running "copy:main" (copy) task Warning: Unable to read "not-there" file (Error code: ENOENT). Use --force to continue. Aborted due to warnings. ``` grunt-contrib-copy-1.0.0/docs/copy-options.md000066400000000000000000000022131266637244500212070ustar00rootroot00000000000000# Options ## process Type: `Function(content, srcpath)` This option is passed to `grunt.file.copy` as an advanced way to control the file contents that are copied. *`processContent` has been renamed to `process` and the option name will be removed in the future.* ## noProcess Type: `String` This option is passed to `grunt.file.copy` as an advanced way to control which file contents are processed. *`processContentExclude` has been renamed to `noProcess` and the option name will be removed in the future.* ## encoding Type: `String` Default: `grunt.file.defaultEncoding` The file encoding to copy files with. ## mode Type: `Boolean` or `String` Default: `false` Whether to copy or set the destination file and directory permissions. Set to `true` to copy the existing file and directories permissions. Or set to the mode, i.e.: `0644`, that copied files will be set to. ## timestamp Type: `Boolean` Default: `false` Whether to preserve the timestamp attributes(`atime` and `mtime`) when copying files. Set to `true` to preserve files timestamp. But timestamp will *not* be preserved when the file contents or name are changed during copying. grunt-contrib-copy-1.0.0/docs/copy-overview.md000066400000000000000000000002101266637244500213550ustar00rootroot00000000000000Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.grunt-contrib-copy-1.0.0/docs/overview.md000066400000000000000000000004441266637244500204160ustar00rootroot00000000000000*This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can't please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-copy/tree/grunt-0.3-stable).* grunt-contrib-copy-1.0.0/package.json000066400000000000000000000014101266637244500175560ustar00rootroot00000000000000{ "name": "grunt-contrib-copy", "description": "Copy files and folders", "version": "1.0.0", "author": { "name": "Grunt Team", "url": "http://gruntjs.com/" }, "repository": "gruntjs/grunt-contrib-copy", "license": "MIT", "engines": { "node": ">=0.10.0" }, "main": "tasks/copy.js", "scripts": { "test": "grunt test" }, "dependencies": { "chalk": "^1.1.1", "file-sync-cmp": "^0.1.0" }, "devDependencies": { "grunt": "^0.4.5", "grunt-cli": "^0.1.13", "grunt-contrib-clean": "^1.0.0", "grunt-contrib-internal": "^0.4.5", "grunt-contrib-jshint": "^1.0.0", "grunt-contrib-nodeunit": "^0.4.1" }, "keywords": [ "gruntplugin" ], "files": [ "tasks" ], "appveyor_id": "fe6l517l01ys2y86" } grunt-contrib-copy-1.0.0/tasks/000077500000000000000000000000001266637244500164215ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/tasks/copy.js000066400000000000000000000066671266637244500177500ustar00rootroot00000000000000/* * grunt-contrib-copy * http://gruntjs.com/ * * Copyright (c) 2016 Chris Talkington, contributors * Licensed under the MIT license. * https://github.com/gruntjs/grunt-contrib-copy/blob/master/LICENSE-MIT */ 'use strict'; module.exports = function(grunt) { var path = require('path'); var fs = require('fs'); var chalk = require('chalk'); var fileSyncCmp = require('file-sync-cmp'); var isWindows = process.platform === 'win32'; grunt.registerMultiTask('copy', 'Copy files.', function() { var options = this.options({ encoding: grunt.file.defaultEncoding, // processContent/processContentExclude deprecated renamed to process/noProcess processContent: false, processContentExclude: [], timestamp: false, mode: false }); var copyOptions = { encoding: options.encoding, process: options.process || options.processContent, noProcess: options.noProcess || options.processContentExclude }; var detectDestType = function(dest) { if (grunt.util._.endsWith(dest, '/')) { return 'directory'; } else { return 'file'; } }; var unixifyPath = function(filepath) { if (isWindows) { return filepath.replace(/\\/g, '/'); } else { return filepath; } }; var syncTimestamp = function (src, dest) { var stat = fs.lstatSync(src); if (path.basename(src) !== path.basename(dest)) { return; } if (stat.isFile() && !fileSyncCmp.equalFiles(src, dest)) { return; } var fd = fs.openSync(dest, isWindows ? 'r+' : 'r'); fs.futimesSync(fd, stat.atime, stat.mtime); fs.closeSync(fd); }; var isExpandedPair; var dirs = {}; var tally = { dirs: 0, files: 0 }; this.files.forEach(function(filePair) { isExpandedPair = filePair.orig.expand || false; filePair.src.forEach(function(src) { src = unixifyPath(src); var dest = unixifyPath(filePair.dest); if (detectDestType(dest) === 'directory') { dest = isExpandedPair ? dest : path.join(dest, src); } if (grunt.file.isDir(src)) { grunt.verbose.writeln('Creating ' + chalk.cyan(dest)); grunt.file.mkdir(dest); if (options.mode !== false) { fs.chmodSync(dest, (options.mode === true) ? fs.lstatSync(src).mode : options.mode); } if (options.timestamp) { dirs[dest] = src; } tally.dirs++; } else { grunt.verbose.writeln('Copying ' + chalk.cyan(src) + ' -> ' + chalk.cyan(dest)); grunt.file.copy(src, dest, copyOptions); syncTimestamp(src, dest); if (options.mode !== false) { fs.chmodSync(dest, (options.mode === true) ? fs.lstatSync(src).mode : options.mode); } tally.files++; } }); }); if (options.timestamp) { Object.keys(dirs).sort(function (a, b) { return b.length - a.length; }).forEach(function (dest) { syncTimestamp(dirs[dest], dest); }); } if (tally.dirs) { grunt.log.write('Created ' + chalk.cyan(tally.dirs.toString()) + (tally.dirs === 1 ? ' directory' : ' directories')); } if (tally.files) { grunt.log.write((tally.dirs ? ', copied ' : 'Copied ') + chalk.cyan(tally.files.toString()) + (tally.files === 1 ? ' file' : ' files')); } grunt.log.writeln(); }); }; grunt-contrib-copy-1.0.0/test/000077500000000000000000000000001266637244500162535ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/copy_test.js000066400000000000000000000071501266637244500206250ustar00rootroot00000000000000'use strict'; var grunt = require('grunt'); var fs = require('fs'); var isWindows = process.platform === 'win32'; exports.copy = { main: function(test) { test.expect(3); var actual = fs.readdirSync('tmp/copy_test_files').sort(); var expected = fs.readdirSync('test/expected/copy_test_files').sort(); test.deepEqual(expected, actual, 'should copy several files'); actual = fs.readdirSync('tmp/copy_test_mix').sort(); expected = fs.readdirSync('test/expected/copy_test_mix').sort(); test.deepEqual(expected, actual, 'should copy a mix of folders and files'); actual = fs.readdirSync('tmp/copy_test_v0.1.0').sort(); expected = fs.readdirSync('test/expected/copy_test_v0.1.0').sort(); test.deepEqual(expected, actual, 'should parse both dest and src templates'); test.done(); }, noexpandWild: function(test) { test.expect(3); ['/', '/test/', '/test/fixtures/'].forEach(function(subpath, i) { var actual = fs.readdirSync('tmp/copy_test_noexpandWild' + subpath).sort(); var expected = fs.readdirSync('test/expected/copy_test_noexpandWild' + subpath).sort(); test.deepEqual(expected, actual, 'should copy file structure at level ' + i); }); test.done(); }, flatten: function(test) { test.expect(1); var actual = fs.readdirSync('tmp/copy_test_flatten').sort(); var expected = fs.readdirSync('test/expected/copy_test_flatten').sort(); test.deepEqual(expected, actual, 'should create a flat structure'); test.done(); }, single: function(test) { test.expect(1); var actual = grunt.file.read('tmp/single.js'); var expected = grunt.file.read('test/expected/single.js'); test.equal(expected, actual, 'should allow for single file copy'); test.done(); }, mode: function(test) { test.expect(1); test.equal(fs.lstatSync('tmp/mode.js').mode.toString(8).slice(-3), '444'); test.done(); }, modeDir: function(test) { test.expect(2); // on Windows DIRs do not have 'executable' flag, see // https://github.com/nodejs/node/blob/master/deps/uv/src/win/fs.c#L1064 var expectedMode = isWindows ? '666' : '777'; test.equal(fs.lstatSync('tmp/copy_test_modeDir/time_folder').mode.toString(8).slice(-3), expectedMode); test.equal(fs.lstatSync('tmp/copy_test_modeDir/time_folder/sub_folder').mode.toString(8).slice(-3), expectedMode); test.done(); }, process: function(test) { test.expect(2); test.equal(fs.lstatSync('tmp/process/beep.wav').size, fs.lstatSync('test/fixtures/beep.wav').size); test.notEqual(fs.lstatSync('tmp/process/test2.js').size, fs.lstatSync('test/fixtures/test2.js').size); test.done(); }, timestamp_equal: function(test) { if (isWindows) { // Known Issue: this test will not pass on Windows due to a bug in node.js // https://github.com/nodejs/node/issues/2069 test.done(); return; } test.expect(2); test.equal(fs.lstatSync('tmp/copy_test_timestamp/sub_folder').mtime.getTime(), fs.lstatSync('test/fixtures/time_folder/sub_folder').mtime.getTime()); test.equal(fs.lstatSync('tmp/copy_test_timestamp/test.js').mtime.getTime(), fs.lstatSync('test/fixtures/time_folder/test.js').mtime.getTime()); test.done(); }, timestamp_changed: function(test) { test.expect(2); test.notEqual(fs.lstatSync('tmp/copy_test_timestamp/test1.js').mtime.getTime(), fs.lstatSync('test/fixtures/time_folder/test.js').mtime.getTime()); test.notEqual(fs.lstatSync('tmp/copy_test_timestamp/test_process.js').mtime.getTime(), fs.lstatSync('test/fixtures/time_folder/test_process.js').mtime.getTime()); test.done(); } }; grunt-contrib-copy-1.0.0/test/expected/000077500000000000000000000000001266637244500200545ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_files/000077500000000000000000000000001266637244500232475ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_files/test.js000066400000000000000000000000401266637244500245560ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_files/test2.js000066400000000000000000000000251266637244500246430ustar00rootroot00000000000000console.log('hello');grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/000077500000000000000000000000001266637244500236025ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/one.js000066400000000000000000000000571266637244500247230ustar00rootroot00000000000000$(document).ready(function(){$.noConflict();});grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/test.js000066400000000000000000000000401266637244500251110ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/test2.js000066400000000000000000000000251266637244500251760ustar00rootroot00000000000000console.log('hello');grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/test_process.js000066400000000000000000000000401266637244500266470ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_flatten/two.js000066400000000000000000000000461266637244500247510ustar00rootroot00000000000000$(document).ready(function(){jQuery});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/000077500000000000000000000000001266637244500227425ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/folder_one/000077500000000000000000000000001266637244500250565ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/folder_one/one.js000066400000000000000000000000571266637244500261770ustar00rootroot00000000000000$(document).ready(function(){$.noConflict();});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/folder_two/000077500000000000000000000000001266637244500251065ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/folder_two/two.js000066400000000000000000000000461266637244500262550ustar00rootroot00000000000000$(document).ready(function(){jQuery});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/test.js000066400000000000000000000000401266637244500242510ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/test2.js000066400000000000000000000000251266637244500243360ustar00rootroot00000000000000console.log('hello');grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/000077500000000000000000000000001266637244500252335ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/sub_folder/000077500000000000000000000000001266637244500273575ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/sub_folder/sub_sub_folder/000077500000000000000000000000001266637244500323545ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/sub_folder/sub_sub_folder/test.js000066400000000000000000000000401266637244500336630ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/test.js000066400000000000000000000000401266637244500265420ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_mix/time_folder/test_process.js000066400000000000000000000000401266637244500303000ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_noexpandWild/000077500000000000000000000000001266637244500246015ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_noexpandWild/test/000077500000000000000000000000001266637244500255605ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_noexpandWild/test/fixtures/000077500000000000000000000000001266637244500274315ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_noexpandWild/test/fixtures/test.js000066400000000000000000000000401266637244500307400ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/expected/copy_test_noexpandWild/test/fixtures/test2.js000066400000000000000000000000251266637244500310250ustar00rootroot00000000000000console.log('hello');grunt-contrib-copy-1.0.0/test/expected/copy_test_v0.1.0/000077500000000000000000000000001266637244500227675ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_v0.1.0/folder_one/000077500000000000000000000000001266637244500251035ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/expected/copy_test_v0.1.0/folder_one/one.js000066400000000000000000000000571266637244500262240ustar00rootroot00000000000000$(document).ready(function(){$.noConflict();});grunt-contrib-copy-1.0.0/test/expected/single.js000066400000000000000000000000401266637244500216650ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/fixtures/000077500000000000000000000000001266637244500201245ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/.hidden000066400000000000000000000000311266637244500213520ustar00rootroot00000000000000#This is a hidden file!!!grunt-contrib-copy-1.0.0/test/fixtures/beep.wav000066400000000000000000000473441266637244500215720ustar00rootroot00000000000000RIFFÜNWAVEfmt D¬ˆXdata¸Nþÿüÿÿÿþÿüÿÿÿÿÿýÿüÿüÿûÿûÿÿÿÿÿÿÿþÿýÿþÿþÿþÿýÿÿÿÿÿþÿüÿýÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿþÿýÿýÿýÿÿÿüÿûÿþÿÿÿÿÿþÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿþÿþÿüÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿüÿýÿýÿýÿÿÿÿÿþÿÿÿþÿýÿþÿýÿþÿþÿÿÿÿÿýÿýÿýÿšþ™ššÿ™ššššý™šþ™šþ™šþ™ššÿ™ššššÿ™šý™šü™šþ™ššÿ™šššÿ™šý™šý™ššÿ™šþ™šþ™ššššššššý™šü™šü™šþ™šþ™ššÿ™šþ™ššý™šÿ™ÿ™šý™šþ™šý™šý™šþ™šÿ™ššÿ™ššÿ™šÿ™ššÿ™šþ™šþ™ššÿ™ššÿ™šý™šþ™ššÿ™ššššÿ™šÿ™ššÿ™šÿ™šþ™šü™šý™šþ™šþ™šþ™šþ™šü™šþ™šþ™šþ™šÿ™ÿ™šþ™šý™šÿ™šÿ™šÿ™ššÿ™šÿ™šÿ™ššÿ™šÿ™šÿ™ššü™šû™šý™šý™šÿ™šþ™šý™šÿ™šššÿ™šþ™šþ™ššþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿýÿÿÿÿÿüÿýÿúÿýÿÿÿÿÿÿÿÿÿþÿþÿþÿÿÿþÿþÿþÿüÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿýÿüÿþÿþÿþÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿÿÿýÿÿÿÿÿÿÿþÿüÿÿÿÿÿÿÿþÿûÿþÿýÿÿÿÿÿÿÿýÿûÿüÿþÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿûÿýÿýÿþÿþÿýÿüÿÿÿþÿþÿüÿþÿÿÿÿÿþÿýÿþÿþÿýÿýÿþÿÿÿÿÿÿÿýÿþÿÿÿÿÿþÿüÿÿÿÿÿüÿþÿÿÿýÿþÿÿÿÿÿýÿüÿþÿÿÿýÿþÿÿÿÿÿþÿþÿÿÿÿÿþÿÿÿþÿþÿþÿþÿÿÿýÿüÿÿÿÿÿþÿfýefýefþefþeffffþeffffýefþefýefýefÿeffýefýeffÿeffÿefÿefffþefþeffÿefffffýefÿefffþefüefþeffÿefffþefýefÿeffÿefÿeffýefÿeffÿefffþefýefÿefþefþeffüefþeffþefþeffÿeffffÿefýefüefþefþefþefÿefÿefffýefûefþefþeffÿefþeffÿefÿefýefýefþefÿefffÿefffffÿefþefþefþeffÿeÿefýefýefþeffffffffÿefþeffýefüefÿeÿÿþÿýÿÿÿþÿÿÿþÿüÿûÿýÿÿÿÿÿÿÿÿÿþÿÿÿÿÿüÿüÿþÿÿÿþÿþÿýÿýÿþÿþÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿýÿþÿÿÿþÿüÿüÿýÿýÿÿÿþÿûÿûÿþÿÿÿÿÿÿÿÿÿüÿûÿÿÿÿÿÿÿýÿÿÿþÿÿÿýÿýÿþÿþÿÿÿýÿüÿýÿþÿþÿýÿüÿýÿþÿþÿþÿÿÿÿÿÿÿÿÿýÿüÿÿÿÿÿýÿþÿþÿÿÿþÿþÿÿÿþÿþÿüÿüÿþÿþÿÿÿþÿþÿÿÿþÿýÿÿÿþÿýÿÿÿÿÿþÿüÿýÿÿÿÿÿÿÿÿÿýÿÿÿÿÿýÿþÿÿÿýÿþÿÿÿýÿûÿþÿþÿüÿýÿþÿÿÿÿÿÿÿÿÿüÿýÿþÿúÿýÿþÿþÿþÿýÿüÿüÿüÿþÿÿÿýÿÿÿÿÿþÿýÿÿÿÿÿþÿüÿúÿúÿúÿüÿÿÿýÿþÿÿÿÿÿþÿÿÿšÿ™ššÿ™šþ™ššý™šü™šþ™ššÿ™šý™šû™šû™šþ™šþ™šþ™šý™šþ™šÿ™šššþ™šü™šÿ™ššþ™šššššþ™ššþ™šþ™ššþ™šý™šü™šý™šÿ™šþ™šý™šý™šÿ™ššþ™šý™šÿ™ÿ™šý™šÿ™ššššþ™šý™šÿ™šþ™šÿ™šÿ™ššþ™šú™šü™šÿ™ššÿ™ššššý™šÿ™ššÿ™šÿ™šÿ™šššÿ™šý™šþ™ššÿ™šý™šü™šÿ™ÿ™šþ™šþ™šþ™šÿ™ššÿ™šÿ™ššÿ™šþ™ššÿ™šü™šþ™šþ™šþ™šþ™šššÿ™šý™šü™šþ™šþ™ššÿ™šý™šý™šû™šû™šü™ššÿÿýÿþÿÿÿþÿÿÿþÿþÿÿÿþÿþÿþÿþÿÿÿþÿýÿþÿÿÿÿÿÿÿþÿýÿÿÿüÿûÿþÿÿÿÿÿÿÿýÿþÿÿÿýÿþÿÿÿÿÿÿÿþÿüÿþÿþÿÿÿÿÿÿÿÿÿÿÿýÿýÿþÿÿÿÿÿþÿüÿýÿýÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿþÿýÿûÿýÿÿÿþÿüÿûÿýÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿþÿþÿýÿþÿÿÿÿÿýÿÿÿþÿþÿþÿýÿÿÿþÿþÿÿÿÿÿþÿÿÿÿÿüÿüÿýÿþÿþÿýÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿÿÿÿýÿûÿûÿýÿýÿýÿÿÿÿÿÿÿýÿüÿþÿýÿüÿÿÿþÿüÿýÿÿÿÿÿþÿÿÿÿÿþÿýÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿþÿÿÿÿÿþÿýÿüÿþÿÿÿýÿýÿþÿÿÿÿÿÿÿýÿýÿffÿefÿefÿefþefýeffþefÿeffÿefffþefýefÿefffþefÿeffÿeffÿeffýefýeffþefüefþefÿeÿefþefþefþefþefþefþefÿefffffÿefffffffffÿeffÿefþefÿefþefýefþeffýefþefÿefþeffýefüefüefüefþefffÿeffÿeffÿefþeffþeffýefüefüefÿeÿefûefüefÿeÿefÿefÿefþefÿefffÿefÿeffþefýefÿeÿefüefûefýeffþefýefþefþefüefüefýeffþefþefþefþeffÿeþÿþÿÿÿýÿþÿÿÿÿÿþÿÿÿþÿþÿÿÿþÿýÿþÿÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿÿýÿþÿýÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿþÿþÿþÿÿÿýÿüÿþÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿýÿýÿÿÿþÿûÿýÿþÿýÿüÿþÿÿÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿþÿýÿÿÿþÿþÿÿÿÿÿÿÿÿÿüÿúÿÿÿþÿüÿýÿþÿþÿÿÿÿÿÿÿýÿüÿþÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿüÿüÿþÿþÿþÿýÿÿÿÿÿÿÿÿÿþÿüÿþÿüÿúÿûÿÿÿÿÿüÿÿÿÿÿþÿþÿþÿÿÿÿÿüÿüÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿþÿÿÿþÿüÿûÿþÿÿÿýÿþÿÿÿþÿšÿ™ššÿ™šý™šþ™ššÿ™šÿ™ššÿ™šÿ™ššÿ™šÿ™ššÿ™šÿ™ššý™šý™šý™ššþ™šý™šÿ™ššÿ™ššþ™šþ™ÿ™šü™šþ™šššþ™šý™šÿ™šþ™šý™ššþ™šþ™ššÿ™ššššÿ™šÿ™šþ™šÿ™šÿ™ššÿ™šÿ™ššÿ™šÿ™šÿ™šÿ™šÿ™šÿ™ššÿ™šÿ™šššþ™šÿ™šÿ™šþ™šþ™šÿ™šÿ™ššþ™ššþ™šü™šÿ™šÿ™ššÿ™šý™šþ™ššÿ™šþ™ššÿ™ššššššÿ™šþ™šÿ™šššššþ™šü™šý™šÿ™ÿ™šþ™šÿ™ÿ™šþ™šÿ™ÿ™šþ™šÿ™ššÿ™šÿ™ššþ™šÿ™šþÿüÿüÿþÿþÿÿÿÿÿÿÿÿÿýÿþÿüÿýÿüÿýÿÿÿÿÿÿÿÿÿþÿúÿüÿÿÿÿÿþÿýÿÿÿþÿþÿþÿþÿþÿþÿÿÿþÿþÿþÿþÿþÿýÿüÿþÿþÿþÿÿÿþÿÿÿþÿþÿÿÿýÿþÿÿÿÿÿÿÿþÿÿÿýÿýÿþÿÿÿÿÿüÿüÿÿÿþÿþÿýÿþÿÿÿþÿüÿýÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿýÿüÿýÿþÿÿÿÿÿþÿþÿþÿþÿþÿþÿÿÿýÿüÿÿÿÿÿÿÿýÿýÿþÿÿÿÿÿÿÿþÿýÿýÿüÿûÿþÿÿÿÿÿÿÿýÿþÿÿÿþÿÿÿÿÿþÿÿÿþÿýÿýÿÿÿþÿÿÿþÿÿÿþÿþÿÿÿþÿþÿþÿþÿÿÿÿÿþÿýÿþÿÿÿÿÿfÿefÿefÿefýefýefþefÿefffÿefýefüefÿeÿefýefüefüefþefþefüefüefÿeffþefþefÿeffffffýefüeffþefþefffþefþefffÿefýefÿeþefûefÿeþefýeffÿeffÿefÿeffÿefÿefþefýefþeffÿefÿeffýefÿeffÿeffffÿefÿefþeffÿefþefffÿefffÿefÿeffÿefÿefÿeffÿefÿefffÿeffÿefýefffÿefÿeffÿefþefffffÿefþefþefÿefffffýefÿefffÿeffÿefþeffýeüÿÿÿÿÿýÿþÿþÿÿÿþÿþÿýÿÿÿÿÿûÿþÿýÿþÿþÿÿÿÿÿþÿÿÿÿÿþÿýÿüÿþÿþÿÿÿþÿÿÿüÿþÿÿÿÿÿþÿýÿýÿûÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿûÿûÿþÿÿÿþÿþÿþÿþÿþÿþÿýÿÿÿÿÿþÿþÿÿÿþÿþÿÿÿÿÿþÿþÿÿÿþÿþÿþÿÿÿþÿÿÿÿÿýÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿûÿúÿüÿÿÿüÿÿÿÿÿüÿÿÿÿÿüÿüÿýÿÿÿûÿýÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿýÿþÿÿÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿþÿýÿýÿþÿýÿÿÿþÿýÿÿÿþÿýÿþÿÿÿÿÿþÿýÿþÿÿÿÿÿýÿüÿÿÿÿÿþÿüÿþÿÿÿÿÿýÿüÿýÿþÿýÿþÿÿÿþÿþÿþÿýÿýÿýÿüÿþÿÿÿýÿýÿÿÿÿÿÿÿÿ™šý™šý™šþ™ššý™šý™ššÿ™ššü™šû™šþ™šššššþ™šþ™šÿ™ÿ™šý™šý™šý™šý™šý™šÿ™šÿ™šþ™ššÿ™šÿ™ššÿ™ššþ™šÿ™ššý™šý™šý™šþ™ššÿ™šÿ™ššþ™šÿ™ššý™šÿ™ššÿ™šþ™ššý™šÿ™þ™šþ™šÿ™šÿ™ššþ™šý™ššþ™šÿ™šÿ™šþ™šÿ™šÿ™šÿ™ššý™šý™šþ™ššÿ™ššÿ™šý™šþ™šþ™šÿ™šþ™ššÿ™ššþ™šû™šü™ššÿ™šþ™šþ™šþ™šÿ™ššÿ™ššþ™šý™šý™šý™šÿ™šÿ™šššþ™šû™šû™šý™šÿ™šþ™šý™šÿ™šššþ™þÿþÿþÿþÿþÿþÿýÿüÿýÿþÿþÿþÿþÿþÿÿÿþÿýÿþÿÿÿüÿýÿüÿûÿýÿþÿýÿýÿÿÿÿÿÿÿþÿüÿûÿþÿüÿûÿýÿÿÿÿÿþÿýÿÿÿÿÿÿÿÿÿýÿÿÿþÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿûÿýÿÿÿþÿÿÿÿÿÿÿþÿþÿÿÿþÿýÿýÿýÿýÿÿÿÿÿþÿýÿÿÿþÿÿÿÿÿüÿþÿýÿûÿüÿýÿþÿÿÿüÿúÿýÿýÿüÿþÿÿÿýÿûÿüÿÿÿþÿûÿÿÿþÿûÿýÿÿÿüÿýÿÿÿÿÿþÿýÿüÿûÿþÿÿÿÿÿÿÿüÿûÿþÿÿÿþÿÿÿÿÿþÿüÿúÿüÿþÿþÿýÿþÿÿÿþÿüÿþÿþÿÿÿÿÿþÿüÿûÿþÿÿÿÿÿÿÿþÿþÿþÿÿÿÿÿüÿýÿþÿþÿÿÿÿÿþÿþÿýÿþÿþÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿýÿüÿþÿÿÿþÿÿÿýefþeffþeffÿefýefÿefÿefffffüefýeffÿeffþefýefýefþefýefþeffÿeffÿefÿefýefýefýefýeffþefýeffÿeffÿefÿeffþeffüefûefûefûefýefýefÿeffýefýefÿeffÿeffþefÿeffÿeffþefÿefÿeffÿefÿefffÿefffÿefþefÿeÿefýefûefýeffÿeffÿeffÿefÿeÿefÿeffþeffÿefþeffÿefýefüefüefÿeÿefüefýeffffffffÿefþefÿeÿefÿefffÿefÿeÿefýefþefÿefýeûÿüÿþÿþÿÿÿýÿþÿýÿþÿÿÿýÿÿÿÿÿÿÿþÿþÿþÿþÿþÿýÿþÿýÿüÿýÿýÿÿÿþÿÿÿýÿþÿþÿýÿþÿÿÿÿÿÿÿþÿþÿüÿýÿÿÿÿÿþÿýÿÿÿÿÿÿÿÿÿþÿÿÿÿÿýÿÿÿýÿÿÿþÿÿÿÿÿýÿüÿýÿÿÿÿÿýÿþÿÿÿýÿþÿýÿýÿÿÿþÿûÿþÿÿÿþÿýÿÿÿþÿþÿÿÿþÿþÿüÿüÿÿÿÿÿþÿÿÿÿÿýÿûÿüÿüÿþÿþÿýÿüÿþÿÿÿÿÿþÿýÿÿÿþÿüÿýÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿûÿþÿÿÿþÿûÿýÿÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿþÿûÿüÿþÿÿÿýÿüÿÿÿþÿÿÿÿÿþÿþÿÿÿÿÿüÿýÿþÿÿÿþÿþÿþÿþÿþÿþÿšššššššššÿ™šþ™ššÿ™šÿ™ššÿ™ššþ™ššÿ™šý™šššÿ™šþ™šþ™ššÿ™ššÿ™ššþ™šÿ™šššþ™šü™šý™šý™šÿ™ššþ™šÿ™šÿ™šþ™šý™šý™šÿ™ššÿ™šÿ™šššÿ™šý™šÿ™ÿ™šþ™ššššššÿ™ššý™šü™ššÿ™šþ™ššÿ™šý™šü™šý™ššþ™šþ™šÿ™ÿ™šþ™ššÿ™šššššÿ™ššššÿ™šý™šü™šÿ™ÿ™šþ™šÿ™ššÿ™šþ™šþ™ššššššššþ™šþ™šþ™šþ™šÿ™šý™šû™šÿ™ÿ™šÿ™šÿ™ššÿ™šÿ™šššÿ™šÿ™šššþ™šý™šþÿÿÿÿÿþÿýÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿÿÿýÿýÿþÿÿÿÿÿÿÿþÿýÿýÿÿÿüÿûÿÿÿýÿÿÿþÿýÿþÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿýÿûÿüÿÿÿýÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿýÿýÿþÿÿÿÿÿþÿÿÿþÿýÿþÿþÿÿÿýÿþÿþÿÿÿþÿÿÿýÿþÿÿÿÿÿþÿýÿÿÿÿÿüÿüÿþÿýÿûÿþÿÿÿÿÿÿÿÿÿýÿÿÿüÿýÿþÿýÿýÿÿÿÿÿÿÿþÿþÿþÿýÿüÿüÿþÿþÿþÿýÿýÿþÿþÿÿÿÿÿÿÿÿÿþÿÿÿÿÿýÿÿÿÿÿýÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿþÿýÿÿÿþÿýÿÿÿüÿûÿýÿÿÿÿÿýÿþÿfÿefþeffÿefÿeÿefýefÿefÿeffÿefýefþeffþefþeffÿeffÿefffÿeffÿeffÿefýefýefþeffÿeffþeffÿeffÿefüefüefÿeffÿeffffÿefþefÿeffþefýefÿeffþefþefþefffffÿefþefÿeÿefþeffffffÿefÿefffffÿeffffÿefffffþefþeffffÿefþeffÿefþefffffÿefþefþefþeffÿefýefþefþefýefýefÿeffÿeffffÿeffþefÿeffÿeÿefýefüefýeffþeffþefýeÿÿÿÿþÿýÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿþÿýÿÿÿþÿÿÿÿÿÿÿþÿüÿýÿþÿüÿüÿýÿþÿþÿüÿÿÿþÿþÿÿÿÿÿþÿýÿýÿÿÿþÿÿÿÿÿýÿþÿÿÿÿÿÿÿÿÿþÿýÿþÿýÿýÿÿÿÿÿþÿýÿþÿþÿýÿýÿÿÿþÿüÿüÿûÿÿÿýÿþÿÿÿýÿÿÿÿÿþÿÿÿþÿþÿüÿüÿþÿýÿýÿûÿüÿÿÿþÿÿÿþÿÿÿÿÿþÿþÿûÿúÿÿÿþÿüÿþÿÿÿþÿÿÿþÿûÿýÿýÿýÿÿÿÿÿýÿþÿÿÿýÿþÿýÿþÿþÿýÿûÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿýÿüÿÿÿÿÿþÿÿÿþÿþÿþÿÿÿýÿýÿþÿþÿûÿýÿÿÿþÿýÿÿÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿûÿýÿþÿþÿýÿÿÿþÿüÿÿÿþÿšþ™šþ™šþ™ššþ™šÿ™šššÿ™šý™šþ™ššý™šü™šÿ™ÿ™šþ™ššÿ™šÿ™šÿ™šÿ™šÿ™šÿ™šþ™ššÿ™šÿ™šššššÿ™ššššššššÿ™šý™šü™šý™šššššþ™šþ™ššššý™šþ™šššÿ™ššÿ™šÿ™šÿ™šþ™šý™šÿ™ÿ™šû™šþ™šššÿ™šþ™šššÿ™šþ™ššÿ™ššÿ™šÿ™ššÿ™šÿ™ššÿ™ššÿ™šý™šü™šþ™ššššÿ™šššššÿ™ššÿ™šü™šÿ™þ™šü™šÿ™šÿ™šý™šþ™ššý™šÿ™ššÿ™ššÿ™ššÿ™šÿ™ššÿ™šý™šþ™šÿ™šššÿ™ššÿ™ÿÿÿÿþÿþÿþÿþÿþÿþÿýÿÿÿþÿþÿÿÿþÿÿÿüÿýÿÿÿÿÿþÿþÿþÿþÿÿÿýÿüÿüÿýÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿüÿýÿÿÿÿÿÿÿþÿýÿüÿýÿÿÿþÿþÿþÿüÿýÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿüÿýÿþÿÿÿýÿüÿþÿÿÿÿÿýÿþÿÿÿýÿüÿÿÿÿÿÿÿþÿýÿÿÿÿÿþÿþÿþÿþÿÿÿþÿÿÿÿÿþÿýÿÿÿÿÿþÿýÿÿÿþÿýÿÿÿþÿûÿþÿýÿýÿýÿþÿÿÿÿÿýÿþÿÿÿÿÿÿÿþÿþÿþÿýÿüÿüÿþÿþÿýÿüÿþÿÿÿÿÿÿÿýÿþÿÿÿþÿüÿüÿÿÿÿÿÿÿÿÿþÿþÿûÿúÿþÿÿÿýÿýÿÿÿýÿþÿÿÿýÿýÿÿÿþÿþÿþÿþÿÿÿþÿüÿýÿÿÿfffÿeffÿefÿeffffÿefþefþefÿeffÿefÿefffþefýeffþefýefÿefffffffÿefþefþefÿefþefýefþeffþefþefÿefffÿefþefüefýefÿefýefüefûefþeffüefýefþefþefþefffffýefûefÿeÿefÿefffffÿefÿefÿefÿeffþefýefþeffÿefÿefÿefÿeffÿefÿefýefûefüeffüefüeffÿefÿefþefþefÿefÿefÿefÿefüefûefûefüefþefffÿefþeffþefüefýefýefûefþefÿefÿefþÿýÿþÿýÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿüÿýÿþÿÿÿþÿþÿþÿþÿþÿþÿþÿÿÿþÿÿÿþÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿþÿýÿÿÿÿÿÿÿÿÿþÿýÿÿÿþÿÿÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿþÿýÿýÿýÿÿÿýÿÿÿýÿüÿüÿýÿÿÿÿÿÿÿýÿýÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿÿþÿÿÿÿÿþÿÿÿýÿþÿÿÿÿÿÿÿþÿÿÿýÿüÿýÿüÿþÿþÿþÿþÿþÿÿÿþÿýÿýÿþÿýÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿýÿýÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿýÿüÿÿÿýÿýÿýÿÿÿÿÿþÿýÿþÿÿÿÿÿÿÿüÿûÿûÿûÿýÿþÿÿÿþÿÿÿþÿÿÿÿÿüÿýÿ››››ÿš››››ÿš››››ÿš››ÿš›ýš›þš››ýš›üš›þš›ýš›üš›ýš›ýš›üš›üš›ÿšÿš›üš›þš››þš›üš›þš›þš›þš›þš›þš›ÿšÿš›þš›ÿš›ÿš›ÿš›ûš›úš›ýš›››ÿš›ÿš›››þš›üš›üš›ýš›þš›ÿš››››››ÿš›››ÿš›ýš›ÿšÿš›þš››ÿš›þš›ÿš›þš››ÿš››ÿš›þš›ýš›ÿš›››››þš›þš›ýš›ÿšÿš›üš›ýš››þš›ÿš››ÿš››ÿš›ÿš›ÿš›ÿš››ÿš›ÿš››ÿš›ÿš››ÿš›ÿš››ÿš››þš›ÿš››üš›üš›üš›üÿýÿþÿþÿþÿüÿþÿþÿÿÿüÿþÿÿÿþÿþÿÿÿÿÿþÿûÿýÿÿÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿýÿþÿÿÿÿÿÿÿÿÿýÿýÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿýÿÿÿÿÿýÿÿÿÿÿýÿþÿÿÿüÿüÿýÿüÿûÿûÿýÿþÿüÿýÿÿÿÿÿþÿþÿÿÿþÿûÿýÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿýÿüÿüÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿþÿþÿÿÿýÿüÿþÿÿÿýÿüÿÿÿÿÿÿÿûÿûÿüÿüÿýÿþÿÿÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿÿÿÿÿþÿýÿÿÿÿÿÿÿüÿþÿÿÿÿÿþÿþÿþÿþÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿúÿüÿÿÿÿdeÿdeeÿdeÿdeÿdeÿdeeÿdeýdeeÿdeýdeüdeûdeýdeüdeüdeýdeÿdÿdeüdeüdeýdeþdeeeÿdeþdeÿdÿdeeþdeÿdeeeÿdeþdeýdeþdeeÿdeÿdeþdeeÿdeþdeýdeüdeÿdeÿdeþdeÿdeeeþdeÿdeeþdeÿdeeÿdeeþdeýdeýdeÿdeeÿdeeÿdeÿdeeÿdeeÿdeÿdeeÿdeeÿdeýdeþdeþdeþdeeeÿdeýdeÿdÿdeÿdeeeÿdeeÿdeþdeeþdeÿdeeþdeÿdeeþdeeþdeþdeeÿdeeeeÿdeeÿdeÿdeÿdeýdeýdeüdþÿýÿýÿþÿÿÿýÿüÿþÿÿÿþÿÿÿÿÿÿÿþÿýÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿÿÿþÿÿÿþÿÿÿÿÿüÿþÿÿÿþÿþÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿûÿüÿÿÿÿÿþÿÿÿþÿûÿþÿÿÿþÿþÿþÿþÿþÿÿÿýÿýÿþÿÿÿþÿÿÿþÿýÿÿÿþÿÿÿüÿûÿûÿþÿÿÿþÿÿÿþÿüÿúÿùÿüÿýÿþÿýÿþÿüÿüÿþÿÿÿÿÿþÿýÿüÿÿÿÿÿÿÿüÿÿÿÿÿþÿÿÿþÿþÿþÿþÿþÿÿÿÿÿþÿÿÿÿÿÿÿÿÿþÿÿÿüÿÿÿÿÿüÿüÿÿÿÿÿþÿþÿÿÿþÿÿÿþÿþÿþÿþÿÿÿÿÿýÿþÿÿÿÿÿýÿûÿýÿÿÿÿÿþÿÿÿÿÿþÿþÿÿÿþÿþÿýÿþÿþÿþÿþÿþÿþÿþš›ÿš›››››þš›þš›››››ÿš›››ÿš›ýš›þš›ÿš›ÿš›ÿš›þš›üš›ýš››þš›ÿš›››þš›ÿš›ÿš›þš›››ÿš›þš›üš›ýš››ÿš›ýš›ÿš››ýš›ýš›üš›ûš›ûš›ýš›þš››þš›þš››þš›ýš›ýš›ÿš›þš›þš›ÿš››þš›þš›þš›üš›üš›››››ÿš›››››ÿš››ÿš›ýš›ýš›ýš››ÿš›ÿš›››ýš›ýš››ÿš›ÿš››ÿš›ÿš›þš›ÿš›þš›þš›››››ÿš›››››››››››þš›þš››ÿš›ýš›þš››ÿš››ýš›ÿš›ÿš›üšýÿÿÿþÿýÿÿÿÿÿþÿÿÿÿÿÿÿþÿüÿþÿÿÿúÿüÿÿÿÿÿúÿüÿýÿüÿÿÿÿÿÿÿÿÿÿÿÿÿþÿýÿþÿýÿýÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿýÿýÿýÿýÿÿÿþÿýÿÿÿþÿÿÿÿÿýÿþÿÿÿþÿÿÿÿÿýÿþÿÿÿýÿüÿþÿþÿýÿÿÿÿÿüÿÿÿÿÿþÿÿÿþÿýÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿýÿþÿýÿÿÿÿÿþÿÿÿþÿþÿþÿÿÿÿÿÿÿÿÿÿÿüÿûÿþÿþÿÿÿþÿþÿýÿüÿúÿúÿÿÿþÿþÿþÿþÿþÿþÿýÿüÿýÿþÿþÿÿÿýÿüÿýÿþÿýÿüÿÿÿÿÿÿÿüÿýÿýÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿýÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿþÿýÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿýÿÿÿÿdeeþdeÿdeeÿdeþdeþdeÿdeÿdeýdeþdeþdeÿdeÿdÿdeýdeýdeeeeeþdeþdeÿdeeeeeÿdeeÿdeýdeþdeeeeÿdeþdeþdeeÿdeýdeþdeÿdeÿdeýdeþdeeþdeeüdeüdeÿdeeþdeÿdeþdeþdeÿdeeeeþdeÿdeeÿdeeþdeÿdeeþdeeþdeþdeþdeþdeeeÿdeþdeeÿdeýdeýdeþdeeÿdeþdeþdeÿdeÿdeeeÿdeeeeÿdeeÿdeýdeþdeþdeÿdÿdeüdeüdeüdeýdeÿdeeeeeþdeþdeddÿcddÿcddÿcdÿcþÿýÿþÿÿÿþÿÿÿýÿüÿþÿÿÿÿÿÿÿÿÿþÿþÿúÿûÿþÿýÿûÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿüÿÿÿÿÿþÿÿÿÿÿÿÿþÿýÿÿÿþÿýÿÿÿÿÿÿÿÿÿþÿüÿþÿþÿÿÿÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿþÿÿÿÿÿþÿýÿüÿþÿÿÿÿÿþÿýÿþÿþÿýÿþÿÿÿþÿüÿüÿýÿþÿÿÿÿÿÿÿþÿüÿýÿþÿþÿýÿýÿÿÿÿÿÿÿýÿþÿÿÿgrunt-contrib-copy-1.0.0/test/fixtures/folder_one/000077500000000000000000000000001266637244500222405ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/folder_one/one.js000066400000000000000000000000571266637244500233610ustar00rootroot00000000000000$(document).ready(function(){$.noConflict();});grunt-contrib-copy-1.0.0/test/fixtures/folder_two/000077500000000000000000000000001266637244500222705ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/folder_two/two.js000066400000000000000000000000461266637244500234370ustar00rootroot00000000000000$(document).ready(function(){jQuery});grunt-contrib-copy-1.0.0/test/fixtures/test.js000066400000000000000000000000401266637244500214330ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/fixtures/test2.js000066400000000000000000000000251266637244500215200ustar00rootroot00000000000000console.log('hello');grunt-contrib-copy-1.0.0/test/fixtures/time_folder/000077500000000000000000000000001266637244500224155ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/time_folder/sub_folder/000077500000000000000000000000001266637244500245415ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/time_folder/sub_folder/sub_sub_folder/000077500000000000000000000000001266637244500275365ustar00rootroot00000000000000grunt-contrib-copy-1.0.0/test/fixtures/time_folder/sub_folder/sub_sub_folder/test.js000066400000000000000000000000401266637244500310450ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/fixtures/time_folder/test.js000066400000000000000000000000401266637244500237240ustar00rootroot00000000000000$(document).ready(function(){});grunt-contrib-copy-1.0.0/test/fixtures/time_folder/test_process.js000066400000000000000000000000401266637244500254620ustar00rootroot00000000000000$(document).ready(function(){});