##// END OF EJS Templates
js: organized and updated JS packages....
marcink -
r2123:f43bc711 default
parent child Browse files
Show More
@@ -1,192 +1,193 b''
1 1 {
2 2 "dirs": {
3 3 "css": {
4 4 "src":"rhodecode/public/css",
5 5 "dest":"rhodecode/public/css"
6 6 },
7 7 "js": {
8 8 "src": "rhodecode/public/js/src",
9 "src_rc": "rhodecode/public/js/rhodecode",
9 10 "dest": "rhodecode/public/js",
10 11 "bower": "bower_components",
11 12 "node_modules": "node_modules"
12 13 }
13 14 },
14 15 "copy": {
15 16 "main": {
16 17 "expand": true,
17 18 "cwd": "bower_components",
18 19 "src": "webcomponentsjs/webcomponents-lite.js",
19 20 "dest": "<%= dirs.js.dest %>/vendors"
20 21 }
21 22 },
22 23 "concat": {
23 24 "polymercss": {
24 25 "src": [
25 26 "<%= dirs.js.src %>/components/root-styles-prefix.html",
26 27 "<%= dirs.css.src %>/style-polymer.css",
27 28 "<%= dirs.js.src %>/components/root-styles-suffix.html"
28 29 ],
29 30 "dest": "<%= dirs.js.dest %>/src/components/root-styles.gen.html",
30 31 "nonull": true
31 32 },
32 33 "dist": {
33 34 "src": [
34 "<%= dirs.js.src %>/jquery-1.11.1.min.js",
35 "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js",
36 "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js",
37 "<%= dirs.js.node_modules %>/moment/min/moment.min.js",
38 "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js",
39 "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js",
40 "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js",
35 41 "<%= dirs.js.src %>/logging.js",
36 42 "<%= dirs.js.src %>/bootstrap.js",
37 "<%= dirs.js.src %>/mousetrap.js",
38 "<%= dirs.js.src %>/moment.js",
39 "<%= dirs.js.src %>/clipboard.min.js",
40 "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js",
41 "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js",
42 43 "<%= dirs.js.src %>/i18n_utils.js",
43 44 "<%= dirs.js.src %>/deform.js",
44 45 "<%= dirs.js.src %>/plugins/jquery.pjax.js",
45 46 "<%= dirs.js.src %>/plugins/jquery.dataTables.js",
46 47 "<%= dirs.js.src %>/plugins/flavoured_checkbox.js",
47 48 "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js",
48 49 "<%= dirs.js.src %>/plugins/jquery.autocomplete.js",
49 50 "<%= dirs.js.src %>/plugins/jquery.debounce.js",
50 51 "<%= dirs.js.src %>/plugins/jquery.mark.js",
51 52 "<%= dirs.js.src %>/plugins/jquery.timeago.js",
52 53 "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js",
53 54 "<%= dirs.js.src %>/select2/select2.js",
54 55 "<%= dirs.js.src %>/codemirror/codemirror.js",
55 56 "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js",
56 57 "<%= dirs.js.src %>/codemirror/codemirror_hint.js",
57 58 "<%= dirs.js.src %>/codemirror/codemirror_overlay.js",
58 59 "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js",
59 60 "<%= dirs.js.dest %>/mode/meta.js",
60 61 "<%= dirs.js.dest %>/mode/meta_ext.js",
61 "<%= dirs.js.dest %>/rhodecode/i18n/select2/translations.js",
62 "<%= dirs.js.src_rc %>/i18n/select2/translations.js",
62 63 "<%= dirs.js.src %>/rhodecode/utils/array.js",
63 64 "<%= dirs.js.src %>/rhodecode/utils/string.js",
64 65 "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js",
65 66 "<%= dirs.js.src %>/rhodecode/utils/ajax.js",
66 67 "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js",
67 68 "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js",
68 69 "<%= dirs.js.src %>/rhodecode/utils/ie.js",
69 70 "<%= dirs.js.src %>/rhodecode/utils/os.js",
70 71 "<%= dirs.js.src %>/rhodecode/utils/topics.js",
71 72 "<%= dirs.js.src %>/rhodecode/init.js",
72 73 "<%= dirs.js.src %>/rhodecode/changelog.js",
73 74 "<%= dirs.js.src %>/rhodecode/codemirror.js",
74 75 "<%= dirs.js.src %>/rhodecode/comments.js",
75 76 "<%= dirs.js.src %>/rhodecode/constants.js",
76 77 "<%= dirs.js.src %>/rhodecode/files.js",
77 78 "<%= dirs.js.src %>/rhodecode/followers.js",
78 79 "<%= dirs.js.src %>/rhodecode/menus.js",
79 80 "<%= dirs.js.src %>/rhodecode/notifications.js",
80 81 "<%= dirs.js.src %>/rhodecode/permissions.js",
81 82 "<%= dirs.js.src %>/rhodecode/pjax.js",
82 83 "<%= dirs.js.src %>/rhodecode/pullrequests.js",
83 84 "<%= dirs.js.src %>/rhodecode/settings.js",
84 85 "<%= dirs.js.src %>/rhodecode/select2_widgets.js",
85 86 "<%= dirs.js.src %>/rhodecode/tooltips.js",
86 87 "<%= dirs.js.src %>/rhodecode/users.js",
87 88 "<%= dirs.js.src %>/rhodecode/appenlight.js",
88 89 "<%= dirs.js.src %>/rhodecode.js"
89 90 ],
90 91 "dest": "<%= dirs.js.dest %>/scripts.js",
91 92 "nonull": true
92 93 }
93 94 },
94 95 "crisper": {
95 96 "dist": {
96 97 "options": {
97 98 "cleanup": false,
98 99 "onlySplit": true
99 100 },
100 101 "src": "<%= dirs.js.dest %>/rhodecode-components.html",
101 102 "dest": "<%= dirs.js.dest %>/rhodecode-components.js"
102 103 }
103 104 },
104 105 "less": {
105 106 "development": {
106 107 "options": {
107 108 "compress": false,
108 109 "yuicompress": false,
109 110 "optimization": 0
110 111 },
111 112 "files": {
112 113 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
113 114 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
114 115 }
115 116 },
116 117 "production": {
117 118 "options": {
118 119 "compress": true,
119 120 "yuicompress": true,
120 121 "optimization": 2
121 122 },
122 123 "files": {
123 124 "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less",
124 125 "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less"
125 126 }
126 127 },
127 128 "components": {
128 129 "files": [
129 130 {
130 131 "cwd": "<%= dirs.js.src %>/components/",
131 132 "dest": "<%= dirs.js.src %>/components/",
132 133 "src": [
133 134 "**/*.less"
134 135 ],
135 136 "expand": true,
136 137 "ext": ".css"
137 138 }
138 139 ]
139 140 }
140 141 },
141 142 "watch": {
142 143 "less": {
143 144 "files": [
144 145 "<%= dirs.css.src %>/**/*.less",
145 146 "<%= dirs.js.src %>/components/**/*.less"
146 147 ],
147 148 "tasks": [
148 149 "less:development",
149 150 "less:components",
150 151 "concat:polymercss",
151 152 "vulcanize",
152 153 "crisper",
153 154 "concat:dist"
154 155 ]
155 156 },
156 157 "js": {
157 158 "files": [
158 159 "!<%= dirs.js.src %>/components/root-styles.gen.html",
159 160 "<%= dirs.js.src %>/**/*.js",
160 161 "<%= dirs.js.src %>/components/**/*.html"
161 162 ],
162 163 "tasks": [
163 164 "less:components",
164 165 "concat:polymercss",
165 166 "vulcanize",
166 167 "crisper",
167 168 "concat:dist"
168 169 ]
169 170 }
170 171 },
171 172 "jshint": {
172 173 "rhodecode": {
173 174 "src": "<%= dirs.js.src %>/rhodecode/**/*.js",
174 175 "options": {
175 176 "jshintrc": ".jshintrc"
176 177 }
177 178 }
178 179 },
179 180 "vulcanize": {
180 181 "default": {
181 182 "options": {
182 183 "abspath": "",
183 184 "inlineScripts": true,
184 185 "inlineCss": true,
185 186 "stripComments": true
186 187 },
187 188 "files": {
188 189 "<%= dirs.js.dest %>/rhodecode-components.html": "<%= dirs.js.src %>/components/shared-components.html"
189 190 }
190 191 }
191 192 }
192 193 }
@@ -1,20 +1,25 b''
1 1 {
2 2 "name": "rhodecode-enterprise",
3 3 "version": "0.0.1",
4 4 "devDependencies": {
5 5 "grunt": "^0.4.5",
6 6 "grunt-contrib-copy": "^1.0.0",
7 7 "grunt-contrib-concat": "^0.5.1",
8 8 "grunt-contrib-jshint": "^0.12.0",
9 9 "grunt-contrib-less": "^1.1.0",
10 10 "grunt-contrib-watch": "^0.6.1",
11 11 "crisper": "^2.0.2",
12 12 "vulcanize": "^1.14.8",
13 13 "grunt-crisper": "^1.0.1",
14 14 "grunt-vulcanize": "^1.0.0",
15 "node2nix": "^1.0.0",
15 16 "jshint": "^2.9.1-rc3",
16 17 "bower": "^1.7.9",
18 "jquery": "1.11.3",
17 19 "favico.js": "^0.3.10",
18 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.0"
20 "clipboard": "^1.7.1",
21 "moment": "^2.18.1",
22 "mousetrap": "^1.6.1",
23 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
19 24 }
20 25 }
This diff has been collapsed as it changes many lines, (2397 lines changed) Show them Hide them
@@ -1,2391 +1,3022 b''
1 1 # This file has been generated by node2nix 1.0.0. Do not edit!
2 2
3 3 {nodeEnv, fetchurl, fetchgit}:
4 4
5 5 let
6 6 sources = {
7 7 "grunt-0.4.5" = {
8 8 name = "grunt";
9 9 packageName = "grunt";
10 10 version = "0.4.5";
11 11 src = fetchurl {
12 12 url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";
13 13 sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0";
14 14 };
15 15 };
16 16 "grunt-contrib-copy-1.0.0" = {
17 17 name = "grunt-contrib-copy";
18 18 packageName = "grunt-contrib-copy";
19 19 version = "1.0.0";
20 20 src = fetchurl {
21 21 url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz";
22 22 sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573";
23 23 };
24 24 };
25 25 "grunt-contrib-concat-0.5.1" = {
26 26 name = "grunt-contrib-concat";
27 27 packageName = "grunt-contrib-concat";
28 28 version = "0.5.1";
29 29 src = fetchurl {
30 30 url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz";
31 31 sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49";
32 32 };
33 33 };
34 34 "grunt-contrib-jshint-0.12.0" = {
35 35 name = "grunt-contrib-jshint";
36 36 packageName = "grunt-contrib-jshint";
37 37 version = "0.12.0";
38 38 src = fetchurl {
39 39 url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz";
40 40 sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29";
41 41 };
42 42 };
43 "grunt-contrib-less-1.4.0" = {
43 "grunt-contrib-less-1.4.1" = {
44 44 name = "grunt-contrib-less";
45 45 packageName = "grunt-contrib-less";
46 version = "1.4.0";
46 version = "1.4.1";
47 47 src = fetchurl {
48 url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.0.tgz";
49 sha1 = "17ee79cad21c9720ee07b3a991fab5103b513514";
48 url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz";
49 sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f";
50 50 };
51 51 };
52 52 "grunt-contrib-watch-0.6.1" = {
53 53 name = "grunt-contrib-watch";
54 54 packageName = "grunt-contrib-watch";
55 55 version = "0.6.1";
56 56 src = fetchurl {
57 57 url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz";
58 58 sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15";
59 59 };
60 60 };
61 "crisper-2.0.2" = {
61 "crisper-2.1.1" = {
62 62 name = "crisper";
63 63 packageName = "crisper";
64 version = "2.0.2";
64 version = "2.1.1";
65 65 src = fetchurl {
66 url = "https://registry.npmjs.org/crisper/-/crisper-2.0.2.tgz";
67 sha1 = "188a7da3d00dcf0c64eff7f253d23dacffba7197";
66 url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz";
67 sha1 = "4cc7321c3e90f3c5cbdc3503217f118fd7d5c51c";
68 68 };
69 69 };
70 "vulcanize-1.14.8" = {
70 "vulcanize-1.16.0" = {
71 71 name = "vulcanize";
72 72 packageName = "vulcanize";
73 version = "1.14.8";
73 version = "1.16.0";
74 74 src = fetchurl {
75 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.14.8.tgz";
76 sha1 = "3cdd6f81d9baf2c5796ddd6d2d289e45975086f7";
75 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz";
76 sha1 = "b0ce3b0044d194ad4908ae4f1a6c6110a6e4d5e6";
77 77 };
78 78 };
79 79 "grunt-crisper-1.0.1" = {
80 80 name = "grunt-crisper";
81 81 packageName = "grunt-crisper";
82 82 version = "1.0.1";
83 83 src = fetchurl {
84 84 url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz";
85 85 sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7";
86 86 };
87 87 };
88 88 "grunt-vulcanize-1.0.0" = {
89 89 name = "grunt-vulcanize";
90 90 packageName = "grunt-vulcanize";
91 91 version = "1.0.0";
92 92 src = fetchurl {
93 93 url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz";
94 94 sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f";
95 95 };
96 96 };
97 "jshint-2.9.3" = {
97 "node2nix-1.3.0" = {
98 name = "node2nix";
99 packageName = "node2nix";
100 version = "1.3.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/node2nix/-/node2nix-1.3.0.tgz";
103 sha1 = "e830a3bc5880dd22ae47be71a147f776542850cc";
104 };
105 };
106 "jshint-2.9.5" = {
98 107 name = "jshint";
99 108 packageName = "jshint";
100 version = "2.9.3";
109 version = "2.9.5";
101 110 src = fetchurl {
102 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.3.tgz";
103 sha1 = "a2e14ff85c2d6bf8c8080e5aa55129ebc6a2d320";
111 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz";
112 sha1 = "1e7252915ce681b40827ee14248c46d34e9aa62c";
104 113 };
105 114 };
106 "bower-1.7.9" = {
115 "bower-1.8.2" = {
107 116 name = "bower";
108 117 packageName = "bower";
109 version = "1.7.9";
118 version = "1.8.2";
110 119 src = fetchurl {
111 url = "https://registry.npmjs.org/bower/-/bower-1.7.9.tgz";
112 sha1 = "b7296c2393e0d75edaa6ca39648132dd255812b0";
120 url = "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz";
121 sha1 = "adf53529c8d4af02ef24fb8d5341c1419d33e2f7";
122 };
123 };
124 "jquery-1.11.3" = {
125 name = "jquery";
126 packageName = "jquery";
127 version = "1.11.3";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz";
130 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
113 131 };
114 132 };
115 133 "favico.js-0.3.10" = {
116 134 name = "favico.js";
117 135 packageName = "favico.js";
118 136 version = "0.3.10";
119 137 src = fetchurl {
120 138 url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz";
121 139 sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301";
122 140 };
123 141 };
124 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.0" = {
142 "clipboard-1.7.1" = {
143 name = "clipboard";
144 packageName = "clipboard";
145 version = "1.7.1";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz";
148 sha1 = "360d6d6946e99a7a1fef395e42ba92b5e9b5a16b";
149 };
150 };
151 "moment-2.18.1" = {
152 name = "moment";
153 packageName = "moment";
154 version = "2.18.1";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz";
157 sha1 = "c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f";
158 };
159 };
160 "mousetrap-1.6.1" = {
161 name = "mousetrap";
162 packageName = "mousetrap";
163 version = "1.6.1";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.1.tgz";
166 sha1 = "2a085f5c751294c75e7e81f6ec2545b29cbf42d9";
167 };
168 };
169 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = {
125 170 name = "appenlight-client";
126 171 packageName = "appenlight-client";
127 version = "0.5.0";
172 version = "0.5.1";
128 173 src = fetchgit {
129 174 url = "https://git@github.com/AppEnlight/appenlight-client-js.git";
130 rev = "b1d6853345dc3e96468b34537810b3eb77e0764f";
131 sha256 = "2ef00aef7dafdecdc1666d2e83fc190a796849985d04a8f0fad148d64aa4f8db";
175 rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307";
176 sha256 = "92111f1104cbf0b31303c366c0fa752cf68af7ddde40d0161edd1b5fd9dd07f7";
132 177 };
133 178 };
134 179 "async-0.1.22" = {
135 180 name = "async";
136 181 packageName = "async";
137 182 version = "0.1.22";
138 183 src = fetchurl {
139 184 url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz";
140 185 sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061";
141 186 };
142 187 };
143 188 "coffee-script-1.3.3" = {
144 189 name = "coffee-script";
145 190 packageName = "coffee-script";
146 191 version = "1.3.3";
147 192 src = fetchurl {
148 193 url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz";
149 194 sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4";
150 195 };
151 196 };
152 197 "colors-0.6.2" = {
153 198 name = "colors";
154 199 packageName = "colors";
155 200 version = "0.6.2";
156 201 src = fetchurl {
157 202 url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz";
158 203 sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc";
159 204 };
160 205 };
161 206 "dateformat-1.0.2-1.2.3" = {
162 207 name = "dateformat";
163 208 packageName = "dateformat";
164 209 version = "1.0.2-1.2.3";
165 210 src = fetchurl {
166 211 url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";
167 212 sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9";
168 213 };
169 214 };
170 215 "eventemitter2-0.4.14" = {
171 216 name = "eventemitter2";
172 217 packageName = "eventemitter2";
173 218 version = "0.4.14";
174 219 src = fetchurl {
175 220 url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz";
176 221 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
177 222 };
178 223 };
179 224 "findup-sync-0.1.3" = {
180 225 name = "findup-sync";
181 226 packageName = "findup-sync";
182 227 version = "0.1.3";
183 228 src = fetchurl {
184 229 url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz";
185 230 sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683";
186 231 };
187 232 };
188 233 "glob-3.1.21" = {
189 234 name = "glob";
190 235 packageName = "glob";
191 236 version = "3.1.21";
192 237 src = fetchurl {
193 238 url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz";
194 239 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
195 240 };
196 241 };
197 242 "hooker-0.2.3" = {
198 243 name = "hooker";
199 244 packageName = "hooker";
200 245 version = "0.2.3";
201 246 src = fetchurl {
202 247 url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz";
203 248 sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959";
204 249 };
205 250 };
206 251 "iconv-lite-0.2.11" = {
207 252 name = "iconv-lite";
208 253 packageName = "iconv-lite";
209 254 version = "0.2.11";
210 255 src = fetchurl {
211 256 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz";
212 257 sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8";
213 258 };
214 259 };
215 260 "minimatch-0.2.14" = {
216 261 name = "minimatch";
217 262 packageName = "minimatch";
218 263 version = "0.2.14";
219 264 src = fetchurl {
220 265 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz";
221 266 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
222 267 };
223 268 };
224 269 "nopt-1.0.10" = {
225 270 name = "nopt";
226 271 packageName = "nopt";
227 272 version = "1.0.10";
228 273 src = fetchurl {
229 274 url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
230 275 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
231 276 };
232 277 };
233 278 "rimraf-2.2.8" = {
234 279 name = "rimraf";
235 280 packageName = "rimraf";
236 281 version = "2.2.8";
237 282 src = fetchurl {
238 283 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz";
239 284 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
240 285 };
241 286 };
242 287 "lodash-0.9.2" = {
243 288 name = "lodash";
244 289 packageName = "lodash";
245 290 version = "0.9.2";
246 291 src = fetchurl {
247 292 url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz";
248 293 sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c";
249 294 };
250 295 };
251 296 "underscore.string-2.2.1" = {
252 297 name = "underscore.string";
253 298 packageName = "underscore.string";
254 299 version = "2.2.1";
255 300 src = fetchurl {
256 301 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz";
257 302 sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19";
258 303 };
259 304 };
260 305 "which-1.0.9" = {
261 306 name = "which";
262 307 packageName = "which";
263 308 version = "1.0.9";
264 309 src = fetchurl {
265 310 url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz";
266 311 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
267 312 };
268 313 };
269 314 "js-yaml-2.0.5" = {
270 315 name = "js-yaml";
271 316 packageName = "js-yaml";
272 317 version = "2.0.5";
273 318 src = fetchurl {
274 319 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz";
275 320 sha1 = "a25ae6509999e97df278c6719da11bd0687743a8";
276 321 };
277 322 };
278 323 "exit-0.1.2" = {
279 324 name = "exit";
280 325 packageName = "exit";
281 326 version = "0.1.2";
282 327 src = fetchurl {
283 328 url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
284 329 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
285 330 };
286 331 };
287 332 "getobject-0.1.0" = {
288 333 name = "getobject";
289 334 packageName = "getobject";
290 335 version = "0.1.0";
291 336 src = fetchurl {
292 337 url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz";
293 338 sha1 = "047a449789fa160d018f5486ed91320b6ec7885c";
294 339 };
295 340 };
296 341 "grunt-legacy-util-0.2.0" = {
297 342 name = "grunt-legacy-util";
298 343 packageName = "grunt-legacy-util";
299 344 version = "0.2.0";
300 345 src = fetchurl {
301 346 url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz";
302 347 sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b";
303 348 };
304 349 };
305 350 "grunt-legacy-log-0.1.3" = {
306 351 name = "grunt-legacy-log";
307 352 packageName = "grunt-legacy-log";
308 353 version = "0.1.3";
309 354 src = fetchurl {
310 355 url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz";
311 356 sha1 = "ec29426e803021af59029f87d2f9cd7335a05531";
312 357 };
313 358 };
314 359 "glob-3.2.11" = {
315 360 name = "glob";
316 361 packageName = "glob";
317 362 version = "3.2.11";
318 363 src = fetchurl {
319 364 url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz";
320 365 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
321 366 };
322 367 };
323 368 "lodash-2.4.2" = {
324 369 name = "lodash";
325 370 packageName = "lodash";
326 371 version = "2.4.2";
327 372 src = fetchurl {
328 373 url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz";
329 374 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
330 375 };
331 376 };
332 377 "inherits-2.0.3" = {
333 378 name = "inherits";
334 379 packageName = "inherits";
335 380 version = "2.0.3";
336 381 src = fetchurl {
337 382 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
338 383 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
339 384 };
340 385 };
341 386 "minimatch-0.3.0" = {
342 387 name = "minimatch";
343 388 packageName = "minimatch";
344 389 version = "0.3.0";
345 390 src = fetchurl {
346 391 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz";
347 392 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
348 393 };
349 394 };
350 395 "lru-cache-2.7.3" = {
351 396 name = "lru-cache";
352 397 packageName = "lru-cache";
353 398 version = "2.7.3";
354 399 src = fetchurl {
355 400 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz";
356 401 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
357 402 };
358 403 };
359 404 "sigmund-1.0.1" = {
360 405 name = "sigmund";
361 406 packageName = "sigmund";
362 407 version = "1.0.1";
363 408 src = fetchurl {
364 409 url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
365 410 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
366 411 };
367 412 };
368 413 "graceful-fs-1.2.3" = {
369 414 name = "graceful-fs";
370 415 packageName = "graceful-fs";
371 416 version = "1.2.3";
372 417 src = fetchurl {
373 418 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz";
374 419 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
375 420 };
376 421 };
377 422 "inherits-1.0.2" = {
378 423 name = "inherits";
379 424 packageName = "inherits";
380 425 version = "1.0.2";
381 426 src = fetchurl {
382 427 url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz";
383 428 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
384 429 };
385 430 };
386 "abbrev-1.0.9" = {
431 "abbrev-1.1.0" = {
387 432 name = "abbrev";
388 433 packageName = "abbrev";
389 version = "1.0.9";
434 version = "1.1.0";
390 435 src = fetchurl {
391 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz";
392 sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135";
436 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz";
437 sha1 = "d0554c2256636e2f56e7c2e5ad183f859428d81f";
393 438 };
394 439 };
395 440 "argparse-0.1.16" = {
396 441 name = "argparse";
397 442 packageName = "argparse";
398 443 version = "0.1.16";
399 444 src = fetchurl {
400 445 url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz";
401 446 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
402 447 };
403 448 };
404 449 "esprima-1.0.4" = {
405 450 name = "esprima";
406 451 packageName = "esprima";
407 452 version = "1.0.4";
408 453 src = fetchurl {
409 454 url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz";
410 455 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
411 456 };
412 457 };
413 458 "underscore-1.7.0" = {
414 459 name = "underscore";
415 460 packageName = "underscore";
416 461 version = "1.7.0";
417 462 src = fetchurl {
418 463 url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz";
419 464 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
420 465 };
421 466 };
422 467 "underscore.string-2.4.0" = {
423 468 name = "underscore.string";
424 469 packageName = "underscore.string";
425 470 version = "2.4.0";
426 471 src = fetchurl {
427 472 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz";
428 473 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
429 474 };
430 475 };
431 476 "grunt-legacy-log-utils-0.1.1" = {
432 477 name = "grunt-legacy-log-utils";
433 478 packageName = "grunt-legacy-log-utils";
434 479 version = "0.1.1";
435 480 src = fetchurl {
436 481 url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz";
437 482 sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e";
438 483 };
439 484 };
440 485 "underscore.string-2.3.3" = {
441 486 name = "underscore.string";
442 487 packageName = "underscore.string";
443 488 version = "2.3.3";
444 489 src = fetchurl {
445 490 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz";
446 491 sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d";
447 492 };
448 493 };
449 494 "chalk-1.1.3" = {
450 495 name = "chalk";
451 496 packageName = "chalk";
452 497 version = "1.1.3";
453 498 src = fetchurl {
454 499 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
455 500 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
456 501 };
457 502 };
458 503 "file-sync-cmp-0.1.1" = {
459 504 name = "file-sync-cmp";
460 505 packageName = "file-sync-cmp";
461 506 version = "0.1.1";
462 507 src = fetchurl {
463 508 url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz";
464 509 sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b";
465 510 };
466 511 };
467 512 "ansi-styles-2.2.1" = {
468 513 name = "ansi-styles";
469 514 packageName = "ansi-styles";
470 515 version = "2.2.1";
471 516 src = fetchurl {
472 517 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
473 518 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
474 519 };
475 520 };
476 521 "escape-string-regexp-1.0.5" = {
477 522 name = "escape-string-regexp";
478 523 packageName = "escape-string-regexp";
479 524 version = "1.0.5";
480 525 src = fetchurl {
481 526 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
482 527 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
483 528 };
484 529 };
485 530 "has-ansi-2.0.0" = {
486 531 name = "has-ansi";
487 532 packageName = "has-ansi";
488 533 version = "2.0.0";
489 534 src = fetchurl {
490 535 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
491 536 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
492 537 };
493 538 };
494 539 "strip-ansi-3.0.1" = {
495 540 name = "strip-ansi";
496 541 packageName = "strip-ansi";
497 542 version = "3.0.1";
498 543 src = fetchurl {
499 544 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
500 545 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
501 546 };
502 547 };
503 548 "supports-color-2.0.0" = {
504 549 name = "supports-color";
505 550 packageName = "supports-color";
506 551 version = "2.0.0";
507 552 src = fetchurl {
508 553 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
509 554 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
510 555 };
511 556 };
512 "ansi-regex-2.0.0" = {
557 "ansi-regex-2.1.1" = {
513 558 name = "ansi-regex";
514 559 packageName = "ansi-regex";
515 version = "2.0.0";
560 version = "2.1.1";
516 561 src = fetchurl {
517 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz";
518 sha1 = "c5061b6e0ef8a81775e50f5d66151bf6bf371107";
562 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
563 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
519 564 };
520 565 };
521 566 "chalk-0.5.1" = {
522 567 name = "chalk";
523 568 packageName = "chalk";
524 569 version = "0.5.1";
525 570 src = fetchurl {
526 571 url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz";
527 572 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
528 573 };
529 574 };
530 575 "source-map-0.3.0" = {
531 576 name = "source-map";
532 577 packageName = "source-map";
533 578 version = "0.3.0";
534 579 src = fetchurl {
535 580 url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz";
536 581 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
537 582 };
538 583 };
539 584 "ansi-styles-1.1.0" = {
540 585 name = "ansi-styles";
541 586 packageName = "ansi-styles";
542 587 version = "1.1.0";
543 588 src = fetchurl {
544 589 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz";
545 590 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
546 591 };
547 592 };
548 593 "has-ansi-0.1.0" = {
549 594 name = "has-ansi";
550 595 packageName = "has-ansi";
551 596 version = "0.1.0";
552 597 src = fetchurl {
553 598 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz";
554 599 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
555 600 };
556 601 };
557 602 "strip-ansi-0.3.0" = {
558 603 name = "strip-ansi";
559 604 packageName = "strip-ansi";
560 605 version = "0.3.0";
561 606 src = fetchurl {
562 607 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz";
563 608 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
564 609 };
565 610 };
566 611 "supports-color-0.2.0" = {
567 612 name = "supports-color";
568 613 packageName = "supports-color";
569 614 version = "0.2.0";
570 615 src = fetchurl {
571 616 url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz";
572 617 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
573 618 };
574 619 };
575 620 "ansi-regex-0.2.1" = {
576 621 name = "ansi-regex";
577 622 packageName = "ansi-regex";
578 623 version = "0.2.1";
579 624 src = fetchurl {
580 625 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz";
581 626 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
582 627 };
583 628 };
584 "amdefine-1.0.0" = {
629 "amdefine-1.0.1" = {
585 630 name = "amdefine";
586 631 packageName = "amdefine";
587 version = "1.0.0";
632 version = "1.0.1";
588 633 src = fetchurl {
589 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz";
590 sha1 = "fd17474700cb5cc9c2b709f0be9d23ce3c198c33";
634 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
635 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
591 636 };
592 637 };
593 "async-2.0.1" = {
638 "async-2.5.0" = {
594 639 name = "async";
595 640 packageName = "async";
596 version = "2.0.1";
641 version = "2.5.0";
597 642 src = fetchurl {
598 url = "https://registry.npmjs.org/async/-/async-2.0.1.tgz";
599 sha1 = "b709cc0280a9c36f09f4536be823c838a9049e25";
643 url = "https://registry.npmjs.org/async/-/async-2.5.0.tgz";
644 sha1 = "843190fd6b7357a0b9e1c956edddd5ec8462b54d";
600 645 };
601 646 };
602 "less-2.7.1" = {
647 "less-2.7.2" = {
603 648 name = "less";
604 649 packageName = "less";
605 version = "2.7.1";
650 version = "2.7.2";
606 651 src = fetchurl {
607 url = "https://registry.npmjs.org/less/-/less-2.7.1.tgz";
608 sha1 = "6cbfea22b3b830304e9a5fb371d54fa480c9d7cf";
652 url = "https://registry.npmjs.org/less/-/less-2.7.2.tgz";
653 sha1 = "368d6cc73e1fb03981183280918743c5dcf9b3df";
609 654 };
610 655 };
611 "lodash-4.16.2" = {
656 "lodash-4.17.4" = {
612 657 name = "lodash";
613 658 packageName = "lodash";
614 version = "4.16.2";
659 version = "4.17.4";
615 660 src = fetchurl {
616 url = "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz";
617 sha1 = "3e626db827048a699281a8a125226326cfc0e652";
661 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz";
662 sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
618 663 };
619 664 };
620 665 "errno-0.1.4" = {
621 666 name = "errno";
622 667 packageName = "errno";
623 668 version = "0.1.4";
624 669 src = fetchurl {
625 670 url = "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz";
626 671 sha1 = "b896e23a9e5e8ba33871fc996abd3635fc9a1c7d";
627 672 };
628 673 };
629 "graceful-fs-4.1.8" = {
674 "graceful-fs-4.1.11" = {
630 675 name = "graceful-fs";
631 676 packageName = "graceful-fs";
632 version = "4.1.8";
677 version = "4.1.11";
633 678 src = fetchurl {
634 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.8.tgz";
635 sha1 = "da3e11135eb2168bdd374532c4e2649751672890";
679 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
680 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
636 681 };
637 682 };
638 "image-size-0.5.0" = {
683 "image-size-0.5.5" = {
639 684 name = "image-size";
640 685 packageName = "image-size";
641 version = "0.5.0";
686 version = "0.5.5";
642 687 src = fetchurl {
643 url = "https://registry.npmjs.org/image-size/-/image-size-0.5.0.tgz";
644 sha1 = "be7aed1c37b5ac3d9ba1d66a24b4c47ff8397651";
688 url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
689 sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
645 690 };
646 691 };
647 "mime-1.3.4" = {
692 "mime-1.4.0" = {
648 693 name = "mime";
649 694 packageName = "mime";
650 version = "1.3.4";
695 version = "1.4.0";
651 696 src = fetchurl {
652 url = "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz";
653 sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
697 url = "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz";
698 sha1 = "69e9e0db51d44f2a3b56e48b7817d7d137f1a343";
654 699 };
655 700 };
656 701 "mkdirp-0.5.1" = {
657 702 name = "mkdirp";
658 703 packageName = "mkdirp";
659 704 version = "0.5.1";
660 705 src = fetchurl {
661 706 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
662 707 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
663 708 };
664 709 };
665 "promise-7.1.1" = {
710 "promise-7.3.1" = {
666 711 name = "promise";
667 712 packageName = "promise";
668 version = "7.1.1";
713 version = "7.3.1";
669 714 src = fetchurl {
670 url = "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz";
671 sha1 = "489654c692616b8aa55b0724fa809bb7db49c5bf";
715 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
716 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
672 717 };
673 718 };
674 "source-map-0.5.6" = {
719 "source-map-0.5.7" = {
675 720 name = "source-map";
676 721 packageName = "source-map";
677 version = "0.5.6";
722 version = "0.5.7";
678 723 src = fetchurl {
679 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz";
680 sha1 = "75ce38f52bf0733c5a7f0c118d81334a2bb5f412";
724 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
725 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
726 };
727 };
728 "request-2.82.0" = {
729 name = "request";
730 packageName = "request";
731 version = "2.82.0";
732 src = fetchurl {
733 url = "https://registry.npmjs.org/request/-/request-2.82.0.tgz";
734 sha1 = "2ba8a92cd7ac45660ea2b10a53ae67cd247516ea";
681 735 };
682 736 };
683 737 "prr-0.0.0" = {
684 738 name = "prr";
685 739 packageName = "prr";
686 740 version = "0.0.0";
687 741 src = fetchurl {
688 742 url = "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz";
689 743 sha1 = "1a84b85908325501411853d0081ee3fa86e2926a";
690 744 };
691 745 };
692 746 "minimist-0.0.8" = {
693 747 name = "minimist";
694 748 packageName = "minimist";
695 749 version = "0.0.8";
696 750 src = fetchurl {
697 751 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
698 752 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
699 753 };
700 754 };
701 "asap-2.0.5" = {
755 "asap-2.0.6" = {
702 756 name = "asap";
703 757 packageName = "asap";
704 version = "2.0.5";
758 version = "2.0.6";
759 src = fetchurl {
760 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
761 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
762 };
763 };
764 "aws-sign2-0.7.0" = {
765 name = "aws-sign2";
766 packageName = "aws-sign2";
767 version = "0.7.0";
768 src = fetchurl {
769 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
770 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
771 };
772 };
773 "aws4-1.6.0" = {
774 name = "aws4";
775 packageName = "aws4";
776 version = "1.6.0";
777 src = fetchurl {
778 url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
779 sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
780 };
781 };
782 "caseless-0.12.0" = {
783 name = "caseless";
784 packageName = "caseless";
785 version = "0.12.0";
786 src = fetchurl {
787 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
788 sha1 = "1b681c21ff84033c826543090689420d187151dc";
789 };
790 };
791 "combined-stream-1.0.5" = {
792 name = "combined-stream";
793 packageName = "combined-stream";
794 version = "1.0.5";
795 src = fetchurl {
796 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
797 sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
798 };
799 };
800 "extend-3.0.1" = {
801 name = "extend";
802 packageName = "extend";
803 version = "3.0.1";
804 src = fetchurl {
805 url = "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz";
806 sha1 = "a755ea7bc1adfcc5a31ce7e762dbaadc5e636444";
807 };
808 };
809 "forever-agent-0.6.1" = {
810 name = "forever-agent";
811 packageName = "forever-agent";
812 version = "0.6.1";
813 src = fetchurl {
814 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
815 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
816 };
817 };
818 "form-data-2.3.1" = {
819 name = "form-data";
820 packageName = "form-data";
821 version = "2.3.1";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz";
824 sha1 = "6fb94fbd71885306d73d15cc497fe4cc4ecd44bf";
825 };
826 };
827 "har-validator-5.0.3" = {
828 name = "har-validator";
829 packageName = "har-validator";
830 version = "5.0.3";
831 src = fetchurl {
832 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
833 sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
834 };
835 };
836 "hawk-6.0.2" = {
837 name = "hawk";
838 packageName = "hawk";
839 version = "6.0.2";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
842 sha1 = "af4d914eb065f9b5ce4d9d11c1cb2126eecc3038";
843 };
844 };
845 "http-signature-1.2.0" = {
846 name = "http-signature";
847 packageName = "http-signature";
848 version = "1.2.0";
849 src = fetchurl {
850 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
851 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
852 };
853 };
854 "is-typedarray-1.0.0" = {
855 name = "is-typedarray";
856 packageName = "is-typedarray";
857 version = "1.0.0";
858 src = fetchurl {
859 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
860 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
861 };
862 };
863 "isstream-0.1.2" = {
864 name = "isstream";
865 packageName = "isstream";
866 version = "0.1.2";
867 src = fetchurl {
868 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
869 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
870 };
871 };
872 "json-stringify-safe-5.0.1" = {
873 name = "json-stringify-safe";
874 packageName = "json-stringify-safe";
875 version = "5.0.1";
876 src = fetchurl {
877 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
878 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
879 };
880 };
881 "mime-types-2.1.17" = {
882 name = "mime-types";
883 packageName = "mime-types";
884 version = "2.1.17";
885 src = fetchurl {
886 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz";
887 sha1 = "09d7a393f03e995a79f8af857b70a9e0ab16557a";
888 };
889 };
890 "oauth-sign-0.8.2" = {
891 name = "oauth-sign";
892 packageName = "oauth-sign";
893 version = "0.8.2";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
896 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
897 };
898 };
899 "performance-now-2.1.0" = {
900 name = "performance-now";
901 packageName = "performance-now";
902 version = "2.1.0";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
905 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
906 };
907 };
908 "qs-6.5.1" = {
909 name = "qs";
910 packageName = "qs";
911 version = "6.5.1";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
914 sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
915 };
916 };
917 "safe-buffer-5.1.1" = {
918 name = "safe-buffer";
919 packageName = "safe-buffer";
920 version = "5.1.1";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
923 sha1 = "893312af69b2123def71f57889001671eeb2c853";
924 };
925 };
926 "stringstream-0.0.5" = {
927 name = "stringstream";
928 packageName = "stringstream";
929 version = "0.0.5";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz";
932 sha1 = "4e484cd4de5a0bbbee18e46307710a8a81621878";
933 };
934 };
935 "tough-cookie-2.3.3" = {
936 name = "tough-cookie";
937 packageName = "tough-cookie";
938 version = "2.3.3";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
941 sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
942 };
943 };
944 "tunnel-agent-0.6.0" = {
945 name = "tunnel-agent";
946 packageName = "tunnel-agent";
947 version = "0.6.0";
948 src = fetchurl {
949 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
950 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
951 };
952 };
953 "uuid-3.1.0" = {
954 name = "uuid";
955 packageName = "uuid";
956 version = "3.1.0";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz";
959 sha1 = "3dd3d3e790abc24d7b0d3a034ffababe28ebbc04";
960 };
961 };
962 "delayed-stream-1.0.0" = {
963 name = "delayed-stream";
964 packageName = "delayed-stream";
965 version = "1.0.0";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
968 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
969 };
970 };
971 "asynckit-0.4.0" = {
972 name = "asynckit";
973 packageName = "asynckit";
974 version = "0.4.0";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
977 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
978 };
979 };
980 "ajv-5.2.2" = {
981 name = "ajv";
982 packageName = "ajv";
983 version = "5.2.2";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz";
986 sha1 = "47c68d69e86f5d953103b0074a9430dc63da5e39";
987 };
988 };
989 "har-schema-2.0.0" = {
990 name = "har-schema";
991 packageName = "har-schema";
992 version = "2.0.0";
705 993 src = fetchurl {
706 url = "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz";
707 sha1 = "522765b50c3510490e52d7dcfe085ef9ba96958f";
994 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
995 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
996 };
997 };
998 "co-4.6.0" = {
999 name = "co";
1000 packageName = "co";
1001 version = "4.6.0";
1002 src = fetchurl {
1003 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
1004 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
1005 };
1006 };
1007 "fast-deep-equal-1.0.0" = {
1008 name = "fast-deep-equal";
1009 packageName = "fast-deep-equal";
1010 version = "1.0.0";
1011 src = fetchurl {
1012 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
1013 sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
1014 };
1015 };
1016 "json-schema-traverse-0.3.1" = {
1017 name = "json-schema-traverse";
1018 packageName = "json-schema-traverse";
1019 version = "0.3.1";
1020 src = fetchurl {
1021 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
1022 sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
1023 };
1024 };
1025 "json-stable-stringify-1.0.1" = {
1026 name = "json-stable-stringify";
1027 packageName = "json-stable-stringify";
1028 version = "1.0.1";
1029 src = fetchurl {
1030 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
1031 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
1032 };
1033 };
1034 "jsonify-0.0.0" = {
1035 name = "jsonify";
1036 packageName = "jsonify";
1037 version = "0.0.0";
1038 src = fetchurl {
1039 url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
1040 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
1041 };
1042 };
1043 "hoek-4.2.0" = {
1044 name = "hoek";
1045 packageName = "hoek";
1046 version = "4.2.0";
1047 src = fetchurl {
1048 url = "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz";
1049 sha1 = "72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d";
1050 };
1051 };
1052 "boom-4.3.1" = {
1053 name = "boom";
1054 packageName = "boom";
1055 version = "4.3.1";
1056 src = fetchurl {
1057 url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
1058 sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
1059 };
1060 };
1061 "cryptiles-3.1.2" = {
1062 name = "cryptiles";
1063 packageName = "cryptiles";
1064 version = "3.1.2";
1065 src = fetchurl {
1066 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
1067 sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
1068 };
1069 };
1070 "sntp-2.0.2" = {
1071 name = "sntp";
1072 packageName = "sntp";
1073 version = "2.0.2";
1074 src = fetchurl {
1075 url = "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz";
1076 sha1 = "5064110f0af85f7cfdb7d6b67a40028ce52b4b2b";
1077 };
1078 };
1079 "boom-5.2.0" = {
1080 name = "boom";
1081 packageName = "boom";
1082 version = "5.2.0";
1083 src = fetchurl {
1084 url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
1085 sha1 = "5dd9da6ee3a5f302077436290cb717d3f4a54e02";
1086 };
1087 };
1088 "assert-plus-1.0.0" = {
1089 name = "assert-plus";
1090 packageName = "assert-plus";
1091 version = "1.0.0";
1092 src = fetchurl {
1093 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
1094 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
1095 };
1096 };
1097 "jsprim-1.4.1" = {
1098 name = "jsprim";
1099 packageName = "jsprim";
1100 version = "1.4.1";
1101 src = fetchurl {
1102 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1103 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1104 };
1105 };
1106 "sshpk-1.13.1" = {
1107 name = "sshpk";
1108 packageName = "sshpk";
1109 version = "1.13.1";
1110 src = fetchurl {
1111 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz";
1112 sha1 = "512df6da6287144316dc4c18fe1cf1d940739be3";
1113 };
1114 };
1115 "extsprintf-1.3.0" = {
1116 name = "extsprintf";
1117 packageName = "extsprintf";
1118 version = "1.3.0";
1119 src = fetchurl {
1120 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
1121 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
1122 };
1123 };
1124 "json-schema-0.2.3" = {
1125 name = "json-schema";
1126 packageName = "json-schema";
1127 version = "0.2.3";
1128 src = fetchurl {
1129 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1130 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1131 };
1132 };
1133 "verror-1.10.0" = {
1134 name = "verror";
1135 packageName = "verror";
1136 version = "1.10.0";
1137 src = fetchurl {
1138 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
1139 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1140 };
1141 };
1142 "core-util-is-1.0.2" = {
1143 name = "core-util-is";
1144 packageName = "core-util-is";
1145 version = "1.0.2";
1146 src = fetchurl {
1147 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
1148 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
1149 };
1150 };
1151 "asn1-0.2.3" = {
1152 name = "asn1";
1153 packageName = "asn1";
1154 version = "0.2.3";
1155 src = fetchurl {
1156 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
1157 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
1158 };
1159 };
1160 "dashdash-1.14.1" = {
1161 name = "dashdash";
1162 packageName = "dashdash";
1163 version = "1.14.1";
1164 src = fetchurl {
1165 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
1166 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
1167 };
1168 };
1169 "getpass-0.1.7" = {
1170 name = "getpass";
1171 packageName = "getpass";
1172 version = "0.1.7";
1173 src = fetchurl {
1174 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1175 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1176 };
1177 };
1178 "jsbn-0.1.1" = {
1179 name = "jsbn";
1180 packageName = "jsbn";
1181 version = "0.1.1";
1182 src = fetchurl {
1183 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1184 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1185 };
1186 };
1187 "tweetnacl-0.14.5" = {
1188 name = "tweetnacl";
1189 packageName = "tweetnacl";
1190 version = "0.14.5";
1191 src = fetchurl {
1192 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1193 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1194 };
1195 };
1196 "ecc-jsbn-0.1.1" = {
1197 name = "ecc-jsbn";
1198 packageName = "ecc-jsbn";
1199 version = "0.1.1";
1200 src = fetchurl {
1201 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
1202 sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
1203 };
1204 };
1205 "bcrypt-pbkdf-1.0.1" = {
1206 name = "bcrypt-pbkdf";
1207 packageName = "bcrypt-pbkdf";
1208 version = "1.0.1";
1209 src = fetchurl {
1210 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
1211 sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
1212 };
1213 };
1214 "mime-db-1.30.0" = {
1215 name = "mime-db";
1216 packageName = "mime-db";
1217 version = "1.30.0";
1218 src = fetchurl {
1219 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz";
1220 sha1 = "74c643da2dd9d6a45399963465b26d5ca7d71f01";
1221 };
1222 };
1223 "punycode-1.4.1" = {
1224 name = "punycode";
1225 packageName = "punycode";
1226 version = "1.4.1";
1227 src = fetchurl {
1228 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
1229 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
708 1230 };
709 1231 };
710 1232 "gaze-0.5.2" = {
711 1233 name = "gaze";
712 1234 packageName = "gaze";
713 1235 version = "0.5.2";
714 1236 src = fetchurl {
715 1237 url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz";
716 1238 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
717 1239 };
718 1240 };
719 1241 "tiny-lr-fork-0.0.5" = {
720 1242 name = "tiny-lr-fork";
721 1243 packageName = "tiny-lr-fork";
722 1244 version = "0.0.5";
723 1245 src = fetchurl {
724 1246 url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz";
725 1247 sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a";
726 1248 };
727 1249 };
728 1250 "async-0.2.10" = {
729 1251 name = "async";
730 1252 packageName = "async";
731 1253 version = "0.2.10";
732 1254 src = fetchurl {
733 1255 url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
734 1256 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
735 1257 };
736 1258 };
737 1259 "globule-0.1.0" = {
738 1260 name = "globule";
739 1261 packageName = "globule";
740 1262 version = "0.1.0";
741 1263 src = fetchurl {
742 1264 url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz";
743 1265 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
744 1266 };
745 1267 };
746 1268 "lodash-1.0.2" = {
747 1269 name = "lodash";
748 1270 packageName = "lodash";
749 1271 version = "1.0.2";
750 1272 src = fetchurl {
751 1273 url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz";
752 1274 sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
753 1275 };
754 1276 };
755 1277 "qs-0.5.6" = {
756 1278 name = "qs";
757 1279 packageName = "qs";
758 1280 version = "0.5.6";
759 1281 src = fetchurl {
760 1282 url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz";
761 1283 sha1 = "31b1ad058567651c526921506b9a8793911a0384";
762 1284 };
763 1285 };
764 1286 "faye-websocket-0.4.4" = {
765 1287 name = "faye-websocket";
766 1288 packageName = "faye-websocket";
767 1289 version = "0.4.4";
768 1290 src = fetchurl {
769 1291 url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz";
770 1292 sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc";
771 1293 };
772 1294 };
773 1295 "noptify-0.0.3" = {
774 1296 name = "noptify";
775 1297 packageName = "noptify";
776 1298 version = "0.0.3";
777 1299 src = fetchurl {
778 1300 url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz";
779 1301 sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb";
780 1302 };
781 1303 };
782 1304 "debug-0.7.4" = {
783 1305 name = "debug";
784 1306 packageName = "debug";
785 1307 version = "0.7.4";
786 1308 src = fetchurl {
787 1309 url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
788 1310 sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
789 1311 };
790 1312 };
791 1313 "nopt-2.0.0" = {
792 1314 name = "nopt";
793 1315 packageName = "nopt";
794 1316 version = "2.0.0";
795 1317 src = fetchurl {
796 1318 url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz";
797 1319 sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d";
798 1320 };
799 1321 };
800 "command-line-args-2.1.6" = {
1322 "command-line-args-3.0.5" = {
801 1323 name = "command-line-args";
802 1324 packageName = "command-line-args";
803 version = "2.1.6";
1325 version = "3.0.5";
804 1326 src = fetchurl {
805 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-2.1.6.tgz";
806 sha1 = "f197d6eaff34c9085577484b2864375b294f5697";
1327 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz";
1328 sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0";
1329 };
1330 };
1331 "command-line-usage-3.0.8" = {
1332 name = "command-line-usage";
1333 packageName = "command-line-usage";
1334 version = "3.0.8";
1335 src = fetchurl {
1336 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz";
1337 sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d";
807 1338 };
808 1339 };
809 1340 "dom5-1.3.6" = {
810 1341 name = "dom5";
811 1342 packageName = "dom5";
812 1343 version = "1.3.6";
813 1344 src = fetchurl {
814 1345 url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz";
815 1346 sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d";
816 1347 };
817 1348 };
818 "array-back-1.0.3" = {
1349 "array-back-1.0.4" = {
819 1350 name = "array-back";
820 1351 packageName = "array-back";
821 version = "1.0.3";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.3.tgz";
824 sha1 = "f1128a5cf1b91c80bed4a218f8c5b635c8b10663";
825 };
826 };
827 "command-line-usage-2.0.5" = {
828 name = "command-line-usage";
829 packageName = "command-line-usage";
830 version = "2.0.5";
1352 version = "1.0.4";
831 1353 src = fetchurl {
832 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-2.0.5.tgz";
833 sha1 = "f80c35ca5e8624841923ea3be3b9bfbf4f7be27b";
834 };
835 };
836 "core-js-2.4.1" = {
837 name = "core-js";
838 packageName = "core-js";
839 version = "2.4.1";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz";
842 sha1 = "4de911e667b0eae9124e34254b53aea6fc618d3e";
1354 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz";
1355 sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b";
843 1356 };
844 1357 };
845 1358 "feature-detect-es6-1.3.1" = {
846 1359 name = "feature-detect-es6";
847 1360 packageName = "feature-detect-es6";
848 1361 version = "1.3.1";
849 1362 src = fetchurl {
850 1363 url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.3.1.tgz";
851 1364 sha1 = "f888736af9cb0c91f55663bfa4762eb96ee7047f";
852 1365 };
853 1366 };
854 "find-replace-1.0.2" = {
1367 "find-replace-1.0.3" = {
855 1368 name = "find-replace";
856 1369 packageName = "find-replace";
857 version = "1.0.2";
858 src = fetchurl {
859 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.2.tgz";
860 sha1 = "a2d6ce740d15f0d92b1b26763e2ce9c0e361fd98";
861 };
862 };
863 "typical-2.6.0" = {
864 name = "typical";
865 packageName = "typical";
866 version = "2.6.0";
867 src = fetchurl {
868 url = "https://registry.npmjs.org/typical/-/typical-2.6.0.tgz";
869 sha1 = "89d51554ab139848a65bcc2c8772f8fb450c40ed";
870 };
871 };
872 "ansi-escape-sequences-2.2.2" = {
873 name = "ansi-escape-sequences";
874 packageName = "ansi-escape-sequences";
875 version = "2.2.2";
876 src = fetchurl {
877 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-2.2.2.tgz";
878 sha1 = "174c78d6f8b7de75f8957ae81c7f72210c701635";
879 };
880 };
881 "column-layout-2.1.4" = {
882 name = "column-layout";
883 packageName = "column-layout";
884 version = "2.1.4";
1370 version = "1.0.3";
885 1371 src = fetchurl {
886 url = "https://registry.npmjs.org/column-layout/-/column-layout-2.1.4.tgz";
887 sha1 = "ed2857092ccf8338026fe538379d9672d70b3641";
888 };
889 };
890 "wordwrapjs-1.2.1" = {
891 name = "wordwrapjs";
892 packageName = "wordwrapjs";
893 version = "1.2.1";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-1.2.1.tgz";
896 sha1 = "754a5ea0664cfbff50540dc32d67bda3289fc34b";
897 };
898 };
899 "collect-all-0.2.1" = {
900 name = "collect-all";
901 packageName = "collect-all";
902 version = "0.2.1";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/collect-all/-/collect-all-0.2.1.tgz";
905 sha1 = "7225fb4585c22d4ffac886f0abaf5abc563a1a6a";
906 };
907 };
908 "stream-connect-1.0.2" = {
909 name = "stream-connect";
910 packageName = "stream-connect";
911 version = "1.0.2";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz";
914 sha1 = "18bc81f2edb35b8b5d9a8009200a985314428a97";
1372 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz";
1373 sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0";
915 1374 };
916 1375 };
917 "stream-via-0.1.1" = {
918 name = "stream-via";
919 packageName = "stream-via";
920 version = "0.1.1";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/stream-via/-/stream-via-0.1.1.tgz";
923 sha1 = "0cee5df9c959fb1d3f4eda4819f289d5f9205afc";
924 };
925 };
926 "collect-json-1.0.8" = {
927 name = "collect-json";
928 packageName = "collect-json";
929 version = "1.0.8";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/collect-json/-/collect-json-1.0.8.tgz";
932 sha1 = "aa2fa52b4d1d9444ce690f07a1e3617ab74bb827";
933 };
934 };
935 "deep-extend-0.4.1" = {
936 name = "deep-extend";
937 packageName = "deep-extend";
938 version = "0.4.1";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz";
941 sha1 = "efe4113d08085f4e6f9687759810f807469e2253";
942 };
943 };
944 "object-tools-2.0.6" = {
945 name = "object-tools";
946 packageName = "object-tools";
947 version = "2.0.6";
1376 "typical-2.6.1" = {
1377 name = "typical";
1378 packageName = "typical";
1379 version = "2.6.1";
948 1380 src = fetchurl {
949 url = "https://registry.npmjs.org/object-tools/-/object-tools-2.0.6.tgz";
950 sha1 = "f3fe1c350cda4a6f5d99d9646dc4892a02476ddd";
951 };
952 };
953 "collect-all-1.0.2" = {
954 name = "collect-all";
955 packageName = "collect-all";
956 version = "1.0.2";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/collect-all/-/collect-all-1.0.2.tgz";
959 sha1 = "39450f1e7aa6086570a006bce93ccf1218a77ea1";
960 };
961 };
962 "stream-via-1.0.3" = {
963 name = "stream-via";
964 packageName = "stream-via";
965 version = "1.0.3";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/stream-via/-/stream-via-1.0.3.tgz";
968 sha1 = "cebd32a5a59d74b3b68e3404942e867184ad4ac9";
969 };
970 };
971 "object-get-2.1.0" = {
972 name = "object-get";
973 packageName = "object-get";
974 version = "2.1.0";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/object-get/-/object-get-2.1.0.tgz";
977 sha1 = "722bbdb60039efa47cad3c6dc2ce51a85c02c5ae";
978 };
979 };
980 "test-value-1.1.0" = {
981 name = "test-value";
982 packageName = "test-value";
983 version = "1.1.0";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz";
986 sha1 = "a09136f72ec043d27c893707c2b159bfad7de93f";
1381 url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
1382 sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
987 1383 };
988 1384 };
989 1385 "test-value-2.1.0" = {
990 1386 name = "test-value";
991 1387 packageName = "test-value";
992 1388 version = "2.1.0";
993 1389 src = fetchurl {
994 1390 url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz";
995 1391 sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291";
996 1392 };
997 1393 };
1394 "ansi-escape-sequences-3.0.0" = {
1395 name = "ansi-escape-sequences";
1396 packageName = "ansi-escape-sequences";
1397 version = "3.0.0";
1398 src = fetchurl {
1399 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz";
1400 sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e";
1401 };
1402 };
1403 "table-layout-0.3.0" = {
1404 name = "table-layout";
1405 packageName = "table-layout";
1406 version = "0.3.0";
1407 src = fetchurl {
1408 url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz";
1409 sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a";
1410 };
1411 };
1412 "core-js-2.5.1" = {
1413 name = "core-js";
1414 packageName = "core-js";
1415 version = "2.5.1";
1416 src = fetchurl {
1417 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz";
1418 sha1 = "ae6874dc66937789b80754ff5428df66819ca50b";
1419 };
1420 };
1421 "deep-extend-0.4.2" = {
1422 name = "deep-extend";
1423 packageName = "deep-extend";
1424 version = "0.4.2";
1425 src = fetchurl {
1426 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz";
1427 sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
1428 };
1429 };
1430 "wordwrapjs-2.0.0" = {
1431 name = "wordwrapjs";
1432 packageName = "wordwrapjs";
1433 version = "2.0.0";
1434 src = fetchurl {
1435 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz";
1436 sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20";
1437 };
1438 };
1439 "reduce-flatten-1.0.1" = {
1440 name = "reduce-flatten";
1441 packageName = "reduce-flatten";
1442 version = "1.0.1";
1443 src = fetchurl {
1444 url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
1445 sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
1446 };
1447 };
998 1448 "@types/clone-0.1.30" = {
999 1449 name = "@types/clone";
1000 1450 packageName = "@types/clone";
1001 1451 version = "0.1.30";
1002 1452 src = fetchurl {
1003 1453 url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz";
1004 1454 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
1005 1455 };
1006 1456 };
1007 "@types/node-4.0.30" = {
1457 "@types/node-4.2.20" = {
1008 1458 name = "@types/node";
1009 1459 packageName = "@types/node";
1010 version = "4.0.30";
1460 version = "4.2.20";
1011 1461 src = fetchurl {
1012 url = "https://registry.npmjs.org/@types/node/-/node-4.0.30.tgz";
1013 sha1 = "553f490ed3030311620f88003e7abfc0edcb301e";
1462 url = "https://registry.npmjs.org/@types/node/-/node-4.2.20.tgz";
1463 sha1 = "3f7dceff43e07cfff4407fc3495d98a533b32267";
1014 1464 };
1015 1465 };
1016 1466 "@types/parse5-0.0.31" = {
1017 1467 name = "@types/parse5";
1018 1468 packageName = "@types/parse5";
1019 1469 version = "0.0.31";
1020 1470 src = fetchurl {
1021 1471 url = "https://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz";
1022 1472 sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7";
1023 1473 };
1024 1474 };
1025 1475 "clone-1.0.2" = {
1026 1476 name = "clone";
1027 1477 packageName = "clone";
1028 1478 version = "1.0.2";
1029 1479 src = fetchurl {
1030 1480 url = "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz";
1031 1481 sha1 = "260b7a99ebb1edfe247538175f783243cb19d149";
1032 1482 };
1033 1483 };
1034 1484 "parse5-1.5.1" = {
1035 1485 name = "parse5";
1036 1486 packageName = "parse5";
1037 1487 version = "1.5.1";
1038 1488 src = fetchurl {
1039 1489 url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
1040 1490 sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
1041 1491 };
1042 1492 };
1043 "@types/node-6.0.41" = {
1493 "@types/node-6.0.88" = {
1044 1494 name = "@types/node";
1045 1495 packageName = "@types/node";
1046 version = "6.0.41";
1496 version = "6.0.88";
1047 1497 src = fetchurl {
1048 url = "https://registry.npmjs.org/@types/node/-/node-6.0.41.tgz";
1049 sha1 = "578cf53aaec65887bcaf16792f8722932e8ff8ea";
1498 url = "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz";
1499 sha1 = "f618f11a944f6a18d92b5c472028728a3e3d4b66";
1050 1500 };
1051 1501 };
1052 1502 "es6-promise-2.3.0" = {
1053 1503 name = "es6-promise";
1054 1504 packageName = "es6-promise";
1055 1505 version = "2.3.0";
1056 1506 src = fetchurl {
1057 1507 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz";
1058 1508 sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc";
1059 1509 };
1060 1510 };
1061 "hydrolysis-1.24.1" = {
1511 "hydrolysis-1.25.0" = {
1062 1512 name = "hydrolysis";
1063 1513 packageName = "hydrolysis";
1064 version = "1.24.1";
1514 version = "1.25.0";
1065 1515 src = fetchurl {
1066 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.24.1.tgz";
1067 sha1 = "0f94f055d1065ac0d81ff40b762d143fef07eff4";
1516 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz";
1517 sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84";
1068 1518 };
1069 1519 };
1070 1520 "nopt-3.0.6" = {
1071 1521 name = "nopt";
1072 1522 packageName = "nopt";
1073 1523 version = "3.0.6";
1074 1524 src = fetchurl {
1075 1525 url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
1076 1526 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
1077 1527 };
1078 1528 };
1079 1529 "path-posix-1.0.0" = {
1080 1530 name = "path-posix";
1081 1531 packageName = "path-posix";
1082 1532 version = "1.0.0";
1083 1533 src = fetchurl {
1084 1534 url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz";
1085 1535 sha1 = "06b26113f56beab042545a23bfa88003ccac260f";
1086 1536 };
1087 1537 };
1088 "update-notifier-0.6.3" = {
1089 name = "update-notifier";
1090 packageName = "update-notifier";
1091 version = "0.6.3";
1538 "acorn-3.3.0" = {
1539 name = "acorn";
1540 packageName = "acorn";
1541 version = "3.3.0";
1092 1542 src = fetchurl {
1093 url = "https://registry.npmjs.org/update-notifier/-/update-notifier-0.6.3.tgz";
1094 sha1 = "776dec8daa13e962a341e8a1d98354306b67ae08";
1543 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
1544 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1095 1545 };
1096 1546 };
1097 "babel-polyfill-6.13.0" = {
1547 "babel-polyfill-6.26.0" = {
1098 1548 name = "babel-polyfill";
1099 1549 packageName = "babel-polyfill";
1100 version = "6.13.0";
1550 version = "6.26.0";
1101 1551 src = fetchurl {
1102 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.13.0.tgz";
1103 sha1 = "5978215c25d49a697eb78afc54e63c9d3a73d5ec";
1552 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
1553 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
1104 1554 };
1105 1555 };
1106 1556 "doctrine-0.7.2" = {
1107 1557 name = "doctrine";
1108 1558 packageName = "doctrine";
1109 1559 version = "0.7.2";
1110 1560 src = fetchurl {
1111 1561 url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz";
1112 1562 sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523";
1113 1563 };
1114 1564 };
1115 "escodegen-1.8.1" = {
1565 "dom5-1.1.0" = {
1566 name = "dom5";
1567 packageName = "dom5";
1568 version = "1.1.0";
1569 src = fetchurl {
1570 url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz";
1571 sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794";
1572 };
1573 };
1574 "escodegen-1.9.0" = {
1116 1575 name = "escodegen";
1117 1576 packageName = "escodegen";
1118 version = "1.8.1";
1577 version = "1.9.0";
1119 1578 src = fetchurl {
1120 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz";
1121 sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018";
1579 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz";
1580 sha1 = "9811a2f265dc1cd3894420ee3717064b632b8852";
1122 1581 };
1123 1582 };
1124 "espree-3.3.1" = {
1583 "espree-3.5.1" = {
1125 1584 name = "espree";
1126 1585 packageName = "espree";
1127 version = "3.3.1";
1586 version = "3.5.1";
1128 1587 src = fetchurl {
1129 url = "https://registry.npmjs.org/espree/-/espree-3.3.1.tgz";
1130 sha1 = "42107376856738a65ff3b5877f3a58bd52497643";
1588 url = "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz";
1589 sha1 = "0c988b8ab46db53100a1954ae4ba995ddd27d87e";
1131 1590 };
1132 1591 };
1133 1592 "estraverse-3.1.0" = {
1134 1593 name = "estraverse";
1135 1594 packageName = "estraverse";
1136 1595 version = "3.1.0";
1137 1596 src = fetchurl {
1138 1597 url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz";
1139 1598 sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba";
1140 1599 };
1141 1600 };
1142 "path-is-absolute-1.0.0" = {
1601 "path-is-absolute-1.0.1" = {
1143 1602 name = "path-is-absolute";
1144 1603 packageName = "path-is-absolute";
1145 version = "1.0.0";
1604 version = "1.0.1";
1146 1605 src = fetchurl {
1147 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz";
1148 sha1 = "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912";
1606 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1607 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1149 1608 };
1150 1609 };
1151 "babel-runtime-6.11.6" = {
1610 "babel-runtime-6.26.0" = {
1152 1611 name = "babel-runtime";
1153 1612 packageName = "babel-runtime";
1154 version = "6.11.6";
1613 version = "6.26.0";
1155 1614 src = fetchurl {
1156 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz";
1157 sha1 = "6db707fef2d49c49bfa3cb64efdb436b518b8222";
1615 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
1616 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
1158 1617 };
1159 1618 };
1160 "regenerator-runtime-0.9.5" = {
1619 "regenerator-runtime-0.10.5" = {
1161 1620 name = "regenerator-runtime";
1162 1621 packageName = "regenerator-runtime";
1163 version = "0.9.5";
1622 version = "0.10.5";
1164 1623 src = fetchurl {
1165 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz";
1166 sha1 = "403d6d40a4bdff9c330dd9392dcbb2d9a8bba1fc";
1624 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
1625 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
1626 };
1627 };
1628 "regenerator-runtime-0.11.0" = {
1629 name = "regenerator-runtime";
1630 packageName = "regenerator-runtime";
1631 version = "0.11.0";
1632 src = fetchurl {
1633 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz";
1634 sha1 = "7e54fe5b5ccd5d6624ea6255c3473be090b802e1";
1167 1635 };
1168 1636 };
1169 1637 "esutils-1.1.6" = {
1170 1638 name = "esutils";
1171 1639 packageName = "esutils";
1172 1640 version = "1.1.6";
1173 1641 src = fetchurl {
1174 1642 url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz";
1175 1643 sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375";
1176 1644 };
1177 1645 };
1178 1646 "isarray-0.0.1" = {
1179 1647 name = "isarray";
1180 1648 packageName = "isarray";
1181 1649 version = "0.0.1";
1182 1650 src = fetchurl {
1183 1651 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1184 1652 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1185 1653 };
1186 1654 };
1187 "estraverse-1.9.3" = {
1655 "estraverse-4.2.0" = {
1188 1656 name = "estraverse";
1189 1657 packageName = "estraverse";
1190 version = "1.9.3";
1658 version = "4.2.0";
1191 1659 src = fetchurl {
1192 url = "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz";
1193 sha1 = "af67f2dc922582415950926091a4005d29c9bb44";
1660 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
1661 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
1194 1662 };
1195 1663 };
1196 1664 "esutils-2.0.2" = {
1197 1665 name = "esutils";
1198 1666 packageName = "esutils";
1199 1667 version = "2.0.2";
1200 1668 src = fetchurl {
1201 1669 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
1202 1670 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
1203 1671 };
1204 1672 };
1205 "esprima-2.7.3" = {
1673 "esprima-3.1.3" = {
1206 1674 name = "esprima";
1207 1675 packageName = "esprima";
1208 version = "2.7.3";
1676 version = "3.1.3";
1209 1677 src = fetchurl {
1210 url = "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz";
1211 sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
1678 url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
1679 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
1212 1680 };
1213 1681 };
1214 1682 "optionator-0.8.2" = {
1215 1683 name = "optionator";
1216 1684 packageName = "optionator";
1217 1685 version = "0.8.2";
1218 1686 src = fetchurl {
1219 1687 url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
1220 1688 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
1221 1689 };
1222 1690 };
1223 "source-map-0.2.0" = {
1224 name = "source-map";
1225 packageName = "source-map";
1226 version = "0.2.0";
1227 src = fetchurl {
1228 url = "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz";
1229 sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d";
1230 };
1231 };
1232 1691 "prelude-ls-1.1.2" = {
1233 1692 name = "prelude-ls";
1234 1693 packageName = "prelude-ls";
1235 1694 version = "1.1.2";
1236 1695 src = fetchurl {
1237 1696 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
1238 1697 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
1239 1698 };
1240 1699 };
1241 1700 "deep-is-0.1.3" = {
1242 1701 name = "deep-is";
1243 1702 packageName = "deep-is";
1244 1703 version = "0.1.3";
1245 1704 src = fetchurl {
1246 1705 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
1247 1706 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
1248 1707 };
1249 1708 };
1250 1709 "wordwrap-1.0.0" = {
1251 1710 name = "wordwrap";
1252 1711 packageName = "wordwrap";
1253 1712 version = "1.0.0";
1254 1713 src = fetchurl {
1255 1714 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
1256 1715 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
1257 1716 };
1258 1717 };
1259 1718 "type-check-0.3.2" = {
1260 1719 name = "type-check";
1261 1720 packageName = "type-check";
1262 1721 version = "0.3.2";
1263 1722 src = fetchurl {
1264 1723 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
1265 1724 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
1266 1725 };
1267 1726 };
1268 1727 "levn-0.3.0" = {
1269 1728 name = "levn";
1270 1729 packageName = "levn";
1271 1730 version = "0.3.0";
1272 1731 src = fetchurl {
1273 1732 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
1274 1733 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
1275 1734 };
1276 1735 };
1277 "fast-levenshtein-2.0.4" = {
1736 "fast-levenshtein-2.0.6" = {
1278 1737 name = "fast-levenshtein";
1279 1738 packageName = "fast-levenshtein";
1280 version = "2.0.4";
1739 version = "2.0.6";
1281 1740 src = fetchurl {
1282 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.4.tgz";
1283 sha1 = "e31e729eea62233c60a7bc9dce2bdcc88b4fffe3";
1741 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
1742 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
1284 1743 };
1285 1744 };
1286 "acorn-4.0.3" = {
1745 "acorn-5.1.2" = {
1287 1746 name = "acorn";
1288 1747 packageName = "acorn";
1289 version = "4.0.3";
1748 version = "5.1.2";
1290 1749 src = fetchurl {
1291 url = "https://registry.npmjs.org/acorn/-/acorn-4.0.3.tgz";
1292 sha1 = "1a3e850b428e73ba6b09d1cc527f5aaad4d03ef1";
1750 url = "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz";
1751 sha1 = "911cb53e036807cf0fa778dc5d370fbd864246d7";
1293 1752 };
1294 1753 };
1295 1754 "acorn-jsx-3.0.1" = {
1296 1755 name = "acorn-jsx";
1297 1756 packageName = "acorn-jsx";
1298 1757 version = "3.0.1";
1299 1758 src = fetchurl {
1300 1759 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
1301 1760 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
1302 1761 };
1303 1762 };
1304 "acorn-3.3.0" = {
1305 name = "acorn";
1306 packageName = "acorn";
1307 version = "3.3.0";
1763 "object-assign-4.1.1" = {
1764 name = "object-assign";
1765 packageName = "object-assign";
1766 version = "4.1.1";
1308 1767 src = fetchurl {
1309 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
1310 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1311 };
1312 };
1313 "boxen-0.3.1" = {
1314 name = "boxen";
1315 packageName = "boxen";
1316 version = "0.3.1";
1317 src = fetchurl {
1318 url = "https://registry.npmjs.org/boxen/-/boxen-0.3.1.tgz";
1319 sha1 = "a7d898243ae622f7abb6bb604d740a76c6a5461b";
1768 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1769 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1320 1770 };
1321 1771 };
1322 "configstore-2.1.0" = {
1323 name = "configstore";
1324 packageName = "configstore";
1325 version = "2.1.0";
1772 "crisper-1.2.0" = {
1773 name = "crisper";
1774 packageName = "crisper";
1775 version = "1.2.0";
1326 1776 src = fetchurl {
1327 url = "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz";
1328 sha1 = "737a3a7036e9886102aa6099e47bb33ab1aba1a1";
1777 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
1778 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
1329 1779 };
1330 1780 };
1331 "is-npm-1.0.0" = {
1332 name = "is-npm";
1333 packageName = "is-npm";
1334 version = "1.0.0";
1781 "optparse-1.0.5" = {
1782 name = "optparse";
1783 packageName = "optparse";
1784 version = "1.0.5";
1335 1785 src = fetchurl {
1336 url = "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz";
1337 sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
1338 };
1339 };
1340 "latest-version-2.0.0" = {
1341 name = "latest-version";
1342 packageName = "latest-version";
1343 version = "2.0.0";
1344 src = fetchurl {
1345 url = "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz";
1346 sha1 = "56f8d6139620847b8017f8f1f4d78e211324168b";
1786 url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz";
1787 sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16";
1347 1788 };
1348 1789 };
1349 "semver-diff-2.1.0" = {
1350 name = "semver-diff";
1351 packageName = "semver-diff";
1352 version = "2.1.0";
1790 "semver-5.4.1" = {
1791 name = "semver";
1792 packageName = "semver";
1793 version = "5.4.1";
1353 1794 src = fetchurl {
1354 url = "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz";
1355 sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
1795 url = "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz";
1796 sha1 = "e059c09d8571f0540823733433505d3a2f00b18e";
1356 1797 };
1357 1798 };
1358 "filled-array-1.1.0" = {
1359 name = "filled-array";
1360 packageName = "filled-array";
1361 version = "1.1.0";
1799 "npm-registry-client-8.4.0" = {
1800 name = "npm-registry-client";
1801 packageName = "npm-registry-client";
1802 version = "8.4.0";
1362 1803 src = fetchurl {
1363 url = "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz";
1364 sha1 = "c3c4f6c663b923459a9aa29912d2d031f1507f84";
1804 url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.4.0.tgz";
1805 sha1 = "d52b901685647fc62a4c03eafecb6ceaa5018d4c";
1365 1806 };
1366 1807 };
1367 "object-assign-4.1.0" = {
1368 name = "object-assign";
1369 packageName = "object-assign";
1370 version = "4.1.0";
1808 "npmconf-2.1.2" = {
1809 name = "npmconf";
1810 packageName = "npmconf";
1811 version = "2.1.2";
1371 1812 src = fetchurl {
1372 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz";
1373 sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
1813 url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz";
1814 sha1 = "66606a4a736f1e77a059aa071a79c94ab781853a";
1374 1815 };
1375 1816 };
1376 "repeating-2.0.1" = {
1377 name = "repeating";
1378 packageName = "repeating";
1379 version = "2.0.1";
1817 "tar-3.1.15" = {
1818 name = "tar";
1819 packageName = "tar";
1820 version = "3.1.15";
1380 1821 src = fetchurl {
1381 url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz";
1382 sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
1822 url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz";
1823 sha1 = "cccdc35b90917d58e4c3837795d5d022d7a1f46f";
1383 1824 };
1384 1825 };
1385 "string-width-1.0.2" = {
1386 name = "string-width";
1387 packageName = "string-width";
1388 version = "1.0.2";
1826 "temp-0.8.3" = {
1827 name = "temp";
1828 packageName = "temp";
1829 version = "0.8.3";
1389 1830 src = fetchurl {
1390 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
1391 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
1392 };
1393 };
1394 "widest-line-1.0.0" = {
1395 name = "widest-line";
1396 packageName = "widest-line";
1397 version = "1.0.0";
1398 src = fetchurl {
1399 url = "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz";
1400 sha1 = "0c09c85c2a94683d0d7eaf8ee097d564bf0e105c";
1831 url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz";
1832 sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59";
1401 1833 };
1402 1834 };
1403 "is-finite-1.0.1" = {
1404 name = "is-finite";
1405 packageName = "is-finite";
1406 version = "1.0.1";
1835 "fs.extra-1.3.2" = {
1836 name = "fs.extra";
1837 packageName = "fs.extra";
1838 version = "1.3.2";
1407 1839 src = fetchurl {
1408 url = "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz";
1409 sha1 = "6438603eaebe2793948ff4a4262ec8db3d62597b";
1410 };
1411 };
1412 "number-is-nan-1.0.0" = {
1413 name = "number-is-nan";
1414 packageName = "number-is-nan";
1415 version = "1.0.0";
1416 src = fetchurl {
1417 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz";
1418 sha1 = "c020f529c5282adfdd233d91d4b181c3d686dc4b";
1840 url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz";
1841 sha1 = "dd023f93013bee24531f1b33514c37b20fd93349";
1419 1842 };
1420 1843 };
1421 "code-point-at-1.0.0" = {
1422 name = "code-point-at";
1423 packageName = "code-point-at";
1424 version = "1.0.0";
1844 "findit-2.0.0" = {
1845 name = "findit";
1846 packageName = "findit";
1847 version = "2.0.0";
1425 1848 src = fetchurl {
1426 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz";
1427 sha1 = "f69b192d3f7d91e382e4b71bddb77878619ab0c6";
1849 url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz";
1850 sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e";
1428 1851 };
1429 1852 };
1430 "is-fullwidth-code-point-1.0.0" = {
1431 name = "is-fullwidth-code-point";
1432 packageName = "is-fullwidth-code-point";
1433 version = "1.0.0";
1853 "base64-js-1.2.1" = {
1854 name = "base64-js";
1855 packageName = "base64-js";
1856 version = "1.2.1";
1434 1857 src = fetchurl {
1435 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
1436 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
1858 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz";
1859 sha1 = "a91947da1f4a516ea38e5b4ec0ec3773675e0886";
1437 1860 };
1438 1861 };
1439 "dot-prop-3.0.0" = {
1440 name = "dot-prop";
1441 packageName = "dot-prop";
1442 version = "3.0.0";
1862 "slasp-0.0.4" = {
1863 name = "slasp";
1864 packageName = "slasp";
1865 version = "0.0.4";
1443 1866 src = fetchurl {
1444 url = "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz";
1445 sha1 = "1b708af094a49c9a0e7dbcad790aba539dac1177";
1446 };
1447 };
1448 "os-tmpdir-1.0.1" = {
1449 name = "os-tmpdir";
1450 packageName = "os-tmpdir";
1451 version = "1.0.1";
1452 src = fetchurl {
1453 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz";
1454 sha1 = "e9b423a1edaf479882562e92ed71d7743a071b6e";
1867 url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz";
1868 sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9";
1455 1869 };
1456 1870 };
1457 "osenv-0.1.3" = {
1458 name = "osenv";
1459 packageName = "osenv";
1460 version = "0.1.3";
1871 "nijs-0.0.23" = {
1872 name = "nijs";
1873 packageName = "nijs";
1874 version = "0.0.23";
1461 1875 src = fetchurl {
1462 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz";
1463 sha1 = "83cf05c6d6458fc4d5ac6362ea325d92f2754217";
1876 url = "https://registry.npmjs.org/nijs/-/nijs-0.0.23.tgz";
1877 sha1 = "dbf8f4a0acafbe3b8d9b71c24cbd1d851de6c31a";
1464 1878 };
1465 1879 };
1466 "uuid-2.0.3" = {
1467 name = "uuid";
1468 packageName = "uuid";
1469 version = "2.0.3";
1880 "concat-stream-1.6.0" = {
1881 name = "concat-stream";
1882 packageName = "concat-stream";
1883 version = "1.6.0";
1470 1884 src = fetchurl {
1471 url = "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz";
1472 sha1 = "67e2e863797215530dff318e5bf9dcebfd47b21a";
1473 };
1474 };
1475 "write-file-atomic-1.2.0" = {
1476 name = "write-file-atomic";
1477 packageName = "write-file-atomic";
1478 version = "1.2.0";
1479 src = fetchurl {
1480 url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.2.0.tgz";
1481 sha1 = "14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab";
1885 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz";
1886 sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
1482 1887 };
1483 1888 };
1484 "xdg-basedir-2.0.0" = {
1485 name = "xdg-basedir";
1486 packageName = "xdg-basedir";
1487 version = "2.0.0";
1889 "normalize-package-data-2.4.0" = {
1890 name = "normalize-package-data";
1891 packageName = "normalize-package-data";
1892 version = "2.4.0";
1488 1893 src = fetchurl {
1489 url = "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz";
1490 sha1 = "edbc903cc385fc04523d966a335504b5504d1bd2";
1894 url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
1895 sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
1491 1896 };
1492 1897 };
1493 "is-obj-1.0.1" = {
1494 name = "is-obj";
1495 packageName = "is-obj";
1496 version = "1.0.1";
1898 "npm-package-arg-5.1.2" = {
1899 name = "npm-package-arg";
1900 packageName = "npm-package-arg";
1901 version = "5.1.2";
1497 1902 src = fetchurl {
1498 url = "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz";
1499 sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
1903 url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-5.1.2.tgz";
1904 sha1 = "fb18d17bb61e60900d6312619919bd753755ab37";
1500 1905 };
1501 1906 };
1502 "os-homedir-1.0.1" = {
1503 name = "os-homedir";
1504 packageName = "os-homedir";
1505 version = "1.0.1";
1907 "once-1.4.0" = {
1908 name = "once";
1909 packageName = "once";
1910 version = "1.4.0";
1506 1911 src = fetchurl {
1507 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz";
1508 sha1 = "0d62bdf44b916fd3bbdcf2cab191948fb094f007";
1912 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1913 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1509 1914 };
1510 1915 };
1511 "imurmurhash-0.1.4" = {
1512 name = "imurmurhash";
1513 packageName = "imurmurhash";
1514 version = "0.1.4";
1916 "retry-0.10.1" = {
1917 name = "retry";
1918 packageName = "retry";
1919 version = "0.10.1";
1515 1920 src = fetchurl {
1516 url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
1517 sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
1921 url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz";
1922 sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
1518 1923 };
1519 1924 };
1520 1925 "slide-1.1.6" = {
1521 1926 name = "slide";
1522 1927 packageName = "slide";
1523 1928 version = "1.1.6";
1524 1929 src = fetchurl {
1525 1930 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
1526 1931 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
1527 1932 };
1528 1933 };
1529 "package-json-2.4.0" = {
1530 name = "package-json";
1531 packageName = "package-json";
1532 version = "2.4.0";
1533 src = fetchurl {
1534 url = "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz";
1535 sha1 = "0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb";
1536 };
1537 };
1538 "got-5.6.0" = {
1539 name = "got";
1540 packageName = "got";
1541 version = "5.6.0";
1542 src = fetchurl {
1543 url = "https://registry.npmjs.org/got/-/got-5.6.0.tgz";
1544 sha1 = "bb1d7ee163b78082bbc8eb836f3f395004ea6fbf";
1545 };
1546 };
1547 "registry-auth-token-3.0.1" = {
1548 name = "registry-auth-token";
1549 packageName = "registry-auth-token";
1550 version = "3.0.1";
1551 src = fetchurl {
1552 url = "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.0.1.tgz";
1553 sha1 = "c3ee5ec585bce29f88bf41629a3944c71ed53e25";
1554 };
1555 };
1556 "registry-url-3.1.0" = {
1557 name = "registry-url";
1558 packageName = "registry-url";
1559 version = "3.1.0";
1560 src = fetchurl {
1561 url = "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz";
1562 sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
1563 };
1564 };
1565 "semver-5.3.0" = {
1566 name = "semver";
1567 packageName = "semver";
1568 version = "5.3.0";
1569 src = fetchurl {
1570 url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
1571 sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
1572 };
1573 };
1574 "create-error-class-3.0.2" = {
1575 name = "create-error-class";
1576 packageName = "create-error-class";
1577 version = "3.0.2";
1934 "ssri-4.1.6" = {
1935 name = "ssri";
1936 packageName = "ssri";
1937 version = "4.1.6";
1578 1938 src = fetchurl {
1579 url = "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz";
1580 sha1 = "06be7abef947a3f14a30fd610671d401bca8b7b6";
1581 };
1582 };
1583 "duplexer2-0.1.4" = {
1584 name = "duplexer2";
1585 packageName = "duplexer2";
1586 version = "0.1.4";
1587 src = fetchurl {
1588 url = "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz";
1589 sha1 = "8b12dab878c0d69e3e7891051662a32fc6bddcc1";
1590 };
1591 };
1592 "is-plain-obj-1.1.0" = {
1593 name = "is-plain-obj";
1594 packageName = "is-plain-obj";
1595 version = "1.1.0";
1596 src = fetchurl {
1597 url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz";
1598 sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e";
1599 };
1600 };
1601 "is-redirect-1.0.0" = {
1602 name = "is-redirect";
1603 packageName = "is-redirect";
1604 version = "1.0.0";
1605 src = fetchurl {
1606 url = "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz";
1607 sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
1608 };
1609 };
1610 "is-retry-allowed-1.1.0" = {
1611 name = "is-retry-allowed";
1612 packageName = "is-retry-allowed";
1613 version = "1.1.0";
1614 src = fetchurl {
1615 url = "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz";
1616 sha1 = "11a060568b67339444033d0125a61a20d564fb34";
1617 };
1618 };
1619 "is-stream-1.1.0" = {
1620 name = "is-stream";
1621 packageName = "is-stream";
1622 version = "1.1.0";
1623 src = fetchurl {
1624 url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
1625 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
1626 };
1627 };
1628 "lowercase-keys-1.0.0" = {
1629 name = "lowercase-keys";
1630 packageName = "lowercase-keys";
1631 version = "1.0.0";
1632 src = fetchurl {
1633 url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz";
1634 sha1 = "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306";
1939 url = "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz";
1940 sha1 = "0cb49b6ac84457e7bdd466cb730c3cb623e9a25b";
1635 1941 };
1636 1942 };
1637 "node-status-codes-1.0.0" = {
1638 name = "node-status-codes";
1639 packageName = "node-status-codes";
1640 version = "1.0.0";
1641 src = fetchurl {
1642 url = "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz";
1643 sha1 = "5ae5541d024645d32a58fcddc9ceecea7ae3ac2f";
1644 };
1645 };
1646 "parse-json-2.2.0" = {
1647 name = "parse-json";
1648 packageName = "parse-json";
1649 version = "2.2.0";
1650 src = fetchurl {
1651 url = "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz";
1652 sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
1653 };
1654 };
1655 "pinkie-promise-2.0.1" = {
1656 name = "pinkie-promise";
1657 packageName = "pinkie-promise";
1658 version = "2.0.1";
1943 "npmlog-4.1.2" = {
1944 name = "npmlog";
1945 packageName = "npmlog";
1946 version = "4.1.2";
1659 1947 src = fetchurl {
1660 url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
1661 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
1662 };
1663 };
1664 "read-all-stream-3.1.0" = {
1665 name = "read-all-stream";
1666 packageName = "read-all-stream";
1667 version = "3.1.0";
1668 src = fetchurl {
1669 url = "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz";
1670 sha1 = "35c3e177f2078ef789ee4bfafa4373074eaef4fa";
1671 };
1672 };
1673 "readable-stream-2.1.5" = {
1674 name = "readable-stream";
1675 packageName = "readable-stream";
1676 version = "2.1.5";
1677 src = fetchurl {
1678 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz";
1679 sha1 = "66fa8b720e1438b364681f2ad1a63c618448c9d0";
1680 };
1681 };
1682 "timed-out-2.0.0" = {
1683 name = "timed-out";
1684 packageName = "timed-out";
1685 version = "2.0.0";
1686 src = fetchurl {
1687 url = "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz";
1688 sha1 = "f38b0ae81d3747d628001f41dafc652ace671c0a";
1948 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1949 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
1689 1950 };
1690 1951 };
1691 "unzip-response-1.0.1" = {
1692 name = "unzip-response";
1693 packageName = "unzip-response";
1694 version = "1.0.1";
1952 "typedarray-0.0.6" = {
1953 name = "typedarray";
1954 packageName = "typedarray";
1955 version = "0.0.6";
1695 1956 src = fetchurl {
1696 url = "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz";
1697 sha1 = "4a73959f2989470fa503791cefb54e1dbbc68412";
1698 };
1699 };
1700 "url-parse-lax-1.0.0" = {
1701 name = "url-parse-lax";
1702 packageName = "url-parse-lax";
1703 version = "1.0.0";
1704 src = fetchurl {
1705 url = "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz";
1706 sha1 = "7af8f303645e9bd79a272e7a14ac68bc0609da73";
1707 };
1708 };
1709 "capture-stack-trace-1.0.0" = {
1710 name = "capture-stack-trace";
1711 packageName = "capture-stack-trace";
1712 version = "1.0.0";
1713 src = fetchurl {
1714 url = "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz";
1715 sha1 = "4a6fa07399c26bba47f0b2496b4d0fb408c5550d";
1957 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
1958 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
1716 1959 };
1717 1960 };
1718 "error-ex-1.3.0" = {
1719 name = "error-ex";
1720 packageName = "error-ex";
1721 version = "1.3.0";
1722 src = fetchurl {
1723 url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz";
1724 sha1 = "e67b43f3e82c96ea3a584ffee0b9fc3325d802d9";
1725 };
1726 };
1727 "is-arrayish-0.2.1" = {
1728 name = "is-arrayish";
1729 packageName = "is-arrayish";
1730 version = "0.2.1";
1961 "readable-stream-2.3.3" = {
1962 name = "readable-stream";
1963 packageName = "readable-stream";
1964 version = "2.3.3";
1731 1965 src = fetchurl {
1732 url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
1733 sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
1734 };
1735 };
1736 "pinkie-2.0.4" = {
1737 name = "pinkie";
1738 packageName = "pinkie";
1739 version = "2.0.4";
1740 src = fetchurl {
1741 url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
1742 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
1743 };
1744 };
1745 "buffer-shims-1.0.0" = {
1746 name = "buffer-shims";
1747 packageName = "buffer-shims";
1748 version = "1.0.0";
1749 src = fetchurl {
1750 url = "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz";
1751 sha1 = "9978ce317388c649ad8793028c3477ef044a8b51";
1752 };
1753 };
1754 "core-util-is-1.0.2" = {
1755 name = "core-util-is";
1756 packageName = "core-util-is";
1757 version = "1.0.2";
1758 src = fetchurl {
1759 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
1760 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
1966 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
1967 sha1 = "368f2512d79f9d46fdfc71349ae7878bbc1eb95c";
1761 1968 };
1762 1969 };
1763 1970 "isarray-1.0.0" = {
1764 1971 name = "isarray";
1765 1972 packageName = "isarray";
1766 1973 version = "1.0.0";
1767 1974 src = fetchurl {
1768 1975 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1769 1976 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1770 1977 };
1771 1978 };
1772 1979 "process-nextick-args-1.0.7" = {
1773 1980 name = "process-nextick-args";
1774 1981 packageName = "process-nextick-args";
1775 1982 version = "1.0.7";
1776 1983 src = fetchurl {
1777 1984 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
1778 1985 sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
1779 1986 };
1780 1987 };
1781 "string_decoder-0.10.31" = {
1988 "string_decoder-1.0.3" = {
1782 1989 name = "string_decoder";
1783 1990 packageName = "string_decoder";
1784 version = "0.10.31";
1991 version = "1.0.3";
1785 1992 src = fetchurl {
1786 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
1787 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
1993 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
1994 sha1 = "0fc67d7c141825de94282dd536bec6b9bce860ab";
1788 1995 };
1789 1996 };
1790 1997 "util-deprecate-1.0.2" = {
1791 1998 name = "util-deprecate";
1792 1999 packageName = "util-deprecate";
1793 2000 version = "1.0.2";
1794 2001 src = fetchurl {
1795 2002 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
1796 2003 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
1797 2004 };
1798 2005 };
1799 "prepend-http-1.0.4" = {
1800 name = "prepend-http";
1801 packageName = "prepend-http";
2006 "hosted-git-info-2.5.0" = {
2007 name = "hosted-git-info";
2008 packageName = "hosted-git-info";
2009 version = "2.5.0";
2010 src = fetchurl {
2011 url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz";
2012 sha1 = "6d60e34b3abbc8313062c3b798ef8d901a07af3c";
2013 };
2014 };
2015 "is-builtin-module-1.0.0" = {
2016 name = "is-builtin-module";
2017 packageName = "is-builtin-module";
2018 version = "1.0.0";
2019 src = fetchurl {
2020 url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
2021 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
2022 };
2023 };
2024 "validate-npm-package-license-3.0.1" = {
2025 name = "validate-npm-package-license";
2026 packageName = "validate-npm-package-license";
2027 version = "3.0.1";
2028 src = fetchurl {
2029 url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
2030 sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
2031 };
2032 };
2033 "builtin-modules-1.1.1" = {
2034 name = "builtin-modules";
2035 packageName = "builtin-modules";
2036 version = "1.1.1";
2037 src = fetchurl {
2038 url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
2039 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
2040 };
2041 };
2042 "spdx-correct-1.0.2" = {
2043 name = "spdx-correct";
2044 packageName = "spdx-correct";
2045 version = "1.0.2";
2046 src = fetchurl {
2047 url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz";
2048 sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
2049 };
2050 };
2051 "spdx-expression-parse-1.0.4" = {
2052 name = "spdx-expression-parse";
2053 packageName = "spdx-expression-parse";
1802 2054 version = "1.0.4";
1803 2055 src = fetchurl {
1804 url = "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz";
1805 sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
2056 url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz";
2057 sha1 = "9bdf2f20e1f40ed447fbe273266191fced51626c";
2058 };
2059 };
2060 "spdx-license-ids-1.2.2" = {
2061 name = "spdx-license-ids";
2062 packageName = "spdx-license-ids";
2063 version = "1.2.2";
2064 src = fetchurl {
2065 url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
2066 sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
2067 };
2068 };
2069 "osenv-0.1.4" = {
2070 name = "osenv";
2071 packageName = "osenv";
2072 version = "0.1.4";
2073 src = fetchurl {
2074 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz";
2075 sha1 = "42fe6d5953df06c8064be6f176c3d05aaaa34644";
2076 };
2077 };
2078 "validate-npm-package-name-3.0.0" = {
2079 name = "validate-npm-package-name";
2080 packageName = "validate-npm-package-name";
2081 version = "3.0.0";
2082 src = fetchurl {
2083 url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
2084 sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
2085 };
2086 };
2087 "os-homedir-1.0.2" = {
2088 name = "os-homedir";
2089 packageName = "os-homedir";
2090 version = "1.0.2";
2091 src = fetchurl {
2092 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
2093 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
2094 };
2095 };
2096 "os-tmpdir-1.0.2" = {
2097 name = "os-tmpdir";
2098 packageName = "os-tmpdir";
2099 version = "1.0.2";
2100 src = fetchurl {
2101 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
2102 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
2103 };
2104 };
2105 "builtins-1.0.3" = {
2106 name = "builtins";
2107 packageName = "builtins";
2108 version = "1.0.3";
2109 src = fetchurl {
2110 url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz";
2111 sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
2112 };
2113 };
2114 "wrappy-1.0.2" = {
2115 name = "wrappy";
2116 packageName = "wrappy";
2117 version = "1.0.2";
2118 src = fetchurl {
2119 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2120 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2121 };
2122 };
2123 "are-we-there-yet-1.1.4" = {
2124 name = "are-we-there-yet";
2125 packageName = "are-we-there-yet";
2126 version = "1.1.4";
2127 src = fetchurl {
2128 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz";
2129 sha1 = "bb5dca382bb94f05e15194373d16fd3ba1ca110d";
2130 };
2131 };
2132 "console-control-strings-1.1.0" = {
2133 name = "console-control-strings";
2134 packageName = "console-control-strings";
2135 version = "1.1.0";
2136 src = fetchurl {
2137 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
2138 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
2139 };
2140 };
2141 "gauge-2.7.4" = {
2142 name = "gauge";
2143 packageName = "gauge";
2144 version = "2.7.4";
2145 src = fetchurl {
2146 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
2147 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
1806 2148 };
1807 2149 };
1808 "rc-1.1.6" = {
1809 name = "rc";
1810 packageName = "rc";
1811 version = "1.1.6";
2150 "set-blocking-2.0.0" = {
2151 name = "set-blocking";
2152 packageName = "set-blocking";
2153 version = "2.0.0";
2154 src = fetchurl {
2155 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
2156 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
2157 };
2158 };
2159 "delegates-1.0.0" = {
2160 name = "delegates";
2161 packageName = "delegates";
2162 version = "1.0.0";
2163 src = fetchurl {
2164 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
2165 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
2166 };
2167 };
2168 "aproba-1.2.0" = {
2169 name = "aproba";
2170 packageName = "aproba";
2171 version = "1.2.0";
2172 src = fetchurl {
2173 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
2174 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
2175 };
2176 };
2177 "has-unicode-2.0.1" = {
2178 name = "has-unicode";
2179 packageName = "has-unicode";
2180 version = "2.0.1";
2181 src = fetchurl {
2182 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
2183 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
2184 };
2185 };
2186 "signal-exit-3.0.2" = {
2187 name = "signal-exit";
2188 packageName = "signal-exit";
2189 version = "3.0.2";
1812 2190 src = fetchurl {
1813 url = "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz";
1814 sha1 = "43651b76b6ae53b5c802f1151fa3fc3b059969c9";
2191 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
2192 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
2193 };
2194 };
2195 "string-width-1.0.2" = {
2196 name = "string-width";
2197 packageName = "string-width";
2198 version = "1.0.2";
2199 src = fetchurl {
2200 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
2201 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
2202 };
2203 };
2204 "wide-align-1.1.2" = {
2205 name = "wide-align";
2206 packageName = "wide-align";
2207 version = "1.1.2";
2208 src = fetchurl {
2209 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz";
2210 sha1 = "571e0f1b0604636ebc0dfc21b0339bbe31341710";
2211 };
2212 };
2213 "code-point-at-1.1.0" = {
2214 name = "code-point-at";
2215 packageName = "code-point-at";
2216 version = "1.1.0";
2217 src = fetchurl {
2218 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
2219 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
2220 };
2221 };
2222 "is-fullwidth-code-point-1.0.0" = {
2223 name = "is-fullwidth-code-point";
2224 packageName = "is-fullwidth-code-point";
2225 version = "1.0.0";
2226 src = fetchurl {
2227 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
2228 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
2229 };
2230 };
2231 "number-is-nan-1.0.1" = {
2232 name = "number-is-nan";
2233 packageName = "number-is-nan";
2234 version = "1.0.1";
2235 src = fetchurl {
2236 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
2237 sha1 = "097b602b53422a522c1afb8790318336941a011d";
2238 };
2239 };
2240 "config-chain-1.1.11" = {
2241 name = "config-chain";
2242 packageName = "config-chain";
2243 version = "1.1.11";
2244 src = fetchurl {
2245 url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz";
2246 sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2";
1815 2247 };
1816 2248 };
1817 2249 "ini-1.3.4" = {
1818 2250 name = "ini";
1819 2251 packageName = "ini";
1820 2252 version = "1.3.4";
1821 2253 src = fetchurl {
1822 2254 url = "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz";
1823 2255 sha1 = "0537cb79daf59b59a1a517dff706c86ec039162e";
1824 2256 };
1825 2257 };
1826 "minimist-1.2.0" = {
1827 name = "minimist";
1828 packageName = "minimist";
1829 version = "1.2.0";
2258 "once-1.3.3" = {
2259 name = "once";
2260 packageName = "once";
2261 version = "1.3.3";
2262 src = fetchurl {
2263 url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz";
2264 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
2265 };
2266 };
2267 "semver-4.3.6" = {
2268 name = "semver";
2269 packageName = "semver";
2270 version = "4.3.6";
2271 src = fetchurl {
2272 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2273 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2274 };
2275 };
2276 "uid-number-0.0.5" = {
2277 name = "uid-number";
2278 packageName = "uid-number";
2279 version = "0.0.5";
1830 2280 src = fetchurl {
1831 url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
1832 sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
2281 url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz";
2282 sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e";
2283 };
2284 };
2285 "proto-list-1.2.4" = {
2286 name = "proto-list";
2287 packageName = "proto-list";
2288 version = "1.2.4";
2289 src = fetchurl {
2290 url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
2291 sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
2292 };
2293 };
2294 "minipass-2.2.1" = {
2295 name = "minipass";
2296 packageName = "minipass";
2297 version = "2.2.1";
2298 src = fetchurl {
2299 url = "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz";
2300 sha1 = "5ada97538b1027b4cf7213432428578cb564011f";
2301 };
2302 };
2303 "minizlib-1.0.3" = {
2304 name = "minizlib";
2305 packageName = "minizlib";
2306 version = "1.0.3";
2307 src = fetchurl {
2308 url = "https://registry.npmjs.org/minizlib/-/minizlib-1.0.3.tgz";
2309 sha1 = "d5c1abf77be154619952e253336eccab9b2a32f5";
1833 2310 };
1834 2311 };
1835 "strip-json-comments-1.0.4" = {
1836 name = "strip-json-comments";
1837 packageName = "strip-json-comments";
1838 version = "1.0.4";
2312 "yallist-3.0.2" = {
2313 name = "yallist";
2314 packageName = "yallist";
2315 version = "3.0.2";
1839 2316 src = fetchurl {
1840 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
1841 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2317 url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz";
2318 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
2319 };
2320 };
2321 "fs-extra-0.6.4" = {
2322 name = "fs-extra";
2323 packageName = "fs-extra";
2324 version = "0.6.4";
2325 src = fetchurl {
2326 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz";
2327 sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15";
2328 };
2329 };
2330 "mkdirp-0.3.5" = {
2331 name = "mkdirp";
2332 packageName = "mkdirp";
2333 version = "0.3.5";
2334 src = fetchurl {
2335 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
2336 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
1842 2337 };
1843 2338 };
1844 "crisper-1.2.0" = {
1845 name = "crisper";
1846 packageName = "crisper";
1847 version = "1.2.0";
2339 "walk-2.3.9" = {
2340 name = "walk";
2341 packageName = "walk";
2342 version = "2.3.9";
1848 2343 src = fetchurl {
1849 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
1850 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
2344 url = "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz";
2345 sha1 = "31b4db6678f2ae01c39ea9fb8725a9031e558a7b";
2346 };
2347 };
2348 "ncp-0.4.2" = {
2349 name = "ncp";
2350 packageName = "ncp";
2351 version = "0.4.2";
2352 src = fetchurl {
2353 url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz";
2354 sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574";
1851 2355 };
1852 2356 };
1853 "cli-1.0.0" = {
2357 "jsonfile-1.0.1" = {
2358 name = "jsonfile";
2359 packageName = "jsonfile";
2360 version = "1.0.1";
2361 src = fetchurl {
2362 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz";
2363 sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd";
2364 };
2365 };
2366 "foreachasync-3.0.0" = {
2367 name = "foreachasync";
2368 packageName = "foreachasync";
2369 version = "3.0.0";
2370 src = fetchurl {
2371 url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz";
2372 sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6";
2373 };
2374 };
2375 "cli-1.0.1" = {
1854 2376 name = "cli";
1855 2377 packageName = "cli";
1856 version = "1.0.0";
2378 version = "1.0.1";
1857 2379 src = fetchurl {
1858 url = "https://registry.npmjs.org/cli/-/cli-1.0.0.tgz";
1859 sha1 = "ee07dfc1390e3f2e6a9957cf88e1d4bfa777719d";
2380 url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz";
2381 sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14";
1860 2382 };
1861 2383 };
1862 2384 "console-browserify-1.1.0" = {
1863 2385 name = "console-browserify";
1864 2386 packageName = "console-browserify";
1865 2387 version = "1.1.0";
1866 2388 src = fetchurl {
1867 2389 url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz";
1868 2390 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
1869 2391 };
1870 2392 };
1871 2393 "htmlparser2-3.8.3" = {
1872 2394 name = "htmlparser2";
1873 2395 packageName = "htmlparser2";
1874 2396 version = "3.8.3";
1875 2397 src = fetchurl {
1876 2398 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
1877 2399 sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
1878 2400 };
1879 2401 };
1880 "minimatch-3.0.3" = {
2402 "minimatch-3.0.4" = {
1881 2403 name = "minimatch";
1882 2404 packageName = "minimatch";
1883 version = "3.0.3";
2405 version = "3.0.4";
1884 2406 src = fetchurl {
1885 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz";
1886 sha1 = "2a4e4090b96b2db06a9d7df01055a62a77c9b774";
2407 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
2408 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
1887 2409 };
1888 2410 };
1889 2411 "shelljs-0.3.0" = {
1890 2412 name = "shelljs";
1891 2413 packageName = "shelljs";
1892 2414 version = "0.3.0";
1893 2415 src = fetchurl {
1894 2416 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz";
1895 2417 sha1 = "3596e6307a781544f591f37da618360f31db57b1";
1896 2418 };
1897 2419 };
2420 "strip-json-comments-1.0.4" = {
2421 name = "strip-json-comments";
2422 packageName = "strip-json-comments";
2423 version = "1.0.4";
2424 src = fetchurl {
2425 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
2426 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2427 };
2428 };
1898 2429 "lodash-3.7.0" = {
1899 2430 name = "lodash";
1900 2431 packageName = "lodash";
1901 2432 version = "3.7.0";
1902 2433 src = fetchurl {
1903 2434 url = "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz";
1904 2435 sha1 = "3678bd8ab995057c07ade836ed2ef087da811d45";
1905 2436 };
1906 2437 };
1907 "glob-7.1.0" = {
2438 "glob-7.1.2" = {
1908 2439 name = "glob";
1909 2440 packageName = "glob";
1910 version = "7.1.0";
2441 version = "7.1.2";
1911 2442 src = fetchurl {
1912 url = "https://registry.npmjs.org/glob/-/glob-7.1.0.tgz";
1913 sha1 = "36add856d746d0d99e4cc2797bba1ae2c67272fd";
2443 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
2444 sha1 = "c19c9df9a028702d678612384a6552404c636d15";
1914 2445 };
1915 2446 };
1916 2447 "fs.realpath-1.0.0" = {
1917 2448 name = "fs.realpath";
1918 2449 packageName = "fs.realpath";
1919 2450 version = "1.0.0";
1920 2451 src = fetchurl {
1921 2452 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
1922 2453 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
1923 2454 };
1924 2455 };
1925 "inflight-1.0.5" = {
2456 "inflight-1.0.6" = {
1926 2457 name = "inflight";
1927 2458 packageName = "inflight";
1928 version = "1.0.5";
2459 version = "1.0.6";
1929 2460 src = fetchurl {
1930 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz";
1931 sha1 = "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a";
1932 };
1933 };
1934 "once-1.4.0" = {
1935 name = "once";
1936 packageName = "once";
1937 version = "1.4.0";
1938 src = fetchurl {
1939 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1940 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
2461 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
2462 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
1941 2463 };
1942 2464 };
1943 "wrappy-1.0.2" = {
1944 name = "wrappy";
1945 packageName = "wrappy";
1946 version = "1.0.2";
1947 src = fetchurl {
1948 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
1949 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
1950 };
1951 };
1952 "brace-expansion-1.1.6" = {
2465 "brace-expansion-1.1.8" = {
1953 2466 name = "brace-expansion";
1954 2467 packageName = "brace-expansion";
1955 version = "1.1.6";
2468 version = "1.1.8";
1956 2469 src = fetchurl {
1957 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz";
1958 sha1 = "7197d7eaa9b87e648390ea61fc66c84427420df9";
2470 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
2471 sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
1959 2472 };
1960 2473 };
1961 "balanced-match-0.4.2" = {
2474 "balanced-match-1.0.0" = {
1962 2475 name = "balanced-match";
1963 2476 packageName = "balanced-match";
1964 version = "0.4.2";
2477 version = "1.0.0";
1965 2478 src = fetchurl {
1966 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz";
1967 sha1 = "cb3f3e3c732dc0f01ee70b403f302e61d7709838";
2479 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
2480 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
1968 2481 };
1969 2482 };
1970 2483 "concat-map-0.0.1" = {
1971 2484 name = "concat-map";
1972 2485 packageName = "concat-map";
1973 2486 version = "0.0.1";
1974 2487 src = fetchurl {
1975 2488 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
1976 2489 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
1977 2490 };
1978 2491 };
1979 2492 "date-now-0.1.4" = {
1980 2493 name = "date-now";
1981 2494 packageName = "date-now";
1982 2495 version = "0.1.4";
1983 2496 src = fetchurl {
1984 2497 url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz";
1985 2498 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
1986 2499 };
1987 2500 };
1988 2501 "domhandler-2.3.0" = {
1989 2502 name = "domhandler";
1990 2503 packageName = "domhandler";
1991 2504 version = "2.3.0";
1992 2505 src = fetchurl {
1993 2506 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
1994 2507 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
1995 2508 };
1996 2509 };
1997 2510 "domutils-1.5.1" = {
1998 2511 name = "domutils";
1999 2512 packageName = "domutils";
2000 2513 version = "1.5.1";
2001 2514 src = fetchurl {
2002 2515 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
2003 2516 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
2004 2517 };
2005 2518 };
2006 2519 "domelementtype-1.3.0" = {
2007 2520 name = "domelementtype";
2008 2521 packageName = "domelementtype";
2009 2522 version = "1.3.0";
2010 2523 src = fetchurl {
2011 2524 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
2012 2525 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
2013 2526 };
2014 2527 };
2015 2528 "readable-stream-1.1.14" = {
2016 2529 name = "readable-stream";
2017 2530 packageName = "readable-stream";
2018 2531 version = "1.1.14";
2019 2532 src = fetchurl {
2020 2533 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
2021 2534 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
2022 2535 };
2023 2536 };
2024 2537 "entities-1.0.0" = {
2025 2538 name = "entities";
2026 2539 packageName = "entities";
2027 2540 version = "1.0.0";
2028 2541 src = fetchurl {
2029 2542 url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
2030 2543 sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
2031 2544 };
2032 2545 };
2033 2546 "dom-serializer-0.1.0" = {
2034 2547 name = "dom-serializer";
2035 2548 packageName = "dom-serializer";
2036 2549 version = "0.1.0";
2037 2550 src = fetchurl {
2038 2551 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
2039 2552 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
2040 2553 };
2041 2554 };
2042 2555 "domelementtype-1.1.3" = {
2043 2556 name = "domelementtype";
2044 2557 packageName = "domelementtype";
2045 2558 version = "1.1.3";
2046 2559 src = fetchurl {
2047 2560 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
2048 2561 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
2049 2562 };
2050 2563 };
2051 2564 "entities-1.1.1" = {
2052 2565 name = "entities";
2053 2566 packageName = "entities";
2054 2567 version = "1.1.1";
2055 2568 src = fetchurl {
2056 2569 url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
2057 2570 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
2058 2571 };
2059 2572 };
2573 "string_decoder-0.10.31" = {
2574 name = "string_decoder";
2575 packageName = "string_decoder";
2576 version = "0.10.31";
2577 src = fetchurl {
2578 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2579 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2580 };
2581 };
2582 "good-listener-1.2.2" = {
2583 name = "good-listener";
2584 packageName = "good-listener";
2585 version = "1.2.2";
2586 src = fetchurl {
2587 url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz";
2588 sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
2589 };
2590 };
2591 "select-1.1.2" = {
2592 name = "select";
2593 packageName = "select";
2594 version = "1.1.2";
2595 src = fetchurl {
2596 url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz";
2597 sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
2598 };
2599 };
2600 "tiny-emitter-2.0.2" = {
2601 name = "tiny-emitter";
2602 packageName = "tiny-emitter";
2603 version = "2.0.2";
2604 src = fetchurl {
2605 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
2606 sha1 = "82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c";
2607 };
2608 };
2609 "delegate-3.1.3" = {
2610 name = "delegate";
2611 packageName = "delegate";
2612 version = "3.1.3";
2613 src = fetchurl {
2614 url = "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz";
2615 sha1 = "9a8251a777d7025faa55737bc3b071742127a9fd";
2616 };
2617 };
2060 2618 };
2061 2619 args = {
2062 2620 name = "rhodecode-enterprise";
2063 2621 packageName = "rhodecode-enterprise";
2064 2622 version = "0.0.1";
2065 2623 src = ./.;
2066 2624 dependencies = [
2067 2625 sources."grunt-0.4.5"
2068 2626 sources."grunt-contrib-copy-1.0.0"
2069 2627 (sources."grunt-contrib-concat-0.5.1" // {
2070 2628 dependencies = [
2071 2629 sources."chalk-0.5.1"
2072 2630 sources."ansi-styles-1.1.0"
2073 2631 sources."has-ansi-0.1.0"
2074 2632 sources."strip-ansi-0.3.0"
2075 2633 sources."supports-color-0.2.0"
2076 2634 sources."ansi-regex-0.2.1"
2077 2635 ];
2078 2636 })
2079 2637 sources."grunt-contrib-jshint-0.12.0"
2080 (sources."grunt-contrib-less-1.4.0" // {
2638 (sources."grunt-contrib-less-1.4.1" // {
2081 2639 dependencies = [
2082 sources."async-2.0.1"
2083 sources."lodash-4.16.2"
2640 sources."async-2.5.0"
2641 sources."lodash-4.17.4"
2084 2642 ];
2085 2643 })
2086 2644 (sources."grunt-contrib-watch-0.6.1" // {
2087 2645 dependencies = [
2088 2646 sources."lodash-2.4.2"
2089 2647 sources."async-0.2.10"
2090 2648 ];
2091 2649 })
2092 sources."crisper-2.0.2"
2093 (sources."vulcanize-1.14.8" // {
2650 sources."crisper-2.1.1"
2651 (sources."vulcanize-1.16.0" // {
2094 2652 dependencies = [
2095 2653 sources."nopt-3.0.6"
2096 2654 ];
2097 2655 })
2098 2656 sources."grunt-crisper-1.0.1"
2099 2657 (sources."grunt-vulcanize-1.0.0" // {
2100 2658 dependencies = [
2101 2659 sources."crisper-1.2.0"
2102 2660 sources."nopt-3.0.6"
2103 2661 ];
2104 2662 })
2105 (sources."jshint-2.9.3" // {
2663 sources."node2nix-1.3.0"
2664 (sources."jshint-2.9.5" // {
2106 2665 dependencies = [
2107 sources."minimatch-3.0.3"
2666 sources."minimatch-3.0.4"
2108 2667 sources."lodash-3.7.0"
2109 2668 ];
2110 2669 })
2111 sources."bower-1.7.9"
2670 sources."bower-1.8.2"
2671 sources."jquery-1.11.3"
2112 2672 sources."favico.js-0.3.10"
2113 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.0"
2673 sources."clipboard-1.7.1"
2674 sources."moment-2.18.1"
2675 sources."mousetrap-1.6.1"
2676 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
2114 2677 sources."async-0.1.22"
2115 2678 sources."coffee-script-1.3.3"
2116 2679 sources."colors-0.6.2"
2117 2680 sources."dateformat-1.0.2-1.2.3"
2118 2681 sources."eventemitter2-0.4.14"
2119 2682 (sources."findup-sync-0.1.3" // {
2120 2683 dependencies = [
2121 2684 sources."glob-3.2.11"
2122 2685 sources."lodash-2.4.2"
2123 2686 sources."minimatch-0.3.0"
2124 2687 ];
2125 2688 })
2126 2689 (sources."glob-3.1.21" // {
2127 2690 dependencies = [
2128 2691 sources."inherits-1.0.2"
2129 2692 ];
2130 2693 })
2131 2694 sources."hooker-0.2.3"
2132 2695 sources."iconv-lite-0.2.11"
2133 2696 sources."minimatch-0.2.14"
2134 2697 sources."nopt-1.0.10"
2135 2698 sources."rimraf-2.2.8"
2136 2699 sources."lodash-0.9.2"
2137 2700 sources."underscore.string-2.2.1"
2138 2701 sources."which-1.0.9"
2139 2702 sources."js-yaml-2.0.5"
2140 2703 sources."exit-0.1.2"
2141 2704 sources."getobject-0.1.0"
2142 2705 sources."grunt-legacy-util-0.2.0"
2143 2706 (sources."grunt-legacy-log-0.1.3" // {
2144 2707 dependencies = [
2145 2708 sources."lodash-2.4.2"
2146 2709 sources."underscore.string-2.3.3"
2147 2710 ];
2148 2711 })
2149 2712 sources."inherits-2.0.3"
2150 2713 sources."lru-cache-2.7.3"
2151 2714 sources."sigmund-1.0.1"
2152 2715 sources."graceful-fs-1.2.3"
2153 sources."abbrev-1.0.9"
2716 sources."abbrev-1.1.0"
2154 2717 (sources."argparse-0.1.16" // {
2155 2718 dependencies = [
2156 2719 sources."underscore.string-2.4.0"
2157 2720 ];
2158 2721 })
2159 2722 sources."esprima-1.0.4"
2160 2723 sources."underscore-1.7.0"
2161 2724 (sources."grunt-legacy-log-utils-0.1.1" // {
2162 2725 dependencies = [
2163 2726 sources."lodash-2.4.2"
2164 2727 sources."underscore.string-2.3.3"
2165 2728 ];
2166 2729 })
2167 2730 sources."chalk-1.1.3"
2168 2731 sources."file-sync-cmp-0.1.1"
2169 2732 sources."ansi-styles-2.2.1"
2170 2733 sources."escape-string-regexp-1.0.5"
2171 2734 sources."has-ansi-2.0.0"
2172 2735 sources."strip-ansi-3.0.1"
2173 2736 sources."supports-color-2.0.0"
2174 sources."ansi-regex-2.0.0"
2737 sources."ansi-regex-2.1.1"
2175 2738 sources."source-map-0.3.0"
2176 sources."amdefine-1.0.0"
2177 (sources."less-2.7.1" // {
2739 sources."amdefine-1.0.1"
2740 (sources."less-2.7.2" // {
2178 2741 dependencies = [
2179 sources."graceful-fs-4.1.8"
2180 sources."source-map-0.5.6"
2742 sources."graceful-fs-4.1.11"
2743 sources."source-map-0.5.7"
2181 2744 ];
2182 2745 })
2183 2746 sources."errno-0.1.4"
2184 sources."image-size-0.5.0"
2185 sources."mime-1.3.4"
2747 sources."image-size-0.5.5"
2748 sources."mime-1.4.0"
2186 2749 sources."mkdirp-0.5.1"
2187 sources."promise-7.1.1"
2750 sources."promise-7.3.1"
2751 sources."request-2.82.0"
2188 2752 sources."prr-0.0.0"
2189 2753 sources."minimist-0.0.8"
2190 sources."asap-2.0.5"
2754 sources."asap-2.0.6"
2755 sources."aws-sign2-0.7.0"
2756 sources."aws4-1.6.0"
2757 sources."caseless-0.12.0"
2758 sources."combined-stream-1.0.5"
2759 sources."extend-3.0.1"
2760 sources."forever-agent-0.6.1"
2761 sources."form-data-2.3.1"
2762 sources."har-validator-5.0.3"
2763 sources."hawk-6.0.2"
2764 sources."http-signature-1.2.0"
2765 sources."is-typedarray-1.0.0"
2766 sources."isstream-0.1.2"
2767 sources."json-stringify-safe-5.0.1"
2768 sources."mime-types-2.1.17"
2769 sources."oauth-sign-0.8.2"
2770 sources."performance-now-2.1.0"
2771 sources."qs-6.5.1"
2772 sources."safe-buffer-5.1.1"
2773 sources."stringstream-0.0.5"
2774 sources."tough-cookie-2.3.3"
2775 sources."tunnel-agent-0.6.0"
2776 sources."uuid-3.1.0"
2777 sources."delayed-stream-1.0.0"
2778 sources."asynckit-0.4.0"
2779 sources."ajv-5.2.2"
2780 sources."har-schema-2.0.0"
2781 sources."co-4.6.0"
2782 sources."fast-deep-equal-1.0.0"
2783 sources."json-schema-traverse-0.3.1"
2784 sources."json-stable-stringify-1.0.1"
2785 sources."jsonify-0.0.0"
2786 sources."hoek-4.2.0"
2787 sources."boom-4.3.1"
2788 (sources."cryptiles-3.1.2" // {
2789 dependencies = [
2790 sources."boom-5.2.0"
2791 ];
2792 })
2793 sources."sntp-2.0.2"
2794 sources."assert-plus-1.0.0"
2795 sources."jsprim-1.4.1"
2796 sources."sshpk-1.13.1"
2797 sources."extsprintf-1.3.0"
2798 sources."json-schema-0.2.3"
2799 sources."verror-1.10.0"
2800 sources."core-util-is-1.0.2"
2801 sources."asn1-0.2.3"
2802 sources."dashdash-1.14.1"
2803 sources."getpass-0.1.7"
2804 sources."jsbn-0.1.1"
2805 sources."tweetnacl-0.14.5"
2806 sources."ecc-jsbn-0.1.1"
2807 sources."bcrypt-pbkdf-1.0.1"
2808 sources."mime-db-1.30.0"
2809 sources."punycode-1.4.1"
2191 2810 sources."gaze-0.5.2"
2192 sources."tiny-lr-fork-0.0.5"
2811 (sources."tiny-lr-fork-0.0.5" // {
2812 dependencies = [
2813 sources."qs-0.5.6"
2814 ];
2815 })
2193 2816 (sources."globule-0.1.0" // {
2194 2817 dependencies = [
2195 2818 sources."lodash-1.0.2"
2196 2819 ];
2197 2820 })
2198 sources."qs-0.5.6"
2199 2821 sources."faye-websocket-0.4.4"
2200 2822 (sources."noptify-0.0.3" // {
2201 2823 dependencies = [
2202 2824 sources."nopt-2.0.0"
2203 2825 ];
2204 2826 })
2205 2827 sources."debug-0.7.4"
2206 sources."command-line-args-2.1.6"
2828 sources."command-line-args-3.0.5"
2829 sources."command-line-usage-3.0.8"
2207 2830 sources."dom5-1.3.6"
2208 sources."array-back-1.0.3"
2209 sources."command-line-usage-2.0.5"
2210 sources."core-js-2.4.1"
2831 sources."array-back-1.0.4"
2211 2832 sources."feature-detect-es6-1.3.1"
2212 (sources."find-replace-1.0.2" // {
2213 dependencies = [
2214 sources."test-value-2.1.0"
2215 ];
2216 })
2217 sources."typical-2.6.0"
2218 sources."ansi-escape-sequences-2.2.2"
2219 sources."column-layout-2.1.4"
2220 sources."wordwrapjs-1.2.1"
2221 sources."collect-all-0.2.1"
2222 sources."stream-connect-1.0.2"
2223 sources."stream-via-0.1.1"
2224 (sources."collect-json-1.0.8" // {
2225 dependencies = [
2226 sources."collect-all-1.0.2"
2227 sources."stream-via-1.0.3"
2228 ];
2229 })
2230 sources."deep-extend-0.4.1"
2231 sources."object-tools-2.0.6"
2232 sources."object-get-2.1.0"
2233 sources."test-value-1.1.0"
2833 sources."find-replace-1.0.3"
2834 sources."typical-2.6.1"
2835 sources."test-value-2.1.0"
2836 sources."ansi-escape-sequences-3.0.0"
2837 sources."table-layout-0.3.0"
2838 sources."core-js-2.5.1"
2839 sources."deep-extend-0.4.2"
2840 sources."wordwrapjs-2.0.0"
2841 sources."reduce-flatten-1.0.1"
2234 2842 sources."@types/clone-0.1.30"
2235 sources."@types/node-4.0.30"
2843 sources."@types/node-4.2.20"
2236 2844 (sources."@types/parse5-0.0.31" // {
2237 2845 dependencies = [
2238 sources."@types/node-6.0.41"
2846 sources."@types/node-6.0.88"
2239 2847 ];
2240 2848 })
2241 2849 sources."clone-1.0.2"
2242 2850 sources."parse5-1.5.1"
2243 2851 sources."es6-promise-2.3.0"
2244 sources."hydrolysis-1.24.1"
2245 sources."path-posix-1.0.0"
2246 sources."update-notifier-0.6.3"
2247 sources."babel-polyfill-6.13.0"
2248 sources."doctrine-0.7.2"
2249 (sources."escodegen-1.8.1" // {
2852 (sources."hydrolysis-1.25.0" // {
2250 2853 dependencies = [
2251 sources."estraverse-1.9.3"
2252 sources."esutils-2.0.2"
2253 sources."esprima-2.7.3"
2254 sources."source-map-0.2.0"
2854 sources."dom5-1.1.0"
2255 2855 ];
2256 2856 })
2257 sources."espree-3.3.1"
2857 sources."path-posix-1.0.0"
2858 sources."acorn-3.3.0"
2859 sources."babel-polyfill-6.26.0"
2860 sources."doctrine-0.7.2"
2861 (sources."escodegen-1.9.0" // {
2862 dependencies = [
2863 sources."estraverse-4.2.0"
2864 sources."esutils-2.0.2"
2865 sources."esprima-3.1.3"
2866 sources."source-map-0.5.7"
2867 ];
2868 })
2869 (sources."espree-3.5.1" // {
2870 dependencies = [
2871 sources."acorn-5.1.2"
2872 ];
2873 })
2258 2874 sources."estraverse-3.1.0"
2259 sources."path-is-absolute-1.0.0"
2260 sources."babel-runtime-6.11.6"
2261 sources."regenerator-runtime-0.9.5"
2875 sources."path-is-absolute-1.0.1"
2876 (sources."babel-runtime-6.26.0" // {
2877 dependencies = [
2878 sources."regenerator-runtime-0.11.0"
2879 ];
2880 })
2881 sources."regenerator-runtime-0.10.5"
2262 2882 sources."esutils-1.1.6"
2263 2883 sources."isarray-0.0.1"
2264 2884 sources."optionator-0.8.2"
2265 2885 sources."prelude-ls-1.1.2"
2266 2886 sources."deep-is-0.1.3"
2267 2887 sources."wordwrap-1.0.0"
2268 2888 sources."type-check-0.3.2"
2269 2889 sources."levn-0.3.0"
2270 sources."fast-levenshtein-2.0.4"
2271 sources."acorn-4.0.3"
2272 (sources."acorn-jsx-3.0.1" // {
2890 sources."fast-levenshtein-2.0.6"
2891 sources."acorn-jsx-3.0.1"
2892 sources."object-assign-4.1.1"
2893 sources."optparse-1.0.5"
2894 sources."semver-5.4.1"
2895 (sources."npm-registry-client-8.4.0" // {
2273 2896 dependencies = [
2274 sources."acorn-3.3.0"
2897 sources."graceful-fs-4.1.11"
2275 2898 ];
2276 2899 })
2277 sources."boxen-0.3.1"
2278 (sources."configstore-2.1.0" // {
2900 (sources."npmconf-2.1.2" // {
2279 2901 dependencies = [
2280 sources."graceful-fs-4.1.8"
2902 sources."nopt-3.0.6"
2903 sources."once-1.3.3"
2904 sources."semver-4.3.6"
2281 2905 ];
2282 2906 })
2283 sources."is-npm-1.0.0"
2284 sources."latest-version-2.0.0"
2285 sources."semver-diff-2.1.0"
2286 sources."filled-array-1.1.0"
2287 sources."object-assign-4.1.0"
2288 sources."repeating-2.0.1"
2289 sources."string-width-1.0.2"
2290 sources."widest-line-1.0.0"
2291 sources."is-finite-1.0.1"
2292 sources."number-is-nan-1.0.0"
2293 sources."code-point-at-1.0.0"
2294 sources."is-fullwidth-code-point-1.0.0"
2295 sources."dot-prop-3.0.0"
2296 sources."os-tmpdir-1.0.1"
2297 sources."osenv-0.1.3"
2298 sources."uuid-2.0.3"
2299 (sources."write-file-atomic-1.2.0" // {
2907 sources."tar-3.1.15"
2908 sources."temp-0.8.3"
2909 (sources."fs.extra-1.3.2" // {
2300 2910 dependencies = [
2301 sources."graceful-fs-4.1.8"
2911 sources."mkdirp-0.3.5"
2302 2912 ];
2303 2913 })
2304 sources."xdg-basedir-2.0.0"
2305 sources."is-obj-1.0.1"
2306 sources."os-homedir-1.0.1"
2307 sources."imurmurhash-0.1.4"
2914 sources."findit-2.0.0"
2915 sources."base64-js-1.2.1"
2916 sources."slasp-0.0.4"
2917 sources."nijs-0.0.23"
2918 sources."concat-stream-1.6.0"
2919 sources."normalize-package-data-2.4.0"
2920 sources."npm-package-arg-5.1.2"
2921 sources."once-1.4.0"
2922 sources."retry-0.10.1"
2308 2923 sources."slide-1.1.6"
2309 sources."package-json-2.4.0"
2310 sources."got-5.6.0"
2311 sources."registry-auth-token-3.0.1"
2312 sources."registry-url-3.1.0"
2313 sources."semver-5.3.0"
2314 sources."create-error-class-3.0.2"
2315 sources."duplexer2-0.1.4"
2316 sources."is-plain-obj-1.1.0"
2317 sources."is-redirect-1.0.0"
2318 sources."is-retry-allowed-1.1.0"
2319 sources."is-stream-1.1.0"
2320 sources."lowercase-keys-1.0.0"
2321 sources."node-status-codes-1.0.0"
2322 sources."parse-json-2.2.0"
2323 sources."pinkie-promise-2.0.1"
2324 sources."read-all-stream-3.1.0"
2325 (sources."readable-stream-2.1.5" // {
2924 sources."ssri-4.1.6"
2925 sources."npmlog-4.1.2"
2926 sources."typedarray-0.0.6"
2927 (sources."readable-stream-2.3.3" // {
2326 2928 dependencies = [
2327 2929 sources."isarray-1.0.0"
2328 2930 ];
2329 2931 })
2330 sources."timed-out-2.0.0"
2331 sources."unzip-response-1.0.1"
2332 sources."url-parse-lax-1.0.0"
2333 sources."capture-stack-trace-1.0.0"
2334 sources."error-ex-1.3.0"
2335 sources."is-arrayish-0.2.1"
2336 sources."pinkie-2.0.4"
2337 sources."buffer-shims-1.0.0"
2338 sources."core-util-is-1.0.2"
2339 2932 sources."process-nextick-args-1.0.7"
2340 sources."string_decoder-0.10.31"
2933 sources."string_decoder-1.0.3"
2341 2934 sources."util-deprecate-1.0.2"
2342 sources."prepend-http-1.0.4"
2343 (sources."rc-1.1.6" // {
2935 sources."hosted-git-info-2.5.0"
2936 sources."is-builtin-module-1.0.0"
2937 sources."validate-npm-package-license-3.0.1"
2938 sources."builtin-modules-1.1.1"
2939 sources."spdx-correct-1.0.2"
2940 sources."spdx-expression-parse-1.0.4"
2941 sources."spdx-license-ids-1.2.2"
2942 sources."osenv-0.1.4"
2943 sources."validate-npm-package-name-3.0.0"
2944 sources."os-homedir-1.0.2"
2945 sources."os-tmpdir-1.0.2"
2946 sources."builtins-1.0.3"
2947 sources."wrappy-1.0.2"
2948 sources."are-we-there-yet-1.1.4"
2949 sources."console-control-strings-1.1.0"
2950 sources."gauge-2.7.4"
2951 sources."set-blocking-2.0.0"
2952 sources."delegates-1.0.0"
2953 sources."aproba-1.2.0"
2954 sources."has-unicode-2.0.1"
2955 sources."signal-exit-3.0.2"
2956 sources."string-width-1.0.2"
2957 sources."wide-align-1.1.2"
2958 sources."code-point-at-1.1.0"
2959 sources."is-fullwidth-code-point-1.0.0"
2960 sources."number-is-nan-1.0.1"
2961 sources."config-chain-1.1.11"
2962 sources."ini-1.3.4"
2963 sources."uid-number-0.0.5"
2964 sources."proto-list-1.2.4"
2965 sources."minipass-2.2.1"
2966 sources."minizlib-1.0.3"
2967 sources."yallist-3.0.2"
2968 (sources."fs-extra-0.6.4" // {
2344 2969 dependencies = [
2345 sources."minimist-1.2.0"
2970 sources."mkdirp-0.3.5"
2346 2971 ];
2347 2972 })
2348 sources."ini-1.3.4"
2349 sources."strip-json-comments-1.0.4"
2350 (sources."cli-1.0.0" // {
2973 sources."walk-2.3.9"
2974 sources."ncp-0.4.2"
2975 sources."jsonfile-1.0.1"
2976 sources."foreachasync-3.0.0"
2977 (sources."cli-1.0.1" // {
2351 2978 dependencies = [
2352 sources."glob-7.1.0"
2353 sources."minimatch-3.0.3"
2979 sources."glob-7.1.2"
2980 sources."minimatch-3.0.4"
2354 2981 ];
2355 2982 })
2356 2983 sources."console-browserify-1.1.0"
2357 2984 (sources."htmlparser2-3.8.3" // {
2358 2985 dependencies = [
2359 2986 sources."readable-stream-1.1.14"
2987 sources."string_decoder-0.10.31"
2360 2988 ];
2361 2989 })
2362 2990 sources."shelljs-0.3.0"
2991 sources."strip-json-comments-1.0.4"
2363 2992 sources."fs.realpath-1.0.0"
2364 sources."inflight-1.0.5"
2365 sources."once-1.4.0"
2366 sources."wrappy-1.0.2"
2367 sources."brace-expansion-1.1.6"
2368 sources."balanced-match-0.4.2"
2993 sources."inflight-1.0.6"
2994 sources."brace-expansion-1.1.8"
2995 sources."balanced-match-1.0.0"
2369 2996 sources."concat-map-0.0.1"
2370 2997 sources."date-now-0.1.4"
2371 2998 sources."domhandler-2.3.0"
2372 2999 sources."domutils-1.5.1"
2373 3000 sources."domelementtype-1.3.0"
2374 3001 sources."entities-1.0.0"
2375 3002 (sources."dom-serializer-0.1.0" // {
2376 3003 dependencies = [
2377 3004 sources."domelementtype-1.1.3"
2378 3005 sources."entities-1.1.1"
2379 3006 ];
2380 3007 })
3008 sources."good-listener-1.2.2"
3009 sources."select-1.1.2"
3010 sources."tiny-emitter-2.0.2"
3011 sources."delegate-3.1.3"
2381 3012 ];
2382 3013 meta = {
2383 3014 };
2384 3015 production = false;
2385 3016 };
2386 3017 in
2387 3018 {
2388 3019 tarball = nodeEnv.buildNodeSourceDist args;
2389 3020 package = nodeEnv.buildNodePackage args;
2390 3021 shell = nodeEnv.buildNodeShell args;
2391 3022 } No newline at end of file
1 NO CONTENT: file renamed from rhodecode/public/js/excanvas.min.js to rhodecode/public/js/src/excanvas.min.js
1 NO CONTENT: file renamed from rhodecode/public/js/jquery.commits-graph.js to rhodecode/public/js/src/plugins/jquery.commits-graph.js
@@ -1,183 +1,183 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <!DOCTYPE html>
3 3
4 4 <%
5 5 c.template_context['repo_name'] = getattr(c, 'repo_name', '')
6 6
7 7 if hasattr(c, 'rhodecode_db_repo'):
8 8 c.template_context['repo_type'] = c.rhodecode_db_repo.repo_type
9 9 c.template_context['repo_landing_commit'] = c.rhodecode_db_repo.landing_rev[1]
10 10
11 11 if getattr(c, 'rhodecode_user', None) and c.rhodecode_user.user_id:
12 12 c.template_context['rhodecode_user']['username'] = c.rhodecode_user.username
13 13 c.template_context['rhodecode_user']['email'] = c.rhodecode_user.email
14 14 c.template_context['rhodecode_user']['notification_status'] = c.rhodecode_user.get_instance().user_data.get('notification_status', True)
15 15 c.template_context['rhodecode_user']['first_name'] = c.rhodecode_user.first_name
16 16 c.template_context['rhodecode_user']['last_name'] = c.rhodecode_user.last_name
17 17
18 18 c.template_context['visual']['default_renderer'] = h.get_visual_attr(c, 'default_renderer')
19 19 c.template_context['default_user'] = {
20 20 'username': h.DEFAULT_USER,
21 21 'user_id': 1
22 22 }
23 23
24 24 %>
25 25 <html xmlns="http://www.w3.org/1999/xhtml">
26 26 <head>
27 27 <script src="${h.asset('js/vendors/webcomponentsjs/webcomponents-lite.min.js', ver=c.rhodecode_version_hash)}"></script>
28 28 <link rel="import" href="${h.asset('js/rhodecode-components.html', ver=c.rhodecode_version_hash)}">
29 29 <title>${self.title()}</title>
30 30 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
31 31
32 32 % if 'safari' in (request.user_agent or '').lower():
33 33 <meta name="referrer" content="origin">
34 34 % else:
35 35 <meta name="referrer" content="origin-when-cross-origin">
36 36 % endif
37 37
38 38 <%def name="robots()">
39 39 <meta name="robots" content="index, nofollow"/>
40 40 </%def>
41 41 ${self.robots()}
42 42 <link rel="icon" href="${h.asset('images/favicon.ico', ver=c.rhodecode_version_hash)}" sizes="16x16 32x32" type="image/png" />
43 43
44 44 ## CSS definitions
45 45 <%def name="css()">
46 46 <link rel="stylesheet" type="text/css" href="${h.asset('css/style.css', ver=c.rhodecode_version_hash)}" media="screen"/>
47 47 <!--[if lt IE 9]>
48 48 <link rel="stylesheet" type="text/css" href="${h.asset('css/ie.css', ver=c.rhodecode_version_hash)}" media="screen"/>
49 49 <![endif]-->
50 50 ## EXTRA FOR CSS
51 51 ${self.css_extra()}
52 52 </%def>
53 53 ## CSS EXTRA - optionally inject some extra CSS stuff needed for specific websites
54 54 <%def name="css_extra()">
55 55 </%def>
56 56
57 57 ${self.css()}
58 58
59 59 ## JAVASCRIPT
60 60 <%def name="js()">
61 61 <script>
62 62 // setup Polymer options
63 63 window.Polymer = {lazyRegister: true, dom: 'shadow'};
64 64
65 65 // Load webcomponentsjs polyfill if browser does not support native Web Components
66 66 (function() {
67 67 'use strict';
68 68 var onload = function() {
69 69 // For native Imports, manually fire WebComponentsReady so user code
70 70 // can use the same code path for native and polyfill'd imports.
71 71 if (!window.HTMLImports) {
72 72 document.dispatchEvent(
73 73 new CustomEvent('WebComponentsReady', {bubbles: true})
74 74 );
75 75 }
76 76 };
77 77 var webComponentsSupported = (
78 78 'registerElement' in document
79 79 && 'import' in document.createElement('link')
80 80 && 'content' in document.createElement('template')
81 81 );
82 82 if (!webComponentsSupported) {
83 83 } else {
84 84 onload();
85 85 }
86 86 })();
87 87 </script>
88 88
89 89 <script src="${h.asset('js/rhodecode/i18n/%s.js' % c.language, ver=c.rhodecode_version_hash)}"></script>
90 90 <script type="text/javascript">
91 91 // register templateContext to pass template variables to JS
92 92 var templateContext = ${h.json.dumps(c.template_context)|n};
93 93
94 94 var APPLICATION_URL = "${h.route_path('home').rstrip('/')}";
95 95 var ASSET_URL = "${h.asset('')}";
96 96 var DEFAULT_RENDERER = "${h.get_visual_attr(c, 'default_renderer')}";
97 97 var CSRF_TOKEN = "${getattr(c, 'csrf_token', '')}";
98 98
99 99 var APPENLIGHT = {
100 100 enabled: ${'true' if getattr(c, 'appenlight_enabled', False) else 'false'},
101 101 key: '${getattr(c, "appenlight_api_public_key", "")}',
102 102 % if getattr(c, 'appenlight_server_url', None):
103 103 serverUrl: '${getattr(c, "appenlight_server_url", "")}',
104 104 % endif
105 105 requestInfo: {
106 106 % if getattr(c, 'rhodecode_user', None):
107 107 ip: '${c.rhodecode_user.ip_addr}',
108 108 username: '${c.rhodecode_user.username}'
109 109 % endif
110 110 },
111 111 tags: {
112 112 rhodecode_version: '${c.rhodecode_version}',
113 113 rhodecode_edition: '${c.rhodecode_edition}'
114 114 }
115 115 };
116 116
117 117 </script>
118 118 <%include file="/base/plugins_base.mako"/>
119 119 <!--[if lt IE 9]>
120 <script language="javascript" type="text/javascript" src="${h.asset('js/excanvas.min.js')}"></script>
120 <script language="javascript" type="text/javascript" src="${h.asset('js/src/excanvas.min.js')}"></script>
121 121 <![endif]-->
122 122 <script language="javascript" type="text/javascript" src="${h.asset('js/rhodecode/routes.js', ver=c.rhodecode_version_hash)}"></script>
123 123 <script> var alertMessagePayloads = ${h.flash.json_alerts(request=request)|n}; </script>
124 124 ## avoide escaping the %N
125 125 <script language="javascript" type="text/javascript" src="${h.asset('js/rhodecode-components.js', ver=c.rhodecode_version_hash)}"></script>
126 126 <script>CodeMirror.modeURL = "${h.asset('') + 'js/mode/%N/%N.js?ver='+c.rhodecode_version_hash}";</script>
127 127
128 128
129 129 ## JAVASCRIPT EXTRA - optionally inject some extra JS for specificed templates
130 130 ${self.js_extra()}
131 131
132 132 <script type="text/javascript">
133 133 Rhodecode = (function() {
134 134 function _Rhodecode() {
135 135 this.comments = new CommentsController();
136 136 }
137 137 return new _Rhodecode();
138 138 })();
139 139
140 140 $(document).ready(function(){
141 141 show_more_event();
142 142 timeagoActivate();
143 143 clipboardActivate();
144 144 })
145 145 </script>
146 146
147 147 </%def>
148 148
149 149 ## JAVASCRIPT EXTRA - optionally inject some extra JS for specificed templates
150 150 <%def name="js_extra()"></%def>
151 151 ${self.js()}
152 152
153 153 <%def name="head_extra()"></%def>
154 154 ${self.head_extra()}
155 155 ## extra stuff
156 156 %if c.pre_code:
157 157 ${c.pre_code|n}
158 158 %endif
159 159 </head>
160 160 <body id="body">
161 161 <noscript>
162 162 <div class="noscript-error">
163 163 ${_('Please enable JavaScript to use RhodeCode Enterprise')}
164 164 </div>
165 165 </noscript>
166 166 ## IE hacks
167 167 <!--[if IE 7]>
168 168 <script>$(document.body).addClass('ie7')</script>
169 169 <![endif]-->
170 170 <!--[if IE 8]>
171 171 <script>$(document.body).addClass('ie8')</script>
172 172 <![endif]-->
173 173 <!--[if IE 9]>
174 174 <script>$(document.body).addClass('ie9')</script>
175 175 <![endif]-->
176 176
177 177 ${next.body()}
178 178 %if c.post_code:
179 179 ${c.post_code|n}
180 180 %endif
181 181 <rhodecode-app></rhodecode-app>
182 182 </body>
183 183 </html>
@@ -1,297 +1,297 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.mako"/>
4 4
5 5 <%def name="title()">
6 6 ${_('%s Changelog') % c.repo_name}
7 7 %if c.changelog_for_path:
8 8 /${c.changelog_for_path}
9 9 %endif
10 10 %if c.rhodecode_name:
11 11 &middot; ${h.branding(c.rhodecode_name)}
12 12 %endif
13 13 </%def>
14 14
15 15 <%def name="breadcrumbs_links()">
16 16 %if c.changelog_for_path:
17 17 /${c.changelog_for_path}
18 18 %endif
19 19 </%def>
20 20
21 21 <%def name="menu_bar_nav()">
22 22 ${self.menu_items(active='repositories')}
23 23 </%def>
24 24
25 25 <%def name="menu_bar_subnav()">
26 26 ${self.repo_menu(active='changelog')}
27 27 </%def>
28 28
29 29 <%def name="main()">
30 30
31 31 <div class="box">
32 32 <div class="title">
33 33 ${self.repo_page_title(c.rhodecode_db_repo)}
34 34 <ul class="links">
35 35 <li>
36 36 <a href="#" class="btn btn-small" id="rev_range_container" style="display:none;"></a>
37 37 %if c.rhodecode_db_repo.fork:
38 38 <span>
39 39 <a id="compare_fork_button"
40 40 title="${h.tooltip(_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name))}"
41 41 class="btn btn-small"
42 42 href="${h.route_path('repo_compare',
43 43 repo_name=c.rhodecode_db_repo.fork.repo_name,
44 44 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
45 45 source_ref=c.rhodecode_db_repo.landing_rev[1],
46 46 target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
47 47 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
48 48 _query=dict(merge=1, target_repo=c.repo_name))}"
49 49 >
50 50 ${_('Compare fork with Parent (%s)' % c.rhodecode_db_repo.fork.repo_name)}
51 51 </a>
52 52 </span>
53 53 %endif
54 54
55 55 ## pr open link
56 56 %if h.is_hg(c.rhodecode_repo) or h.is_git(c.rhodecode_repo):
57 57 <span>
58 58 <a id="open_new_pull_request" class="btn btn-small btn-success" href="${h.route_path('pullrequest_new',repo_name=c.repo_name)}">
59 59 ${_('Open new pull request')}
60 60 </a>
61 61 </span>
62 62 %endif
63 63
64 64 ## clear selection
65 65 <div title="${_('Clear selection')}" class="btn" id="rev_range_clear" style="display:none">
66 66 ${_('Clear selection')}
67 67 </div>
68 68
69 69 </li>
70 70 </ul>
71 71 </div>
72 72
73 73 % if c.pagination:
74 <script type="text/javascript" src="${h.asset('js/jquery.commits-graph.js')}"></script>
74 <script type="text/javascript" src="${h.asset('js/src/plugins/jquery.commits-graph.js')}"></script>
75 75
76 76 <div class="graph-header">
77 77 <div id="filter_changelog">
78 78 ${h.hidden('branch_filter')}
79 79 %if c.selected_name:
80 80 <div class="btn btn-default" id="clear_filter" >
81 81 ${_('Clear filter')}
82 82 </div>
83 83 %endif
84 84 </div>
85 85 ${self.breadcrumbs('breadcrumbs_light')}
86 86 <div id="commit-counter" data-total=${c.total_cs} class="pull-right">
87 87 ${_ungettext('showing %d out of %d commit', 'showing %d out of %d commits', c.showing_commits) % (c.showing_commits, c.total_cs)}
88 88 </div>
89 89 </div>
90 90
91 91 <div id="graph">
92 92 <div class="graph-col-wrapper">
93 93 <div id="graph_nodes">
94 94 <div id="graph_canvas"></div>
95 95 </div>
96 96 <div id="graph_content" class="main-content graph_full_width">
97 97
98 98 <div class="table">
99 99 <table id="changesets" class="rctable">
100 100 <tr>
101 101 ## checkbox
102 102 <th></th>
103 103 <th colspan="2"></th>
104 104
105 105 <th>${_('Commit')}</th>
106 106 ## commit message expand arrow
107 107 <th></th>
108 108 <th>${_('Commit Message')}</th>
109 109
110 110 <th>${_('Age')}</th>
111 111 <th>${_('Author')}</th>
112 112
113 113 <th>${_('Refs')}</th>
114 114 </tr>
115 115
116 116 <tbody class="commits-range">
117 117 <%include file='changelog_elements.mako'/>
118 118 </tbody>
119 119 </table>
120 120 </div>
121 121 </div>
122 122 <div class="pagination-wh pagination-left">
123 123 ${c.pagination.pager('$link_previous ~2~ $link_next')}
124 124 </div>
125 125 </div>
126 126
127 127 <script type="text/javascript">
128 128 var cache = {};
129 129 $(function(){
130 130
131 131 // Create links to commit ranges when range checkboxes are selected
132 132 var $commitCheckboxes = $('.commit-range');
133 133 // cache elements
134 134 var $commitRangeContainer = $('#rev_range_container');
135 135 var $commitRangeClear = $('#rev_range_clear');
136 136
137 137 var checkboxRangeSelector = function(e){
138 138 var selectedCheckboxes = [];
139 139 for (pos in $commitCheckboxes){
140 140 if($commitCheckboxes[pos].checked){
141 141 selectedCheckboxes.push($commitCheckboxes[pos]);
142 142 }
143 143 }
144 144 var open_new_pull_request = $('#open_new_pull_request');
145 145 if(open_new_pull_request){
146 146 var selected_changes = selectedCheckboxes.length;
147 147 if (selected_changes > 1 || selected_changes == 1 && templateContext.repo_type != 'hg') {
148 148 open_new_pull_request.hide();
149 149 } else {
150 150 if (selected_changes == 1) {
151 151 open_new_pull_request.html(_gettext('Open new pull request for selected commit'));
152 152 } else if (selected_changes == 0) {
153 153 open_new_pull_request.html(_gettext('Open new pull request'));
154 154 }
155 155 open_new_pull_request.show();
156 156 }
157 157 }
158 158
159 159 if (selectedCheckboxes.length>0){
160 160 var revEnd = selectedCheckboxes[0].name;
161 161 var revStart = selectedCheckboxes[selectedCheckboxes.length-1].name;
162 162 var url = pyroutes.url('repo_commit',
163 163 {'repo_name': '${c.repo_name}',
164 164 'commit_id': revStart+'...'+revEnd});
165 165
166 166 var link = (revStart == revEnd)
167 167 ? _gettext('Show selected commit __S')
168 168 : _gettext('Show selected commits __S ... __E');
169 169
170 170 link = link.replace('__S', revStart.substr(0,6));
171 171 link = link.replace('__E', revEnd.substr(0,6));
172 172
173 173 $commitRangeContainer
174 174 .attr('href',url)
175 175 .html(link)
176 176 .show();
177 177
178 178 $commitRangeClear.show();
179 179 var _url = pyroutes.url('pullrequest_new',
180 180 {'repo_name': '${c.repo_name}',
181 181 'commit': revEnd});
182 182 open_new_pull_request.attr('href', _url);
183 183 $('#compare_fork_button').hide();
184 184 } else {
185 185 $commitRangeContainer.hide();
186 186 $commitRangeClear.hide();
187 187
188 188 %if c.branch_name:
189 189 var _url = pyroutes.url('pullrequest_new',
190 190 {'repo_name': '${c.repo_name}',
191 191 'branch':'${c.branch_name}'});
192 192 open_new_pull_request.attr('href', _url);
193 193 %else:
194 194 var _url = pyroutes.url('pullrequest_new',
195 195 {'repo_name': '${c.repo_name}'});
196 196 open_new_pull_request.attr('href', _url);
197 197 %endif
198 198 $('#compare_fork_button').show();
199 199 }
200 200 };
201 201
202 202 $commitCheckboxes.on('click', checkboxRangeSelector);
203 203
204 204 $commitRangeClear.on('click',function(e) {
205 205 $commitCheckboxes.attr('checked', false);
206 206 checkboxRangeSelector();
207 207 e.preventDefault();
208 208 });
209 209
210 210 // make sure the buttons are consistent when navigate back and forth
211 211 checkboxRangeSelector();
212 212
213 213 var msgs = $('.message');
214 214 // get first element height
215 215 var el = $('#graph_content .container')[0];
216 216 var row_h = el.clientHeight;
217 217 for (var i=0; i < msgs.length; i++) {
218 218 var m = msgs[i];
219 219
220 220 var h = m.clientHeight;
221 221 var pad = $(m).css('padding');
222 222 if (h > row_h) {
223 223 var offset = row_h - (h+12);
224 224 $(m.nextElementSibling).css('display','block');
225 225 $(m.nextElementSibling).css('margin-top',offset+'px');
226 226 }
227 227 }
228 228
229 229 $("#clear_filter").on("click", function() {
230 230 var filter = {'repo_name': '${c.repo_name}'};
231 231 window.location = pyroutes.url('repo_changelog', filter);
232 232 });
233 233
234 234 $("#branch_filter").select2({
235 235 'dropdownAutoWidth': true,
236 236 'width': 'resolve',
237 237 'placeholder': "${c.selected_name or _('Filter changelog')}",
238 238 containerCssClass: "drop-menu",
239 239 dropdownCssClass: "drop-menu-dropdown",
240 240 query: function(query){
241 241 var key = 'cache';
242 242 var cached = cache[key] ;
243 243 if(cached) {
244 244 var data = {results: []};
245 245 //filter results
246 246 $.each(cached.results, function(){
247 247 var section = this.text;
248 248 var children = [];
249 249 $.each(this.children, function(){
250 250 if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
251 251 children.push({'id': this.id, 'text': this.text, 'type': this.type})
252 252 }
253 253 });
254 254 data.results.push({'text': section, 'children': children});
255 255 query.callback({results: data.results});
256 256 });
257 257 }else{
258 258 $.ajax({
259 259 url: pyroutes.url('repo_refs_changelog_data', {'repo_name': '${c.repo_name}'}),
260 260 data: {},
261 261 dataType: 'json',
262 262 type: 'GET',
263 263 success: function(data) {
264 264 cache[key] = data;
265 265 query.callback({results: data.results});
266 266 }
267 267 })
268 268 }
269 269 }
270 270 });
271 271 $('#branch_filter').on('change', function(e){
272 272 var data = $('#branch_filter').select2('data');
273 273 var selected = data.text;
274 274 var filter = {'repo_name': '${c.repo_name}'};
275 275 if(data.type == 'branch' || data.type == 'branch_closed'){
276 276 filter["branch"] = selected;
277 277 }
278 278 else if (data.type == 'book'){
279 279 filter["bookmark"] = selected;
280 280 }
281 281 window.location = pyroutes.url('repo_changelog', filter);
282 282 });
283 283
284 284 commitsController = new CommitsController();
285 285 % if not c.changelog_for_path:
286 286 commitsController.reloadGraph();
287 287 % endif
288 288
289 289 });
290 290
291 291 </script>
292 292 </div>
293 293 % else:
294 294 ${_('There are no changes yet')}
295 295 % endif
296 296 </div>
297 297 </%def>
@@ -1,7 +0,0 b''
1 /*!
2 * clipboard.js v1.7.1
3 * https://zenorocha.github.io/clipboard.js
4 *
5 * Licensed MIT Β© Zeno Rocha
6 */
7 !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n||t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(t,e,n){function o(t,e){for(;t&&t.nodeType!==i;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}e.exports=o},{}],2:[function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e),n.delegateTarget&&o.call(t,n)}}var r=t("./closest");e.exports=o},{"./closest":1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},{}],4:[function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return i(t,e,n);if(c.nodeList(t))return r(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return l(document.body,t,e,n)}var c=t("./is"),l=t("delegate");e.exports=o},{"./is":3,delegate:2}],5:[function(t,e,n){function o(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),i=document.createRange();i.selectNodeContents(t),o.removeAllRanges(),o.addRange(i),e=o.toString()}return e}e.exports=o},{}],6:[function(t,e,n){function o(){}o.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;o<i;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;r<a;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],7:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if(void 0!==o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),c=function(){function t(e){o(this,t),this.resolveOptions(e),this.initSelection()}return a(t,[{key:"resolveOptions",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function t(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function t(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function t(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function t(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function t(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function t(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function t(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function t(){this.removeFake()}},{key:"action",set:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function t(){return this._action}},{key:"target",set:function t(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function t(){return this._target}}]),t}();t.exports=c})},{select:5}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if(void 0!==o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var s=i(e),u=i(n),f=i(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(t){function e(t,n){r(this,e);var o=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.resolveOptions(n),o.listenClick(t),o}return c(e,t),h(e,[{key:"resolveOptions",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===d(e.container)?e.container:document.body}},{key:"listenClick",value:function t(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})}},{key:"onClick",value:function t(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(n),target:this.target(n),text:this.text(n),container:this.container,trigger:n,emitter:this})}},{key:"defaultAction",value:function t(e){return l("action",e)}},{key:"defaultTarget",value:function t(e){var n=l("target",e);if(n)return document.querySelector(n)}},{key:"defaultText",value:function t(e){return l("text",e)}},{key:"destroy",value:function t(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),e}(u.default);t.exports=p})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}); No newline at end of file
@@ -1,4 +0,0 b''
1 /*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
2 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
3 if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
4 },cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
@@ -1,1 +0,0 b''
1 {"version":3,"file":"jquery-1.11.1.min.js","sources":["jquery-1.11.1.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","deletedIds","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","isEmptyObject","key","nodeType","e","ownLast","globalEval","data","trim","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","makeArray","arr","results","Object","inArray","max","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","strundefined","MAX_NEGATIVE","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","childNodes","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","createElement","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","doc","parent","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","innerHTML","firstChild","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","charAt","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","sibling","n","r","targets","closest","l","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","body","setTimeout","triggerHandler","off","detach","removeEventListener","completed","detachEvent","event","readyState","frameElement","doScroll","doScrollCheck","inlineBlockNeedsLayout","container","style","cssText","zoom","offsetWidth","deleteExpando","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","thisCache","internalKey","isNode","toJSON","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","access","chainable","emptyGet","raw","bulk","rcheckableType","fragment","createDocumentFragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","prop","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","getAll","found","fixDefaultChecked","defaultChecked","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultSelected","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","display","getDefaultComputedStyle","defaultDisplay","write","close","shrinkWrapBlocksVal","shrinkWrapBlocks","width","rmargin","rnumnonpx","getStyles","curCSS","rposition","getComputedStyle","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","addGetHookIf","conditionFn","hookFn","condition","pixelPositionVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","opacity","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","computeStyleTests","boxSizingReliable","pixelPosition","reliableMarginRight","marginRight","offsetHeight","swap","ralpha","ropacity","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","showHide","show","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","status","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","createStandardXHR","createActiveXHR","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","XMLHttpRequest","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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"} No newline at end of file
This diff has been collapsed as it changes many lines, (3606 lines changed) Show them Hide them
@@ -1,3606 +0,0 b''
1 //! moment.js
2 //! version : 2.11.2
3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4 //! license : MIT
5 //! momentjs.com
6
7 ;(function (global, factory) {
8 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
9 typeof define === 'function' && define.amd ? define(factory) :
10 global.moment = factory()
11 }(this, function () { 'use strict';
12
13 var hookCallback;
14
15 function utils_hooks__hooks () {
16 return hookCallback.apply(null, arguments);
17 }
18
19 // This is done to register the method called with moment()
20 // without creating circular dependencies.
21 function setHookCallback (callback) {
22 hookCallback = callback;
23 }
24
25 function isArray(input) {
26 return Object.prototype.toString.call(input) === '[object Array]';
27 }
28
29 function isDate(input) {
30 return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
31 }
32
33 function map(arr, fn) {
34 var res = [], i;
35 for (i = 0; i < arr.length; ++i) {
36 res.push(fn(arr[i], i));
37 }
38 return res;
39 }
40
41 function hasOwnProp(a, b) {
42 return Object.prototype.hasOwnProperty.call(a, b);
43 }
44
45 function extend(a, b) {
46 for (var i in b) {
47 if (hasOwnProp(b, i)) {
48 a[i] = b[i];
49 }
50 }
51
52 if (hasOwnProp(b, 'toString')) {
53 a.toString = b.toString;
54 }
55
56 if (hasOwnProp(b, 'valueOf')) {
57 a.valueOf = b.valueOf;
58 }
59
60 return a;
61 }
62
63 function create_utc__createUTC (input, format, locale, strict) {
64 return createLocalOrUTC(input, format, locale, strict, true).utc();
65 }
66
67 function defaultParsingFlags() {
68 // We need to deep clone this object.
69 return {
70 empty : false,
71 unusedTokens : [],
72 unusedInput : [],
73 overflow : -2,
74 charsLeftOver : 0,
75 nullInput : false,
76 invalidMonth : null,
77 invalidFormat : false,
78 userInvalidated : false,
79 iso : false
80 };
81 }
82
83 function getParsingFlags(m) {
84 if (m._pf == null) {
85 m._pf = defaultParsingFlags();
86 }
87 return m._pf;
88 }
89
90 function valid__isValid(m) {
91 if (m._isValid == null) {
92 var flags = getParsingFlags(m);
93 m._isValid = !isNaN(m._d.getTime()) &&
94 flags.overflow < 0 &&
95 !flags.empty &&
96 !flags.invalidMonth &&
97 !flags.invalidWeekday &&
98 !flags.nullInput &&
99 !flags.invalidFormat &&
100 !flags.userInvalidated;
101
102 if (m._strict) {
103 m._isValid = m._isValid &&
104 flags.charsLeftOver === 0 &&
105 flags.unusedTokens.length === 0 &&
106 flags.bigHour === undefined;
107 }
108 }
109 return m._isValid;
110 }
111
112 function valid__createInvalid (flags) {
113 var m = create_utc__createUTC(NaN);
114 if (flags != null) {
115 extend(getParsingFlags(m), flags);
116 }
117 else {
118 getParsingFlags(m).userInvalidated = true;
119 }
120
121 return m;
122 }
123
124 function isUndefined(input) {
125 return input === void 0;
126 }
127
128 // Plugins that add properties should also add the key here (null value),
129 // so we can properly clone ourselves.
130 var momentProperties = utils_hooks__hooks.momentProperties = [];
131
132 function copyConfig(to, from) {
133 var i, prop, val;
134
135 if (!isUndefined(from._isAMomentObject)) {
136 to._isAMomentObject = from._isAMomentObject;
137 }
138 if (!isUndefined(from._i)) {
139 to._i = from._i;
140 }
141 if (!isUndefined(from._f)) {
142 to._f = from._f;
143 }
144 if (!isUndefined(from._l)) {
145 to._l = from._l;
146 }
147 if (!isUndefined(from._strict)) {
148 to._strict = from._strict;
149 }
150 if (!isUndefined(from._tzm)) {
151 to._tzm = from._tzm;
152 }
153 if (!isUndefined(from._isUTC)) {
154 to._isUTC = from._isUTC;
155 }
156 if (!isUndefined(from._offset)) {
157 to._offset = from._offset;
158 }
159 if (!isUndefined(from._pf)) {
160 to._pf = getParsingFlags(from);
161 }
162 if (!isUndefined(from._locale)) {
163 to._locale = from._locale;
164 }
165
166 if (momentProperties.length > 0) {
167 for (i in momentProperties) {
168 prop = momentProperties[i];
169 val = from[prop];
170 if (!isUndefined(val)) {
171 to[prop] = val;
172 }
173 }
174 }
175
176 return to;
177 }
178
179 var updateInProgress = false;
180
181 // Moment prototype object
182 function Moment(config) {
183 copyConfig(this, config);
184 this._d = new Date(config._d != null ? config._d.getTime() : NaN);
185 // Prevent infinite loop in case updateOffset creates new moment
186 // objects.
187 if (updateInProgress === false) {
188 updateInProgress = true;
189 utils_hooks__hooks.updateOffset(this);
190 updateInProgress = false;
191 }
192 }
193
194 function isMoment (obj) {
195 return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
196 }
197
198 function absFloor (number) {
199 if (number < 0) {
200 return Math.ceil(number);
201 } else {
202 return Math.floor(number);
203 }
204 }
205
206 function toInt(argumentForCoercion) {
207 var coercedNumber = +argumentForCoercion,
208 value = 0;
209
210 if (coercedNumber !== 0 && isFinite(coercedNumber)) {
211 value = absFloor(coercedNumber);
212 }
213
214 return value;
215 }
216
217 // compare two arrays, return the number of differences
218 function compareArrays(array1, array2, dontConvert) {
219 var len = Math.min(array1.length, array2.length),
220 lengthDiff = Math.abs(array1.length - array2.length),
221 diffs = 0,
222 i;
223 for (i = 0; i < len; i++) {
224 if ((dontConvert && array1[i] !== array2[i]) ||
225 (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
226 diffs++;
227 }
228 }
229 return diffs + lengthDiff;
230 }
231
232 function Locale() {
233 }
234
235 // internal storage for locale config files
236 var locales = {};
237 var globalLocale;
238
239 function normalizeLocale(key) {
240 return key ? key.toLowerCase().replace('_', '-') : key;
241 }
242
243 // pick the locale from the array
244 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
245 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
246 function chooseLocale(names) {
247 var i = 0, j, next, locale, split;
248
249 while (i < names.length) {
250 split = normalizeLocale(names[i]).split('-');
251 j = split.length;
252 next = normalizeLocale(names[i + 1]);
253 next = next ? next.split('-') : null;
254 while (j > 0) {
255 locale = loadLocale(split.slice(0, j).join('-'));
256 if (locale) {
257 return locale;
258 }
259 if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
260 //the next array item is better than a shallower substring of this one
261 break;
262 }
263 j--;
264 }
265 i++;
266 }
267 return null;
268 }
269
270 function loadLocale(name) {
271 var oldLocale = null;
272 // TODO: Find a better way to register and load all the locales in Node
273 if (!locales[name] && (typeof module !== 'undefined') &&
274 module && module.exports) {
275 try {
276 oldLocale = globalLocale._abbr;
277 require('./locale/' + name);
278 // because defineLocale currently also sets the global locale, we
279 // want to undo that for lazy loaded locales
280 locale_locales__getSetGlobalLocale(oldLocale);
281 } catch (e) { }
282 }
283 return locales[name];
284 }
285
286 // This function will load locale and then set the global locale. If
287 // no arguments are passed in, it will simply return the current global
288 // locale key.
289 function locale_locales__getSetGlobalLocale (key, values) {
290 var data;
291 if (key) {
292 if (isUndefined(values)) {
293 data = locale_locales__getLocale(key);
294 }
295 else {
296 data = defineLocale(key, values);
297 }
298
299 if (data) {
300 // moment.duration._locale = moment._locale = data;
301 globalLocale = data;
302 }
303 }
304
305 return globalLocale._abbr;
306 }
307
308 function defineLocale (name, values) {
309 if (values !== null) {
310 values.abbr = name;
311 locales[name] = locales[name] || new Locale();
312 locales[name].set(values);
313
314 // backwards compat for now: also set the locale
315 locale_locales__getSetGlobalLocale(name);
316
317 return locales[name];
318 } else {
319 // useful for testing
320 delete locales[name];
321 return null;
322 }
323 }
324
325 // returns locale data
326 function locale_locales__getLocale (key) {
327 var locale;
328
329 if (key && key._locale && key._locale._abbr) {
330 key = key._locale._abbr;
331 }
332
333 if (!key) {
334 return globalLocale;
335 }
336
337 if (!isArray(key)) {
338 //short-circuit everything else
339 locale = loadLocale(key);
340 if (locale) {
341 return locale;
342 }
343 key = [key];
344 }
345
346 return chooseLocale(key);
347 }
348
349 var aliases = {};
350
351 function addUnitAlias (unit, shorthand) {
352 var lowerCase = unit.toLowerCase();
353 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
354 }
355
356 function normalizeUnits(units) {
357 return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
358 }
359
360 function normalizeObjectUnits(inputObject) {
361 var normalizedInput = {},
362 normalizedProp,
363 prop;
364
365 for (prop in inputObject) {
366 if (hasOwnProp(inputObject, prop)) {
367 normalizedProp = normalizeUnits(prop);
368 if (normalizedProp) {
369 normalizedInput[normalizedProp] = inputObject[prop];
370 }
371 }
372 }
373
374 return normalizedInput;
375 }
376
377 function isFunction(input) {
378 return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
379 }
380
381 function makeGetSet (unit, keepTime) {
382 return function (value) {
383 if (value != null) {
384 get_set__set(this, unit, value);
385 utils_hooks__hooks.updateOffset(this, keepTime);
386 return this;
387 } else {
388 return get_set__get(this, unit);
389 }
390 };
391 }
392
393 function get_set__get (mom, unit) {
394 return mom.isValid() ?
395 mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
396 }
397
398 function get_set__set (mom, unit, value) {
399 if (mom.isValid()) {
400 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
401 }
402 }
403
404 // MOMENTS
405
406 function getSet (units, value) {
407 var unit;
408 if (typeof units === 'object') {
409 for (unit in units) {
410 this.set(unit, units[unit]);
411 }
412 } else {
413 units = normalizeUnits(units);
414 if (isFunction(this[units])) {
415 return this[units](value);
416 }
417 }
418 return this;
419 }
420
421 function zeroFill(number, targetLength, forceSign) {
422 var absNumber = '' + Math.abs(number),
423 zerosToFill = targetLength - absNumber.length,
424 sign = number >= 0;
425 return (sign ? (forceSign ? '+' : '') : '-') +
426 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
427 }
428
429 var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
430
431 var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
432
433 var formatFunctions = {};
434
435 var formatTokenFunctions = {};
436
437 // token: 'M'
438 // padded: ['MM', 2]
439 // ordinal: 'Mo'
440 // callback: function () { this.month() + 1 }
441 function addFormatToken (token, padded, ordinal, callback) {
442 var func = callback;
443 if (typeof callback === 'string') {
444 func = function () {
445 return this[callback]();
446 };
447 }
448 if (token) {
449 formatTokenFunctions[token] = func;
450 }
451 if (padded) {
452 formatTokenFunctions[padded[0]] = function () {
453 return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
454 };
455 }
456 if (ordinal) {
457 formatTokenFunctions[ordinal] = function () {
458 return this.localeData().ordinal(func.apply(this, arguments), token);
459 };
460 }
461 }
462
463 function removeFormattingTokens(input) {
464 if (input.match(/\[[\s\S]/)) {
465 return input.replace(/^\[|\]$/g, '');
466 }
467 return input.replace(/\\/g, '');
468 }
469
470 function makeFormatFunction(format) {
471 var array = format.match(formattingTokens), i, length;
472
473 for (i = 0, length = array.length; i < length; i++) {
474 if (formatTokenFunctions[array[i]]) {
475 array[i] = formatTokenFunctions[array[i]];
476 } else {
477 array[i] = removeFormattingTokens(array[i]);
478 }
479 }
480
481 return function (mom) {
482 var output = '';
483 for (i = 0; i < length; i++) {
484 output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
485 }
486 return output;
487 };
488 }
489
490 // format date using native date object
491 function formatMoment(m, format) {
492 if (!m.isValid()) {
493 return m.localeData().invalidDate();
494 }
495
496 format = expandFormat(format, m.localeData());
497 formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
498
499 return formatFunctions[format](m);
500 }
501
502 function expandFormat(format, locale) {
503 var i = 5;
504
505 function replaceLongDateFormatTokens(input) {
506 return locale.longDateFormat(input) || input;
507 }
508
509 localFormattingTokens.lastIndex = 0;
510 while (i >= 0 && localFormattingTokens.test(format)) {
511 format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
512 localFormattingTokens.lastIndex = 0;
513 i -= 1;
514 }
515
516 return format;
517 }
518
519 var match1 = /\d/; // 0 - 9
520 var match2 = /\d\d/; // 00 - 99
521 var match3 = /\d{3}/; // 000 - 999
522 var match4 = /\d{4}/; // 0000 - 9999
523 var match6 = /[+-]?\d{6}/; // -999999 - 999999
524 var match1to2 = /\d\d?/; // 0 - 99
525 var match3to4 = /\d\d\d\d?/; // 999 - 9999
526 var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
527 var match1to3 = /\d{1,3}/; // 0 - 999
528 var match1to4 = /\d{1,4}/; // 0 - 9999
529 var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
530
531 var matchUnsigned = /\d+/; // 0 - inf
532 var matchSigned = /[+-]?\d+/; // -inf - inf
533
534 var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
535 var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
536
537 var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
538
539 // any word (or two) characters or numbers including two/three word month in arabic.
540 // includes scottish gaelic two word and hyphenated months
541 var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
542
543
544 var regexes = {};
545
546 function addRegexToken (token, regex, strictRegex) {
547 regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
548 return (isStrict && strictRegex) ? strictRegex : regex;
549 };
550 }
551
552 function getParseRegexForToken (token, config) {
553 if (!hasOwnProp(regexes, token)) {
554 return new RegExp(unescapeFormat(token));
555 }
556
557 return regexes[token](config._strict, config._locale);
558 }
559
560 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
561 function unescapeFormat(s) {
562 return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
563 return p1 || p2 || p3 || p4;
564 }));
565 }
566
567 function regexEscape(s) {
568 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
569 }
570
571 var tokens = {};
572
573 function addParseToken (token, callback) {
574 var i, func = callback;
575 if (typeof token === 'string') {
576 token = [token];
577 }
578 if (typeof callback === 'number') {
579 func = function (input, array) {
580 array[callback] = toInt(input);
581 };
582 }
583 for (i = 0; i < token.length; i++) {
584 tokens[token[i]] = func;
585 }
586 }
587
588 function addWeekParseToken (token, callback) {
589 addParseToken(token, function (input, array, config, token) {
590 config._w = config._w || {};
591 callback(input, config._w, config, token);
592 });
593 }
594
595 function addTimeToArrayFromToken(token, input, config) {
596 if (input != null && hasOwnProp(tokens, token)) {
597 tokens[token](input, config._a, config, token);
598 }
599 }
600
601 var YEAR = 0;
602 var MONTH = 1;
603 var DATE = 2;
604 var HOUR = 3;
605 var MINUTE = 4;
606 var SECOND = 5;
607 var MILLISECOND = 6;
608 var WEEK = 7;
609 var WEEKDAY = 8;
610
611 function daysInMonth(year, month) {
612 return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
613 }
614
615 // FORMATTING
616
617 addFormatToken('M', ['MM', 2], 'Mo', function () {
618 return this.month() + 1;
619 });
620
621 addFormatToken('MMM', 0, 0, function (format) {
622 return this.localeData().monthsShort(this, format);
623 });
624
625 addFormatToken('MMMM', 0, 0, function (format) {
626 return this.localeData().months(this, format);
627 });
628
629 // ALIASES
630
631 addUnitAlias('month', 'M');
632
633 // PARSING
634
635 addRegexToken('M', match1to2);
636 addRegexToken('MM', match1to2, match2);
637 addRegexToken('MMM', function (isStrict, locale) {
638 return locale.monthsShortRegex(isStrict);
639 });
640 addRegexToken('MMMM', function (isStrict, locale) {
641 return locale.monthsRegex(isStrict);
642 });
643
644 addParseToken(['M', 'MM'], function (input, array) {
645 array[MONTH] = toInt(input) - 1;
646 });
647
648 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
649 var month = config._locale.monthsParse(input, token, config._strict);
650 // if we didn't find a month name, mark the date as invalid.
651 if (month != null) {
652 array[MONTH] = month;
653 } else {
654 getParsingFlags(config).invalidMonth = input;
655 }
656 });
657
658 // LOCALES
659
660 var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/;
661 var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
662 function localeMonths (m, format) {
663 return isArray(this._months) ? this._months[m.month()] :
664 this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
665 }
666
667 var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
668 function localeMonthsShort (m, format) {
669 return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
670 this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
671 }
672
673 function localeMonthsParse (monthName, format, strict) {
674 var i, mom, regex;
675
676 if (!this._monthsParse) {
677 this._monthsParse = [];
678 this._longMonthsParse = [];
679 this._shortMonthsParse = [];
680 }
681
682 for (i = 0; i < 12; i++) {
683 // make the regex if we don't have it already
684 mom = create_utc__createUTC([2000, i]);
685 if (strict && !this._longMonthsParse[i]) {
686 this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
687 this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
688 }
689 if (!strict && !this._monthsParse[i]) {
690 regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
691 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
692 }
693 // test the regex
694 if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
695 return i;
696 } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
697 return i;
698 } else if (!strict && this._monthsParse[i].test(monthName)) {
699 return i;
700 }
701 }
702 }
703
704 // MOMENTS
705
706 function setMonth (mom, value) {
707 var dayOfMonth;
708
709 if (!mom.isValid()) {
710 // No op
711 return mom;
712 }
713
714 // TODO: Move this out of here!
715 if (typeof value === 'string') {
716 value = mom.localeData().monthsParse(value);
717 // TODO: Another silent failure?
718 if (typeof value !== 'number') {
719 return mom;
720 }
721 }
722
723 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
724 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
725 return mom;
726 }
727
728 function getSetMonth (value) {
729 if (value != null) {
730 setMonth(this, value);
731 utils_hooks__hooks.updateOffset(this, true);
732 return this;
733 } else {
734 return get_set__get(this, 'Month');
735 }
736 }
737
738 function getDaysInMonth () {
739 return daysInMonth(this.year(), this.month());
740 }
741
742 var defaultMonthsShortRegex = matchWord;
743 function monthsShortRegex (isStrict) {
744 if (this._monthsParseExact) {
745 if (!hasOwnProp(this, '_monthsRegex')) {
746 computeMonthsParse.call(this);
747 }
748 if (isStrict) {
749 return this._monthsShortStrictRegex;
750 } else {
751 return this._monthsShortRegex;
752 }
753 } else {
754 return this._monthsShortStrictRegex && isStrict ?
755 this._monthsShortStrictRegex : this._monthsShortRegex;
756 }
757 }
758
759 var defaultMonthsRegex = matchWord;
760 function monthsRegex (isStrict) {
761 if (this._monthsParseExact) {
762 if (!hasOwnProp(this, '_monthsRegex')) {
763 computeMonthsParse.call(this);
764 }
765 if (isStrict) {
766 return this._monthsStrictRegex;
767 } else {
768 return this._monthsRegex;
769 }
770 } else {
771 return this._monthsStrictRegex && isStrict ?
772 this._monthsStrictRegex : this._monthsRegex;
773 }
774 }
775
776 function computeMonthsParse () {
777 function cmpLenRev(a, b) {
778 return b.length - a.length;
779 }
780
781 var shortPieces = [], longPieces = [], mixedPieces = [],
782 i, mom;
783 for (i = 0; i < 12; i++) {
784 // make the regex if we don't have it already
785 mom = create_utc__createUTC([2000, i]);
786 shortPieces.push(this.monthsShort(mom, ''));
787 longPieces.push(this.months(mom, ''));
788 mixedPieces.push(this.months(mom, ''));
789 mixedPieces.push(this.monthsShort(mom, ''));
790 }
791 // Sorting makes sure if one month (or abbr) is a prefix of another it
792 // will match the longer piece.
793 shortPieces.sort(cmpLenRev);
794 longPieces.sort(cmpLenRev);
795 mixedPieces.sort(cmpLenRev);
796 for (i = 0; i < 12; i++) {
797 shortPieces[i] = regexEscape(shortPieces[i]);
798 longPieces[i] = regexEscape(longPieces[i]);
799 mixedPieces[i] = regexEscape(mixedPieces[i]);
800 }
801
802 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
803 this._monthsShortRegex = this._monthsRegex;
804 this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')$', 'i');
805 this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')$', 'i');
806 }
807
808 function checkOverflow (m) {
809 var overflow;
810 var a = m._a;
811
812 if (a && getParsingFlags(m).overflow === -2) {
813 overflow =
814 a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
815 a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
816 a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
817 a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
818 a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
819 a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
820 -1;
821
822 if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
823 overflow = DATE;
824 }
825 if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
826 overflow = WEEK;
827 }
828 if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
829 overflow = WEEKDAY;
830 }
831
832 getParsingFlags(m).overflow = overflow;
833 }
834
835 return m;
836 }
837
838 function warn(msg) {
839 if (utils_hooks__hooks.suppressDeprecationWarnings === false &&
840 (typeof console !== 'undefined') && console.warn) {
841 console.warn('Deprecation warning: ' + msg);
842 }
843 }
844
845 function deprecate(msg, fn) {
846 var firstTime = true;
847
848 return extend(function () {
849 if (firstTime) {
850 warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack);
851 firstTime = false;
852 }
853 return fn.apply(this, arguments);
854 }, fn);
855 }
856
857 var deprecations = {};
858
859 function deprecateSimple(name, msg) {
860 if (!deprecations[name]) {
861 warn(msg);
862 deprecations[name] = true;
863 }
864 }
865
866 utils_hooks__hooks.suppressDeprecationWarnings = false;
867
868 // iso 8601 regex
869 // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
870 var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
871 var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
872
873 var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
874
875 var isoDates = [
876 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
877 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
878 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
879 ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
880 ['YYYY-DDD', /\d{4}-\d{3}/],
881 ['YYYY-MM', /\d{4}-\d\d/, false],
882 ['YYYYYYMMDD', /[+-]\d{10}/],
883 ['YYYYMMDD', /\d{8}/],
884 // YYYYMM is NOT allowed by the standard
885 ['GGGG[W]WWE', /\d{4}W\d{3}/],
886 ['GGGG[W]WW', /\d{4}W\d{2}/, false],
887 ['YYYYDDD', /\d{7}/]
888 ];
889
890 // iso time formats and regexes
891 var isoTimes = [
892 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
893 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
894 ['HH:mm:ss', /\d\d:\d\d:\d\d/],
895 ['HH:mm', /\d\d:\d\d/],
896 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
897 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
898 ['HHmmss', /\d\d\d\d\d\d/],
899 ['HHmm', /\d\d\d\d/],
900 ['HH', /\d\d/]
901 ];
902
903 var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
904
905 // date from iso format
906 function configFromISO(config) {
907 var i, l,
908 string = config._i,
909 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
910 allowTime, dateFormat, timeFormat, tzFormat;
911
912 if (match) {
913 getParsingFlags(config).iso = true;
914
915 for (i = 0, l = isoDates.length; i < l; i++) {
916 if (isoDates[i][1].exec(match[1])) {
917 dateFormat = isoDates[i][0];
918 allowTime = isoDates[i][2] !== false;
919 break;
920 }
921 }
922 if (dateFormat == null) {
923 config._isValid = false;
924 return;
925 }
926 if (match[3]) {
927 for (i = 0, l = isoTimes.length; i < l; i++) {
928 if (isoTimes[i][1].exec(match[3])) {
929 // match[2] should be 'T' or space
930 timeFormat = (match[2] || ' ') + isoTimes[i][0];
931 break;
932 }
933 }
934 if (timeFormat == null) {
935 config._isValid = false;
936 return;
937 }
938 }
939 if (!allowTime && timeFormat != null) {
940 config._isValid = false;
941 return;
942 }
943 if (match[4]) {
944 if (tzRegex.exec(match[4])) {
945 tzFormat = 'Z';
946 } else {
947 config._isValid = false;
948 return;
949 }
950 }
951 config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
952 configFromStringAndFormat(config);
953 } else {
954 config._isValid = false;
955 }
956 }
957
958 // date from iso format or fallback
959 function configFromString(config) {
960 var matched = aspNetJsonRegex.exec(config._i);
961
962 if (matched !== null) {
963 config._d = new Date(+matched[1]);
964 return;
965 }
966
967 configFromISO(config);
968 if (config._isValid === false) {
969 delete config._isValid;
970 utils_hooks__hooks.createFromInputFallback(config);
971 }
972 }
973
974 utils_hooks__hooks.createFromInputFallback = deprecate(
975 'moment construction falls back to js Date. This is ' +
976 'discouraged and will be removed in upcoming major ' +
977 'release. Please refer to ' +
978 'https://github.com/moment/moment/issues/1407 for more info.',
979 function (config) {
980 config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
981 }
982 );
983
984 function createDate (y, m, d, h, M, s, ms) {
985 //can't just apply() to create a date:
986 //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
987 var date = new Date(y, m, d, h, M, s, ms);
988
989 //the date constructor remaps years 0-99 to 1900-1999
990 if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
991 date.setFullYear(y);
992 }
993 return date;
994 }
995
996 function createUTCDate (y) {
997 var date = new Date(Date.UTC.apply(null, arguments));
998
999 //the Date.UTC function remaps years 0-99 to 1900-1999
1000 if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1001 date.setUTCFullYear(y);
1002 }
1003 return date;
1004 }
1005
1006 // FORMATTING
1007
1008 addFormatToken('Y', 0, 0, function () {
1009 var y = this.year();
1010 return y <= 9999 ? '' + y : '+' + y;
1011 });
1012
1013 addFormatToken(0, ['YY', 2], 0, function () {
1014 return this.year() % 100;
1015 });
1016
1017 addFormatToken(0, ['YYYY', 4], 0, 'year');
1018 addFormatToken(0, ['YYYYY', 5], 0, 'year');
1019 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1020
1021 // ALIASES
1022
1023 addUnitAlias('year', 'y');
1024
1025 // PARSING
1026
1027 addRegexToken('Y', matchSigned);
1028 addRegexToken('YY', match1to2, match2);
1029 addRegexToken('YYYY', match1to4, match4);
1030 addRegexToken('YYYYY', match1to6, match6);
1031 addRegexToken('YYYYYY', match1to6, match6);
1032
1033 addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1034 addParseToken('YYYY', function (input, array) {
1035 array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
1036 });
1037 addParseToken('YY', function (input, array) {
1038 array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
1039 });
1040 addParseToken('Y', function (input, array) {
1041 array[YEAR] = parseInt(input, 10);
1042 });
1043
1044 // HELPERS
1045
1046 function daysInYear(year) {
1047 return isLeapYear(year) ? 366 : 365;
1048 }
1049
1050 function isLeapYear(year) {
1051 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
1052 }
1053
1054 // HOOKS
1055
1056 utils_hooks__hooks.parseTwoDigitYear = function (input) {
1057 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1058 };
1059
1060 // MOMENTS
1061
1062 var getSetYear = makeGetSet('FullYear', false);
1063
1064 function getIsLeapYear () {
1065 return isLeapYear(this.year());
1066 }
1067
1068 // start-of-first-week - start-of-year
1069 function firstWeekOffset(year, dow, doy) {
1070 var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1071 fwd = 7 + dow - doy,
1072 // first-week day local weekday -- which local weekday is fwd
1073 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1074
1075 return -fwdlw + fwd - 1;
1076 }
1077
1078 //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1079 function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1080 var localWeekday = (7 + weekday - dow) % 7,
1081 weekOffset = firstWeekOffset(year, dow, doy),
1082 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1083 resYear, resDayOfYear;
1084
1085 if (dayOfYear <= 0) {
1086 resYear = year - 1;
1087 resDayOfYear = daysInYear(resYear) + dayOfYear;
1088 } else if (dayOfYear > daysInYear(year)) {
1089 resYear = year + 1;
1090 resDayOfYear = dayOfYear - daysInYear(year);
1091 } else {
1092 resYear = year;
1093 resDayOfYear = dayOfYear;
1094 }
1095
1096 return {
1097 year: resYear,
1098 dayOfYear: resDayOfYear
1099 };
1100 }
1101
1102 function weekOfYear(mom, dow, doy) {
1103 var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1104 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1105 resWeek, resYear;
1106
1107 if (week < 1) {
1108 resYear = mom.year() - 1;
1109 resWeek = week + weeksInYear(resYear, dow, doy);
1110 } else if (week > weeksInYear(mom.year(), dow, doy)) {
1111 resWeek = week - weeksInYear(mom.year(), dow, doy);
1112 resYear = mom.year() + 1;
1113 } else {
1114 resYear = mom.year();
1115 resWeek = week;
1116 }
1117
1118 return {
1119 week: resWeek,
1120 year: resYear
1121 };
1122 }
1123
1124 function weeksInYear(year, dow, doy) {
1125 var weekOffset = firstWeekOffset(year, dow, doy),
1126 weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1127 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1128 }
1129
1130 // Pick the first defined of two or three arguments.
1131 function defaults(a, b, c) {
1132 if (a != null) {
1133 return a;
1134 }
1135 if (b != null) {
1136 return b;
1137 }
1138 return c;
1139 }
1140
1141 function currentDateArray(config) {
1142 // hooks is actually the exported moment object
1143 var nowValue = new Date(utils_hooks__hooks.now());
1144 if (config._useUTC) {
1145 return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
1146 }
1147 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
1148 }
1149
1150 // convert an array to a date.
1151 // the array should mirror the parameters below
1152 // note: all values past the year are optional and will default to the lowest possible value.
1153 // [year, month, day , hour, minute, second, millisecond]
1154 function configFromArray (config) {
1155 var i, date, input = [], currentDate, yearToUse;
1156
1157 if (config._d) {
1158 return;
1159 }
1160
1161 currentDate = currentDateArray(config);
1162
1163 //compute day of the year from weeks and weekdays
1164 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
1165 dayOfYearFromWeekInfo(config);
1166 }
1167
1168 //if the day of the year is set, figure out what it is
1169 if (config._dayOfYear) {
1170 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
1171
1172 if (config._dayOfYear > daysInYear(yearToUse)) {
1173 getParsingFlags(config)._overflowDayOfYear = true;
1174 }
1175
1176 date = createUTCDate(yearToUse, 0, config._dayOfYear);
1177 config._a[MONTH] = date.getUTCMonth();
1178 config._a[DATE] = date.getUTCDate();
1179 }
1180
1181 // Default to current date.
1182 // * if no year, month, day of month are given, default to today
1183 // * if day of month is given, default month and year
1184 // * if month is given, default only year
1185 // * if year is given, don't default anything
1186 for (i = 0; i < 3 && config._a[i] == null; ++i) {
1187 config._a[i] = input[i] = currentDate[i];
1188 }
1189
1190 // Zero out whatever was not defaulted, including time
1191 for (; i < 7; i++) {
1192 config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
1193 }
1194
1195 // Check for 24:00:00.000
1196 if (config._a[HOUR] === 24 &&
1197 config._a[MINUTE] === 0 &&
1198 config._a[SECOND] === 0 &&
1199 config._a[MILLISECOND] === 0) {
1200 config._nextDay = true;
1201 config._a[HOUR] = 0;
1202 }
1203
1204 config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
1205 // Apply timezone offset from input. The actual utcOffset can be changed
1206 // with parseZone.
1207 if (config._tzm != null) {
1208 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
1209 }
1210
1211 if (config._nextDay) {
1212 config._a[HOUR] = 24;
1213 }
1214 }
1215
1216 function dayOfYearFromWeekInfo(config) {
1217 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
1218
1219 w = config._w;
1220 if (w.GG != null || w.W != null || w.E != null) {
1221 dow = 1;
1222 doy = 4;
1223
1224 // TODO: We need to take the current isoWeekYear, but that depends on
1225 // how we interpret now (local, utc, fixed offset). So create
1226 // a now version of current config (take local/utc/offset flags, and
1227 // create now).
1228 weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
1229 week = defaults(w.W, 1);
1230 weekday = defaults(w.E, 1);
1231 if (weekday < 1 || weekday > 7) {
1232 weekdayOverflow = true;
1233 }
1234 } else {
1235 dow = config._locale._week.dow;
1236 doy = config._locale._week.doy;
1237
1238 weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
1239 week = defaults(w.w, 1);
1240
1241 if (w.d != null) {
1242 // weekday -- low day numbers are considered next week
1243 weekday = w.d;
1244 if (weekday < 0 || weekday > 6) {
1245 weekdayOverflow = true;
1246 }
1247 } else if (w.e != null) {
1248 // local weekday -- counting starts from begining of week
1249 weekday = w.e + dow;
1250 if (w.e < 0 || w.e > 6) {
1251 weekdayOverflow = true;
1252 }
1253 } else {
1254 // default to begining of week
1255 weekday = dow;
1256 }
1257 }
1258 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
1259 getParsingFlags(config)._overflowWeeks = true;
1260 } else if (weekdayOverflow != null) {
1261 getParsingFlags(config)._overflowWeekday = true;
1262 } else {
1263 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
1264 config._a[YEAR] = temp.year;
1265 config._dayOfYear = temp.dayOfYear;
1266 }
1267 }
1268
1269 // constant that refers to the ISO standard
1270 utils_hooks__hooks.ISO_8601 = function () {};
1271
1272 // date from string and format string
1273 function configFromStringAndFormat(config) {
1274 // TODO: Move this to another part of the creation flow to prevent circular deps
1275 if (config._f === utils_hooks__hooks.ISO_8601) {
1276 configFromISO(config);
1277 return;
1278 }
1279
1280 config._a = [];
1281 getParsingFlags(config).empty = true;
1282
1283 // This array is used to make a Date, either with `new Date` or `Date.UTC`
1284 var string = '' + config._i,
1285 i, parsedInput, tokens, token, skipped,
1286 stringLength = string.length,
1287 totalParsedInputLength = 0;
1288
1289 tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
1290
1291 for (i = 0; i < tokens.length; i++) {
1292 token = tokens[i];
1293 parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
1294 // console.log('token', token, 'parsedInput', parsedInput,
1295 // 'regex', getParseRegexForToken(token, config));
1296 if (parsedInput) {
1297 skipped = string.substr(0, string.indexOf(parsedInput));
1298 if (skipped.length > 0) {
1299 getParsingFlags(config).unusedInput.push(skipped);
1300 }
1301 string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
1302 totalParsedInputLength += parsedInput.length;
1303 }
1304 // don't parse if it's not a known token
1305 if (formatTokenFunctions[token]) {
1306 if (parsedInput) {
1307 getParsingFlags(config).empty = false;
1308 }
1309 else {
1310 getParsingFlags(config).unusedTokens.push(token);
1311 }
1312 addTimeToArrayFromToken(token, parsedInput, config);
1313 }
1314 else if (config._strict && !parsedInput) {
1315 getParsingFlags(config).unusedTokens.push(token);
1316 }
1317 }
1318
1319 // add remaining unparsed input length to the string
1320 getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
1321 if (string.length > 0) {
1322 getParsingFlags(config).unusedInput.push(string);
1323 }
1324
1325 // clear _12h flag if hour is <= 12
1326 if (getParsingFlags(config).bigHour === true &&
1327 config._a[HOUR] <= 12 &&
1328 config._a[HOUR] > 0) {
1329 getParsingFlags(config).bigHour = undefined;
1330 }
1331 // handle meridiem
1332 config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
1333
1334 configFromArray(config);
1335 checkOverflow(config);
1336 }
1337
1338
1339 function meridiemFixWrap (locale, hour, meridiem) {
1340 var isPm;
1341
1342 if (meridiem == null) {
1343 // nothing to do
1344 return hour;
1345 }
1346 if (locale.meridiemHour != null) {
1347 return locale.meridiemHour(hour, meridiem);
1348 } else if (locale.isPM != null) {
1349 // Fallback
1350 isPm = locale.isPM(meridiem);
1351 if (isPm && hour < 12) {
1352 hour += 12;
1353 }
1354 if (!isPm && hour === 12) {
1355 hour = 0;
1356 }
1357 return hour;
1358 } else {
1359 // this is not supposed to happen
1360 return hour;
1361 }
1362 }
1363
1364 // date from string and array of format strings
1365 function configFromStringAndArray(config) {
1366 var tempConfig,
1367 bestMoment,
1368
1369 scoreToBeat,
1370 i,
1371 currentScore;
1372
1373 if (config._f.length === 0) {
1374 getParsingFlags(config).invalidFormat = true;
1375 config._d = new Date(NaN);
1376 return;
1377 }
1378
1379 for (i = 0; i < config._f.length; i++) {
1380 currentScore = 0;
1381 tempConfig = copyConfig({}, config);
1382 if (config._useUTC != null) {
1383 tempConfig._useUTC = config._useUTC;
1384 }
1385 tempConfig._f = config._f[i];
1386 configFromStringAndFormat(tempConfig);
1387
1388 if (!valid__isValid(tempConfig)) {
1389 continue;
1390 }
1391
1392 // if there is any input that was not parsed add a penalty for that format
1393 currentScore += getParsingFlags(tempConfig).charsLeftOver;
1394
1395 //or tokens
1396 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
1397
1398 getParsingFlags(tempConfig).score = currentScore;
1399
1400 if (scoreToBeat == null || currentScore < scoreToBeat) {
1401 scoreToBeat = currentScore;
1402 bestMoment = tempConfig;
1403 }
1404 }
1405
1406 extend(config, bestMoment || tempConfig);
1407 }
1408
1409 function configFromObject(config) {
1410 if (config._d) {
1411 return;
1412 }
1413
1414 var i = normalizeObjectUnits(config._i);
1415 config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
1416 return obj && parseInt(obj, 10);
1417 });
1418
1419 configFromArray(config);
1420 }
1421
1422 function createFromConfig (config) {
1423 var res = new Moment(checkOverflow(prepareConfig(config)));
1424 if (res._nextDay) {
1425 // Adding is smart enough around DST
1426 res.add(1, 'd');
1427 res._nextDay = undefined;
1428 }
1429
1430 return res;
1431 }
1432
1433 function prepareConfig (config) {
1434 var input = config._i,
1435 format = config._f;
1436
1437 config._locale = config._locale || locale_locales__getLocale(config._l);
1438
1439 if (input === null || (format === undefined && input === '')) {
1440 return valid__createInvalid({nullInput: true});
1441 }
1442
1443 if (typeof input === 'string') {
1444 config._i = input = config._locale.preparse(input);
1445 }
1446
1447 if (isMoment(input)) {
1448 return new Moment(checkOverflow(input));
1449 } else if (isArray(format)) {
1450 configFromStringAndArray(config);
1451 } else if (format) {
1452 configFromStringAndFormat(config);
1453 } else if (isDate(input)) {
1454 config._d = input;
1455 } else {
1456 configFromInput(config);
1457 }
1458
1459 if (!valid__isValid(config)) {
1460 config._d = null;
1461 }
1462
1463 return config;
1464 }
1465
1466 function configFromInput(config) {
1467 var input = config._i;
1468 if (input === undefined) {
1469 config._d = new Date(utils_hooks__hooks.now());
1470 } else if (isDate(input)) {
1471 config._d = new Date(+input);
1472 } else if (typeof input === 'string') {
1473 configFromString(config);
1474 } else if (isArray(input)) {
1475 config._a = map(input.slice(0), function (obj) {
1476 return parseInt(obj, 10);
1477 });
1478 configFromArray(config);
1479 } else if (typeof(input) === 'object') {
1480 configFromObject(config);
1481 } else if (typeof(input) === 'number') {
1482 // from milliseconds
1483 config._d = new Date(input);
1484 } else {
1485 utils_hooks__hooks.createFromInputFallback(config);
1486 }
1487 }
1488
1489 function createLocalOrUTC (input, format, locale, strict, isUTC) {
1490 var c = {};
1491
1492 if (typeof(locale) === 'boolean') {
1493 strict = locale;
1494 locale = undefined;
1495 }
1496 // object construction must be done this way.
1497 // https://github.com/moment/moment/issues/1423
1498 c._isAMomentObject = true;
1499 c._useUTC = c._isUTC = isUTC;
1500 c._l = locale;
1501 c._i = input;
1502 c._f = format;
1503 c._strict = strict;
1504
1505 return createFromConfig(c);
1506 }
1507
1508 function local__createLocal (input, format, locale, strict) {
1509 return createLocalOrUTC(input, format, locale, strict, false);
1510 }
1511
1512 var prototypeMin = deprecate(
1513 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
1514 function () {
1515 var other = local__createLocal.apply(null, arguments);
1516 if (this.isValid() && other.isValid()) {
1517 return other < this ? this : other;
1518 } else {
1519 return valid__createInvalid();
1520 }
1521 }
1522 );
1523
1524 var prototypeMax = deprecate(
1525 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
1526 function () {
1527 var other = local__createLocal.apply(null, arguments);
1528 if (this.isValid() && other.isValid()) {
1529 return other > this ? this : other;
1530 } else {
1531 return valid__createInvalid();
1532 }
1533 }
1534 );
1535
1536 // Pick a moment m from moments so that m[fn](other) is true for all
1537 // other. This relies on the function fn to be transitive.
1538 //
1539 // moments should either be an array of moment objects or an array, whose
1540 // first element is an array of moment objects.
1541 function pickBy(fn, moments) {
1542 var res, i;
1543 if (moments.length === 1 && isArray(moments[0])) {
1544 moments = moments[0];
1545 }
1546 if (!moments.length) {
1547 return local__createLocal();
1548 }
1549 res = moments[0];
1550 for (i = 1; i < moments.length; ++i) {
1551 if (!moments[i].isValid() || moments[i][fn](res)) {
1552 res = moments[i];
1553 }
1554 }
1555 return res;
1556 }
1557
1558 // TODO: Use [].sort instead?
1559 function min () {
1560 var args = [].slice.call(arguments, 0);
1561
1562 return pickBy('isBefore', args);
1563 }
1564
1565 function max () {
1566 var args = [].slice.call(arguments, 0);
1567
1568 return pickBy('isAfter', args);
1569 }
1570
1571 var now = function () {
1572 return Date.now ? Date.now() : +(new Date());
1573 };
1574
1575 function Duration (duration) {
1576 var normalizedInput = normalizeObjectUnits(duration),
1577 years = normalizedInput.year || 0,
1578 quarters = normalizedInput.quarter || 0,
1579 months = normalizedInput.month || 0,
1580 weeks = normalizedInput.week || 0,
1581 days = normalizedInput.day || 0,
1582 hours = normalizedInput.hour || 0,
1583 minutes = normalizedInput.minute || 0,
1584 seconds = normalizedInput.second || 0,
1585 milliseconds = normalizedInput.millisecond || 0;
1586
1587 // representation for dateAddRemove
1588 this._milliseconds = +milliseconds +
1589 seconds * 1e3 + // 1000
1590 minutes * 6e4 + // 1000 * 60
1591 hours * 36e5; // 1000 * 60 * 60
1592 // Because of dateAddRemove treats 24 hours as different from a
1593 // day when working around DST, we need to store them separately
1594 this._days = +days +
1595 weeks * 7;
1596 // It is impossible translate months into days without knowing
1597 // which months you are are talking about, so we have to store
1598 // it separately.
1599 this._months = +months +
1600 quarters * 3 +
1601 years * 12;
1602
1603 this._data = {};
1604
1605 this._locale = locale_locales__getLocale();
1606
1607 this._bubble();
1608 }
1609
1610 function isDuration (obj) {
1611 return obj instanceof Duration;
1612 }
1613
1614 // FORMATTING
1615
1616 function offset (token, separator) {
1617 addFormatToken(token, 0, 0, function () {
1618 var offset = this.utcOffset();
1619 var sign = '+';
1620 if (offset < 0) {
1621 offset = -offset;
1622 sign = '-';
1623 }
1624 return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
1625 });
1626 }
1627
1628 offset('Z', ':');
1629 offset('ZZ', '');
1630
1631 // PARSING
1632
1633 addRegexToken('Z', matchShortOffset);
1634 addRegexToken('ZZ', matchShortOffset);
1635 addParseToken(['Z', 'ZZ'], function (input, array, config) {
1636 config._useUTC = true;
1637 config._tzm = offsetFromString(matchShortOffset, input);
1638 });
1639
1640 // HELPERS
1641
1642 // timezone chunker
1643 // '+10:00' > ['10', '00']
1644 // '-1530' > ['-15', '30']
1645 var chunkOffset = /([\+\-]|\d\d)/gi;
1646
1647 function offsetFromString(matcher, string) {
1648 var matches = ((string || '').match(matcher) || []);
1649 var chunk = matches[matches.length - 1] || [];
1650 var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
1651 var minutes = +(parts[1] * 60) + toInt(parts[2]);
1652
1653 return parts[0] === '+' ? minutes : -minutes;
1654 }
1655
1656 // Return a moment from input, that is local/utc/zone equivalent to model.
1657 function cloneWithOffset(input, model) {
1658 var res, diff;
1659 if (model._isUTC) {
1660 res = model.clone();
1661 diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
1662 // Use low-level api, because this fn is low-level api.
1663 res._d.setTime(+res._d + diff);
1664 utils_hooks__hooks.updateOffset(res, false);
1665 return res;
1666 } else {
1667 return local__createLocal(input).local();
1668 }
1669 }
1670
1671 function getDateOffset (m) {
1672 // On Firefox.24 Date#getTimezoneOffset returns a floating point.
1673 // https://github.com/moment/moment/pull/1871
1674 return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
1675 }
1676
1677 // HOOKS
1678
1679 // This function will be called whenever a moment is mutated.
1680 // It is intended to keep the offset in sync with the timezone.
1681 utils_hooks__hooks.updateOffset = function () {};
1682
1683 // MOMENTS
1684
1685 // keepLocalTime = true means only change the timezone, without
1686 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
1687 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
1688 // +0200, so we adjust the time as needed, to be valid.
1689 //
1690 // Keeping the time actually adds/subtracts (one hour)
1691 // from the actual represented time. That is why we call updateOffset
1692 // a second time. In case it wants us to change the offset again
1693 // _changeInProgress == true case, then we have to adjust, because
1694 // there is no such time in the given timezone.
1695 function getSetOffset (input, keepLocalTime) {
1696 var offset = this._offset || 0,
1697 localAdjust;
1698 if (!this.isValid()) {
1699 return input != null ? this : NaN;
1700 }
1701 if (input != null) {
1702 if (typeof input === 'string') {
1703 input = offsetFromString(matchShortOffset, input);
1704 } else if (Math.abs(input) < 16) {
1705 input = input * 60;
1706 }
1707 if (!this._isUTC && keepLocalTime) {
1708 localAdjust = getDateOffset(this);
1709 }
1710 this._offset = input;
1711 this._isUTC = true;
1712 if (localAdjust != null) {
1713 this.add(localAdjust, 'm');
1714 }
1715 if (offset !== input) {
1716 if (!keepLocalTime || this._changeInProgress) {
1717 add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
1718 } else if (!this._changeInProgress) {
1719 this._changeInProgress = true;
1720 utils_hooks__hooks.updateOffset(this, true);
1721 this._changeInProgress = null;
1722 }
1723 }
1724 return this;
1725 } else {
1726 return this._isUTC ? offset : getDateOffset(this);
1727 }
1728 }
1729
1730 function getSetZone (input, keepLocalTime) {
1731 if (input != null) {
1732 if (typeof input !== 'string') {
1733 input = -input;
1734 }
1735
1736 this.utcOffset(input, keepLocalTime);
1737
1738 return this;
1739 } else {
1740 return -this.utcOffset();
1741 }
1742 }
1743
1744 function setOffsetToUTC (keepLocalTime) {
1745 return this.utcOffset(0, keepLocalTime);
1746 }
1747
1748 function setOffsetToLocal (keepLocalTime) {
1749 if (this._isUTC) {
1750 this.utcOffset(0, keepLocalTime);
1751 this._isUTC = false;
1752
1753 if (keepLocalTime) {
1754 this.subtract(getDateOffset(this), 'm');
1755 }
1756 }
1757 return this;
1758 }
1759
1760 function setOffsetToParsedOffset () {
1761 if (this._tzm) {
1762 this.utcOffset(this._tzm);
1763 } else if (typeof this._i === 'string') {
1764 this.utcOffset(offsetFromString(matchOffset, this._i));
1765 }
1766 return this;
1767 }
1768
1769 function hasAlignedHourOffset (input) {
1770 if (!this.isValid()) {
1771 return false;
1772 }
1773 input = input ? local__createLocal(input).utcOffset() : 0;
1774
1775 return (this.utcOffset() - input) % 60 === 0;
1776 }
1777
1778 function isDaylightSavingTime () {
1779 return (
1780 this.utcOffset() > this.clone().month(0).utcOffset() ||
1781 this.utcOffset() > this.clone().month(5).utcOffset()
1782 );
1783 }
1784
1785 function isDaylightSavingTimeShifted () {
1786 if (!isUndefined(this._isDSTShifted)) {
1787 return this._isDSTShifted;
1788 }
1789
1790 var c = {};
1791
1792 copyConfig(c, this);
1793 c = prepareConfig(c);
1794
1795 if (c._a) {
1796 var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
1797 this._isDSTShifted = this.isValid() &&
1798 compareArrays(c._a, other.toArray()) > 0;
1799 } else {
1800 this._isDSTShifted = false;
1801 }
1802
1803 return this._isDSTShifted;
1804 }
1805
1806 function isLocal () {
1807 return this.isValid() ? !this._isUTC : false;
1808 }
1809
1810 function isUtcOffset () {
1811 return this.isValid() ? this._isUTC : false;
1812 }
1813
1814 function isUtc () {
1815 return this.isValid() ? this._isUTC && this._offset === 0 : false;
1816 }
1817
1818 // ASP.NET json date format regex
1819 var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/;
1820
1821 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
1822 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
1823 var isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
1824
1825 function create__createDuration (input, key) {
1826 var duration = input,
1827 // matching against regexp is expensive, do it on demand
1828 match = null,
1829 sign,
1830 ret,
1831 diffRes;
1832
1833 if (isDuration(input)) {
1834 duration = {
1835 ms : input._milliseconds,
1836 d : input._days,
1837 M : input._months
1838 };
1839 } else if (typeof input === 'number') {
1840 duration = {};
1841 if (key) {
1842 duration[key] = input;
1843 } else {
1844 duration.milliseconds = input;
1845 }
1846 } else if (!!(match = aspNetRegex.exec(input))) {
1847 sign = (match[1] === '-') ? -1 : 1;
1848 duration = {
1849 y : 0,
1850 d : toInt(match[DATE]) * sign,
1851 h : toInt(match[HOUR]) * sign,
1852 m : toInt(match[MINUTE]) * sign,
1853 s : toInt(match[SECOND]) * sign,
1854 ms : toInt(match[MILLISECOND]) * sign
1855 };
1856 } else if (!!(match = isoRegex.exec(input))) {
1857 sign = (match[1] === '-') ? -1 : 1;
1858 duration = {
1859 y : parseIso(match[2], sign),
1860 M : parseIso(match[3], sign),
1861 d : parseIso(match[4], sign),
1862 h : parseIso(match[5], sign),
1863 m : parseIso(match[6], sign),
1864 s : parseIso(match[7], sign),
1865 w : parseIso(match[8], sign)
1866 };
1867 } else if (duration == null) {// checks for null or undefined
1868 duration = {};
1869 } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
1870 diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
1871
1872 duration = {};
1873 duration.ms = diffRes.milliseconds;
1874 duration.M = diffRes.months;
1875 }
1876
1877 ret = new Duration(duration);
1878
1879 if (isDuration(input) && hasOwnProp(input, '_locale')) {
1880 ret._locale = input._locale;
1881 }
1882
1883 return ret;
1884 }
1885
1886 create__createDuration.fn = Duration.prototype;
1887
1888 function parseIso (inp, sign) {
1889 // We'd normally use ~~inp for this, but unfortunately it also
1890 // converts floats to ints.
1891 // inp may be undefined, so careful calling replace on it.
1892 var res = inp && parseFloat(inp.replace(',', '.'));
1893 // apply sign while we're at it
1894 return (isNaN(res) ? 0 : res) * sign;
1895 }
1896
1897 function positiveMomentsDifference(base, other) {
1898 var res = {milliseconds: 0, months: 0};
1899
1900 res.months = other.month() - base.month() +
1901 (other.year() - base.year()) * 12;
1902 if (base.clone().add(res.months, 'M').isAfter(other)) {
1903 --res.months;
1904 }
1905
1906 res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
1907
1908 return res;
1909 }
1910
1911 function momentsDifference(base, other) {
1912 var res;
1913 if (!(base.isValid() && other.isValid())) {
1914 return {milliseconds: 0, months: 0};
1915 }
1916
1917 other = cloneWithOffset(other, base);
1918 if (base.isBefore(other)) {
1919 res = positiveMomentsDifference(base, other);
1920 } else {
1921 res = positiveMomentsDifference(other, base);
1922 res.milliseconds = -res.milliseconds;
1923 res.months = -res.months;
1924 }
1925
1926 return res;
1927 }
1928
1929 // TODO: remove 'name' arg after deprecation is removed
1930 function createAdder(direction, name) {
1931 return function (val, period) {
1932 var dur, tmp;
1933 //invert the arguments, but complain about it
1934 if (period !== null && !isNaN(+period)) {
1935 deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
1936 tmp = val; val = period; period = tmp;
1937 }
1938
1939 val = typeof val === 'string' ? +val : val;
1940 dur = create__createDuration(val, period);
1941 add_subtract__addSubtract(this, dur, direction);
1942 return this;
1943 };
1944 }
1945
1946 function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
1947 var milliseconds = duration._milliseconds,
1948 days = duration._days,
1949 months = duration._months;
1950
1951 if (!mom.isValid()) {
1952 // No op
1953 return;
1954 }
1955
1956 updateOffset = updateOffset == null ? true : updateOffset;
1957
1958 if (milliseconds) {
1959 mom._d.setTime(+mom._d + milliseconds * isAdding);
1960 }
1961 if (days) {
1962 get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
1963 }
1964 if (months) {
1965 setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
1966 }
1967 if (updateOffset) {
1968 utils_hooks__hooks.updateOffset(mom, days || months);
1969 }
1970 }
1971
1972 var add_subtract__add = createAdder(1, 'add');
1973 var add_subtract__subtract = createAdder(-1, 'subtract');
1974
1975 function moment_calendar__calendar (time, formats) {
1976 // We want to compare the start of today, vs this.
1977 // Getting start-of-today depends on whether we're local/utc/offset or not.
1978 var now = time || local__createLocal(),
1979 sod = cloneWithOffset(now, this).startOf('day'),
1980 diff = this.diff(sod, 'days', true),
1981 format = diff < -6 ? 'sameElse' :
1982 diff < -1 ? 'lastWeek' :
1983 diff < 0 ? 'lastDay' :
1984 diff < 1 ? 'sameDay' :
1985 diff < 2 ? 'nextDay' :
1986 diff < 7 ? 'nextWeek' : 'sameElse';
1987
1988 var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]);
1989
1990 return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));
1991 }
1992
1993 function clone () {
1994 return new Moment(this);
1995 }
1996
1997 function isAfter (input, units) {
1998 var localInput = isMoment(input) ? input : local__createLocal(input);
1999 if (!(this.isValid() && localInput.isValid())) {
2000 return false;
2001 }
2002 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
2003 if (units === 'millisecond') {
2004 return +this > +localInput;
2005 } else {
2006 return +localInput < +this.clone().startOf(units);
2007 }
2008 }
2009
2010 function isBefore (input, units) {
2011 var localInput = isMoment(input) ? input : local__createLocal(input);
2012 if (!(this.isValid() && localInput.isValid())) {
2013 return false;
2014 }
2015 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
2016 if (units === 'millisecond') {
2017 return +this < +localInput;
2018 } else {
2019 return +this.clone().endOf(units) < +localInput;
2020 }
2021 }
2022
2023 function isBetween (from, to, units) {
2024 return this.isAfter(from, units) && this.isBefore(to, units);
2025 }
2026
2027 function isSame (input, units) {
2028 var localInput = isMoment(input) ? input : local__createLocal(input),
2029 inputMs;
2030 if (!(this.isValid() && localInput.isValid())) {
2031 return false;
2032 }
2033 units = normalizeUnits(units || 'millisecond');
2034 if (units === 'millisecond') {
2035 return +this === +localInput;
2036 } else {
2037 inputMs = +localInput;
2038 return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
2039 }
2040 }
2041
2042 function isSameOrAfter (input, units) {
2043 return this.isSame(input, units) || this.isAfter(input,units);
2044 }
2045
2046 function isSameOrBefore (input, units) {
2047 return this.isSame(input, units) || this.isBefore(input,units);
2048 }
2049
2050 function diff (input, units, asFloat) {
2051 var that,
2052 zoneDelta,
2053 delta, output;
2054
2055 if (!this.isValid()) {
2056 return NaN;
2057 }
2058
2059 that = cloneWithOffset(input, this);
2060
2061 if (!that.isValid()) {
2062 return NaN;
2063 }
2064
2065 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
2066
2067 units = normalizeUnits(units);
2068
2069 if (units === 'year' || units === 'month' || units === 'quarter') {
2070 output = monthDiff(this, that);
2071 if (units === 'quarter') {
2072 output = output / 3;
2073 } else if (units === 'year') {
2074 output = output / 12;
2075 }
2076 } else {
2077 delta = this - that;
2078 output = units === 'second' ? delta / 1e3 : // 1000
2079 units === 'minute' ? delta / 6e4 : // 1000 * 60
2080 units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
2081 units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
2082 units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
2083 delta;
2084 }
2085 return asFloat ? output : absFloor(output);
2086 }
2087
2088 function monthDiff (a, b) {
2089 // difference in months
2090 var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
2091 // b is in (anchor - 1 month, anchor + 1 month)
2092 anchor = a.clone().add(wholeMonthDiff, 'months'),
2093 anchor2, adjust;
2094
2095 if (b - anchor < 0) {
2096 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
2097 // linear across the month
2098 adjust = (b - anchor) / (anchor - anchor2);
2099 } else {
2100 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
2101 // linear across the month
2102 adjust = (b - anchor) / (anchor2 - anchor);
2103 }
2104
2105 return -(wholeMonthDiff + adjust);
2106 }
2107
2108 utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
2109
2110 function toString () {
2111 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
2112 }
2113
2114 function moment_format__toISOString () {
2115 var m = this.clone().utc();
2116 if (0 < m.year() && m.year() <= 9999) {
2117 if (isFunction(Date.prototype.toISOString)) {
2118 // native implementation is ~50x faster, use it when we can
2119 return this.toDate().toISOString();
2120 } else {
2121 return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
2122 }
2123 } else {
2124 return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
2125 }
2126 }
2127
2128 function format (inputString) {
2129 var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
2130 return this.localeData().postformat(output);
2131 }
2132
2133 function from (time, withoutSuffix) {
2134 if (this.isValid() &&
2135 ((isMoment(time) && time.isValid()) ||
2136 local__createLocal(time).isValid())) {
2137 return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
2138 } else {
2139 return this.localeData().invalidDate();
2140 }
2141 }
2142
2143 function fromNow (withoutSuffix) {
2144 return this.from(local__createLocal(), withoutSuffix);
2145 }
2146
2147 function to (time, withoutSuffix) {
2148 if (this.isValid() &&
2149 ((isMoment(time) && time.isValid()) ||
2150 local__createLocal(time).isValid())) {
2151 return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
2152 } else {
2153 return this.localeData().invalidDate();
2154 }
2155 }
2156
2157 function toNow (withoutSuffix) {
2158 return this.to(local__createLocal(), withoutSuffix);
2159 }
2160
2161 // If passed a locale key, it will set the locale for this
2162 // instance. Otherwise, it will return the locale configuration
2163 // variables for this instance.
2164 function locale (key) {
2165 var newLocaleData;
2166
2167 if (key === undefined) {
2168 return this._locale._abbr;
2169 } else {
2170 newLocaleData = locale_locales__getLocale(key);
2171 if (newLocaleData != null) {
2172 this._locale = newLocaleData;
2173 }
2174 return this;
2175 }
2176 }
2177
2178 var lang = deprecate(
2179 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
2180 function (key) {
2181 if (key === undefined) {
2182 return this.localeData();
2183 } else {
2184 return this.locale(key);
2185 }
2186 }
2187 );
2188
2189 function localeData () {
2190 return this._locale;
2191 }
2192
2193 function startOf (units) {
2194 units = normalizeUnits(units);
2195 // the following switch intentionally omits break keywords
2196 // to utilize falling through the cases.
2197 switch (units) {
2198 case 'year':
2199 this.month(0);
2200 /* falls through */
2201 case 'quarter':
2202 case 'month':
2203 this.date(1);
2204 /* falls through */
2205 case 'week':
2206 case 'isoWeek':
2207 case 'day':
2208 this.hours(0);
2209 /* falls through */
2210 case 'hour':
2211 this.minutes(0);
2212 /* falls through */
2213 case 'minute':
2214 this.seconds(0);
2215 /* falls through */
2216 case 'second':
2217 this.milliseconds(0);
2218 }
2219
2220 // weeks are a special case
2221 if (units === 'week') {
2222 this.weekday(0);
2223 }
2224 if (units === 'isoWeek') {
2225 this.isoWeekday(1);
2226 }
2227
2228 // quarters are also special
2229 if (units === 'quarter') {
2230 this.month(Math.floor(this.month() / 3) * 3);
2231 }
2232
2233 return this;
2234 }
2235
2236 function endOf (units) {
2237 units = normalizeUnits(units);
2238 if (units === undefined || units === 'millisecond') {
2239 return this;
2240 }
2241 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
2242 }
2243
2244 function to_type__valueOf () {
2245 return +this._d - ((this._offset || 0) * 60000);
2246 }
2247
2248 function unix () {
2249 return Math.floor(+this / 1000);
2250 }
2251
2252 function toDate () {
2253 return this._offset ? new Date(+this) : this._d;
2254 }
2255
2256 function toArray () {
2257 var m = this;
2258 return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
2259 }
2260
2261 function toObject () {
2262 var m = this;
2263 return {
2264 years: m.year(),
2265 months: m.month(),
2266 date: m.date(),
2267 hours: m.hours(),
2268 minutes: m.minutes(),
2269 seconds: m.seconds(),
2270 milliseconds: m.milliseconds()
2271 };
2272 }
2273
2274 function toJSON () {
2275 // JSON.stringify(new Date(NaN)) === 'null'
2276 return this.isValid() ? this.toISOString() : 'null';
2277 }
2278
2279 function moment_valid__isValid () {
2280 return valid__isValid(this);
2281 }
2282
2283 function parsingFlags () {
2284 return extend({}, getParsingFlags(this));
2285 }
2286
2287 function invalidAt () {
2288 return getParsingFlags(this).overflow;
2289 }
2290
2291 function creationData() {
2292 return {
2293 input: this._i,
2294 format: this._f,
2295 locale: this._locale,
2296 isUTC: this._isUTC,
2297 strict: this._strict
2298 };
2299 }
2300
2301 // FORMATTING
2302
2303 addFormatToken(0, ['gg', 2], 0, function () {
2304 return this.weekYear() % 100;
2305 });
2306
2307 addFormatToken(0, ['GG', 2], 0, function () {
2308 return this.isoWeekYear() % 100;
2309 });
2310
2311 function addWeekYearFormatToken (token, getter) {
2312 addFormatToken(0, [token, token.length], 0, getter);
2313 }
2314
2315 addWeekYearFormatToken('gggg', 'weekYear');
2316 addWeekYearFormatToken('ggggg', 'weekYear');
2317 addWeekYearFormatToken('GGGG', 'isoWeekYear');
2318 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
2319
2320 // ALIASES
2321
2322 addUnitAlias('weekYear', 'gg');
2323 addUnitAlias('isoWeekYear', 'GG');
2324
2325 // PARSING
2326
2327 addRegexToken('G', matchSigned);
2328 addRegexToken('g', matchSigned);
2329 addRegexToken('GG', match1to2, match2);
2330 addRegexToken('gg', match1to2, match2);
2331 addRegexToken('GGGG', match1to4, match4);
2332 addRegexToken('gggg', match1to4, match4);
2333 addRegexToken('GGGGG', match1to6, match6);
2334 addRegexToken('ggggg', match1to6, match6);
2335
2336 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
2337 week[token.substr(0, 2)] = toInt(input);
2338 });
2339
2340 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
2341 week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
2342 });
2343
2344 // MOMENTS
2345
2346 function getSetWeekYear (input) {
2347 return getSetWeekYearHelper.call(this,
2348 input,
2349 this.week(),
2350 this.weekday(),
2351 this.localeData()._week.dow,
2352 this.localeData()._week.doy);
2353 }
2354
2355 function getSetISOWeekYear (input) {
2356 return getSetWeekYearHelper.call(this,
2357 input, this.isoWeek(), this.isoWeekday(), 1, 4);
2358 }
2359
2360 function getISOWeeksInYear () {
2361 return weeksInYear(this.year(), 1, 4);
2362 }
2363
2364 function getWeeksInYear () {
2365 var weekInfo = this.localeData()._week;
2366 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
2367 }
2368
2369 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
2370 var weeksTarget;
2371 if (input == null) {
2372 return weekOfYear(this, dow, doy).year;
2373 } else {
2374 weeksTarget = weeksInYear(input, dow, doy);
2375 if (week > weeksTarget) {
2376 week = weeksTarget;
2377 }
2378 return setWeekAll.call(this, input, week, weekday, dow, doy);
2379 }
2380 }
2381
2382 function setWeekAll(weekYear, week, weekday, dow, doy) {
2383 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
2384 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
2385
2386 // console.log("got", weekYear, week, weekday, "set", date.toISOString());
2387 this.year(date.getUTCFullYear());
2388 this.month(date.getUTCMonth());
2389 this.date(date.getUTCDate());
2390 return this;
2391 }
2392
2393 // FORMATTING
2394
2395 addFormatToken('Q', 0, 'Qo', 'quarter');
2396
2397 // ALIASES
2398
2399 addUnitAlias('quarter', 'Q');
2400
2401 // PARSING
2402
2403 addRegexToken('Q', match1);
2404 addParseToken('Q', function (input, array) {
2405 array[MONTH] = (toInt(input) - 1) * 3;
2406 });
2407
2408 // MOMENTS
2409
2410 function getSetQuarter (input) {
2411 return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
2412 }
2413
2414 // FORMATTING
2415
2416 addFormatToken('w', ['ww', 2], 'wo', 'week');
2417 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
2418
2419 // ALIASES
2420
2421 addUnitAlias('week', 'w');
2422 addUnitAlias('isoWeek', 'W');
2423
2424 // PARSING
2425
2426 addRegexToken('w', match1to2);
2427 addRegexToken('ww', match1to2, match2);
2428 addRegexToken('W', match1to2);
2429 addRegexToken('WW', match1to2, match2);
2430
2431 addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
2432 week[token.substr(0, 1)] = toInt(input);
2433 });
2434
2435 // HELPERS
2436
2437 // LOCALES
2438
2439 function localeWeek (mom) {
2440 return weekOfYear(mom, this._week.dow, this._week.doy).week;
2441 }
2442
2443 var defaultLocaleWeek = {
2444 dow : 0, // Sunday is the first day of the week.
2445 doy : 6 // The week that contains Jan 1st is the first week of the year.
2446 };
2447
2448 function localeFirstDayOfWeek () {
2449 return this._week.dow;
2450 }
2451
2452 function localeFirstDayOfYear () {
2453 return this._week.doy;
2454 }
2455
2456 // MOMENTS
2457
2458 function getSetWeek (input) {
2459 var week = this.localeData().week(this);
2460 return input == null ? week : this.add((input - week) * 7, 'd');
2461 }
2462
2463 function getSetISOWeek (input) {
2464 var week = weekOfYear(this, 1, 4).week;
2465 return input == null ? week : this.add((input - week) * 7, 'd');
2466 }
2467
2468 // FORMATTING
2469
2470 addFormatToken('D', ['DD', 2], 'Do', 'date');
2471
2472 // ALIASES
2473
2474 addUnitAlias('date', 'D');
2475
2476 // PARSING
2477
2478 addRegexToken('D', match1to2);
2479 addRegexToken('DD', match1to2, match2);
2480 addRegexToken('Do', function (isStrict, locale) {
2481 return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
2482 });
2483
2484 addParseToken(['D', 'DD'], DATE);
2485 addParseToken('Do', function (input, array) {
2486 array[DATE] = toInt(input.match(match1to2)[0], 10);
2487 });
2488
2489 // MOMENTS
2490
2491 var getSetDayOfMonth = makeGetSet('Date', true);
2492
2493 // FORMATTING
2494
2495 addFormatToken('d', 0, 'do', 'day');
2496
2497 addFormatToken('dd', 0, 0, function (format) {
2498 return this.localeData().weekdaysMin(this, format);
2499 });
2500
2501 addFormatToken('ddd', 0, 0, function (format) {
2502 return this.localeData().weekdaysShort(this, format);
2503 });
2504
2505 addFormatToken('dddd', 0, 0, function (format) {
2506 return this.localeData().weekdays(this, format);
2507 });
2508
2509 addFormatToken('e', 0, 0, 'weekday');
2510 addFormatToken('E', 0, 0, 'isoWeekday');
2511
2512 // ALIASES
2513
2514 addUnitAlias('day', 'd');
2515 addUnitAlias('weekday', 'e');
2516 addUnitAlias('isoWeekday', 'E');
2517
2518 // PARSING
2519
2520 addRegexToken('d', match1to2);
2521 addRegexToken('e', match1to2);
2522 addRegexToken('E', match1to2);
2523 addRegexToken('dd', matchWord);
2524 addRegexToken('ddd', matchWord);
2525 addRegexToken('dddd', matchWord);
2526
2527 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
2528 var weekday = config._locale.weekdaysParse(input, token, config._strict);
2529 // if we didn't get a weekday name, mark the date as invalid
2530 if (weekday != null) {
2531 week.d = weekday;
2532 } else {
2533 getParsingFlags(config).invalidWeekday = input;
2534 }
2535 });
2536
2537 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
2538 week[token] = toInt(input);
2539 });
2540
2541 // HELPERS
2542
2543 function parseWeekday(input, locale) {
2544 if (typeof input !== 'string') {
2545 return input;
2546 }
2547
2548 if (!isNaN(input)) {
2549 return parseInt(input, 10);
2550 }
2551
2552 input = locale.weekdaysParse(input);
2553 if (typeof input === 'number') {
2554 return input;
2555 }
2556
2557 return null;
2558 }
2559
2560 // LOCALES
2561
2562 var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
2563 function localeWeekdays (m, format) {
2564 return isArray(this._weekdays) ? this._weekdays[m.day()] :
2565 this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
2566 }
2567
2568 var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
2569 function localeWeekdaysShort (m) {
2570 return this._weekdaysShort[m.day()];
2571 }
2572
2573 var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
2574 function localeWeekdaysMin (m) {
2575 return this._weekdaysMin[m.day()];
2576 }
2577
2578 function localeWeekdaysParse (weekdayName, format, strict) {
2579 var i, mom, regex;
2580
2581 if (!this._weekdaysParse) {
2582 this._weekdaysParse = [];
2583 this._minWeekdaysParse = [];
2584 this._shortWeekdaysParse = [];
2585 this._fullWeekdaysParse = [];
2586 }
2587
2588 for (i = 0; i < 7; i++) {
2589 // make the regex if we don't have it already
2590
2591 mom = local__createLocal([2000, 1]).day(i);
2592 if (strict && !this._fullWeekdaysParse[i]) {
2593 this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
2594 this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
2595 this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
2596 }
2597 if (!this._weekdaysParse[i]) {
2598 regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
2599 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
2600 }
2601 // test the regex
2602 if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
2603 return i;
2604 } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
2605 return i;
2606 } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
2607 return i;
2608 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
2609 return i;
2610 }
2611 }
2612 }
2613
2614 // MOMENTS
2615
2616 function getSetDayOfWeek (input) {
2617 if (!this.isValid()) {
2618 return input != null ? this : NaN;
2619 }
2620 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
2621 if (input != null) {
2622 input = parseWeekday(input, this.localeData());
2623 return this.add(input - day, 'd');
2624 } else {
2625 return day;
2626 }
2627 }
2628
2629 function getSetLocaleDayOfWeek (input) {
2630 if (!this.isValid()) {
2631 return input != null ? this : NaN;
2632 }
2633 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
2634 return input == null ? weekday : this.add(input - weekday, 'd');
2635 }
2636
2637 function getSetISODayOfWeek (input) {
2638 if (!this.isValid()) {
2639 return input != null ? this : NaN;
2640 }
2641 // behaves the same as moment#day except
2642 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
2643 // as a setter, sunday should belong to the previous week.
2644 return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
2645 }
2646
2647 // FORMATTING
2648
2649 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
2650
2651 // ALIASES
2652
2653 addUnitAlias('dayOfYear', 'DDD');
2654
2655 // PARSING
2656
2657 addRegexToken('DDD', match1to3);
2658 addRegexToken('DDDD', match3);
2659 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
2660 config._dayOfYear = toInt(input);
2661 });
2662
2663 // HELPERS
2664
2665 // MOMENTS
2666
2667 function getSetDayOfYear (input) {
2668 var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
2669 return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
2670 }
2671
2672 // FORMATTING
2673
2674 function hFormat() {
2675 return this.hours() % 12 || 12;
2676 }
2677
2678 addFormatToken('H', ['HH', 2], 0, 'hour');
2679 addFormatToken('h', ['hh', 2], 0, hFormat);
2680
2681 addFormatToken('hmm', 0, 0, function () {
2682 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
2683 });
2684
2685 addFormatToken('hmmss', 0, 0, function () {
2686 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
2687 zeroFill(this.seconds(), 2);
2688 });
2689
2690 addFormatToken('Hmm', 0, 0, function () {
2691 return '' + this.hours() + zeroFill(this.minutes(), 2);
2692 });
2693
2694 addFormatToken('Hmmss', 0, 0, function () {
2695 return '' + this.hours() + zeroFill(this.minutes(), 2) +
2696 zeroFill(this.seconds(), 2);
2697 });
2698
2699 function meridiem (token, lowercase) {
2700 addFormatToken(token, 0, 0, function () {
2701 return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
2702 });
2703 }
2704
2705 meridiem('a', true);
2706 meridiem('A', false);
2707
2708 // ALIASES
2709
2710 addUnitAlias('hour', 'h');
2711
2712 // PARSING
2713
2714 function matchMeridiem (isStrict, locale) {
2715 return locale._meridiemParse;
2716 }
2717
2718 addRegexToken('a', matchMeridiem);
2719 addRegexToken('A', matchMeridiem);
2720 addRegexToken('H', match1to2);
2721 addRegexToken('h', match1to2);
2722 addRegexToken('HH', match1to2, match2);
2723 addRegexToken('hh', match1to2, match2);
2724
2725 addRegexToken('hmm', match3to4);
2726 addRegexToken('hmmss', match5to6);
2727 addRegexToken('Hmm', match3to4);
2728 addRegexToken('Hmmss', match5to6);
2729
2730 addParseToken(['H', 'HH'], HOUR);
2731 addParseToken(['a', 'A'], function (input, array, config) {
2732 config._isPm = config._locale.isPM(input);
2733 config._meridiem = input;
2734 });
2735 addParseToken(['h', 'hh'], function (input, array, config) {
2736 array[HOUR] = toInt(input);
2737 getParsingFlags(config).bigHour = true;
2738 });
2739 addParseToken('hmm', function (input, array, config) {
2740 var pos = input.length - 2;
2741 array[HOUR] = toInt(input.substr(0, pos));
2742 array[MINUTE] = toInt(input.substr(pos));
2743 getParsingFlags(config).bigHour = true;
2744 });
2745 addParseToken('hmmss', function (input, array, config) {
2746 var pos1 = input.length - 4;
2747 var pos2 = input.length - 2;
2748 array[HOUR] = toInt(input.substr(0, pos1));
2749 array[MINUTE] = toInt(input.substr(pos1, 2));
2750 array[SECOND] = toInt(input.substr(pos2));
2751 getParsingFlags(config).bigHour = true;
2752 });
2753 addParseToken('Hmm', function (input, array, config) {
2754 var pos = input.length - 2;
2755 array[HOUR] = toInt(input.substr(0, pos));
2756 array[MINUTE] = toInt(input.substr(pos));
2757 });
2758 addParseToken('Hmmss', function (input, array, config) {
2759 var pos1 = input.length - 4;
2760 var pos2 = input.length - 2;
2761 array[HOUR] = toInt(input.substr(0, pos1));
2762 array[MINUTE] = toInt(input.substr(pos1, 2));
2763 array[SECOND] = toInt(input.substr(pos2));
2764 });
2765
2766 // LOCALES
2767
2768 function localeIsPM (input) {
2769 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
2770 // Using charAt should be more compatible.
2771 return ((input + '').toLowerCase().charAt(0) === 'p');
2772 }
2773
2774 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
2775 function localeMeridiem (hours, minutes, isLower) {
2776 if (hours > 11) {
2777 return isLower ? 'pm' : 'PM';
2778 } else {
2779 return isLower ? 'am' : 'AM';
2780 }
2781 }
2782
2783
2784 // MOMENTS
2785
2786 // Setting the hour should keep the time, because the user explicitly
2787 // specified which hour he wants. So trying to maintain the same hour (in
2788 // a new timezone) makes sense. Adding/subtracting hours does not follow
2789 // this rule.
2790 var getSetHour = makeGetSet('Hours', true);
2791
2792 // FORMATTING
2793
2794 addFormatToken('m', ['mm', 2], 0, 'minute');
2795
2796 // ALIASES
2797
2798 addUnitAlias('minute', 'm');
2799
2800 // PARSING
2801
2802 addRegexToken('m', match1to2);
2803 addRegexToken('mm', match1to2, match2);
2804 addParseToken(['m', 'mm'], MINUTE);
2805
2806 // MOMENTS
2807
2808 var getSetMinute = makeGetSet('Minutes', false);
2809
2810 // FORMATTING
2811
2812 addFormatToken('s', ['ss', 2], 0, 'second');
2813
2814 // ALIASES
2815
2816 addUnitAlias('second', 's');
2817
2818 // PARSING
2819
2820 addRegexToken('s', match1to2);
2821 addRegexToken('ss', match1to2, match2);
2822 addParseToken(['s', 'ss'], SECOND);
2823
2824 // MOMENTS
2825
2826 var getSetSecond = makeGetSet('Seconds', false);
2827
2828 // FORMATTING
2829
2830 addFormatToken('S', 0, 0, function () {
2831 return ~~(this.millisecond() / 100);
2832 });
2833
2834 addFormatToken(0, ['SS', 2], 0, function () {
2835 return ~~(this.millisecond() / 10);
2836 });
2837
2838 addFormatToken(0, ['SSS', 3], 0, 'millisecond');
2839 addFormatToken(0, ['SSSS', 4], 0, function () {
2840 return this.millisecond() * 10;
2841 });
2842 addFormatToken(0, ['SSSSS', 5], 0, function () {
2843 return this.millisecond() * 100;
2844 });
2845 addFormatToken(0, ['SSSSSS', 6], 0, function () {
2846 return this.millisecond() * 1000;
2847 });
2848 addFormatToken(0, ['SSSSSSS', 7], 0, function () {
2849 return this.millisecond() * 10000;
2850 });
2851 addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
2852 return this.millisecond() * 100000;
2853 });
2854 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
2855 return this.millisecond() * 1000000;
2856 });
2857
2858
2859 // ALIASES
2860
2861 addUnitAlias('millisecond', 'ms');
2862
2863 // PARSING
2864
2865 addRegexToken('S', match1to3, match1);
2866 addRegexToken('SS', match1to3, match2);
2867 addRegexToken('SSS', match1to3, match3);
2868
2869 var token;
2870 for (token = 'SSSS'; token.length <= 9; token += 'S') {
2871 addRegexToken(token, matchUnsigned);
2872 }
2873
2874 function parseMs(input, array) {
2875 array[MILLISECOND] = toInt(('0.' + input) * 1000);
2876 }
2877
2878 for (token = 'S'; token.length <= 9; token += 'S') {
2879 addParseToken(token, parseMs);
2880 }
2881 // MOMENTS
2882
2883 var getSetMillisecond = makeGetSet('Milliseconds', false);
2884
2885 // FORMATTING
2886
2887 addFormatToken('z', 0, 0, 'zoneAbbr');
2888 addFormatToken('zz', 0, 0, 'zoneName');
2889
2890 // MOMENTS
2891
2892 function getZoneAbbr () {
2893 return this._isUTC ? 'UTC' : '';
2894 }
2895
2896 function getZoneName () {
2897 return this._isUTC ? 'Coordinated Universal Time' : '';
2898 }
2899
2900 var momentPrototype__proto = Moment.prototype;
2901
2902 momentPrototype__proto.add = add_subtract__add;
2903 momentPrototype__proto.calendar = moment_calendar__calendar;
2904 momentPrototype__proto.clone = clone;
2905 momentPrototype__proto.diff = diff;
2906 momentPrototype__proto.endOf = endOf;
2907 momentPrototype__proto.format = format;
2908 momentPrototype__proto.from = from;
2909 momentPrototype__proto.fromNow = fromNow;
2910 momentPrototype__proto.to = to;
2911 momentPrototype__proto.toNow = toNow;
2912 momentPrototype__proto.get = getSet;
2913 momentPrototype__proto.invalidAt = invalidAt;
2914 momentPrototype__proto.isAfter = isAfter;
2915 momentPrototype__proto.isBefore = isBefore;
2916 momentPrototype__proto.isBetween = isBetween;
2917 momentPrototype__proto.isSame = isSame;
2918 momentPrototype__proto.isSameOrAfter = isSameOrAfter;
2919 momentPrototype__proto.isSameOrBefore = isSameOrBefore;
2920 momentPrototype__proto.isValid = moment_valid__isValid;
2921 momentPrototype__proto.lang = lang;
2922 momentPrototype__proto.locale = locale;
2923 momentPrototype__proto.localeData = localeData;
2924 momentPrototype__proto.max = prototypeMax;
2925 momentPrototype__proto.min = prototypeMin;
2926 momentPrototype__proto.parsingFlags = parsingFlags;
2927 momentPrototype__proto.set = getSet;
2928 momentPrototype__proto.startOf = startOf;
2929 momentPrototype__proto.subtract = add_subtract__subtract;
2930 momentPrototype__proto.toArray = toArray;
2931 momentPrototype__proto.toObject = toObject;
2932 momentPrototype__proto.toDate = toDate;
2933 momentPrototype__proto.toISOString = moment_format__toISOString;
2934 momentPrototype__proto.toJSON = toJSON;
2935 momentPrototype__proto.toString = toString;
2936 momentPrototype__proto.unix = unix;
2937 momentPrototype__proto.valueOf = to_type__valueOf;
2938 momentPrototype__proto.creationData = creationData;
2939
2940 // Year
2941 momentPrototype__proto.year = getSetYear;
2942 momentPrototype__proto.isLeapYear = getIsLeapYear;
2943
2944 // Week Year
2945 momentPrototype__proto.weekYear = getSetWeekYear;
2946 momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
2947
2948 // Quarter
2949 momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
2950
2951 // Month
2952 momentPrototype__proto.month = getSetMonth;
2953 momentPrototype__proto.daysInMonth = getDaysInMonth;
2954
2955 // Week
2956 momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
2957 momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
2958 momentPrototype__proto.weeksInYear = getWeeksInYear;
2959 momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
2960
2961 // Day
2962 momentPrototype__proto.date = getSetDayOfMonth;
2963 momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
2964 momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
2965 momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
2966 momentPrototype__proto.dayOfYear = getSetDayOfYear;
2967
2968 // Hour
2969 momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
2970
2971 // Minute
2972 momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
2973
2974 // Second
2975 momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
2976
2977 // Millisecond
2978 momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
2979
2980 // Offset
2981 momentPrototype__proto.utcOffset = getSetOffset;
2982 momentPrototype__proto.utc = setOffsetToUTC;
2983 momentPrototype__proto.local = setOffsetToLocal;
2984 momentPrototype__proto.parseZone = setOffsetToParsedOffset;
2985 momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
2986 momentPrototype__proto.isDST = isDaylightSavingTime;
2987 momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
2988 momentPrototype__proto.isLocal = isLocal;
2989 momentPrototype__proto.isUtcOffset = isUtcOffset;
2990 momentPrototype__proto.isUtc = isUtc;
2991 momentPrototype__proto.isUTC = isUtc;
2992
2993 // Timezone
2994 momentPrototype__proto.zoneAbbr = getZoneAbbr;
2995 momentPrototype__proto.zoneName = getZoneName;
2996
2997 // Deprecations
2998 momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
2999 momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3000 momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3001 momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
3002
3003 var momentPrototype = momentPrototype__proto;
3004
3005 function moment__createUnix (input) {
3006 return local__createLocal(input * 1000);
3007 }
3008
3009 function moment__createInZone () {
3010 return local__createLocal.apply(null, arguments).parseZone();
3011 }
3012
3013 var defaultCalendar = {
3014 sameDay : '[Today at] LT',
3015 nextDay : '[Tomorrow at] LT',
3016 nextWeek : 'dddd [at] LT',
3017 lastDay : '[Yesterday at] LT',
3018 lastWeek : '[Last] dddd [at] LT',
3019 sameElse : 'L'
3020 };
3021
3022 function locale_calendar__calendar (key, mom, now) {
3023 var output = this._calendar[key];
3024 return isFunction(output) ? output.call(mom, now) : output;
3025 }
3026
3027 var defaultLongDateFormat = {
3028 LTS : 'h:mm:ss A',
3029 LT : 'h:mm A',
3030 L : 'MM/DD/YYYY',
3031 LL : 'MMMM D, YYYY',
3032 LLL : 'MMMM D, YYYY h:mm A',
3033 LLLL : 'dddd, MMMM D, YYYY h:mm A'
3034 };
3035
3036 function longDateFormat (key) {
3037 var format = this._longDateFormat[key],
3038 formatUpper = this._longDateFormat[key.toUpperCase()];
3039
3040 if (format || !formatUpper) {
3041 return format;
3042 }
3043
3044 this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
3045 return val.slice(1);
3046 });
3047
3048 return this._longDateFormat[key];
3049 }
3050
3051 var defaultInvalidDate = 'Invalid date';
3052
3053 function invalidDate () {
3054 return this._invalidDate;
3055 }
3056
3057 var defaultOrdinal = '%d';
3058 var defaultOrdinalParse = /\d{1,2}/;
3059
3060 function ordinal (number) {
3061 return this._ordinal.replace('%d', number);
3062 }
3063
3064 function preParsePostFormat (string) {
3065 return string;
3066 }
3067
3068 var defaultRelativeTime = {
3069 future : 'in %s',
3070 past : '%s ago',
3071 s : 'a few seconds',
3072 m : 'a minute',
3073 mm : '%d minutes',
3074 h : 'an hour',
3075 hh : '%d hours',
3076 d : 'a day',
3077 dd : '%d days',
3078 M : 'a month',
3079 MM : '%d months',
3080 y : 'a year',
3081 yy : '%d years'
3082 };
3083
3084 function relative__relativeTime (number, withoutSuffix, string, isFuture) {
3085 var output = this._relativeTime[string];
3086 return (isFunction(output)) ?
3087 output(number, withoutSuffix, string, isFuture) :
3088 output.replace(/%d/i, number);
3089 }
3090
3091 function pastFuture (diff, output) {
3092 var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
3093 return isFunction(format) ? format(output) : format.replace(/%s/i, output);
3094 }
3095
3096 function locale_set__set (config) {
3097 var prop, i;
3098 for (i in config) {
3099 prop = config[i];
3100 if (isFunction(prop)) {
3101 this[i] = prop;
3102 } else {
3103 this['_' + i] = prop;
3104 }
3105 }
3106 // Lenient ordinal parsing accepts just a number in addition to
3107 // number + (possibly) stuff coming from _ordinalParseLenient.
3108 this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
3109 }
3110
3111 var prototype__proto = Locale.prototype;
3112
3113 prototype__proto._calendar = defaultCalendar;
3114 prototype__proto.calendar = locale_calendar__calendar;
3115 prototype__proto._longDateFormat = defaultLongDateFormat;
3116 prototype__proto.longDateFormat = longDateFormat;
3117 prototype__proto._invalidDate = defaultInvalidDate;
3118 prototype__proto.invalidDate = invalidDate;
3119 prototype__proto._ordinal = defaultOrdinal;
3120 prototype__proto.ordinal = ordinal;
3121 prototype__proto._ordinalParse = defaultOrdinalParse;
3122 prototype__proto.preparse = preParsePostFormat;
3123 prototype__proto.postformat = preParsePostFormat;
3124 prototype__proto._relativeTime = defaultRelativeTime;
3125 prototype__proto.relativeTime = relative__relativeTime;
3126 prototype__proto.pastFuture = pastFuture;
3127 prototype__proto.set = locale_set__set;
3128
3129 // Month
3130 prototype__proto.months = localeMonths;
3131 prototype__proto._months = defaultLocaleMonths;
3132 prototype__proto.monthsShort = localeMonthsShort;
3133 prototype__proto._monthsShort = defaultLocaleMonthsShort;
3134 prototype__proto.monthsParse = localeMonthsParse;
3135 prototype__proto._monthsRegex = defaultMonthsRegex;
3136 prototype__proto.monthsRegex = monthsRegex;
3137 prototype__proto._monthsShortRegex = defaultMonthsShortRegex;
3138 prototype__proto.monthsShortRegex = monthsShortRegex;
3139
3140 // Week
3141 prototype__proto.week = localeWeek;
3142 prototype__proto._week = defaultLocaleWeek;
3143 prototype__proto.firstDayOfYear = localeFirstDayOfYear;
3144 prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
3145
3146 // Day of Week
3147 prototype__proto.weekdays = localeWeekdays;
3148 prototype__proto._weekdays = defaultLocaleWeekdays;
3149 prototype__proto.weekdaysMin = localeWeekdaysMin;
3150 prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
3151 prototype__proto.weekdaysShort = localeWeekdaysShort;
3152 prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
3153 prototype__proto.weekdaysParse = localeWeekdaysParse;
3154
3155 // Hours
3156 prototype__proto.isPM = localeIsPM;
3157 prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
3158 prototype__proto.meridiem = localeMeridiem;
3159
3160 function lists__get (format, index, field, setter) {
3161 var locale = locale_locales__getLocale();
3162 var utc = create_utc__createUTC().set(setter, index);
3163 return locale[field](utc, format);
3164 }
3165
3166 function list (format, index, field, count, setter) {
3167 if (typeof format === 'number') {
3168 index = format;
3169 format = undefined;
3170 }
3171
3172 format = format || '';
3173
3174 if (index != null) {
3175 return lists__get(format, index, field, setter);
3176 }
3177
3178 var i;
3179 var out = [];
3180 for (i = 0; i < count; i++) {
3181 out[i] = lists__get(format, i, field, setter);
3182 }
3183 return out;
3184 }
3185
3186 function lists__listMonths (format, index) {
3187 return list(format, index, 'months', 12, 'month');
3188 }
3189
3190 function lists__listMonthsShort (format, index) {
3191 return list(format, index, 'monthsShort', 12, 'month');
3192 }
3193
3194 function lists__listWeekdays (format, index) {
3195 return list(format, index, 'weekdays', 7, 'day');
3196 }
3197
3198 function lists__listWeekdaysShort (format, index) {
3199 return list(format, index, 'weekdaysShort', 7, 'day');
3200 }
3201
3202 function lists__listWeekdaysMin (format, index) {
3203 return list(format, index, 'weekdaysMin', 7, 'day');
3204 }
3205
3206 locale_locales__getSetGlobalLocale('en', {
3207 ordinalParse: /\d{1,2}(th|st|nd|rd)/,
3208 ordinal : function (number) {
3209 var b = number % 10,
3210 output = (toInt(number % 100 / 10) === 1) ? 'th' :
3211 (b === 1) ? 'st' :
3212 (b === 2) ? 'nd' :
3213 (b === 3) ? 'rd' : 'th';
3214 return number + output;
3215 }
3216 });
3217
3218 // Side effect imports
3219 utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
3220 utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
3221
3222 var mathAbs = Math.abs;
3223
3224 function duration_abs__abs () {
3225 var data = this._data;
3226
3227 this._milliseconds = mathAbs(this._milliseconds);
3228 this._days = mathAbs(this._days);
3229 this._months = mathAbs(this._months);
3230
3231 data.milliseconds = mathAbs(data.milliseconds);
3232 data.seconds = mathAbs(data.seconds);
3233 data.minutes = mathAbs(data.minutes);
3234 data.hours = mathAbs(data.hours);
3235 data.months = mathAbs(data.months);
3236 data.years = mathAbs(data.years);
3237
3238 return this;
3239 }
3240
3241 function duration_add_subtract__addSubtract (duration, input, value, direction) {
3242 var other = create__createDuration(input, value);
3243
3244 duration._milliseconds += direction * other._milliseconds;
3245 duration._days += direction * other._days;
3246 duration._months += direction * other._months;
3247
3248 return duration._bubble();
3249 }
3250
3251 // supports only 2.0-style add(1, 's') or add(duration)
3252 function duration_add_subtract__add (input, value) {
3253 return duration_add_subtract__addSubtract(this, input, value, 1);
3254 }
3255
3256 // supports only 2.0-style subtract(1, 's') or subtract(duration)
3257 function duration_add_subtract__subtract (input, value) {
3258 return duration_add_subtract__addSubtract(this, input, value, -1);
3259 }
3260
3261 function absCeil (number) {
3262 if (number < 0) {
3263 return Math.floor(number);
3264 } else {
3265 return Math.ceil(number);
3266 }
3267 }
3268
3269 function bubble () {
3270 var milliseconds = this._milliseconds;
3271 var days = this._days;
3272 var months = this._months;
3273 var data = this._data;
3274 var seconds, minutes, hours, years, monthsFromDays;
3275
3276 // if we have a mix of positive and negative values, bubble down first
3277 // check: https://github.com/moment/moment/issues/2166
3278 if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
3279 (milliseconds <= 0 && days <= 0 && months <= 0))) {
3280 milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
3281 days = 0;
3282 months = 0;
3283 }
3284
3285 // The following code bubbles up values, see the tests for
3286 // examples of what that means.
3287 data.milliseconds = milliseconds % 1000;
3288
3289 seconds = absFloor(milliseconds / 1000);
3290 data.seconds = seconds % 60;
3291
3292 minutes = absFloor(seconds / 60);
3293 data.minutes = minutes % 60;
3294
3295 hours = absFloor(minutes / 60);
3296 data.hours = hours % 24;
3297
3298 days += absFloor(hours / 24);
3299
3300 // convert days to months
3301 monthsFromDays = absFloor(daysToMonths(days));
3302 months += monthsFromDays;
3303 days -= absCeil(monthsToDays(monthsFromDays));
3304
3305 // 12 months -> 1 year
3306 years = absFloor(months / 12);
3307 months %= 12;
3308
3309 data.days = days;
3310 data.months = months;
3311 data.years = years;
3312
3313 return this;
3314 }
3315
3316 function daysToMonths (days) {
3317 // 400 years have 146097 days (taking into account leap year rules)
3318 // 400 years have 12 months === 4800
3319 return days * 4800 / 146097;
3320 }
3321
3322 function monthsToDays (months) {
3323 // the reverse of daysToMonths
3324 return months * 146097 / 4800;
3325 }
3326
3327 function as (units) {
3328 var days;
3329 var months;
3330 var milliseconds = this._milliseconds;
3331
3332 units = normalizeUnits(units);
3333
3334 if (units === 'month' || units === 'year') {
3335 days = this._days + milliseconds / 864e5;
3336 months = this._months + daysToMonths(days);
3337 return units === 'month' ? months : months / 12;
3338 } else {
3339 // handle milliseconds separately because of floating point math errors (issue #1867)
3340 days = this._days + Math.round(monthsToDays(this._months));
3341 switch (units) {
3342 case 'week' : return days / 7 + milliseconds / 6048e5;
3343 case 'day' : return days + milliseconds / 864e5;
3344 case 'hour' : return days * 24 + milliseconds / 36e5;
3345 case 'minute' : return days * 1440 + milliseconds / 6e4;
3346 case 'second' : return days * 86400 + milliseconds / 1000;
3347 // Math.floor prevents floating point math errors here
3348 case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
3349 default: throw new Error('Unknown unit ' + units);
3350 }
3351 }
3352 }
3353
3354 // TODO: Use this.as('ms')?
3355 function duration_as__valueOf () {
3356 return (
3357 this._milliseconds +
3358 this._days * 864e5 +
3359 (this._months % 12) * 2592e6 +
3360 toInt(this._months / 12) * 31536e6
3361 );
3362 }
3363
3364 function makeAs (alias) {
3365 return function () {
3366 return this.as(alias);
3367 };
3368 }
3369
3370 var asMilliseconds = makeAs('ms');
3371 var asSeconds = makeAs('s');
3372 var asMinutes = makeAs('m');
3373 var asHours = makeAs('h');
3374 var asDays = makeAs('d');
3375 var asWeeks = makeAs('w');
3376 var asMonths = makeAs('M');
3377 var asYears = makeAs('y');
3378
3379 function duration_get__get (units) {
3380 units = normalizeUnits(units);
3381 return this[units + 's']();
3382 }
3383
3384 function makeGetter(name) {
3385 return function () {
3386 return this._data[name];
3387 };
3388 }
3389
3390 var milliseconds = makeGetter('milliseconds');
3391 var seconds = makeGetter('seconds');
3392 var minutes = makeGetter('minutes');
3393 var hours = makeGetter('hours');
3394 var days = makeGetter('days');
3395 var months = makeGetter('months');
3396 var years = makeGetter('years');
3397
3398 function weeks () {
3399 return absFloor(this.days() / 7);
3400 }
3401
3402 var round = Math.round;
3403 var thresholds = {
3404 s: 45, // seconds to minute
3405 m: 45, // minutes to hour
3406 h: 22, // hours to day
3407 d: 26, // days to month
3408 M: 11 // months to year
3409 };
3410
3411 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
3412 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
3413 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
3414 }
3415
3416 function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
3417 var duration = create__createDuration(posNegDuration).abs();
3418 var seconds = round(duration.as('s'));
3419 var minutes = round(duration.as('m'));
3420 var hours = round(duration.as('h'));
3421 var days = round(duration.as('d'));
3422 var months = round(duration.as('M'));
3423 var years = round(duration.as('y'));
3424
3425 var a = seconds < thresholds.s && ['s', seconds] ||
3426 minutes <= 1 && ['m'] ||
3427 minutes < thresholds.m && ['mm', minutes] ||
3428 hours <= 1 && ['h'] ||
3429 hours < thresholds.h && ['hh', hours] ||
3430 days <= 1 && ['d'] ||
3431 days < thresholds.d && ['dd', days] ||
3432 months <= 1 && ['M'] ||
3433 months < thresholds.M && ['MM', months] ||
3434 years <= 1 && ['y'] || ['yy', years];
3435
3436 a[2] = withoutSuffix;
3437 a[3] = +posNegDuration > 0;
3438 a[4] = locale;
3439 return substituteTimeAgo.apply(null, a);
3440 }
3441
3442 // This function allows you to set a threshold for relative time strings
3443 function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
3444 if (thresholds[threshold] === undefined) {
3445 return false;
3446 }
3447 if (limit === undefined) {
3448 return thresholds[threshold];
3449 }
3450 thresholds[threshold] = limit;
3451 return true;
3452 }
3453
3454 function humanize (withSuffix) {
3455 var locale = this.localeData();
3456 var output = duration_humanize__relativeTime(this, !withSuffix, locale);
3457
3458 if (withSuffix) {
3459 output = locale.pastFuture(+this, output);
3460 }
3461
3462 return locale.postformat(output);
3463 }
3464
3465 var iso_string__abs = Math.abs;
3466
3467 function iso_string__toISOString() {
3468 // for ISO strings we do not use the normal bubbling rules:
3469 // * milliseconds bubble up until they become hours
3470 // * days do not bubble at all
3471 // * months bubble up until they become years
3472 // This is because there is no context-free conversion between hours and days
3473 // (think of clock changes)
3474 // and also not between days and months (28-31 days per month)
3475 var seconds = iso_string__abs(this._milliseconds) / 1000;
3476 var days = iso_string__abs(this._days);
3477 var months = iso_string__abs(this._months);
3478 var minutes, hours, years;
3479
3480 // 3600 seconds -> 60 minutes -> 1 hour
3481 minutes = absFloor(seconds / 60);
3482 hours = absFloor(minutes / 60);
3483 seconds %= 60;
3484 minutes %= 60;
3485
3486 // 12 months -> 1 year
3487 years = absFloor(months / 12);
3488 months %= 12;
3489
3490
3491 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
3492 var Y = years;
3493 var M = months;
3494 var D = days;
3495 var h = hours;
3496 var m = minutes;
3497 var s = seconds;
3498 var total = this.asSeconds();
3499
3500 if (!total) {
3501 // this is the same as C#'s (Noda) and python (isodate)...
3502 // but not other JS (goog.date)
3503 return 'P0D';
3504 }
3505
3506 return (total < 0 ? '-' : '') +
3507 'P' +
3508 (Y ? Y + 'Y' : '') +
3509 (M ? M + 'M' : '') +
3510 (D ? D + 'D' : '') +
3511 ((h || m || s) ? 'T' : '') +
3512 (h ? h + 'H' : '') +
3513 (m ? m + 'M' : '') +
3514 (s ? s + 'S' : '');
3515 }
3516
3517 var duration_prototype__proto = Duration.prototype;
3518
3519 duration_prototype__proto.abs = duration_abs__abs;
3520 duration_prototype__proto.add = duration_add_subtract__add;
3521 duration_prototype__proto.subtract = duration_add_subtract__subtract;
3522 duration_prototype__proto.as = as;
3523 duration_prototype__proto.asMilliseconds = asMilliseconds;
3524 duration_prototype__proto.asSeconds = asSeconds;
3525 duration_prototype__proto.asMinutes = asMinutes;
3526 duration_prototype__proto.asHours = asHours;
3527 duration_prototype__proto.asDays = asDays;
3528 duration_prototype__proto.asWeeks = asWeeks;
3529 duration_prototype__proto.asMonths = asMonths;
3530 duration_prototype__proto.asYears = asYears;
3531 duration_prototype__proto.valueOf = duration_as__valueOf;
3532 duration_prototype__proto._bubble = bubble;
3533 duration_prototype__proto.get = duration_get__get;
3534 duration_prototype__proto.milliseconds = milliseconds;
3535 duration_prototype__proto.seconds = seconds;
3536 duration_prototype__proto.minutes = minutes;
3537 duration_prototype__proto.hours = hours;
3538 duration_prototype__proto.days = days;
3539 duration_prototype__proto.weeks = weeks;
3540 duration_prototype__proto.months = months;
3541 duration_prototype__proto.years = years;
3542 duration_prototype__proto.humanize = humanize;
3543 duration_prototype__proto.toISOString = iso_string__toISOString;
3544 duration_prototype__proto.toString = iso_string__toISOString;
3545 duration_prototype__proto.toJSON = iso_string__toISOString;
3546 duration_prototype__proto.locale = locale;
3547 duration_prototype__proto.localeData = localeData;
3548
3549 // Deprecations
3550 duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
3551 duration_prototype__proto.lang = lang;
3552
3553 // Side effect imports
3554
3555 // FORMATTING
3556
3557 addFormatToken('X', 0, 0, 'unix');
3558 addFormatToken('x', 0, 0, 'valueOf');
3559
3560 // PARSING
3561
3562 addRegexToken('x', matchSigned);
3563 addRegexToken('X', matchTimestamp);
3564 addParseToken('X', function (input, array, config) {
3565 config._d = new Date(parseFloat(input, 10) * 1000);
3566 });
3567 addParseToken('x', function (input, array, config) {
3568 config._d = new Date(toInt(input));
3569 });
3570
3571 // Side effect imports
3572
3573
3574 utils_hooks__hooks.version = '2.11.2';
3575
3576 setHookCallback(local__createLocal);
3577
3578 utils_hooks__hooks.fn = momentPrototype;
3579 utils_hooks__hooks.min = min;
3580 utils_hooks__hooks.max = max;
3581 utils_hooks__hooks.now = now;
3582 utils_hooks__hooks.utc = create_utc__createUTC;
3583 utils_hooks__hooks.unix = moment__createUnix;
3584 utils_hooks__hooks.months = lists__listMonths;
3585 utils_hooks__hooks.isDate = isDate;
3586 utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
3587 utils_hooks__hooks.invalid = valid__createInvalid;
3588 utils_hooks__hooks.duration = create__createDuration;
3589 utils_hooks__hooks.isMoment = isMoment;
3590 utils_hooks__hooks.weekdays = lists__listWeekdays;
3591 utils_hooks__hooks.parseZone = moment__createInZone;
3592 utils_hooks__hooks.localeData = locale_locales__getLocale;
3593 utils_hooks__hooks.isDuration = isDuration;
3594 utils_hooks__hooks.monthsShort = lists__listMonthsShort;
3595 utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
3596 utils_hooks__hooks.defineLocale = defineLocale;
3597 utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
3598 utils_hooks__hooks.normalizeUnits = normalizeUnits;
3599 utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
3600 utils_hooks__hooks.prototype = momentPrototype;
3601
3602 var _moment = utils_hooks__hooks;
3603
3604 return _moment;
3605
3606 })); No newline at end of file
This diff has been collapsed as it changes many lines, (931 lines changed) Show them Hide them
@@ -1,931 +0,0 b''
1 /*global define:false */
2 /**
3 * Copyright 2013 Craig Campbell
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 * Mousetrap is a simple keyboard shortcut library for Javascript with
18 * no external dependencies
19 *
20 * @version 1.4.5
21 * @url craig.is/killing/mice
22 */
23 (function(window, document, undefined) {
24
25 /**
26 * mapping of special keycodes to their corresponding keys
27 *
28 * everything in this dictionary cannot use keypress events
29 * so it has to be here to map to the correct keycodes for
30 * keyup/keydown events
31 *
32 * @type {Object}
33 */
34 var _MAP = {
35 8: 'backspace',
36 9: 'tab',
37 13: 'enter',
38 16: 'shift',
39 17: 'ctrl',
40 18: 'alt',
41 20: 'capslock',
42 27: 'esc',
43 32: 'space',
44 33: 'pageup',
45 34: 'pagedown',
46 35: 'end',
47 36: 'home',
48 37: 'left',
49 38: 'up',
50 39: 'right',
51 40: 'down',
52 45: 'ins',
53 46: 'del',
54 91: 'meta',
55 93: 'meta',
56 224: 'meta'
57 },
58
59 /**
60 * mapping for special characters so they can support
61 *
62 * this dictionary is only used incase you want to bind a
63 * keyup or keydown event to one of these keys
64 *
65 * @type {Object}
66 */
67 _KEYCODE_MAP = {
68 106: '*',
69 107: '+',
70 109: '-',
71 110: '.',
72 111 : '/',
73 186: ';',
74 187: '=',
75 188: ',',
76 189: '-',
77 190: '.',
78 191: '/',
79 192: '`',
80 219: '[',
81 220: '\\',
82 221: ']',
83 222: '\''
84 },
85
86 /**
87 * this is a mapping of keys that require shift on a US keypad
88 * back to the non shift equivelents
89 *
90 * this is so you can use keyup events with these keys
91 *
92 * note that this will only work reliably on US keyboards
93 *
94 * @type {Object}
95 */
96 _SHIFT_MAP = {
97 '~': '`',
98 '!': '1',
99 '@': '2',
100 '#': '3',
101 '$': '4',
102 '%': '5',
103 '^': '6',
104 '&': '7',
105 '*': '8',
106 '(': '9',
107 ')': '0',
108 '_': '-',
109 '+': '=',
110 ':': ';',
111 '\"': '\'',
112 '<': ',',
113 '>': '.',
114 '?': '/',
115 '|': '\\'
116 },
117
118 /**
119 * this is a list of special strings you can use to map
120 * to modifier keys when you specify your keyboard shortcuts
121 *
122 * @type {Object}
123 */
124 _SPECIAL_ALIASES = {
125 'option': 'alt',
126 'command': 'meta',
127 'return': 'enter',
128 'escape': 'esc',
129 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'
130 },
131
132 /**
133 * variable to store the flipped version of _MAP from above
134 * needed to check if we should use keypress or not when no action
135 * is specified
136 *
137 * @type {Object|undefined}
138 */
139 _REVERSE_MAP,
140
141 /**
142 * a list of all the callbacks setup via Mousetrap.bind()
143 *
144 * @type {Object}
145 */
146 _callbacks = {},
147
148 /**
149 * direct map of string combinations to callbacks used for trigger()
150 *
151 * @type {Object}
152 */
153 _directMap = {},
154
155 /**
156 * keeps track of what level each sequence is at since multiple
157 * sequences can start out with the same sequence
158 *
159 * @type {Object}
160 */
161 _sequenceLevels = {},
162
163 /**
164 * variable to store the setTimeout call
165 *
166 * @type {null|number}
167 */
168 _resetTimer,
169
170 /**
171 * temporary state where we will ignore the next keyup
172 *
173 * @type {boolean|string}
174 */
175 _ignoreNextKeyup = false,
176
177 /**
178 * temporary state where we will ignore the next keypress
179 *
180 * @type {boolean}
181 */
182 _ignoreNextKeypress = false,
183
184 /**
185 * are we currently inside of a sequence?
186 * type of action ("keyup" or "keydown" or "keypress") or false
187 *
188 * @type {boolean|string}
189 */
190 _nextExpectedAction = false;
191
192 /**
193 * loop through the f keys, f1 to f19 and add them to the map
194 * programatically
195 */
196 for (var i = 1; i < 20; ++i) {
197 _MAP[111 + i] = 'f' + i;
198 }
199
200 /**
201 * loop through to map numbers on the numeric keypad
202 */
203 for (i = 0; i <= 9; ++i) {
204 _MAP[i + 96] = i;
205 }
206
207 /**
208 * cross browser add event method
209 *
210 * @param {Element|HTMLDocument} object
211 * @param {string} type
212 * @param {Function} callback
213 * @returns void
214 */
215 function _addEvent(object, type, callback) {
216 if (object.addEventListener) {
217 object.addEventListener(type, callback, false);
218 return;
219 }
220
221 object.attachEvent('on' + type, callback);
222 }
223
224 /**
225 * takes the event and returns the key character
226 *
227 * @param {Event} e
228 * @return {string}
229 */
230 function _characterFromEvent(e) {
231
232 // for keypress events we should return the character as is
233 if (e.type == 'keypress') {
234 var character = String.fromCharCode(e.which);
235
236 // if the shift key is not pressed then it is safe to assume
237 // that we want the character to be lowercase. this means if
238 // you accidentally have caps lock on then your key bindings
239 // will continue to work
240 //
241 // the only side effect that might not be desired is if you
242 // bind something like 'A' cause you want to trigger an
243 // event when capital A is pressed caps lock will no longer
244 // trigger the event. shift+a will though.
245 if (!e.shiftKey) {
246 character = character.toLowerCase();
247 }
248
249 return character;
250 }
251
252 // for non keypress events the special maps are needed
253 if (_MAP[e.which]) {
254 return _MAP[e.which];
255 }
256
257 if (_KEYCODE_MAP[e.which]) {
258 return _KEYCODE_MAP[e.which];
259 }
260
261 // if it is not in the special map
262
263 // with keydown and keyup events the character seems to always
264 // come in as an uppercase character whether you are pressing shift
265 // or not. we should make sure it is always lowercase for comparisons
266 return String.fromCharCode(e.which).toLowerCase();
267 }
268
269 /**
270 * checks if two arrays are equal
271 *
272 * @param {Array} modifiers1
273 * @param {Array} modifiers2
274 * @returns {boolean}
275 */
276 function _modifiersMatch(modifiers1, modifiers2) {
277 return modifiers1.sort().join(',') === modifiers2.sort().join(',');
278 }
279
280 /**
281 * resets all sequence counters except for the ones passed in
282 *
283 * @param {Object} doNotReset
284 * @returns void
285 */
286 function _resetSequences(doNotReset) {
287 doNotReset = doNotReset || {};
288
289 var activeSequences = false,
290 key;
291
292 for (key in _sequenceLevels) {
293 if (doNotReset[key]) {
294 activeSequences = true;
295 continue;
296 }
297 _sequenceLevels[key] = 0;
298 }
299
300 if (!activeSequences) {
301 _nextExpectedAction = false;
302 }
303 }
304
305 /**
306 * finds all callbacks that match based on the keycode, modifiers,
307 * and action
308 *
309 * @param {string} character
310 * @param {Array} modifiers
311 * @param {Event|Object} e
312 * @param {string=} sequenceName - name of the sequence we are looking for
313 * @param {string=} combination
314 * @param {number=} level
315 * @returns {Array}
316 */
317 function _getMatches(character, modifiers, e, sequenceName, combination, level) {
318 var i,
319 callback,
320 matches = [],
321 action = e.type;
322
323 // if there are no events related to this keycode
324 if (!_callbacks[character]) {
325 return [];
326 }
327
328 // if a modifier key is coming up on its own we should allow it
329 if (action == 'keyup' && _isModifier(character)) {
330 modifiers = [character];
331 }
332
333 // loop through all callbacks for the key that was pressed
334 // and see if any of them match
335 for (i = 0; i < _callbacks[character].length; ++i) {
336 callback = _callbacks[character][i];
337
338 // if a sequence name is not specified, but this is a sequence at
339 // the wrong level then move onto the next match
340 if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {
341 continue;
342 }
343
344 // if the action we are looking for doesn't match the action we got
345 // then we should keep going
346 if (action != callback.action) {
347 continue;
348 }
349
350 // if this is a keypress event and the meta key and control key
351 // are not pressed that means that we need to only look at the
352 // character, otherwise check the modifiers as well
353 //
354 // chrome will not fire a keypress if meta or control is down
355 // safari will fire a keypress if meta or meta+shift is down
356 // firefox will fire a keypress if meta or control is down
357 if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {
358
359 // when you bind a combination or sequence a second time it
360 // should overwrite the first one. if a sequenceName or
361 // combination is specified in this call it does just that
362 //
363 // @todo make deleting its own method?
364 var deleteCombo = !sequenceName && callback.combo == combination;
365 var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;
366 if (deleteCombo || deleteSequence) {
367 _callbacks[character].splice(i, 1);
368 }
369
370 matches.push(callback);
371 }
372 }
373
374 return matches;
375 }
376
377 /**
378 * takes a key event and figures out what the modifiers are
379 *
380 * @param {Event} e
381 * @returns {Array}
382 */
383 function _eventModifiers(e) {
384 var modifiers = [];
385
386 if (e.shiftKey) {
387 modifiers.push('shift');
388 }
389
390 if (e.altKey) {
391 modifiers.push('alt');
392 }
393
394 if (e.ctrlKey) {
395 modifiers.push('ctrl');
396 }
397
398 if (e.metaKey) {
399 modifiers.push('meta');
400 }
401
402 return modifiers;
403 }
404
405 /**
406 * actually calls the callback function
407 *
408 * if your callback function returns false this will use the jquery
409 * convention - prevent default and stop propogation on the event
410 *
411 * @param {Function} callback
412 * @param {Event} e
413 * @returns void
414 */
415 function _fireCallback(callback, e, combo) {
416
417 // if this event should not happen stop here
418 if (Mousetrap.stopCallback(e, e.target || e.srcElement, combo)) {
419 return;
420 }
421
422 if (callback(e, combo) === false) {
423 if (e.preventDefault) {
424 e.preventDefault();
425 }
426
427 if (e.stopPropagation) {
428 e.stopPropagation();
429 }
430
431 e.returnValue = false;
432 e.cancelBubble = true;
433 }
434 }
435
436 /**
437 * handles a character key event
438 *
439 * @param {string} character
440 * @param {Array} modifiers
441 * @param {Event} e
442 * @returns void
443 */
444 function _handleKey(character, modifiers, e) {
445 var callbacks = _getMatches(character, modifiers, e),
446 i,
447 doNotReset = {},
448 maxLevel = 0,
449 processedSequenceCallback = false;
450
451 // Calculate the maxLevel for sequences so we can only execute the longest callback sequence
452 for (i = 0; i < callbacks.length; ++i) {
453 if (callbacks[i].seq) {
454 maxLevel = Math.max(maxLevel, callbacks[i].level);
455 }
456 }
457
458 // loop through matching callbacks for this key event
459 for (i = 0; i < callbacks.length; ++i) {
460
461 // fire for all sequence callbacks
462 // this is because if for example you have multiple sequences
463 // bound such as "g i" and "g t" they both need to fire the
464 // callback for matching g cause otherwise you can only ever
465 // match the first one
466 if (callbacks[i].seq) {
467
468 // only fire callbacks for the maxLevel to prevent
469 // subsequences from also firing
470 //
471 // for example 'a option b' should not cause 'option b' to fire
472 // even though 'option b' is part of the other sequence
473 //
474 // any sequences that do not match here will be discarded
475 // below by the _resetSequences call
476 if (callbacks[i].level != maxLevel) {
477 continue;
478 }
479
480 processedSequenceCallback = true;
481
482 // keep a list of which sequences were matches for later
483 doNotReset[callbacks[i].seq] = 1;
484 _fireCallback(callbacks[i].callback, e, callbacks[i].combo);
485 continue;
486 }
487
488 // if there were no sequence matches but we are still here
489 // that means this is a regular match so we should fire that
490 if (!processedSequenceCallback) {
491 _fireCallback(callbacks[i].callback, e, callbacks[i].combo);
492 }
493 }
494
495 // if the key you pressed matches the type of sequence without
496 // being a modifier (ie "keyup" or "keypress") then we should
497 // reset all sequences that were not matched by this event
498 //
499 // this is so, for example, if you have the sequence "h a t" and you
500 // type "h e a r t" it does not match. in this case the "e" will
501 // cause the sequence to reset
502 //
503 // modifier keys are ignored because you can have a sequence
504 // that contains modifiers such as "enter ctrl+space" and in most
505 // cases the modifier key will be pressed before the next key
506 //
507 // also if you have a sequence such as "ctrl+b a" then pressing the
508 // "b" key will trigger a "keypress" and a "keydown"
509 //
510 // the "keydown" is expected when there is a modifier, but the
511 // "keypress" ends up matching the _nextExpectedAction since it occurs
512 // after and that causes the sequence to reset
513 //
514 // we ignore keypresses in a sequence that directly follow a keydown
515 // for the same character
516 var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;
517 if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {
518 _resetSequences(doNotReset);
519 }
520
521 _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';
522 }
523
524 /**
525 * handles a keydown event
526 *
527 * @param {Event} e
528 * @returns void
529 */
530 function _handleKeyEvent(e) {
531
532 // normalize e.which for key events
533 // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion
534 if (typeof e.which !== 'number') {
535 e.which = e.keyCode;
536 }
537
538 var character = _characterFromEvent(e);
539
540 // no character found then stop
541 if (!character) {
542 return;
543 }
544
545 // need to use === for the character check because the character can be 0
546 if (e.type == 'keyup' && _ignoreNextKeyup === character) {
547 _ignoreNextKeyup = false;
548 return;
549 }
550
551 Mousetrap.handleKey(character, _eventModifiers(e), e);
552 }
553
554 /**
555 * determines if the keycode specified is a modifier key or not
556 *
557 * @param {string} key
558 * @returns {boolean}
559 */
560 function _isModifier(key) {
561 return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';
562 }
563
564 /**
565 * called to set a 1 second timeout on the specified sequence
566 *
567 * this is so after each key press in the sequence you have 1 second
568 * to press the next key before you have to start over
569 *
570 * @returns void
571 */
572 function _resetSequenceTimer() {
573 clearTimeout(_resetTimer);
574 _resetTimer = setTimeout(_resetSequences, 1000);
575 }
576
577 /**
578 * reverses the map lookup so that we can look for specific keys
579 * to see what can and can't use keypress
580 *
581 * @return {Object}
582 */
583 function _getReverseMap() {
584 if (!_REVERSE_MAP) {
585 _REVERSE_MAP = {};
586 for (var key in _MAP) {
587
588 // pull out the numeric keypad from here cause keypress should
589 // be able to detect the keys from the character
590 if (key > 95 && key < 112) {
591 continue;
592 }
593
594 if (_MAP.hasOwnProperty(key)) {
595 _REVERSE_MAP[_MAP[key]] = key;
596 }
597 }
598 }
599 return _REVERSE_MAP;
600 }
601
602 /**
603 * picks the best action based on the key combination
604 *
605 * @param {string} key - character for key
606 * @param {Array} modifiers
607 * @param {string=} action passed in
608 */
609 function _pickBestAction(key, modifiers, action) {
610
611 // if no action was picked in we should try to pick the one
612 // that we think would work best for this key
613 if (!action) {
614 action = _getReverseMap()[key] ? 'keydown' : 'keypress';
615 }
616
617 // modifier keys don't work as expected with keypress,
618 // switch to keydown
619 if (action == 'keypress' && modifiers.length) {
620 action = 'keydown';
621 }
622
623 return action;
624 }
625
626 /**
627 * binds a key sequence to an event
628 *
629 * @param {string} combo - combo specified in bind call
630 * @param {Array} keys
631 * @param {Function} callback
632 * @param {string=} action
633 * @returns void
634 */
635 function _bindSequence(combo, keys, callback, action) {
636
637 // start off by adding a sequence level record for this combination
638 // and setting the level to 0
639 _sequenceLevels[combo] = 0;
640
641 /**
642 * callback to increase the sequence level for this sequence and reset
643 * all other sequences that were active
644 *
645 * @param {string} nextAction
646 * @returns {Function}
647 */
648 function _increaseSequence(nextAction) {
649 return function() {
650 _nextExpectedAction = nextAction;
651 ++_sequenceLevels[combo];
652 _resetSequenceTimer();
653 };
654 }
655
656 /**
657 * wraps the specified callback inside of another function in order
658 * to reset all sequence counters as soon as this sequence is done
659 *
660 * @param {Event} e
661 * @returns void
662 */
663 function _callbackAndReset(e) {
664 _fireCallback(callback, e, combo);
665
666 // we should ignore the next key up if the action is key down
667 // or keypress. this is so if you finish a sequence and
668 // release the key the final key will not trigger a keyup
669 if (action !== 'keyup') {
670 _ignoreNextKeyup = _characterFromEvent(e);
671 }
672
673 // weird race condition if a sequence ends with the key
674 // another sequence begins with
675 setTimeout(_resetSequences, 10);
676 }
677
678 // loop through keys one at a time and bind the appropriate callback
679 // function. for any key leading up to the final one it should
680 // increase the sequence. after the final, it should reset all sequences
681 //
682 // if an action is specified in the original bind call then that will
683 // be used throughout. otherwise we will pass the action that the
684 // next key in the sequence should match. this allows a sequence
685 // to mix and match keypress and keydown events depending on which
686 // ones are better suited to the key provided
687 for (var i = 0; i < keys.length; ++i) {
688 var isFinal = i + 1 === keys.length;
689 var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);
690 _bindSingle(keys[i], wrappedCallback, action, combo, i);
691 }
692 }
693
694 /**
695 * Converts from a string key combination to an array
696 *
697 * @param {string} combination like "command+shift+l"
698 * @return {Array}
699 */
700 function _keysFromString(combination) {
701 if (combination === '+') {
702 return ['+'];
703 }
704
705 return combination.split('+');
706 }
707
708 /**
709 * Gets info for a specific key combination
710 *
711 * @param {string} combination key combination ("command+s" or "a" or "*")
712 * @param {string=} action
713 * @returns {Object}
714 */
715 function _getKeyInfo(combination, action) {
716 var keys,
717 key,
718 i,
719 modifiers = [];
720
721 // take the keys from this pattern and figure out what the actual
722 // pattern is all about
723 keys = _keysFromString(combination);
724
725 for (i = 0; i < keys.length; ++i) {
726 key = keys[i];
727
728 // normalize key names
729 if (_SPECIAL_ALIASES[key]) {
730 key = _SPECIAL_ALIASES[key];
731 }
732
733 // if this is not a keypress event then we should
734 // be smart about using shift keys
735 // this will only work for US keyboards however
736 if (action && action != 'keypress' && _SHIFT_MAP[key]) {
737 key = _SHIFT_MAP[key];
738 modifiers.push('shift');
739 }
740
741 // if this key is a modifier then add it to the list of modifiers
742 if (_isModifier(key)) {
743 modifiers.push(key);
744 }
745 }
746
747 // depending on what the key combination is
748 // we will try to pick the best event for it
749 action = _pickBestAction(key, modifiers, action);
750
751 return {
752 key: key,
753 modifiers: modifiers,
754 action: action
755 };
756 }
757
758 /**
759 * binds a single keyboard combination
760 *
761 * @param {string} combination
762 * @param {Function} callback
763 * @param {string=} action
764 * @param {string=} sequenceName - name of sequence if part of sequence
765 * @param {number=} level - what part of the sequence the command is
766 * @returns void
767 */
768 function _bindSingle(combination, callback, action, sequenceName, level) {
769
770 // store a direct mapped reference for use with Mousetrap.trigger
771 _directMap[combination + ':' + action] = callback;
772
773 // make sure multiple spaces in a row become a single space
774 combination = combination.replace(/\s+/g, ' ');
775
776 var sequence = combination.split(' '),
777 info;
778
779 // if this pattern is a sequence of keys then run through this method
780 // to reprocess each pattern one key at a time
781 if (sequence.length > 1) {
782 _bindSequence(combination, sequence, callback, action);
783 return;
784 }
785
786 info = _getKeyInfo(combination, action);
787
788 // make sure to initialize array if this is the first time
789 // a callback is added for this key
790 _callbacks[info.key] = _callbacks[info.key] || [];
791
792 // remove an existing match if there is one
793 _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);
794
795 // add this call back to the array
796 // if it is a sequence put it at the beginning
797 // if not put it at the end
798 //
799 // this is important because the way these are processed expects
800 // the sequence ones to come first
801 _callbacks[info.key][sequenceName ? 'unshift' : 'push']({
802 callback: callback,
803 modifiers: info.modifiers,
804 action: info.action,
805 seq: sequenceName,
806 level: level,
807 combo: combination
808 });
809 }
810
811 /**
812 * binds multiple combinations to the same callback
813 *
814 * @param {Array} combinations
815 * @param {Function} callback
816 * @param {string|undefined} action
817 * @returns void
818 */
819 function _bindMultiple(combinations, callback, action) {
820 for (var i = 0; i < combinations.length; ++i) {
821 _bindSingle(combinations[i], callback, action);
822 }
823 }
824
825 // start!
826 _addEvent(document, 'keypress', _handleKeyEvent);
827 _addEvent(document, 'keydown', _handleKeyEvent);
828 _addEvent(document, 'keyup', _handleKeyEvent);
829
830 var Mousetrap = {
831
832 /**
833 * binds an event to mousetrap
834 *
835 * can be a single key, a combination of keys separated with +,
836 * an array of keys, or a sequence of keys separated by spaces
837 *
838 * be sure to list the modifier keys first to make sure that the
839 * correct key ends up getting bound (the last key in the pattern)
840 *
841 * @param {string|Array} keys
842 * @param {Function} callback
843 * @param {string=} action - 'keypress', 'keydown', or 'keyup'
844 * @returns void
845 */
846 bind: function(keys, callback, action) {
847 keys = keys instanceof Array ? keys : [keys];
848 _bindMultiple(keys, callback, action);
849 return this;
850 },
851
852 /**
853 * unbinds an event to mousetrap
854 *
855 * the unbinding sets the callback function of the specified key combo
856 * to an empty function and deletes the corresponding key in the
857 * _directMap dict.
858 *
859 * TODO: actually remove this from the _callbacks dictionary instead
860 * of binding an empty function
861 *
862 * the keycombo+action has to be exactly the same as
863 * it was defined in the bind method
864 *
865 * @param {string|Array} keys
866 * @param {string} action
867 * @returns void
868 */
869 unbind: function(keys, action) {
870 return Mousetrap.bind(keys, function() {}, action);
871 },
872
873 /**
874 * triggers an event that has already been bound
875 *
876 * @param {string} keys
877 * @param {string=} action
878 * @returns void
879 */
880 trigger: function(keys, action) {
881 if (_directMap[keys + ':' + action]) {
882 _directMap[keys + ':' + action]({}, keys);
883 }
884 return this;
885 },
886
887 /**
888 * resets the library back to its initial state. this is useful
889 * if you want to clear out the current keyboard shortcuts and bind
890 * new ones - for example if you switch to another page
891 *
892 * @returns void
893 */
894 reset: function() {
895 _callbacks = {};
896 _directMap = {};
897 return this;
898 },
899
900 /**
901 * should we stop this event before firing off callbacks
902 *
903 * @param {Event} e
904 * @param {Element} element
905 * @return {boolean}
906 */
907 stopCallback: function(e, element) {
908
909 // if the element has the class "mousetrap" then no need to stop
910 if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {
911 return false;
912 }
913
914 // stop for input, select, and textarea
915 return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;
916 },
917
918 /**
919 * exposes _handleKey publicly so it can be overwritten by extensions
920 */
921 handleKey: _handleKey
922 };
923
924 // expose mousetrap to the global object
925 window.Mousetrap = Mousetrap;
926
927 // expose mousetrap as an AMD module
928 if (typeof define === 'function' && define.amd) {
929 define(Mousetrap);
930 }
931 }) (window, document);
General Comments 0
You need to be logged in to leave comments. Login now