Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 342 lines (306 sloc) 10.08 kb
36831ec Michał Gołębiowski refactor(jshint): reduce duplication & test all JS files
mzgol authored
1 'use strict';
2
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
3 var files = require('./angularFiles').files;
4 var util = require('./lib/grunt/utils.js');
d1214af Pete Bacon Darwin chore(build): refactor build version information
petebacondarwin authored
5 var versionInfo = require('./lib/versions/version-info');
265f0b5 Pete Bacon Darwin fix(build): get promise A+ tests to run on windows
petebacondarwin authored
6 var path = require('path');
2240c11 ⭐caitp⭐ chore(tests): implement e2e test harness outside of docs app
caitp authored
7 var e2e = require('./test/e2e/tools');
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
8
9 module.exports = function(grunt) {
10 //grunt plugins
e7ac7aa PatrickJS chore(Gruntfile.js, package.json): use load-grunt-tasks and move grunt-c...
gdi2290 authored
11 require('load-grunt-tasks')(grunt);
12
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
13 grunt.loadTasks('lib/grunt');
6bdaa4b Jeff Cross feat(benchpress): configure benchpress grunt task
jeffbcross authored
14 grunt.loadNpmTasks('angular-benchpress');
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
15
d1214af Pete Bacon Darwin chore(build): refactor build version information
petebacondarwin authored
16 var NG_VERSION = versionInfo.currentVersion;
aa249ae Tobias Bosch chore(release): calculate the cdnVersion on every build
tbosch authored
17 NG_VERSION.cdn = versionInfo.cdnVersion;
8a96393 Dave Geddes chore(Grunt): don't remove root dir from zip
geddski authored
18 var dist = 'angular-'+ NG_VERSION.full;
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
19
20 //global beforeEach
21 util.init();
22
23
24 //config
25 grunt.initConfig({
26 NG_VERSION: NG_VERSION,
6bdaa4b Jeff Cross feat(benchpress): configure benchpress grunt task
jeffbcross authored
27 bp_build: {
28 options: {
29 buildPath: 'build/benchmarks',
30 benchmarksPath: 'benchmarks'
31 }
32 },
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
33 parallel: {
34 travis: {
35 tasks: [
b72ea59 Pete Bacon Darwin chore(docs-app): re-activate docs-app test tasks
petebacondarwin authored
36 util.parallelTask(['test:unit', 'test:promises-aplus', 'tests:docs'], {stream: true}),
7909ebe Vojta Jina chore: run more browsers on Travis (IE8,IE9,IE10,Safari,FF)
vojtajina authored
37 util.parallelTask(['test:e2e'])
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
38 ]
39 }
40 },
41
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
42 connect: {
43 devserver: {
44 options: {
45 port: 8000,
5fd39e0 Igor Minar chore(Gruntfile): run webserver on 0.0.0.0
IgorMinar authored
46 hostname: '0.0.0.0',
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
47 base: '.',
48 keepalive: true,
49 middleware: function(connect, options){
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
50 var base = Array.isArray(options.base) ? options.base[options.base.length - 1] : options.base;
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
51 return [
b9479ee Tobias Bosch chore(ngCsp): add e2e tests
tbosch authored
52 util.conditionalCsp(),
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
53 util.rewrite(),
2240c11 ⭐caitp⭐ chore(tests): implement e2e test harness outside of docs app
caitp authored
54 e2e.middleware(),
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
55 connect.favicon('images/favicon.ico'),
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
56 connect.static(base),
57 connect.directory(base)
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
58 ];
59 }
60 }
61 },
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
62 testserver: {
63 options: {
b73c46c Vojta Jina chore: fix Travis build
vojtajina authored
64 // We use end2end task (which does not start the webserver)
65 // and start the webserver as a separate process (in travis_build.sh)
66 // to avoid https://github.com/joyent/libuv/issues/826
67 port: 8000,
68 hostname: '0.0.0.0',
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
69 middleware: function(connect, options){
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
70 var base = Array.isArray(options.base) ? options.base[options.base.length - 1] : options.base;
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
71 return [
72 function(req, resp, next) {
73 // cache get requests to speed up tests on travis
74 if (req.method === 'GET') {
75 resp.setHeader('Cache-control', 'public, max-age=3600');
76 }
77
78 next();
79 },
b9479ee Tobias Bosch chore(ngCsp): add e2e tests
tbosch authored
80 util.conditionalCsp(),
2240c11 ⭐caitp⭐ chore(tests): implement e2e test harness outside of docs app
caitp authored
81 e2e.middleware(),
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
82 connect.favicon('images/favicon.ico'),
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
83 connect.static(base)
2c2adbc Vojta Jina chore(travis): speed up the build
vojtajina authored
84 ];
85 }
86 }
87 }
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
88 },
89
90
05b41ee Matias Niemelä fix(grunt): ensure all dependent tasks are called for all test task
matsko authored
91 tests: {
c2e215f Vojta Jina chore: use Karma
vojtajina authored
92 jqlite: 'karma-jqlite.conf.js',
93 jquery: 'karma-jquery.conf.js',
b72ea59 Pete Bacon Darwin chore(docs-app): re-activate docs-app test tasks
petebacondarwin authored
94 docs: 'karma-docs.conf.js',
7aef2d5 Julie Ralph test(docs): convert example end to end doc tests from scenario runner to...
juliemr authored
95 modules: 'karma-modules.conf.js'
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
96 },
97
98
99 autotest: {
c2e215f Vojta Jina chore: use Karma
vojtajina authored
100 jqlite: 'karma-jqlite.conf.js',
63c1e5b Igor Minar chore(grunt): add autotest:modules target
IgorMinar authored
101 jquery: 'karma-jquery.conf.js',
77c4fc6 Matias Niemelä chore(ngdocs): setup karma-docs testing suite to test docs components
matsko authored
102 modules: 'karma-modules.conf.js',
b72ea59 Pete Bacon Darwin chore(docs-app): re-activate docs-app test tasks
petebacondarwin authored
103 docs: 'karma-docs.conf.js'
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
104 },
105
106
84467d8 Julie Ralph refactor(testing): run end to end tests on separate browsers in parallel
juliemr authored
107 protractor: {
0e85ca9 Julie Ralph chore(testing): run end to end tests on firefox and safari as well as ch...
juliemr authored
108 normal: 'protractor-conf.js',
39c82f3 Julie Ralph chore(travis): reorganize protractor configs to group by spec instead of...
juliemr authored
109 travis: 'protractor-travis-conf.js',
0e85ca9 Julie Ralph chore(testing): run end to end tests on firefox and safari as well as ch...
juliemr authored
110 jenkins: 'protractor-jenkins-conf.js'
2ed4ad5 Julie Ralph feat(build): add a grunt test for running protractor tests extracted fro...
juliemr authored
111 },
112
113
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
114 clean: {
115 build: ['build'],
116 tmp: ['tmp']
117 },
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
118
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
119 jshint: {
05ef1bd chore(grunt): update to latest jshint task
James Brewer authored
120 options: {
121 jshintrc: true,
122 },
36831ec Michał Gołębiowski refactor(jshint): reduce duplication & test all JS files
mzgol authored
123 node: {
124 files: { src: ['*.js', 'lib/**/*.js'] },
125 },
accd35b Shahar Talmi chore(jshint): enforce jshint for tests
shahata authored
126 tests: {
127 files: { src: 'test/**/*.js' },
128 },
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
129 ng: {
130 files: { src: files['angularSrc'] },
131 },
132 ngAnimate: {
133 files: { src: 'src/ngAnimate/**/*.js' },
134 },
135 ngCookies: {
136 files: { src: 'src/ngCookies/**/*.js' },
137 },
138 ngLocale: {
139 files: { src: 'src/ngLocale/**/*.js' },
140 },
0f4016c Matias Niemelä feat(NgMessages): introduce the NgMessages module and directives
matsko authored
141 ngMessages: {
142 files: { src: 'src/ngMessages/**/*.js' },
143 },
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
144 ngMock: {
145 files: { src: 'src/ngMock/**/*.js' },
146 },
147 ngResource: {
148 files: { src: 'src/ngResource/**/*.js' },
149 },
150 ngRoute: {
151 files: { src: 'src/ngRoute/**/*.js' },
152 },
153 ngSanitize: {
154 files: { src: 'src/ngSanitize/**/*.js' },
155 },
156 ngScenario: {
157 files: { src: 'src/ngScenario/**/*.js' },
158 },
159 ngTouch: {
160 files: { src: 'src/ngTouch/**/*.js' },
d1434c9 arbus feat(ngAria): add an ngAria module to make a11y easier
arbus authored
161 },
162 ngAria: {
163 files: {src: 'src/ngAria/**/*.js'},
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
164 }
165 },
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
166
7f4edaf Igor Minar chore(build): add jscs code style check to our build
IgorMinar authored
167 jscs: {
168 src: ['src/**/*.js', 'test/**/*.js'],
169 options: {
170 config: ".jscs.json"
171 }
172 },
173
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
174 build: {
175 scenario: {
176 dest: 'build/angular-scenario.js',
177 src: [
9e7cb3c Michał Gołębiowski feat(jQuery): upgrade to jQuery to 2.1.1
mzgol authored
178 'bower_components/jquery/dist/jquery.js',
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
179 util.wrap([files['angularSrc'], files['angularScenario']], 'ngScenario/angular')
180 ],
181 styles: {
182 css: ['css/angular.css', 'css/angular-scenario.css']
183 }
184 },
185 angular: {
186 dest: 'build/angular.js',
187 src: util.wrap([files['angularSrc']], 'angular'),
188 styles: {
189 css: ['css/angular.css'],
a86cf20 Tobias Bosch fix: don't inline css in csp mode.
tbosch authored
190 generateCspCssFile: true,
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
191 minify: true
192 }
193 },
194 loader: {
195 dest: 'build/angular-loader.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
196 src: util.wrap(files['angularLoader'], 'loader')
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
197 },
94ec84e Brian Ford chore(ngMobile): rename module ngTouch and file to angular-touch.js
btford authored
198 touch: {
199 dest: 'build/angular-touch.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
200 src: util.wrap(files['angularModules']['ngTouch'], 'module')
707c65d feat(ngMobile): add ngMobile module with mobile-specific ngClick
Braden Shepherdson authored
201 },
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
202 mocks: {
203 dest: 'build/angular-mocks.js',
5bd6596 David Mosher chore(mocks): wrap angular-mocks.js in closure
davemo authored
204 src: util.wrap(files['angularModules']['ngMock'], 'module'),
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
205 strict: false
206 },
207 sanitize: {
208 dest: 'build/angular-sanitize.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
209 src: util.wrap(files['angularModules']['ngSanitize'], 'module')
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
210 },
211 resource: {
212 dest: 'build/angular-resource.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
213 src: util.wrap(files['angularModules']['ngResource'], 'module')
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
214 },
0f4016c Matias Niemelä feat(NgMessages): introduce the NgMessages module and directives
matsko authored
215 messages: {
216 dest: 'build/angular-messages.js',
217 src: util.wrap(files['angularModules']['ngMessages'], 'module')
218 },
81923f1 Matias Niemelä feat(ngAnimate): complete rewrite of animations
matsko authored
219 animate: {
220 dest: 'build/angular-animate.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
221 src: util.wrap(files['angularModules']['ngAnimate'], 'module')
81923f1 Matias Niemelä feat(ngAnimate): complete rewrite of animations
matsko authored
222 },
5599b55 Igor Minar refactor($route): pull $route and friends into angular-route.js
IgorMinar authored
223 route: {
224 dest: 'build/angular-route.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
225 src: util.wrap(files['angularModules']['ngRoute'], 'module')
5599b55 Igor Minar refactor($route): pull $route and friends into angular-route.js
IgorMinar authored
226 },
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
227 cookies: {
228 dest: 'build/angular-cookies.js',
934a95d Pete Bacon Darwin chore(grunt): add jshint tasks
petebacondarwin authored
229 src: util.wrap(files['angularModules']['ngCookies'], 'module')
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
230 },
d1434c9 arbus feat(ngAria): add an ngAria module to make a11y easier
arbus authored
231 aria: {
232 dest: 'build/angular-aria.js',
233 src: util.wrap(files['angularModules']['ngAria'], 'module')
234 },
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
235 "promises-aplus-adapter": {
236 dest:'tmp/promises-aplus-adapter++.js',
237 src:['src/ng/q.js','lib/promises-aplus/promises-aplus-test-adapter.js']
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
238 }
239 },
240
241
242 min: {
243 angular: 'build/angular.js',
81923f1 Matias Niemelä feat(ngAnimate): complete rewrite of animations
matsko authored
244 animate: 'build/angular-animate.js',
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
245 cookies: 'build/angular-cookies.js',
246 loader: 'build/angular-loader.js',
14f5734 Matias Niemelä chore(Gruntfile): remember to minify ngMessages
matsko authored
247 messages: 'build/angular-messages.js',
94ec84e Brian Ford chore(ngMobile): rename module ngTouch and file to angular-touch.js
btford authored
248 touch: 'build/angular-touch.js',
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
249 resource: 'build/angular-resource.js',
5599b55 Igor Minar refactor($route): pull $route and friends into angular-route.js
IgorMinar authored
250 route: 'build/angular-route.js',
d1434c9 arbus feat(ngAria): add an ngAria module to make a11y easier
arbus authored
251 sanitize: 'build/angular-sanitize.js',
252 aria: 'build/angular-aria.js'
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
253 },
254
255
31631b2 Brian Ford chore(build): add check for merge conflicts, ddescribe, and iit
btford authored
256 "ddescribe-iit": {
257 files: [
e9fad96 Julie Ralph chore(grunt): check files in src for ddescribe/iit
juliemr authored
258 'src/**/*.js',
31631b2 Brian Ford chore(build): add check for merge conflicts, ddescribe, and iit
btford authored
259 'test/**/*.js',
e9fad96 Julie Ralph chore(grunt): check files in src for ddescribe/iit
juliemr authored
260 '!test/ngScenario/DescribeSpec.js',
d9b90d7 Matias Niemelä feat(attrs): trigger observers for specific ng-attributes
matsko authored
261 '!src/ng/directive/attrs.js', // legitimate xit here
e9fad96 Julie Ralph chore(grunt): check files in src for ddescribe/iit
juliemr authored
262 '!src/ngScenario/**/*.js'
31631b2 Brian Ford chore(build): add check for merge conflicts, ddescribe, and iit
btford authored
263 ]
264 },
265
266 "merge-conflict": {
267 files: [
268 'src/**/*',
269 'test/**/*',
270 'docs/**/*',
271 'css/**/*'
272 ]
273 },
274
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
275 copy: {
276 i18n: {
277 files: [
278 { src: 'src/ngLocale/**', dest: 'build/i18n/', expand: true, flatten: true }
279 ]
280 }
281 },
282
283
284 compress: {
285 build: {
79a88ec Igor Minar chore(grunt): ensure that grunt uses zip for compression
IgorMinar authored
286 options: {archive: 'build/' + dist +'.zip', mode: 'zip'},
36831ec Michał Gołębiowski refactor(jshint): reduce duplication & test all JS files
mzgol authored
287 src: ['**'],
288 cwd: 'build',
289 expand: true,
290 dot: true,
291 dest: dist + '/'
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
292 }
293 },
294
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
295 shell: {
296 "promises-aplus-tests": {
297 options: {
298 stdout: false,
299 stderr: true,
300 failOnError: true
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
301 },
7f4d24c Michał Gołębiowski chore(npm): update npm dependencies
mzgol authored
302 command: path.normalize('./node_modules/.bin/promises-aplus-tests tmp/promises-aplus-adapter++.js')
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
303 }
304 },
305
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
306
307 write: {
308 versionTXT: {file: 'build/version.txt', val: NG_VERSION.full},
309 versionJSON: {file: 'build/version.json', val: JSON.stringify(NG_VERSION)}
8c10db3 Tobias Bosch chore(build): automate cutting a release, publishing to bower and to cod...
tbosch authored
310 },
311
312 bump: {
313 options: {
314 files: ['package.json'],
315 commit: false,
316 createTag: false,
317 push: false
318 }
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
319 }
320 });
321
322
323 //alias tasks
2a4f92e Pete Bacon Darwin chore(grunt): add jscs task to test task
petebacondarwin authored
324 grunt.registerTask('test', 'Run unit, docs and e2e tests with Karma', ['jshint', 'jscs', 'package','test:unit','test:promises-aplus', 'tests:docs', 'test:protractor']);
953fa4c Matias Niemelä chore(grunt): fix up the help text for the new test commands
matsko authored
325 grunt.registerTask('test:jqlite', 'Run the unit tests with Karma' , ['tests:jqlite']);
326 grunt.registerTask('test:jquery', 'Run the jQuery unit tests with Karma', ['tests:jquery']);
327 grunt.registerTask('test:modules', 'Run the Karma module tests with Karma', ['tests:modules']);
b72ea59 Pete Bacon Darwin chore(docs-app): re-activate docs-app test tasks
petebacondarwin authored
328 grunt.registerTask('test:docs', 'Run the doc-page tests with Karma', ['package', 'tests:docs']);
953fa4c Matias Niemelä chore(grunt): fix up the help text for the new test commands
matsko authored
329 grunt.registerTask('test:unit', 'Run unit, jQuery and Karma module tests with Karma', ['tests:jqlite', 'tests:jquery', 'tests:modules']);
84467d8 Julie Ralph refactor(testing): run end to end tests on separate browsers in parallel
juliemr authored
330 grunt.registerTask('test:protractor', 'Run the end to end tests with Protractor and keep a test server running in the background', ['webdriver', 'connect:testserver', 'protractor:normal']);
39c82f3 Julie Ralph chore(travis): reorganize protractor configs to group by spec instead of...
juliemr authored
331 grunt.registerTask('test:travis-protractor', 'Run the end to end tests with Protractor for Travis CI builds', ['connect:testserver', 'protractor:travis']);
332 grunt.registerTask('test:ci-protractor', 'Run the end to end tests with Protractor for Jenkins CI builds', ['webdriver', 'connect:testserver', 'protractor:jenkins']);
7aef2d5 Julie Ralph test(docs): convert example end to end doc tests from scenario runner to...
juliemr authored
333 grunt.registerTask('test:e2e', 'Alias for test:protractor', ['test:protractor']);
e848099 James Talmage chore(tests): add Promises/A+ Test Suite to the build
jamestalmage authored
334 grunt.registerTask('test:promises-aplus',['build:promises-aplus-adapter','shell:promises-aplus-tests']);
05b41ee Matias Niemelä fix(grunt): ensure all dependent tasks are called for all test task
matsko authored
335
aa5a162 Ken Sheedlo chore(bower): write grunt task for running bower
ksheedlo authored
336 grunt.registerTask('minify', ['bower','clean', 'build', 'minall']);
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
337 grunt.registerTask('webserver', ['connect:devserver']);
aa5a162 Ken Sheedlo chore(bower): write grunt task for running bower
ksheedlo authored
338 grunt.registerTask('package', ['bower','clean', 'buildall', 'minall', 'collect-errors', 'docs', 'copy', 'write', 'compress']);
7f4edaf Igor Minar chore(build): add jscs code style check to our build
IgorMinar authored
339 grunt.registerTask('ci-checks', ['ddescribe-iit', 'merge-conflict', 'jshint', 'jscs']);
79b51d5 Dave Geddes chore(Grunt): switch from Rake to Grunt
geddski authored
340 grunt.registerTask('default', ['package']);
341 };
Something went wrong with that request. Please try again.