wer_components/angular-bootstrap-lightbox/LICENSE.txt">Dosyayı Görüntüle
@@ -0,0 +1,21 @@
1
+The MIT License (MIT)
2
+
3
+Copyright (c) 2014
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+SOFTWARE.

+ 172 - 0
static/bower_components/angular-bootstrap-lightbox/README.md

@@ -0,0 +1,172 @@
1
+# angular-bootstrap-lightbox
2
+
3
+This lightbox displays images using an [AngularUI Bootstrap Modal](http://angular-ui.github.io/bootstrap/#/modal) (v0.14).
4
+
5
+When the lightbox is opened, navigating to the previous/next image can be achieved by clicking buttons above the image, clicking the left/right arrow keys, or swiping to the left/right (optional with ngTouch). The escape key for closing the modal is automatically binded by AngularUI Bootstrap.
6
+
7
+Large images are scaled to fit inside the window. An optional image caption overlays the top left corner of the image.
8
+
9
+## Demos
10
+
11
+[Demos](http://compact.github.io/angular-bootstrap-lightbox/)
12
+
13
+## Setup
14
+
15
+1. Install in one of the following ways:
16
+
17
+  * Install with Bower: `bower install angular-bootstrap-lightbox --save`
18
+  * Install with npm: `npm install angular-bootstrap-lightbox --save`
19
+  * Manually save the script and stylesheet from [`dist`](dist).
20
+
21
+2. Include the stylesheet in your app:
22
+
23
+  ```html
24
+  <link rel="stylesheet" href="angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.css">
25
+  ```
26
+
27
+3. Include the script in your app:
28
+
29
+  ```html
30
+  <script src="angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js"></script>
31
+  ```
32
+
33
+4. The Angular module is named `bootstrapLightbox`. Add it as a dependency to your module:
34
+
35
+  ```js
36
+  angular.module('app', ['bootstrapLightbox']);
37
+  ```
38
+
39
+5. Optional dependencies:
40
+
41
+  * To enable swipe navigation in the lightbox, include the [ngTouch](https://docs.angularjs.org/api/ngTouch) script.
42
+  * To show a loading bar while an image is loading, include the [angular-loading-bar](https://github.com/chieffancypants/angular-loading-bar) script.
43
+  * For video support, include the [ng-videosharing-embed](https://github.com/erost/ng-videosharing-embed) script.
44
+
45
+## Basic example
46
+
47
+Gallery:
48
+
49
+```html
50
+<ul ng-controller="GalleryCtrl">
51
+  <li ng-repeat="image in images">
52
+    <a ng-click="openLightboxModal($index)">
53
+      <img ng-src="{{image.thumbUrl}}" class="img-thumbnail">
54
+    </a>
55
+  </li>
56
+</ul>
57
+```
58
+
59
+Controller:
60
+
61
+```js
62
+angular.module('app').controller('GalleryCtrl', function ($scope, Lightbox) {
63
+  $scope.images = [
64
+    {
65
+      'url': '1.jpg',
66
+      'caption': 'Optional caption',
67
+      'thumbUrl': 'thumb1.jpg' // used only for this example
68
+    },
69
+    {
70
+      'url': '2.gif',
71
+      'thumbUrl': 'thumb2.jpg'
72
+    },
73
+    {
74
+      'url': '3.png',
75
+      'thumbUrl': 'thumb3.png'
76
+    }
77
+  ];
78
+
79
+  $scope.openLightboxModal = function (index) {
80
+    Lightbox.openModal($scope.images, index);
81
+  };
82
+});
83
+```
84
+
85
+## Configuration
86
+
87
+### Changing the appearance of the modal lightbox
88
+
89
+The default view template for the lightbox is [lightbox.html](src/lightbox.html). Its look can be changed by making your own custom template and/or adding CSS rules; for example, use the selector `.lightbox-image-caption` to style the caption.
90
+
91
+If you make your own template and save it at `lightbox.html`, no further code is necessary. If you save it at a different path, set it in the provider:
92
+
93
+```js
94
+angular.module('app').config(function (LightboxProvider) {
95
+  // set a custom template
96
+  LightboxProvider.templateUrl = 'path/to/your-template.html';
97
+});
98
+```
99
+
100
+### Disabling the keyboard navigation
101
+
102
+The keyboard navigation in the lightbox with the left/right arrow keys can be enabled/disabled at any time by changing the value of the boolean `Lightbox.keyboardNavEnabled`.
103
+
104
+### Array of images
105
+
106
+The first argument to `Lightbox.openModal` must be an array, and its elements may be of any type. In the basic example above, it is an array of objects with properties `url` and `caption`, but this is only the default and is not required. To let the `Lightbox` service know the correct values, set these methods in the provider:
107
+
108
+```js
109
+angular.module('app').config(function (LightboxProvider) {
110
+  LightboxProvider.getImageUrl = function (image) {
111
+    return '/base/dir/' + image.getName();
112
+  };
113
+
114
+  LightboxProvider.getImageCaption = function (image) {
115
+    return image.label;
116
+  };
117
+});
118
+```
119
+
120
+### Image and modal scaling
121
+
122
+By default, images are scaled only if they are too large for the modal to contain without scrolling.
123
+
124
+If you want all images to be scaled to the maximum possible dimensions, update the `Lightbox.fullScreenMode` boolean:
125
+
126
+```js
127
+angular.module('app').config(function (LightboxProvider) {
128
+  LightboxProvider.fullScreenMode = true;
129
+});
130
+```
131
+
132
+For more custom behaviour, see the [documentation](src/lightbox-service.js) of the methods `calculateImageDimensionLimits` and `calculateModalDimensions`.
133
+
134
+### Videos
135
+
136
+An element in the array of 'images' is considered a video if it is an object with a `type` property having the value `video` (see the [demo](http://compact.github.io/angular-bootstrap-lightbox/demo5/index.html)). To change this, write your own `LightboxProvider.isVideo` method.
137
+
138
+By default, a video is embedded directly if its url ends in `.mp4`, `.ogg`, or `.webm`. Every other url is considered a video from an external sharing service (such as YouTube). To change this check, edit the `LightboxProvider.isSharedVideo` method. The `ng-videosharing-embed` library is used for embedding shared videos if it is included in your app. You can use another video library by changing the template.
139
+
140
+For now, the maximum video dimensions are fixed at 1280x720 (16:9).
141
+
142
+## Development
143
+
144
+* [API documentation](api.md) of the services and directive in the Angular module
145
+
146
+* Setup:
147
+
148
+  ```sh
149
+  npm install
150
+  bower install
151
+  ```
152
+
153
+* Build:
154
+
155
+  ```sh
156
+  grunt
157
+  ```
158
+
159
+* Generate docs:
160
+
161
+  ```sh
162
+  grunt jsdoc2md
163
+  ```
164
+
165
+* Serve the GitHub Pages:
166
+
167
+  ```sh
168
+  git checkout gh-pages
169
+  git checkout master -- dist/angular-bootstrap-lightbox.min.js dist/angular-bootstrap-lightbox.min.css
170
+  bundle install
171
+  bundle exec jekyll serve
172
+  ```

+ 278 - 0
static/bower_components/angular-bootstrap-lightbox/api.md

@@ -0,0 +1,278 @@
1
+<a name="bootstrapLightbox"></a>
2
+## bootstrapLightbox : <code>object</code>
3
+**Kind**: global namespace  
4
+
5
+* [bootstrapLightbox](#bootstrapLightbox) : <code>object</code>
6
+  * [.ImageLoader](#bootstrapLightbox.ImageLoader)
7
+    * [.load](#bootstrapLightbox.ImageLoader.load) ⇒ <code>Promise</code>
8
+  * [.Lightbox](#bootstrapLightbox.Lightbox)
9
+    * [.templateUrl](#bootstrapLightbox.Lightbox.templateUrl) : <code>String</code>
10
+    * [.fullScreenMode](#bootstrapLightbox.Lightbox.fullScreenMode) : <code>Boolean</code>
11
+    * [.getImageUrl](#bootstrapLightbox.Lightbox.getImageUrl) ⇒ <code>String</code>
12
+    * [.getImageCaption](#bootstrapLightbox.Lightbox.getImageCaption) ⇒ <code>String</code>
13
+    * [.calculateImageDimensionLimits](#bootstrapLightbox.Lightbox.calculateImageDimensionLimits) ⇒ <code>Object</code>
14
+    * [.calculateModalDimensions](#bootstrapLightbox.Lightbox.calculateModalDimensions) ⇒ <code>Object</code>
15
+    * [.isVideo](#bootstrapLightbox.Lightbox.isVideo) ⇒ <code>Boolean</code>
16
+    * [.isSharedVideo](#bootstrapLightbox.Lightbox.isSharedVideo) ⇒ <code>Boolean</code>
17
+    * [.images](#bootstrapLightbox.Lightbox.images) : <code>Array</code>
18
+    * [.index](#bootstrapLightbox.Lightbox.index) : <code>Number</code>
19
+    * [.keyboardNavEnabled](#bootstrapLightbox.Lightbox.keyboardNavEnabled) : <code>Boolean</code>
20
+    * [.image](#bootstrapLightbox.Lightbox.image) : <code>\*</code>
21
+    * [.modalInstance](#bootstrapLightbox.Lightbox.modalInstance) : <code>Object</code>
22
+    * [.imageUrl](#bootstrapLightbox.Lightbox.imageUrl) : <code>String</code>
23
+    * [.imageCaption](#bootstrapLightbox.Lightbox.imageCaption) : <code>String</code>
24
+    * [.loading](#bootstrapLightbox.Lightbox.loading) : <code>Boolean</code>
25
+    * [.openModal](#bootstrapLightbox.Lightbox.openModal) ⇒ <code>Object</code>
26
+    * [.closeModal](#bootstrapLightbox.Lightbox.closeModal) : <code>function</code>
27
+    * [.setImage](#bootstrapLightbox.Lightbox.setImage) : <code>function</code>
28
+    * [.firstImage](#bootstrapLightbox.Lightbox.firstImage) : <code>function</code>
29
+    * [.prevImage](#bootstrapLightbox.Lightbox.prevImage) : <code>function</code>
30
+    * [.nextImage](#bootstrapLightbox.Lightbox.nextImage) : <code>function</code>
31
+    * [.lastImage](#bootstrapLightbox.Lightbox.lastImage) : <code>function</code>
32
+    * [.setImages](#bootstrapLightbox.Lightbox.setImages) : <code>function</code>
33
+  * [.lightboxSrc](#bootstrapLightbox.lightboxSrc)
34
+
35
+<a name="bootstrapLightbox.ImageLoader"></a>
36
+### bootstrapLightbox.ImageLoader
37
+Service for loading an image.
38
+
39
+**Kind**: static class of <code>[bootstrapLightbox](#bootstrapLightbox)</code>  
40
+<a name="bootstrapLightbox.ImageLoader.load"></a>
41
+#### ImageLoader.load ⇒ <code>Promise</code>
42
+Load the image at the given URL.
43
+
44
+**Kind**: static property of <code>[ImageLoader](#bootstrapLightbox.ImageLoader)</code>  
45
+**Returns**: <code>Promise</code> - A $q promise that resolves when the image has loaded
46
+  successfully.  
47
+
48
+| Param | Type |
49
+| --- | --- |
50
+| url | <code>String</code> | 
51
+
52
+<a name="bootstrapLightbox.Lightbox"></a>
53
+### bootstrapLightbox.Lightbox
54
+Lightbox service.
55
+
56
+**Kind**: static class of <code>[bootstrapLightbox](#bootstrapLightbox)</code>  
57
+
58
+* [.Lightbox](#bootstrapLightbox.Lightbox)
59
+  * [.templateUrl](#bootstrapLightbox.Lightbox.templateUrl) : <code>String</code>
60
+  * [.fullScreenMode](#bootstrapLightbox.Lightbox.fullScreenMode) : <code>Boolean</code>
61
+  * [.getImageUrl](#bootstrapLightbox.Lightbox.getImageUrl) ⇒ <code>String</code>
62
+  * [.getImageCaption](#bootstrapLightbox.Lightbox.getImageCaption) ⇒ <code>String</code>
63
+  * [.calculateImageDimensionLimits](#bootstrapLightbox.Lightbox.calculateImageDimensionLimits) ⇒ <code>Object</code>
64
+  * [.calculateModalDimensions](#bootstrapLightbox.Lightbox.calculateModalDimensions) ⇒ <code>Object</code>
65
+  * [.isVideo](#bootstrapLightbox.Lightbox.isVideo) ⇒ <code>Boolean</code>
66
+  * [.isSharedVideo](#bootstrapLightbox.Lightbox.isSharedVideo) ⇒ <code>Boolean</code>
67
+  * [.images](#bootstrapLightbox.Lightbox.images) : <code>Array</code>
68
+  * [.index](#bootstrapLightbox.Lightbox.index) : <code>Number</code>
69
+  * [.keyboardNavEnabled](#bootstrapLightbox.Lightbox.keyboardNavEnabled) : <code>Boolean</code>
70
+  * [.image](#bootstrapLightbox.Lightbox.image) : <code>\*</code>
71
+  * [.modalInstance](#bootstrapLightbox.Lightbox.modalInstance) : <code>Object</code>
72
+  * [.imageUrl](#bootstrapLightbox.Lightbox.imageUrl) : <code>String</code>
73
+  * [.imageCaption](#bootstrapLightbox.Lightbox.imageCaption) : <code>String</code>
74
+  * [.loading](#bootstrapLightbox.Lightbox.loading) : <code>Boolean</code>
75
+  * [.openModal](#bootstrapLightbox.Lightbox.openModal) ⇒ <code>Object</code>
76
+  * [.closeModal](#bootstrapLightbox.Lightbox.closeModal) : <code>function</code>
77
+  * [.setImage](#bootstrapLightbox.Lightbox.setImage) : <code>function</code>
78
+  * [.firstImage](#bootstrapLightbox.Lightbox.firstImage) : <code>function</code>
79
+  * [.prevImage](#bootstrapLightbox.Lightbox.prevImage) : <code>function</code>
80
+  * [.nextImage](#bootstrapLightbox.Lightbox.nextImage) : <code>function</code>
81
+  * [.lastImage](#bootstrapLightbox.Lightbox.lastImage) : <code>function</code>
82
+  * [.setImages](#bootstrapLightbox.Lightbox.setImages) : <code>function</code>
83
+
84
+<a name="bootstrapLightbox.Lightbox.templateUrl"></a>
85
+#### Lightbox.templateUrl : <code>String</code>
86
+Template URL passed into `$uibModal.open()`.
87
+
88
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
89
+<a name="bootstrapLightbox.Lightbox.fullScreenMode"></a>
90
+#### Lightbox.fullScreenMode : <code>Boolean</code>
91
+Whether images should be scaled to the maximum possible dimensions.
92
+
93
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
94
+<a name="bootstrapLightbox.Lightbox.getImageUrl"></a>
95
+#### Lightbox.getImageUrl ⇒ <code>String</code>
96
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
97
+**Returns**: <code>String</code> - The URL of the given image.  
98
+
99
+| Param | Type | Description |
100
+| --- | --- | --- |
101
+| image | <code>\*</code> | An element in the array of images. |
102
+
103
+<a name="bootstrapLightbox.Lightbox.getImageCaption"></a>
104
+#### Lightbox.getImageCaption ⇒ <code>String</code>
105
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
106
+**Returns**: <code>String</code> - The caption of the given image.  
107
+
108
+| Param | Type | Description |
109
+| --- | --- | --- |
110
+| image | <code>\*</code> | An element in the array of images. |
111
+
112
+<a name="bootstrapLightbox.Lightbox.calculateImageDimensionLimits"></a>
113
+#### Lightbox.calculateImageDimensionLimits ⇒ <code>Object</code>
114
+Calculate the max and min limits to the width and height of the displayed
115
+  image (all are optional). The max dimensions override the min
116
+  dimensions if they conflict.
117
+
118
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
119
+**Returns**: <code>Object</code> - May optionally contain the properties `minWidth`,
120
+  `minHeight`, `maxWidth`, and `maxHeight`.  
121
+
122
+| Param | Type | Description |
123
+| --- | --- | --- |
124
+| dimensions | <code>Object</code> | Contains the properties `windowWidth`,   `windowHeight`, `imageWidth`, and `imageHeight`. |
125
+
126
+<a name="bootstrapLightbox.Lightbox.calculateModalDimensions"></a>
127
+#### Lightbox.calculateModalDimensions ⇒ <code>Object</code>
128
+Calculate the width and height of the modal. This method gets called
129
+  after the width and height of the image, as displayed inside the modal,
130
+  are calculated.
131
+
132
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
133
+**Returns**: <code>Object</code> - Must contain the properties `width` and `height`.  
134
+
135
+| Param | Type | Description |
136
+| --- | --- | --- |
137
+| dimensions | <code>Object</code> | Contains the properties `windowWidth`,   `windowHeight`, `imageDisplayWidth`, and `imageDisplayHeight`. |
138
+
139
+<a name="bootstrapLightbox.Lightbox.isVideo"></a>
140
+#### Lightbox.isVideo ⇒ <code>Boolean</code>
141
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
142
+**Returns**: <code>Boolean</code> - Whether the provided element is a video.  
143
+
144
+| Param | Type | Description |
145
+| --- | --- | --- |
146
+| image | <code>\*</code> | An element in the array of images. |
147
+
148
+<a name="bootstrapLightbox.Lightbox.isSharedVideo"></a>
149
+#### Lightbox.isSharedVideo ⇒ <code>Boolean</code>
150
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
151
+**Returns**: <code>Boolean</code> - Whether the provided element is a video that is to be
152
+  embedded with an external service like YouTube. By default, this is
153
+  determined by the url not ending in `.mp4`, `.ogg`, or `.webm`.  
154
+
155
+| Param | Type | Description |
156
+| --- | --- | --- |
157
+| image | <code>\*</code> | An element in the array of images. |
158
+
159
+<a name="bootstrapLightbox.Lightbox.images"></a>
160
+#### Lightbox.images : <code>Array</code>
161
+Array of all images to be shown in the lightbox (not `Image` objects).
162
+
163
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
164
+<a name="bootstrapLightbox.Lightbox.index"></a>
165
+#### Lightbox.index : <code>Number</code>
166
+The index in the `Lightbox.images` aray of the image that is currently
167
+  shown in the lightbox.
168
+
169
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
170
+<a name="bootstrapLightbox.Lightbox.keyboardNavEnabled"></a>
171
+#### Lightbox.keyboardNavEnabled : <code>Boolean</code>
172
+Whether keyboard navigation is currently enabled for navigating through
173
+  images in the lightbox.
174
+
175
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
176
+<a name="bootstrapLightbox.Lightbox.image"></a>
177
+#### Lightbox.image : <code>\*</code>
178
+The image currently shown in the lightbox.
179
+
180
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
181
+<a name="bootstrapLightbox.Lightbox.modalInstance"></a>
182
+#### Lightbox.modalInstance : <code>Object</code>
183
+The UI Bootstrap modal instance. See {@link
184
+  http://angular-ui.github.io/bootstrap/#/modal}.
185
+
186
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
187
+<a name="bootstrapLightbox.Lightbox.imageUrl"></a>
188
+#### Lightbox.imageUrl : <code>String</code>
189
+The URL of the current image. This is a property of the service rather
190
+  than of `Lightbox.image` because `Lightbox.image` need not be an
191
+  object, and besides it would be poor practice to alter the given
192
+  objects.
193
+
194
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
195
+<a name="bootstrapLightbox.Lightbox.imageCaption"></a>
196
+#### Lightbox.imageCaption : <code>String</code>
197
+The optional caption of the current image.
198
+
199
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
200
+<a name="bootstrapLightbox.Lightbox.loading"></a>
201
+#### Lightbox.loading : <code>Boolean</code>
202
+Whether an image is currently being loaded.
203
+
204
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
205
+<a name="bootstrapLightbox.Lightbox.openModal"></a>
206
+#### Lightbox.openModal ⇒ <code>Object</code>
207
+Open the lightbox modal.
208
+
209
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
210
+**Returns**: <code>Object</code> - The created UI Bootstrap modal instance.  
211
+
212
+| Param | Type | Description |
213
+| --- | --- | --- |
214
+| newImages | <code>Array</code> | An array of images. Each image may be of   any type. |
215
+| newIndex | <code>Number</code> | The index in `newImages` to set as the   current image. |
216
+| modalParams | <code>Object</code> | Custom params for the angular UI   bootstrap modal (in $uibModal.open()). |
217
+
218
+<a name="bootstrapLightbox.Lightbox.closeModal"></a>
219
+#### Lightbox.closeModal : <code>function</code>
220
+Close the lightbox modal.
221
+
222
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
223
+
224
+| Param | Type | Description |
225
+| --- | --- | --- |
226
+| result | <code>\*</code> | This argument can be useful if the modal promise   gets handler(s) attached to it. |
227
+
228
+<a name="bootstrapLightbox.Lightbox.setImage"></a>
229
+#### Lightbox.setImage : <code>function</code>
230
+This method can be used in all methods which navigate/change the
231
+  current image.
232
+
233
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
234
+
235
+| Param | Type | Description |
236
+| --- | --- | --- |
237
+| newIndex | <code>Number</code> | The index in the array of images to set as   the new current image. |
238
+
239
+<a name="bootstrapLightbox.Lightbox.firstImage"></a>
240
+#### Lightbox.firstImage : <code>function</code>
241
+Navigate to the first image.
242
+
243
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
244
+<a name="bootstrapLightbox.Lightbox.prevImage"></a>
245
+#### Lightbox.prevImage : <code>function</code>
246
+Navigate to the previous image.
247
+
248
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
249
+<a name="bootstrapLightbox.Lightbox.nextImage"></a>
250
+#### Lightbox.nextImage : <code>function</code>
251
+Navigate to the next image.
252
+
253
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
254
+<a name="bootstrapLightbox.Lightbox.lastImage"></a>
255
+#### Lightbox.lastImage : <code>function</code>
256
+Navigate to the last image.
257
+
258
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
259
+<a name="bootstrapLightbox.Lightbox.setImages"></a>
260
+#### Lightbox.setImages : <code>function</code>
261
+Call this method to set both the array of images and the current image
262
+  (based on the current index). A use case is when the image collection
263
+  gets changed dynamically in some way while the lightbox is still
264
+  open.
265
+
266
+**Kind**: static property of <code>[Lightbox](#bootstrapLightbox.Lightbox)</code>  
267
+
268
+| Param | Type | Description |
269
+| --- | --- | --- |
270
+| newImages | <code>Array</code> | The new array of images. |
271
+
272
+<a name="bootstrapLightbox.lightboxSrc"></a>
273
+### bootstrapLightbox.lightboxSrc
274
+This attribute directive is used in an `<img>` element in the
275
+  modal template in place of `src`. It handles resizing both the `<img>`
276
+  element and its relevant parent elements within the modal.
277
+
278
+**Kind**: static class of <code>[bootstrapLightbox](#bootstrapLightbox)</code>  

+ 27 - 0
static/bower_components/angular-bootstrap-lightbox/bower.json

@@ -0,0 +1,27 @@
1
+{
2
+  "name": "angular-bootstrap-lightbox",
3
+  "version": "0.12.0",
4
+  "main": [
5
+    "dist/angular-bootstrap-lightbox.js",
6
+    "dist/angular-bootstrap-lightbox.css"
7
+  ],
8
+  "ignore": [
9
+    "src",
10
+    ".*",
11
+    "Gruntfile.js",
12
+    "package.json"
13
+  ],
14
+  "dependencies": {
15
+    "angular": "^1.4.10",
16
+    "angular-bootstrap": "^1.3.1"
17
+  },
18
+  "devDependencies": {
19
+    "bootstrap":"^3.3.6",
20
+    "angular-loading-bar": "^0.8.0",
21
+    "angular-touch": "^1.4.10",
22
+    "ng-videosharing-embed": "^0.3.4"
23
+  },
24
+  "resolutions": {
25
+    "angular": "^1.4.10"
26
+  }
27
+}

+ 45 - 0
static/bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.css

@@ -0,0 +1,45 @@
1
+.lightbox-nav {
2
+  position: relative;
3
+  margin-bottom: 12px; /* the font-size of .btn-xs */
4
+  height: 22px;
5
+  text-align: center;
6
+  font-size: 0; /* prevent the otherwise inherited font-size and line-height from adding extra space to the bottom of this div */
7
+}
8
+
9
+.lightbox-nav .btn-group {
10
+  vertical-align: top;
11
+}
12
+
13
+.lightbox-nav .close {
14
+  /* absolutely position this in order to center the nav buttons */
15
+  position: absolute;
16
+  top: 0;
17
+  right: 0;
18
+}
19
+
20
+.lightbox-image-container {
21
+  position: relative;
22
+  text-align: center; /* center the image */
23
+}
24
+
25
+/* the caption overlays the top left corner of the image */
26
+.lightbox-image-caption {
27
+  position: absolute;
28
+  top: 0;
29
+  left: 0;
30
+  margin: 0.5em 0.9em; /* the left and right margins are offset by 0.4em for the span box-shadow */
31
+  color: #000;
32
+  font-size: 1.5em;
33
+  font-weight: bold;
34
+  text-align: left;
35
+  text-shadow: 0.1em 0.1em 0.2em rgba(255, 255, 255, 0.5);
36
+}
37
+
38
+.lightbox-image-caption span {
39
+  padding-top: 0.1em;
40
+  padding-bottom: 0.1em;
41
+  background-color: rgba(255, 255, 255, 0.75);
42
+  /* pad the left and right of each line of text */
43
+  box-shadow: 0.4em 0 0 rgba(255, 255, 255, 0.75),
44
+    -0.4em 0 0 rgba(255, 255, 255, 0.75);
45
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 728 - 0
static/bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
static/bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.min.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 2 - 0
static/bower_components/angular-bootstrap-lightbox/dist/angular-bootstrap-lightbox.min.js


+ 2 - 0
static/bower_components/angular-bootstrap-lightbox/index.js

@@ -0,0 +1,2 @@
1
+require('./dist/angular-bootstrap-lightbox');
2
+module.exports = 'angular-bootstrap-lightbox';

+ 31 - 0
static/bower_components/angular-bootstrap/.bower.json

@@ -0,0 +1,31 @@
1
+{
2
+  "author": {
3
+    "name": "https://github.com/angular-ui/bootstrap/graphs/contributors"
4
+  },
5
+  "name": "angular-bootstrap",
6
+  "keywords": [
7
+    "angular",
8
+    "angular-ui",
9
+    "bootstrap"
10
+  ],
11
+  "license": "MIT",
12
+  "ignore": [],
13
+  "description": "Native AngularJS (Angular) directives for Bootstrap.",
14
+  "version": "1.3.3",
15
+  "main": [
16
+    "./ui-bootstrap-tpls.js"
17
+  ],
18
+  "dependencies": {
19
+    "angular": ">=1.4.0"
20
+  },
21
+  "homepage": "https://github.com/angular-ui/bootstrap-bower",
22
+  "_release": "1.3.3",
23
+  "_resolution": {
24
+    "type": "version",
25
+    "tag": "1.3.3",
26
+    "commit": "d45246707f5bf9533e3824861a29abd36757db45"
27
+  },
28
+  "_source": "https://github.com/angular-ui/bootstrap-bower.git",
29
+  "_target": "^1.3.1",
30
+  "_originalSource": "angular-bootstrap"
31
+}

+ 1 - 0
static/bower_components/angular-bootstrap/.gitignore

@@ -0,0 +1 @@
1
+.DS_Store

+ 1 - 0
static/bower_components/angular-bootstrap/.npmignore

@@ -0,0 +1 @@
1
+bower.json

+ 120 - 0
static/bower_components/angular-bootstrap/README.md

@@ -0,0 +1,120 @@
1
+### UI Bootstrap - [AngularJS](http://angularjs.org/) directives specific to [Bootstrap](http://getbootstrap.com)
2
+
3
+[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angular-ui/bootstrap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
+[![Build Status](https://secure.travis-ci.org/angular-ui/bootstrap.svg)](http://travis-ci.org/angular-ui/bootstrap)
5
+[![devDependency Status](https://david-dm.org/angular-ui/bootstrap/dev-status.svg?branch=master)](https://david-dm.org/angular-ui/bootstrap#info=devDependencies)
6
+
7
+### Quick links
8
+- [Demo](#demo)
9
+- [Installation](#installation)
10
+    - [NPM](#install-with-npm)
11
+    - [Bower](#install-with-bower)
12
+    - [NuGet](#install-with-nuget)
13
+    - [Custom](#custom-build)
14
+    - [Manual](#manual-download)
15
+- [Support](#support)
16
+    - [FAQ](#faq)
17
+    - [Supported browsers](#supported-browsers)
18
+    - [Need help?](#need-help)
19
+    - [Found a bug?](#found-a-bug)
20
+- [Contributing to the project](#contributing-to-the-project)
21
+- [Development, meeting minutes, roadmap and more.](#development-meeting-minutes-roadmap-and-more)
22
+
23
+
24
+# Demo
25
+
26
+Do you want to see directives in action? Visit http://angular-ui.github.io/bootstrap/!
27
+
28
+# Installation
29
+
30
+Installation is easy as UI Bootstrap has minimal dependencies - only the AngularJS and Twitter Bootstrap's CSS are required.
31
+Note: Since version 0.13.0, UI Bootstrap depends on [ngAnimate](https://docs.angularjs.org/api/ngAnimate) for transitions and animations, such as the accordion, carousel, etc. Include `ngAnimate` in the module dependencies for your app in order to enable animation.
32
+
33
+#### Install with NPM
34
+
35
+```sh
36
+$ npm install angular-ui-bootstrap
37
+```
38
+
39
+This will install AngularJS and Bootstrap NPM packages.
40
+
41
+#### Install with Bower
42
+```sh
43
+$ bower install angular-bootstrap
44
+```
45
+
46
+Note: do not install 'angular-ui-bootstrap'.  A separate repository - [bootstrap-bower](https://github.com/angular-ui/bootstrap-bower) - hosts the compiled javascript file and bower.json.
47
+
48
+#### Install with NuGet
49
+To install AngularJS UI Bootstrap, run the following command in the Package Manager Console
50
+
51
+```sh
52
+PM> Install-Package Angular.UI.Bootstrap
53
+```
54
+
55
+#### Custom build
56
+
57
+Head over to http://angular-ui.github.io/bootstrap/ and hit the *Custom build* button to create your own custom UI Bootstrap build, just the way you like it.
58
+
59
+#### Manual download
60
+
61
+After downloading dependencies (or better yet, referencing them from your favorite CDN) you need to download build version of this project. All the files and their purposes are described here:
62
+https://github.com/angular-ui/bootstrap/tree/gh-pages#build-files
63
+Don't worry, if you are not sure which file to take, opt for `ui-bootstrap-tpls-[version].min.js`.
64
+
65
+### Adding dependency to your project
66
+
67
+When you are done downloading all the dependencies and project files the only remaining part is to add dependencies on the `ui.bootstrap` AngularJS module:
68
+
69
+```js
70
+angular.module('myModule', ['ui.bootstrap']);
71
+```
72
+
73
+If you're a Browserify or Webpack user, you can do:
74
+
75
+```js
76
+var uibs = require('angular-ui-bootstrap');
77
+
78
+angular.module('myModule', [uibs]);
79
+```
80
+
81
+# Support
82
+
83
+## FAQ
84
+
85
+https://github.com/angular-ui/bootstrap/wiki/FAQ
86
+
87
+## Supported browsers
88
+
89
+Directives from this repository are automatically tested with the following browsers:
90
+* Chrome (stable and canary channel)
91
+* Firefox
92
+* IE 9 and 10
93
+* Opera
94
+* Safari
95
+
96
+Modern mobile browsers should work without problems.
97
+
98
+
99
+## Need help?
100
+Need help using UI Bootstrap?
101
+
102
+* Live help in the IRC (`#angularjs` channel at the `freenode` network). Use this [webchat](https://webchat.freenode.net/) or your own IRC client.
103
+* Ask a question in [StackOverflow](http://stackoverflow.com/) under the [angular-ui-bootstrap](http://stackoverflow.com/questions/tagged/angular-ui-bootstrap) tag.
104
+
105
+**Please do not create new issues in this repository to ask questions about using UI Bootstrap**
106
+
107
+## Found a bug?
108
+Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md#you-think-youve-found-a-bug) and submit your issue [here](https://github.com/angular-ui/bootstrap/issues/new).
109
+
110
+
111
+----
112
+
113
+
114
+# Contributing to the project
115
+
116
+We are always looking for the quality contributions! Please check the [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution guidelines.
117
+
118
+# Development, meeting minutes, roadmap and more.
119
+
120
+Head over to the [Wiki](https://github.com/angular-ui/bootstrap/wiki) for notes on development for UI Bootstrap, meeting minutes from the UI Bootstrap team, roadmap plans, project philosophy and more.

+ 19 - 0
static/bower_components/angular-bootstrap/bower.json

@@ -0,0 +1,19 @@
1
+{
2
+    "author": {
3
+        "name": "https://github.com/angular-ui/bootstrap/graphs/contributors"
4
+    },
5
+    "name": "angular-bootstrap",
6
+    "keywords": [
7
+        "angular",
8
+        "angular-ui",
9
+        "bootstrap"
10
+    ],
11
+    "license": "MIT",
12
+    "ignore": [],
13
+    "description": "Native AngularJS (Angular) directives for Bootstrap.",
14
+    "version": "1.3.3",
15
+    "main": ["./ui-bootstrap-tpls.js"],
16
+    "dependencies": {
17
+        "angular": ">=1.4.0"
18
+    }
19
+}

+ 2 - 0
static/bower_components/angular-bootstrap/index.js

@@ -0,0 +1,2 @@
1
+require('./ui-bootstrap-tpls');
2
+module.exports = 'ui.bootstrap';

+ 23 - 0
static/bower_components/angular-bootstrap/package.json

@@ -0,0 +1,23 @@
1
+{
2
+  "name": "angular-ui-bootstrap",
3
+  "version": "1.3.3",
4
+  "description": "Bootstrap widgets for Angular",
5
+  "main": "index.js",
6
+  "homepage": "http://angular-ui.github.io/bootstrap/",
7
+  "repository": {
8
+    "type": "git",
9
+    "url": "https://github.com/angular-ui/bootstrap.git"
10
+  },
11
+  "keywords": [
12
+    "angular",
13
+    "bootstrap",
14
+    "angular-ui",
15
+    "components",
16
+    "client-side"
17
+  ],
18
+  "author": "https://github.com/angular-ui/bootstrap/graphs/contributors",
19
+  "peerDependencies": {
20
+    "angular": ">= 1.4.0-beta.0 || >= 1.5.0-beta.0"
21
+  },
22
+  "license": "MIT"
23
+}

+ 115 - 0
static/bower_components/angular-bootstrap/ui-bootstrap-csp.css

@@ -0,0 +1,115 @@
1
+/* Include this file in your html if you are using the CSP mode. */
2
+
3
+.ng-animate.item:not(.left):not(.right) {
4
+  -webkit-transition: 0s ease-in-out left;
5
+  transition: 0s ease-in-out left
6
+}
7
+.uib-datepicker .uib-title {
8
+  width: 100%;
9
+}
10
+
11
+.uib-day button, .uib-month button, .uib-year button {
12
+  min-width: 100%;
13
+}
14
+
15
+.uib-left, .uib-right {
16
+  width: 100%
17
+}
18
+
19
+.uib-position-measure {
20
+  display: block !important;
21
+  visibility: hidden !important;
22
+  position: absolute !important;
23
+  top: -9999px !important;
24
+  left: -9999px !important;
25
+}
26
+
27
+.uib-position-scrollbar-measure {
28
+  position: absolute !important;
29
+  top: -9999px !important;
30
+  width: 50px !important;
31
+  height: 50px !important;
32
+  overflow: scroll !important;
33
+}
34
+
35
+.uib-position-body-scrollbar-measure {
36
+  overflow: scroll !important;
37
+}
38
+.uib-datepicker-popup.dropdown-menu {
39
+  display: block;
40
+  float: none;
41
+  margin: 0;
42
+}
43
+
44
+.uib-button-bar {
45
+  padding: 10px 9px 2px;
46
+}
47
+
48
+[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
49
+[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
50
+[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
51
+[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
52
+[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
53
+[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
54
+[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
55
+[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
56
+[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
57
+[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
58
+[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
59
+[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
60
+[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
61
+[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
62
+[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
63
+[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
64
+[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
65
+[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
66
+[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
67
+[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
68
+[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
69
+[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
70
+[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
71
+[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
72
+[uib-popover-popup].popover.top-left > .arrow,
73
+[uib-popover-popup].popover.top-right > .arrow,
74
+[uib-popover-popup].popover.bottom-left > .arrow,
75
+[uib-popover-popup].popover.bottom-right > .arrow,
76
+[uib-popover-popup].popover.left-top > .arrow,
77
+[uib-popover-popup].popover.left-bottom > .arrow,
78
+[uib-popover-popup].popover.right-top > .arrow,
79
+[uib-popover-popup].popover.right-bottom > .arrow,
80
+[uib-popover-html-popup].popover.top-left > .arrow,
81
+[uib-popover-html-popup].popover.top-right > .arrow,
82
+[uib-popover-html-popup].popover.bottom-left > .arrow,
83
+[uib-popover-html-popup].popover.bottom-right > .arrow,
84
+[uib-popover-html-popup].popover.left-top > .arrow,
85
+[uib-popover-html-popup].popover.left-bottom > .arrow,
86
+[uib-popover-html-popup].popover.right-top > .arrow,
87
+[uib-popover-html-popup].popover.right-bottom > .arrow,
88
+[uib-popover-template-popup].popover.top-left > .arrow,
89
+[uib-popover-template-popup].popover.top-right > .arrow,
90
+[uib-popover-template-popup].popover.bottom-left > .arrow,
91
+[uib-popover-template-popup].popover.bottom-right > .arrow,
92
+[uib-popover-template-popup].popover.left-top > .arrow,
93
+[uib-popover-template-popup].popover.left-bottom > .arrow,
94
+[uib-popover-template-popup].popover.right-top > .arrow,
95
+[uib-popover-template-popup].popover.right-bottom > .arrow {
96
+  top: auto;
97
+  bottom: auto;
98
+  left: auto;
99
+  right: auto;
100
+  margin: 0;
101
+}
102
+
103
+[uib-popover-popup].popover,
104
+[uib-popover-html-popup].popover,
105
+[uib-popover-template-popup].popover {
106
+  display: block !important;
107
+}
108
+
109
+.uib-time input {
110
+  width: 50px;
111
+}
112
+
113
+[uib-typeahead-popup].dropdown-menu {
114
+  display: block;
115
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 7347 - 0
static/bower_components/angular-bootstrap/ui-bootstrap-tpls.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 10 - 0
static/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 6924 - 0
static/bower_components/angular-bootstrap/ui-bootstrap.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 10 - 0
static/bower_components/angular-bootstrap/ui-bootstrap.min.js


+ 21 - 0
static/bower_components/angular-sanitize/.bower.json

@@ -0,0 +1,21 @@
1
+{
2
+  "name": "angular-sanitize",
3
+  "version": "1.6.6",
4
+  "license": "MIT",
5
+  "main": "./angular-sanitize.js",
6
+  "ignore": [],
7
+  "dependencies": {
8
+    "angular": "1.6.6"
9
+  },
10
+  "homepage": "https://github.com/angular/bower-angular-sanitize",
11
+  "_release": "1.6.6",
12
+  "_resolution": {
13
+    "type": "version",
14
+    "tag": "v1.6.6",
15
+    "commit": "27b6da5578b99482330c6c38c5039a517e777c47"
16
+  },
17
+  "_source": "https://github.com/angular/bower-angular-sanitize.git",
18
+  "_target": "^1.6.6",
19
+  "_originalSource": "angular-sanitize",
20
+  "_direct": true
21
+}

+ 21 - 0
static/bower_components/angular-sanitize/LICENSE.md

@@ -0,0 +1,21 @@
1
+The MIT License (MIT)
2
+
3
+Copyright (c) 2016 Angular
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+SOFTWARE.

+ 68 - 0
static/bower_components/angular-sanitize/README.md

@@ -0,0 +1,68 @@
1
+# packaged angular-sanitize
2
+
3
+This repo is for distribution on `npm` and `bower`. The source for this module is in the
4
+[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngSanitize).
5
+Please file issues and pull requests against that repo.
6
+
7
+## Install
8
+
9
+You can install this package either with `npm` or with `bower`.
10
+
11
+### npm
12
+
13
+```shell
14
+npm install angular-sanitize
15
+```
16
+
17
+Then add `ngSanitize` as a dependency for your app:
18
+
19
+```javascript
20
+angular.module('myApp', [require('angular-sanitize')]);
21
+```
22
+
23
+### bower
24
+
25
+```shell
26
+bower install angular-sanitize
27
+```
28
+
29
+Add a `<script>` to your `index.html`:
30
+
31
+```html
32
+<script src="/bower_components/angular-sanitize/angular-sanitize.js"></script>
33
+```
34
+
35
+Then add `ngSanitize` as a dependency for your app:
36
+
37
+```javascript
38
+angular.module('myApp', ['ngSanitize']);
39
+```
40
+
41
+## Documentation
42
+
43
+Documentation is available on the
44
+[AngularJS docs site](http://docs.angularjs.org/api/ngSanitize).
45
+
46
+## License
47
+
48
+The MIT License
49
+
50
+Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
51
+
52
+Permission is hereby granted, free of charge, to any person obtaining a copy
53
+of this software and associated documentation files (the "Software"), to deal
54
+in the Software without restriction, including without limitation the rights
55
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
56
+copies of the Software, and to permit persons to whom the Software is
57
+furnished to do so, subject to the following conditions:
58
+
59
+The above copyright notice and this permission notice shall be included in
60
+all copies or substantial portions of the Software.
61
+
62
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
63
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
64
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
65
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
66
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
67
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
68
+THE SOFTWARE.

+ 806 - 0
static/bower_components/angular-sanitize/angular-sanitize.js

@@ -0,0 +1,806 @@
1
+/**
2
+ * @license AngularJS v1.6.6
3
+ * (c) 2010-2017 Google, Inc. http://angularjs.org
4
+ * License: MIT
5
+ */
6
+(function(window, angular) {'use strict';
7
+
8
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
9
+ *     Any commits to this file should be reviewed with security in mind.  *
10
+ *   Changes to this file can potentially create security vulnerabilities. *
11
+ *          An approval from 2 Core members with history of modifying      *
12
+ *                         this file is required.                          *
13
+ *                                                                         *
14
+ *  Does the change somehow allow for arbitrary javascript to be executed? *
15
+ *    Or allows for someone to change the prototype of built-in objects?   *
16
+ *     Or gives undesired access to variables likes document or window?    *
17
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
18
+
19
+var $sanitizeMinErr = angular.$$minErr('$sanitize');
20
+var bind;
21
+var extend;
22
+var forEach;
23
+var isDefined;
24
+var lowercase;
25
+var noop;
26
+var nodeContains;
27
+var htmlParser;
28
+var htmlSanitizeWriter;
29
+
30
+/**
31
+ * @ngdoc module
32
+ * @name ngSanitize
33
+ * @description
34
+ *
35
+ * # ngSanitize
36
+ *
37
+ * The `ngSanitize` module provides functionality to sanitize HTML.
38
+ *
39
+ *
40
+ * <div doc-module-components="ngSanitize"></div>
41
+ *
42
+ * See {@link ngSanitize.$sanitize `$sanitize`} for usage.
43
+ */
44
+
45
+/**
46
+ * @ngdoc service
47
+ * @name $sanitize
48
+ * @kind function
49
+ *
50
+ * @description
51
+ *   Sanitizes an html string by stripping all potentially dangerous tokens.
52
+ *
53
+ *   The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
54
+ *   then serialized back to properly escaped html string. This means that no unsafe input can make
55
+ *   it into the returned string.
56
+ *
57
+ *   The whitelist for URL sanitization of attribute values is configured using the functions
58
+ *   `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider
59
+ *   `$compileProvider`}.
60
+ *
61
+ *   The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.
62
+ *
63
+ * @param {string} html HTML input.
64
+ * @returns {string} Sanitized HTML.
65
+ *
66
+ * @example
67
+   <example module="sanitizeExample" deps="angular-sanitize.js" name="sanitize-service">
68
+   <file name="index.html">
69
+     <script>
70
+         angular.module('sanitizeExample', ['ngSanitize'])
71
+           .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
72
+             $scope.snippet =
73
+               '<p style="color:blue">an html\n' +
74
+               '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
75
+               'snippet</p>';
76
+             $scope.deliberatelyTrustDangerousSnippet = function() {
77
+               return $sce.trustAsHtml($scope.snippet);
78
+             };
79
+           }]);
80
+     </script>
81
+     <div ng-controller="ExampleController">
82
+        Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
83
+       <table>
84
+         <tr>
85
+           <td>Directive</td>
86
+           <td>How</td>
87
+           <td>Source</td>
88
+           <td>Rendered</td>
89
+         </tr>
90
+         <tr id="bind-html-with-sanitize">
91
+           <td>ng-bind-html</td>
92
+           <td>Automatically uses $sanitize</td>
93
+           <td><pre>&lt;div ng-bind-html="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
94
+           <td><div ng-bind-html="snippet"></div></td>
95
+         </tr>
96
+         <tr id="bind-html-with-trust">
97
+           <td>ng-bind-html</td>
98
+           <td>Bypass $sanitize by explicitly trusting the dangerous value</td>
99
+           <td>
100
+           <pre>&lt;div ng-bind-html="deliberatelyTrustDangerousSnippet()"&gt;
101
+&lt;/div&gt;</pre>
102
+           </td>
103
+           <td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
104
+         </tr>
105
+         <tr id="bind-default">
106
+           <td>ng-bind</td>
107
+           <td>Automatically escapes</td>
108
+           <td><pre>&lt;div ng-bind="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
109
+           <td><div ng-bind="snippet"></div></td>
110
+         </tr>
111
+       </table>
112
+       </div>
113
+   </file>
114
+   <file name="protractor.js" type="protractor">
115
+     it('should sanitize the html snippet by default', function() {
116
+       expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
117
+         toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
118
+     });
119
+
120
+     it('should inline raw snippet if bound to a trusted value', function() {
121
+       expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).
122
+         toBe("<p style=\"color:blue\">an html\n" +
123
+              "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
124
+              "snippet</p>");
125
+     });
126
+
127
+     it('should escape snippet without any filter', function() {
128
+       expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).
129
+         toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
130
+              "&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
131
+              "snippet&lt;/p&gt;");
132
+     });
133
+
134
+     it('should update', function() {
135
+       element(by.model('snippet')).clear();
136
+       element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
137
+       expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
138
+         toBe('new <b>text</b>');
139
+       expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(
140
+         'new <b onclick="alert(1)">text</b>');
141
+       expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(
142
+         "new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
143
+     });
144
+   </file>
145
+   </example>
146
+ */
147
+
148
+
149
+/**
150
+ * @ngdoc provider
151
+ * @name $sanitizeProvider
152
+ * @this
153
+ *
154
+ * @description
155
+ * Creates and configures {@link $sanitize} instance.
156
+ */
157
+function $SanitizeProvider() {
158
+  var svgEnabled = false;
159
+
160
+  this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
161
+    if (svgEnabled) {
162
+      extend(validElements, svgElements);
163
+    }
164
+    return function(html) {
165
+      var buf = [];
166
+      htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {
167
+        return !/^unsafe:/.test($$sanitizeUri(uri, isImage));
168
+      }));
169
+      return buf.join('');
170
+    };
171
+  }];
172
+
173
+
174
+  /**
175
+   * @ngdoc method
176
+   * @name $sanitizeProvider#enableSvg
177
+   * @kind function
178
+   *
179
+   * @description
180
+   * Enables a subset of svg to be supported by the sanitizer.
181
+   *
182
+   * <div class="alert alert-warning">
183
+   *   <p>By enabling this setting without taking other precautions, you might expose your
184
+   *   application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned
185
+   *   outside of the containing element and be rendered over other elements on the page (e.g. a login
186
+   *   link). Such behavior can then result in phishing incidents.</p>
187
+   *
188
+   *   <p>To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg
189
+   *   tags within the sanitized content:</p>
190
+   *
191
+   *   <br>
192
+   *
193
+   *   <pre><code>
194
+   *   .rootOfTheIncludedContent svg {
195
+   *     overflow: hidden !important;
196
+   *   }
197
+   *   </code></pre>
198
+   * </div>
199
+   *
200
+   * @param {boolean=} flag Enable or disable SVG support in the sanitizer.
201
+   * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called
202
+   *    without an argument or self for chaining otherwise.
203
+   */
204
+  this.enableSvg = function(enableSvg) {
205
+    if (isDefined(enableSvg)) {
206
+      svgEnabled = enableSvg;
207
+      return this;
208
+    } else {
209
+      return svgEnabled;
210
+    }
211
+  };
212
+
213
+  //////////////////////////////////////////////////////////////////////////////////////////////////
214
+  // Private stuff
215
+  //////////////////////////////////////////////////////////////////////////////////////////////////
216
+
217
+  bind = angular.bind;
218
+  extend = angular.extend;
219
+  forEach = angular.forEach;
220
+  isDefined = angular.isDefined;
221
+  lowercase = angular.lowercase;
222
+  noop = angular.noop;
223
+
224
+  htmlParser = htmlParserImpl;
225
+  htmlSanitizeWriter = htmlSanitizeWriterImpl;
226
+
227
+  nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {
228
+    // eslint-disable-next-line no-bitwise
229
+    return !!(this.compareDocumentPosition(arg) & 16);
230
+  };
231
+
232
+  // Regular Expressions for parsing tags and attributes
233
+  var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
234
+    // Match everything outside of normal chars and " (quote character)
235
+    NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;
236
+
237
+
238
+  // Good source of info about elements and attributes
239
+  // http://dev.w3.org/html5/spec/Overview.html#semantics
240
+  // http://simon.html5.org/html-elements
241
+
242
+  // Safe Void Elements - HTML5
243
+  // http://dev.w3.org/html5/spec/Overview.html#void-elements
244
+  var voidElements = toMap('area,br,col,hr,img,wbr');
245
+
246
+  // Elements that you can, intentionally, leave open (and which close themselves)
247
+  // http://dev.w3.org/html5/spec/Overview.html#optional-tags
248
+  var optionalEndTagBlockElements = toMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),
249
+      optionalEndTagInlineElements = toMap('rp,rt'),
250
+      optionalEndTagElements = extend({},
251
+                                              optionalEndTagInlineElements,
252
+                                              optionalEndTagBlockElements);
253
+
254
+  // Safe Block Elements - HTML5
255
+  var blockElements = extend({}, optionalEndTagBlockElements, toMap('address,article,' +
256
+          'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +
257
+          'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));
258
+
259
+  // Inline Elements - HTML5
260
+  var inlineElements = extend({}, optionalEndTagInlineElements, toMap('a,abbr,acronym,b,' +
261
+          'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +
262
+          'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));
263
+
264
+  // SVG Elements
265
+  // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
266
+  // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
267
+  // They can potentially allow for arbitrary javascript to be executed. See #11290
268
+  var svgElements = toMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +
269
+          'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +
270
+          'radialGradient,rect,stop,svg,switch,text,title,tspan');
271
+
272
+  // Blocked Elements (will be stripped)
273
+  var blockedElements = toMap('script,style');
274
+
275
+  var validElements = extend({},
276
+                                     voidElements,
277
+                                     blockElements,
278
+                                     inlineElements,
279
+                                     optionalEndTagElements);
280
+
281
+  //Attributes that have href and hence need to be sanitized
282
+  var uriAttrs = toMap('background,cite,href,longdesc,src,xlink:href');
283
+
284
+  var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
285
+      'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
286
+      'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
287
+      'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
288
+      'valign,value,vspace,width');
289
+
290
+  // SVG attributes (without "id" and "name" attributes)
291
+  // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
292
+  var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
293
+      'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
294
+      'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
295
+      'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
296
+      'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
297
+      'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
298
+      'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
299
+      'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
300
+      'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
301
+      'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
302
+      'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
303
+      'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
304
+      'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
305
+      'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
306
+      'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
307
+
308
+  var validAttrs = extend({},
309
+                                  uriAttrs,
310
+                                  svgAttrs,
311
+                                  htmlAttrs);
312
+
313
+  function toMap(str, lowercaseKeys) {
314
+    var obj = {}, items = str.split(','), i;
315
+    for (i = 0; i < items.length; i++) {
316
+      obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;
317
+    }
318
+    return obj;
319
+  }
320
+
321
+  /**
322
+   * Create an inert document that contains the dirty HTML that needs sanitizing
323
+   * Depending upon browser support we use one of three strategies for doing this.
324
+   * Support: Safari 10.x -> XHR strategy
325
+   * Support: Firefox -> DomParser strategy
326
+   */
327
+  var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {
328
+    var inertDocument;
329
+    if (document && document.implementation) {
330
+      inertDocument = document.implementation.createHTMLDocument('inert');
331
+    } else {
332
+      throw $sanitizeMinErr('noinert', 'Can\'t create an inert html document');
333
+    }
334
+    var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');
335
+
336
+    // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element
337
+    inertBodyElement.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>';
338
+    if (!inertBodyElement.querySelector('svg')) {
339
+      return getInertBodyElement_XHR;
340
+    } else {
341
+      // Check for the Firefox bug - which prevents the inner img JS from being sanitized
342
+      inertBodyElement.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">';
343
+      if (inertBodyElement.querySelector('svg img')) {
344
+        return getInertBodyElement_DOMParser;
345
+      } else {
346
+        return getInertBodyElement_InertDocument;
347
+      }
348
+    }
349
+
350
+    function getInertBodyElement_XHR(html) {
351
+      // We add this dummy element to ensure that the rest of the content is parsed as expected
352
+      // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
353
+      html = '<remove></remove>' + html;
354
+      try {
355
+        html = encodeURI(html);
356
+      } catch (e) {
357
+        return undefined;
358
+      }
359
+      var xhr = new window.XMLHttpRequest();
360
+      xhr.responseType = 'document';
361
+      xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);
362
+      xhr.send(null);
363
+      var body = xhr.response.body;
364
+      body.firstChild.remove();
365
+      return body;
366
+    }
367
+
368
+    function getInertBodyElement_DOMParser(html) {
369
+      // We add this dummy element to ensure that the rest of the content is parsed as expected
370
+      // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
371
+      html = '<remove></remove>' + html;
372
+      try {
373
+        var body = new window.DOMParser().parseFromString(html, 'text/html').body;
374
+        body.firstChild.remove();
375
+        return body;
376
+      } catch (e) {
377
+        return undefined;
378
+      }
379
+    }
380
+
381
+    function getInertBodyElement_InertDocument(html) {
382
+      inertBodyElement.innerHTML = html;
383
+
384
+      // Support: IE 9-11 only
385
+      // strip custom-namespaced attributes on IE<=11
386
+      if (document.documentMode) {
387
+        stripCustomNsAttrs(inertBodyElement);
388
+      }
389
+
390
+      return inertBodyElement;
391
+    }
392
+  })(window, window.document);
393
+
394
+  /**
395
+   * @example
396
+   * htmlParser(htmlString, {
397
+   *     start: function(tag, attrs) {},
398
+   *     end: function(tag) {},
399
+   *     chars: function(text) {},
400
+   *     comment: function(text) {}
401
+   * });
402
+   *
403
+   * @param {string} html string
404
+   * @param {object} handler
405
+   */
406
+  function htmlParserImpl(html, handler) {
407
+    if (html === null || html === undefined) {
408
+      html = '';
409
+    } else if (typeof html !== 'string') {
410
+      html = '' + html;
411
+    }
412
+
413
+    var inertBodyElement = getInertBodyElement(html);
414
+    if (!inertBodyElement) return '';
415
+
416
+    //mXSS protection
417
+    var mXSSAttempts = 5;
418
+    do {
419
+      if (mXSSAttempts === 0) {
420
+        throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');
421
+      }
422
+      mXSSAttempts--;
423
+
424
+      // trigger mXSS if it is going to happen by reading and writing the innerHTML
425
+      html = inertBodyElement.innerHTML;
426
+      inertBodyElement = getInertBodyElement(html);
427
+    } while (html !== inertBodyElement.innerHTML);
428
+
429
+    var node = inertBodyElement.firstChild;
430
+    while (node) {
431
+      switch (node.nodeType) {
432
+        case 1: // ELEMENT_NODE
433
+          handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));
434
+          break;
435
+        case 3: // TEXT NODE
436
+          handler.chars(node.textContent);
437
+          break;
438
+      }
439
+
440
+      var nextNode;
441
+      if (!(nextNode = node.firstChild)) {
442
+        if (node.nodeType === 1) {
443
+          handler.end(node.nodeName.toLowerCase());
444
+        }
445
+        nextNode = getNonDescendant('nextSibling', node);
446
+        if (!nextNode) {
447
+          while (nextNode == null) {
448
+            node = getNonDescendant('parentNode', node);
449
+            if (node === inertBodyElement) break;
450
+            nextNode = getNonDescendant('nextSibling', node);
451
+            if (node.nodeType === 1) {
452
+              handler.end(node.nodeName.toLowerCase());
453
+            }
454
+          }
455
+        }
456
+      }
457
+      node = nextNode;
458
+    }
459
+
460
+    while ((node = inertBodyElement.firstChild)) {
461
+      inertBodyElement.removeChild(node);
462
+    }
463
+  }
464
+
465
+  function attrToMap(attrs) {
466
+    var map = {};
467
+    for (var i = 0, ii = attrs.length; i < ii; i++) {
468
+      var attr = attrs[i];
469
+      map[attr.name] = attr.value;
470
+    }
471
+    return map;
472
+  }
473
+
474
+
475
+  /**
476
+   * Escapes all potentially dangerous characters, so that the
477
+   * resulting string can be safely inserted into attribute or
478
+   * element text.
479
+   * @param value
480
+   * @returns {string} escaped text
481
+   */
482
+  function encodeEntities(value) {
483
+    return value.
484
+      replace(/&/g, '&amp;').
485
+      replace(SURROGATE_PAIR_REGEXP, function(value) {
486
+        var hi = value.charCodeAt(0);
487
+        var low = value.charCodeAt(1);
488
+        return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
489
+      }).
490
+      replace(NON_ALPHANUMERIC_REGEXP, function(value) {
491
+        return '&#' + value.charCodeAt(0) + ';';
492
+      }).
493
+      replace(/</g, '&lt;').
494
+      replace(/>/g, '&gt;');
495
+  }
496
+
497
+  /**
498
+   * create an HTML/XML writer which writes to buffer
499
+   * @param {Array} buf use buf.join('') to get out sanitized html string
500
+   * @returns {object} in the form of {
501
+   *     start: function(tag, attrs) {},
502
+   *     end: function(tag) {},
503
+   *     chars: function(text) {},
504
+   *     comment: function(text) {}
505
+   * }
506
+   */
507
+  function htmlSanitizeWriterImpl(buf, uriValidator) {
508
+    var ignoreCurrentElement = false;
509
+    var out = bind(buf, buf.push);
510
+    return {
511
+      start: function(tag, attrs) {
512
+        tag = lowercase(tag);
513
+        if (!ignoreCurrentElement && blockedElements[tag]) {
514
+          ignoreCurrentElement = tag;
515
+        }
516
+        if (!ignoreCurrentElement && validElements[tag] === true) {
517
+          out('<');
518
+          out(tag);
519
+          forEach(attrs, function(value, key) {
520
+            var lkey = lowercase(key);
521
+            var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
522
+            if (validAttrs[lkey] === true &&
523
+              (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
524
+              out(' ');
525
+              out(key);
526
+              out('="');
527
+              out(encodeEntities(value));
528
+              out('"');
529
+            }
530
+          });
531
+          out('>');
532
+        }
533
+      },
534
+      end: function(tag) {
535
+        tag = lowercase(tag);
536
+        if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {
537
+          out('</');
538
+          out(tag);
539
+          out('>');
540
+        }
541
+        // eslint-disable-next-line eqeqeq
542
+        if (tag == ignoreCurrentElement) {
543
+          ignoreCurrentElement = false;
544
+        }
545
+      },
546
+      chars: function(chars) {
547
+        if (!ignoreCurrentElement) {
548
+          out(encodeEntities(chars));
549
+        }
550
+      }
551
+    };
552
+  }
553
+
554
+
555
+  /**
556
+   * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare
557
+   * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want
558
+   * to allow any of these custom attributes. This method strips them all.
559
+   *
560
+   * @param node Root element to process
561
+   */
562
+  function stripCustomNsAttrs(node) {
563
+    while (node) {
564
+      if (node.nodeType === window.Node.ELEMENT_NODE) {
565
+        var attrs = node.attributes;
566
+        for (var i = 0, l = attrs.length; i < l; i++) {
567
+          var attrNode = attrs[i];
568
+          var attrName = attrNode.name.toLowerCase();
569
+          if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {
570
+            node.removeAttributeNode(attrNode);
571
+            i--;
572
+            l--;
573
+          }
574
+        }
575
+      }
576
+
577
+      var nextNode = node.firstChild;
578
+      if (nextNode) {
579
+        stripCustomNsAttrs(nextNode);
580
+      }
581
+
582
+      node = getNonDescendant('nextSibling', node);
583
+    }
584
+  }
585
+
586
+  function getNonDescendant(propName, node) {
587
+    // An element is clobbered if its `propName` property points to one of its descendants
588
+    var nextNode = node[propName];
589
+    if (nextNode && nodeContains.call(node, nextNode)) {
590
+      throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);
591
+    }
592
+    return nextNode;
593
+  }
594
+}
595
+
596
+function sanitizeText(chars) {
597
+  var buf = [];
598
+  var writer = htmlSanitizeWriter(buf, noop);
599
+  writer.chars(chars);
600
+  return buf.join('');
601
+}
602
+
603
+
604
+// define ngSanitize module and register $sanitize service
605
+angular.module('ngSanitize', [])
606
+  .provider('$sanitize', $SanitizeProvider)
607
+  .info({ angularVersion: '1.6.6' });
608
+
609
+/**
610
+ * @ngdoc filter
611
+ * @name linky
612
+ * @kind function
613
+ *
614
+ * @description
615
+ * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and
616
+ * plain email address links.
617
+ *
618
+ * Requires the {@link ngSanitize `ngSanitize`} module to be installed.
619
+ *
620
+ * @param {string} text Input text.
621
+ * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in.
622
+ * @param {object|function(url)} [attributes] Add custom attributes to the link element.
623
+ *
624
+ *    Can be one of:
625
+ *
626
+ *    - `object`: A map of attributes
627
+ *    - `function`: Takes the url as a parameter and returns a map of attributes
628
+ *
629
+ *    If the map of attributes contains a value for `target`, it overrides the value of
630
+ *    the target parameter.
631
+ *
632
+ *
633
+ * @returns {string} Html-linkified and {@link $sanitize sanitized} text.
634
+ *
635
+ * @usage
636
+   <span ng-bind-html="linky_expression | linky"></span>
637
+ *
638
+ * @example
639
+   <example module="linkyExample" deps="angular-sanitize.js" name="linky-filter">
640
+     <file name="index.html">
641
+       <div ng-controller="ExampleController">
642
+       Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
643
+       <table>
644
+         <tr>
645
+           <th>Filter</th>
646
+           <th>Source</th>
647
+           <th>Rendered</th>
648
+         </tr>
649
+         <tr id="linky-filter">
650
+           <td>linky filter</td>
651
+           <td>
652
+             <pre>&lt;div ng-bind-html="snippet | linky"&gt;<br>&lt;/div&gt;</pre>
653
+           </td>
654
+           <td>
655
+             <div ng-bind-html="snippet | linky"></div>
656
+           </td>
657
+         </tr>
658
+         <tr id="linky-target">
659
+          <td>linky target</td>
660
+          <td>
661
+            <pre>&lt;div ng-bind-html="snippetWithSingleURL | linky:'_blank'"&gt;<br>&lt;/div&gt;</pre>
662
+          </td>
663
+          <td>
664
+            <div ng-bind-html="snippetWithSingleURL | linky:'_blank'"></div>
665
+          </td>
666
+         </tr>
667
+         <tr id="linky-custom-attributes">
668
+          <td>linky custom attributes</td>
669
+          <td>
670
+            <pre>&lt;div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"&gt;<br>&lt;/div&gt;</pre>
671
+          </td>
672
+          <td>
673
+            <div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}"></div>
674
+          </td>
675
+         </tr>
676
+         <tr id="escaped-html">
677
+           <td>no filter</td>
678
+           <td><pre>&lt;div ng-bind="snippet"&gt;<br>&lt;/div&gt;</pre></td>
679
+           <td><div ng-bind="snippet"></div></td>
680
+         </tr>
681
+       </table>
682
+     </file>
683
+     <file name="script.js">
684
+       angular.module('linkyExample', ['ngSanitize'])
685
+         .controller('ExampleController', ['$scope', function($scope) {
686
+           $scope.snippet =
687
+             'Pretty text with some links:\n' +
688
+             'http://angularjs.org/,\n' +
689
+             'mailto:us@somewhere.org,\n' +
690
+             'another@somewhere.org,\n' +
691
+             'and one more: ftp://127.0.0.1/.';
692
+           $scope.snippetWithSingleURL = 'http://angularjs.org/';
693
+         }]);
694
+     </file>
695
+     <file name="protractor.js" type="protractor">
696
+       it('should linkify the snippet with urls', function() {
697
+         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
698
+             toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
699
+                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
700
+         expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
701
+       });
702
+
703
+       it('should not linkify snippet without the linky filter', function() {
704
+         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
705
+             toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
706
+                  'another@somewhere.org, and one more: ftp://127.0.0.1/.');
707
+         expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
708
+       });
709
+
710
+       it('should update', function() {
711
+         element(by.model('snippet')).clear();
712
+         element(by.model('snippet')).sendKeys('new http://link.');
713
+         expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
714
+             toBe('new http://link.');
715
+         expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
716
+         expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
717
+             .toBe('new http://link.');
718
+       });
719
+
720
+       it('should work with the target property', function() {
721
+        expect(element(by.id('linky-target')).
722
+            element(by.binding("snippetWithSingleURL | linky:'_blank'")).getText()).
723
+            toBe('http://angularjs.org/');
724
+        expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
725
+       });
726
+
727
+       it('should optionally add custom attributes', function() {
728
+        expect(element(by.id('linky-custom-attributes')).
729
+            element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()).
730
+            toBe('http://angularjs.org/');
731
+        expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');
732
+       });
733
+     </file>
734
+   </example>
735
+ */
736
+angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
737
+  var LINKY_URL_REGEXP =
738
+        /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
739
+      MAILTO_REGEXP = /^mailto:/i;
740
+
741
+  var linkyMinErr = angular.$$minErr('linky');
742
+  var isDefined = angular.isDefined;
743
+  var isFunction = angular.isFunction;
744
+  var isObject = angular.isObject;
745
+  var isString = angular.isString;
746
+
747
+  return function(text, target, attributes) {
748
+    if (text == null || text === '') return text;
749
+    if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);
750
+
751
+    var attributesFn =
752
+      isFunction(attributes) ? attributes :
753
+      isObject(attributes) ? function getAttributesObject() {return attributes;} :
754
+      function getEmptyAttributesObject() {return {};};
755
+
756
+    var match;
757
+    var raw = text;
758
+    var html = [];
759
+    var url;
760
+    var i;
761
+    while ((match = raw.match(LINKY_URL_REGEXP))) {
762
+      // We can not end in these as they are sometimes found at the end of the sentence
763
+      url = match[0];
764
+      // if we did not match ftp/http/www/mailto then assume mailto
765
+      if (!match[2] && !match[4]) {
766
+        url = (match[3] ? 'http://' : 'mailto:') + url;
767
+      }
768
+      i = match.index;
769
+      addText(raw.substr(0, i));
770
+      addLink(url, match[0].replace(MAILTO_REGEXP, ''));
771
+      raw = raw.substring(i + match[0].length);
772
+    }
773
+    addText(raw);
774
+    return $sanitize(html.join(''));
775
+
776
+    function addText(text) {
777
+      if (!text) {
778
+        return;
779
+      }
780
+      html.push(sanitizeText(text));
781
+    }
782
+
783
+    function addLink(url, text) {
784
+      var key, linkAttributes = attributesFn(url);
785
+      html.push('<a ');
786
+
787
+      for (key in linkAttributes) {
788
+        html.push(key + '="' + linkAttributes[key] + '" ');
789
+      }
790
+
791
+      if (isDefined(target) && !('target' in linkAttributes)) {
792
+        html.push('target="',
793
+                  target,
794
+                  '" ');
795
+      }
796
+      html.push('href="',
797
+                url.replace(/"/g, '&quot;'),
798
+                '">');
799
+      addText(text);
800
+      html.push('</a>');
801
+    }
802
+  };
803
+}]);
804
+
805
+
806
+})(window, window.angular);

Dosya farkı çok büyük olduğundan ihmal edildi
+ 17 - 0
static/bower_components/angular-sanitize/angular-sanitize.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8 - 0
static/bower_components/angular-sanitize/angular-sanitize.min.js.map


+ 10 - 0
static/bower_components/angular-sanitize/bower.json

@@ -0,0 +1,10 @@
1
+{
2
+  "name": "angular-sanitize",
3
+  "version": "1.6.6",
4
+  "license": "MIT",
5
+  "main": "./angular-sanitize.js",
6
+  "ignore": [],
7
+  "dependencies": {
8
+    "angular": "1.6.6"
9
+  }
10
+}

+ 2 - 0
static/bower_components/angular-sanitize/index.js

@@ -0,0 +1,2 @@
1
+require('./angular-sanitize');
2
+module.exports = 'ngSanitize';

+ 33 - 0
static/bower_components/angular-sanitize/package.json

@@ -0,0 +1,33 @@
1
+{
2
+  "name": "angular-sanitize",
3
+  "version": "1.6.6",
4
+  "description": "AngularJS module for sanitizing HTML",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "repository": {
10
+    "type": "git",
11
+    "url": "https://github.com/angular/angular.js.git"
12
+  },
13
+  "keywords": [
14
+    "angular",
15
+    "framework",
16
+    "browser",
17
+    "html",
18
+    "client-side"
19
+  ],
20
+  "author": "Angular Core Team <angular-core+npm@google.com>",
21
+  "license": "MIT",
22
+  "bugs": {
23
+    "url": "https://github.com/angular/angular.js/issues"
24
+  },
25
+  "homepage": "http://angularjs.org",
26
+  "jspm": {
27
+    "shim": {
28
+      "angular-sanitize": {
29
+        "deps": ["angular"]
30
+      }
31
+    }
32
+  }
33
+}

+ 32 - 0
static/bower_components/angular-ui-router/.bower.json

@@ -0,0 +1,32 @@
1
+{
2
+  "name": "angular-ui-router",
3
+  "description": "State-based routing for AngularJS",
4
+  "license": "MIT",
5
+  "main": "./release/angular-ui-router.js",
6
+  "dependencies": {
7
+    "angular": ">= 1.2.0"
8
+  },
9
+  "ignore": [
10
+    "**/.*",
11
+    "**/tsconfig.json",
12
+    "**/tsconfig.typedoc.json",
13
+    "**/webpack.config.js",
14
+    "**/node_modules",
15
+    "package.json",
16
+    "scripts",
17
+    "test",
18
+    "src"
19
+  ],
20
+  "version": "1.0.10",
21
+  "homepage": "https://github.com/angular-ui/angular-ui-router-bower",
22
+  "_release": "1.0.10",
23
+  "_resolution": {
24
+    "type": "version",
25
+    "tag": "1.0.10",
26
+    "commit": "50430a313fba39526de6031662acae0e254f7948"
27
+  },
28
+  "_source": "https://github.com/angular-ui/angular-ui-router-bower.git",
29
+  "_target": "^1.0.10",
30
+  "_originalSource": "angular-ui-router",
31
+  "_direct": true
32
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1600 - 0
static/bower_components/angular-ui-router/CHANGELOG.md


+ 113 - 0
static/bower_components/angular-ui-router/CONTRIBUTING.md

@@ -0,0 +1,113 @@
1
+
2
+# Report an Issue
3
+
4
+Help us make UI-Router better! If you think you might have found a bug, or some other weirdness, start by making sure
5
+it hasn't already been reported. You can [search through existing issues](https://github.com/angular-ui/ui-router/search?q=wat%3F&type=Issues)
6
+to see if someone's reported one similar to yours.
7
+
8
+If not, then [create a plunkr](http://bit.ly/UIR-Plunk) that demonstrates the problem (try to use as little code
9
+as possible: the more minimalist, the faster we can debug it).
10
+
11
+Next, [create a new issue](https://github.com/angular-ui/ui-router/issues/new) that briefly explains the problem,
12
+and provides a bit of background as to the circumstances that triggered it. Don't forget to include the link to
13
+that plunkr you created!
14
+
15
+**Note**: If you're unsure how a feature is used, or are encountering some unexpected behavior that you aren't sure
16
+is a bug, it's best to talk it out on
17
+[StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) before reporting it. This
18
+keeps development streamlined, and helps us focus on building great software.
19
+
20
+
21
+Issues only! |
22
+-------------|
23
+Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). |
24
+
25
+#### Purple Labels
26
+A purple label means that **you** need to take some further action.
27
+ - ![Not Actionable - Need Info](https://angular-ui.github.io/ui-router/ngdoc_assets/incomplete.png): Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
28
+ - ![Plunkr Please](https://angular-ui.github.io/ui-router/ngdoc_assets/example.png): Please [create a plunkr](http://bit.ly/UIR-Plunk)
29
+ - ![StackOverflow](https://angular-ui.github.io/ui-router/ngdoc_assets/so.png): We suspect your issue is really a help request, or could be answered by the community.  Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router).  If you determine that is an actual issue, please explain why.
30
+
31
+If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately.
32
+
33
+# Contribute
34
+
35
+**(1)** See the **[Developing](#developing)** section below, to get the development version of UI-Router up and running on your local machine.
36
+
37
+**(2)** Check out the [roadmap](https://github.com/angular-ui/ui-router/milestones) to see where the project is headed, and if your feature idea fits with where we're headed.
38
+
39
+**(3)** If you're not sure, [open an RFC](https://github.com/angular-ui/ui-router/issues/new?title=RFC:%20My%20idea) to get some feedback on your idea.
40
+
41
+**(4)** Finally, commit some code and open a pull request. Code & commits should abide by the following rules:
42
+
43
+- *Always* have test coverage for new features (or regression tests for bug fixes), and *never* break existing tests
44
+- Commits should represent one logical change each; if a feature goes through multiple iterations, squash your commits down to one
45
+- Make sure to follow the [Angular commit message format](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) so your change will appear in the changelog of the next release.
46
+- Changes should always respect the coding style of the project
47
+
48
+
49
+
50
+# Developing
51
+
52
+UI-Router uses <code>npm</code> and <code>Rollup</code>.
53
+
54
+## Fetch the source code
55
+
56
+The code for Angular UI-Router is split into two source repositories:
57
+
58
+* [UI-Router Core](https://github.com/ui-router/core) (`@uirouter/core` on npm)
59
+* [UI-Router for Angular 1](https://github.com/angular-ui/ui-router) (`@ui-router/angularjs` on npm)
60
+
61
+Clone both repositories into directories next to each other.
62
+
63
+```
64
+mkdir uirouter
65
+cd uirouter
66
+git clone https://github.com/angular-ui/ui-router.git angularjs
67
+git clone https://github.com/ui-router/core.git core
68
+```
69
+
70
+## Install dependencies
71
+
72
+Use `npm` to install the development dependencies for each repository.
73
+
74
+```
75
+cd core
76
+npm install
77
+cd ../angularjs
78
+npm install
79
+cd ..
80
+```
81
+
82
+## Link the directories
83
+
84
+This step is necessary if you need to modify any code in `@uirouter/core`.
85
+Using `npm`, link `@uirouter/core` into `@uirouter/angularjs`
86
+
87
+```
88
+cd core
89
+npm link
90
+cd ../angularjs
91
+npm link '@uirouter/core'
92
+```
93
+
94
+After executing these steps, `@uirouter/angularjs` will be depend on your local copy of `@uirouter/core` instead of the version listed in `package.json`.
95
+
96
+## Develop
97
+
98
+These scripts may be run in the `angularjs` directory:
99
+
100
+* `npm run build`: Compiles TypeScript source
101
+* `npm run package`: Compiles TypeScript source and creates the Rollup bundles.
102
+* `npm test`: Runs the test suite (against Angular 1.2 through 1.5).
103
+* `npm run watch`: Continuously compiles the source and runs the test suite (when either source or tests change).
104
+
105
+Scripts of the same name (in the `core` directory) can be used.
106
+
107
+* `npm run build`: Compiles `@uirouter/core` TypeScript source
108
+* `npm test`: Runs the `@uirouter/core` test suite
109
+* `npm run watch`: Continuously compiles the source and runs the `@uirouter/core` test suite (when core source or tests change).
110
+
111
+If you've followed the [linking instructions](#link-the-directories), it's useful to run both
112
+`npm run watch` tasks (each task from `@uirouter/core` *and* `@uirouter/angularjs`).
113
+This ensures that changes to either `@uirouter/core` and `@uirouter/angularjs` compile successfully and are run against their test suites.

+ 48 - 0
static/bower_components/angular-ui-router/DOCS.md

@@ -0,0 +1,48 @@
1
+# [UI Router for Angular 1](https://ui-router.github.io/ng1/docs/latest)
2
+
3
+#### The de-facto solution to flexible routing in angular 1
4
+
5
+<div style="display: flex;">
6
+
7
+<iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=angular-ui&repo=ui-router&type=fork&count=true&size=medium" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
8
+<iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=angular-ui&repo=ui-router&type=star&count=true&size=medium" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
9
+[![Build Status](https://travis-ci.org/angular-ui/ui-router.svg?branch=master)](https://travis-ci.org/angular-ui/ui-router)
10
+
11
+</div>
12
+
13
+
14
+Angular UI-Router is a client-side [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application) 
15
+routing framework for [AngularJS](http://angularjs.org).  
16
+
17
+**[View on Github](http://github.com/angular-ui/ui-router) |**
18
+**[Tutorials](https://ui-router.github.io/ng1/tutorials/)** |
19
+**[Guides](https://ui-router.github.io/guide) |**
20
+**[Sample App](http://ui-router.github.io/resources/sampleapp/) |**
21
+**[Wiki](https://github.com/angular-ui/ui-router/wiki) |**
22
+**[FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions)**
23
+  
24
+#### API Documentation Organization
25
+
26
+The documentation is arranged according to API concern, such as `url`, `resolve`, and `core`.
27
+For a list of services and objects that can be injectable, see the [`injectables` section](./injectables.html).
28
+
29
+By default, only the public UI-Router API is shown.
30
+To view both public API and the internal APIs, check the "Internal UI-Router API" checkbox.
31
+  
32
+#### Typescript
33
+
34
+UI-Router is written in Typescript.
35
+The API documentation is generated using [TypeDoc](https://github.com/TypeStrong/typedoc).
36
+The documentation reflects the Typescript classes, interfaces, and parameter types information embedded in the source code.
37
+
38
+#### Contributing
39
+
40
+Angular UI-Router depends on the framework agnostic `@uirouter/core`.
41
+To contribute to the documentation, please submit a PR to either 
42
+[@uirouter/angularjs](http://github.com/angular-ui/ui-router)
43
+or
44
+[@uirouter/core](http://github.com/ui-router/core).
45
+To find where a specific piece of documentation is written, follow the links that say:
46
+ > _Defined in ui-router/somedir/somefile.ts_
47
+
48
+

+ 53 - 0
static/bower_components/angular-ui-router/ISSUE_TEMPLATE.md

@@ -0,0 +1,53 @@
1
+This issue tracker is for Bug Reports and Feature Requests only.
2
+Please direct requests for help to StackOverflow.  See http://bit.ly/UIR-SOF for details.
3
+
4
+This is a:
5
+
6
+- [ ] Bug Report
7
+- [ ] Feature Request
8
+- [ ] General Query 
9
+
10
+My version of UI-Router is: (version)
11
+
12
+
13
+
14
+# Bug Report
15
+
16
+#### Current Behavior:
17
+
18
+(current behavior here)
19
+
20
+#### Expected Behavior:
21
+
22
+(expected behavior here)
23
+
24
+#### Link to Plunker that reproduces the issue:
25
+
26
+http://bit.ly/UIR-Plunk
27
+
28
+
29
+
30
+
31
+# Feature Request
32
+
33
+(feature request here)
34
+
35
+
36
+
37
+
38
+# General Query
39
+
40
+Please direct general implementation questions to StackOverflow: 
41
+http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router
42
+
43
+Please review the Sample Application which highlights common approaches:
44
+https://github.com/ui-router/sample-app-ng1
45
+
46
+- [ ] I have already asked my question on StackOverflow and nobody could answer the question
47
+
48
+- [ ] I have already reviewed the sample application for examples of common approaches
49
+
50
+- [ ] I believe my question can only be answered by the UI-Router maintainers
51
+
52
+
53
+(general query here)

+ 21 - 0
static/bower_components/angular-ui-router/LICENSE

@@ -0,0 +1,21 @@
1
+The MIT License
2
+
3
+Copyright (c) 2013-2015 The AngularUI Team, Karsten Sperling
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in
13
+all copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+THE SOFTWARE.

+ 56 - 0
static/bower_components/angular-ui-router/README.md

@@ -0,0 +1,56 @@
1
+# AngularUI Router &nbsp;[![Build Status](https://travis-ci.org/angular-ui/ui-router.svg?branch=master)](https://travis-ci.org/angular-ui/ui-router)
2
+
3
+**Note: this is the Angular 1.x source for UI-Router version 1.0.  If you are looking for the source for UI-Router 
4
+version 0.2.x, it can be found [here](https://github.com/angular-ui/ui-router/tree/legacy)**
5
+
6
+---
7
+
8
+
9
+#### The de-facto solution to flexible routing in angular
10
+---
11
+**[Tutorials](https://ui-router.github.io/tutorials/)** |
12
+**[API Docs](https://ui-router.github.io/docs/latest/)** |
13
+**[Download stable](http://unpkg.com/@uirouter/angularjs@latest/release/angular-ui-router.js)** (or **[Minified](http://unpkg.com/@uirouter/angularjs@latest/release/angular-ui-router.min.js)**) **|**
14
+**[Guide](https://github.com/angular-ui/ui-router/wiki) |**
15
+**[Sample App](http://ui-router.github.io/resources/sampleapp/) |**
16
+**[FAQ](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions) |**
17
+**[Report an Issue](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#report-an-issue) |**
18
+**[Contribute](https://github.com/angular-ui/ui-router/blob/master/CONTRIBUTING.md#contribute) |**
19
+**[Help!](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router) |**
20
+
21
+---
22
+
23
+Angular UI-Router is a client-side [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application) 
24
+routing framework for [AngularJS](http://angularjs.org).  
25
+  
26
+Routing frameworks for SPAs update the browser's URL as the user navigates through the app.  Conversely, this allows 
27
+changes to the browser's URL to drive navigation through the app, thus allowing the user to create a bookmark to a 
28
+location deep within the SPA.
29
+
30
+UI-Router applications are modeled as a hierarchical tree of states. UI-Router provides a 
31
+[*state machine*](https://en.wikipedia.org/wiki/Finite-state_machine) to manage the transitions between those 
32
+application states in a transaction-like manner. 
33
+
34
+## Get Started
35
+
36
+
37
+- [UI-Router for Angular 1](https://ui-router.github.io/ng1)
38
+- [UI-Router for Angular 2](https://ui-router.github.io/ng2)
39
+- [UI-Router for React](https://ui-router.github.io/react)
40
+
41
+## Resources
42
+
43
+* [In-Depth Guide](https://github.com/angular-ui/ui-router/wiki)
44
+* [Slides comparing ngRoute to ui-router](http://slid.es/timkindberg/ui-router#/)
45
+* [UI-Router Extras / Addons for legacy (0.x)](http://christopherthielen.github.io/ui-router-extras/#/home) (@christopherthielen)
46
+ 
47
+### Videos
48
+
49
+* [Introduction Video](https://egghead.io/lessons/angularjs-introduction-ui-router) (egghead.io)
50
+* [Tim Kindberg on Angular UI-Router](https://www.youtube.com/watch?v=lBqiZSemrqg)
51
+* [Activating States](https://egghead.io/lessons/angularjs-ui-router-activating-states) (egghead.io)
52
+* [Learn Angular.js using UI-Router](http://youtu.be/QETUuZ27N0w) (LearnCode.academy)
53
+
54
+## Reporting issues and Contributing
55
+
56
+Please read our [Contributor guidelines](CONTRIBUTING.md) before reporting an issue or creating a pull request.

+ 8 - 0
static/bower_components/angular-ui-router/artifacts.json

@@ -0,0 +1,8 @@
1
+{
2
+  "ARTIFACTS": [
3
+    "lib",
4
+    "lib-esm",
5
+    "release",
6
+    "package.json"
7
+  ]
8
+}

+ 1 - 0
static/bower_components/angular-ui-router/bower.json

@@ -0,0 +1 @@
1
+{"name":"angular-ui-router","description":"State-based routing for AngularJS","license":"MIT","main":"./release/angular-ui-router.js","dependencies":{"angular":">= 1.2.0"},"ignore":["**/.*","**/tsconfig.json","**/tsconfig.typedoc.json","**/webpack.config.js","**/node_modules","package.json","scripts","test","src"],"version":"1.0.8"}

+ 105 - 0
static/bower_components/angular-ui-router/karma.conf.js

@@ -0,0 +1,105 @@
1
+// Karma configuration file
2
+var karma = require("karma");
3
+var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
4
+var DEFAULT_NG_VERSION = "1.6";
5
+
6
+/**
7
+ * This returns a Karma 'files configuration'.
8
+ * http://karma-runner.github.io/0.8/config/files.html
9
+ *
10
+ * Specifies which files can be served by the Karma web server
11
+ *
12
+ * included: true -- files that are always served to the browser (like <script> tag)
13
+ * included: false -- files *available to be served* by karma, for instance via require()
14
+ */
15
+function karmaServedFiles(ngVersion) {
16
+  // Returns necessary files for a specific version of angular
17
+  function angular(version) {
18
+    console.log('Using Angular ' + ngVersion + ' from test/angular/' + version + '/angular.js');
19
+
20
+    return [
21
+      'test/angular/' + version + '/angular.js',
22
+      'test/angular/' + version + '/angular-mocks.js',
23
+      'test/angular/' + version + '/angular-animate.js',
24
+    ];
25
+  }
26
+
27
+  var angularFiles = angular(ngVersion).map(function (pattern) {
28
+    return { watched: false, included: true, nocache: true, pattern: pattern };
29
+  });
30
+
31
+  return angularFiles.concat('test/index.js');
32
+}
33
+
34
+var webpackConfig = module.exports = {
35
+  resolve: {
36
+    modules: ['node_modules'],
37
+    extensions: ['.js', '.jsx', '.ts', '.tsx']
38
+  },
39
+
40
+  devtool: 'inline-source-map',
41
+
42
+  module: {
43
+    rules: [
44
+      { test: /\.tsx?$/, loader: 'ts-loader', options: { transpileOnly: true } }
45
+    ]
46
+  },
47
+
48
+  stats: false,
49
+
50
+  plugins: [
51
+    new ForkTsCheckerWebpackPlugin(),
52
+  ],
53
+
54
+  externals: [ 'angular' ]
55
+};
56
+
57
+module.exports = function(config) {
58
+  var ngVersion = config.ngversion || DEFAULT_NG_VERSION;
59
+
60
+  config.set({
61
+    singleRun: true,
62
+    autoWatch: false,
63
+    autoWatchInterval: 0,
64
+
65
+    // level of logging
66
+    // possible values: LOG_DISABLE, LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG
67
+    logLevel: "warn",
68
+    // possible values: 'dots', 'progress'
69
+    reporters: 'dots',
70
+    colors: true,
71
+
72
+    port: 8080,
73
+
74
+    // base path, that will be used to resolve files and exclude
75
+    basePath: '.',
76
+
77
+    // Start these browsers, currently available:
78
+    // Chrome, ChromeCanary, Firefox, Opera, Safari, PhantomJS
79
+    browsers: ['PhantomJS'],
80
+
81
+    frameworks: ['jasmine'],
82
+
83
+    plugins: [
84
+      require('karma-webpack'),
85
+      require('karma-sourcemap-loader'),
86
+      require('karma-jasmine'),
87
+      require('karma-phantomjs-launcher'),
88
+      require('karma-chrome-launcher')
89
+    ],
90
+
91
+    webpack: webpackConfig,
92
+    webpackMiddleware: {
93
+      stats: { chunks: false },
94
+    },
95
+
96
+    /* Files *available to be served* by karma, i.e., anything that will be require()'d */
97
+    files: karmaServedFiles(ngVersion),
98
+
99
+    preprocessors: {
100
+      'test/index.js': ['webpack', 'sourcemap'],
101
+      '../src/ng1': ['webpack', 'sourcemap'],
102
+    },
103
+
104
+  });
105
+};

Dosya farkı çok büyük olduğundan ihmal edildi
+ 10075 - 0
static/bower_components/angular-ui-router/release/angular-ui-router.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 193 - 0
static/bower_components/angular-ui-router/release/angular-ui-router.js.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 12 - 0
static/bower_components/angular-ui-router/release/angular-ui-router.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1679 - 0
static/bower_components/angular-ui-router/release/angular-ui-router.min.js.map


+ 83 - 0
static/bower_components/angular-ui-router/release/resolveService.js

@@ -0,0 +1,83 @@
1
+/**
2
+ * State-based routing for AngularJS 1.x
3
+ * @version v1.0.10
4
+ * @link https://ui-router.github.io
5
+ * @license MIT License, http://www.opensource.org/licenses/MIT
6
+ */
7
+(function (global, factory) {
8
+	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@uirouter/core'), require('angular')) :
9
+	typeof define === 'function' && define.amd ? define(['exports', '@uirouter/core', 'angular'], factory) :
10
+	(factory((global['@uirouter/angularjs-resolve-service'] = {}),global['@uirouter/core'],global.angular));
11
+}(this, (function (exports,core,angular) { 'use strict';
12
+
13
+/** @module ng1 */ /** */
14
+/**
15
+ * Implementation of the legacy `$resolve` service for angular 1.
16
+ */
17
+var $resolve = {
18
+    /**
19
+     * Asynchronously injects a resolve block.
20
+     *
21
+     * This emulates most of the behavior of the ui-router 0.2.x $resolve.resolve() service API.
22
+     *
23
+    * ### Not bundled by default
24
+     *
25
+     * This API is no longer not part of the standard `@uirouter/angularjs` bundle.
26
+     * For users of the prebuilt bundles, add the `release/resolveService.min.js` UMD bundle.
27
+     * For bundlers (webpack, browserify, etc), add `@uirouter/angularjs/lib/legacy/resolveService`.
28
+     *
29
+     * ---
30
+     *
31
+     * Given an object `invocables`, where keys are strings and values are injectable functions,
32
+     * injects each function, and waits for the resulting promise to resolve.
33
+     * When all resulting promises are resolved, returns the results as an object.
34
+     *
35
+     * #### Example:
36
+     * ```js
37
+     * let invocables = {
38
+     *   foo: [ '$http', ($http) =>
39
+     *            $http.get('/api/foo').then(resp => resp.data) ],
40
+     *   bar: [ 'foo', '$http', (foo, $http) =>
41
+     *            $http.get('/api/bar/' + foo.barId).then(resp => resp.data) ]
42
+     * }
43
+     * $resolve.resolve(invocables)
44
+     *     .then(results => console.log(results.foo, results.bar))
45
+     * // Logs foo and bar:
46
+     * // { id: 123, barId: 456, fooData: 'foo data' }
47
+     * // { id: 456, barData: 'bar data' }
48
+     * ```
49
+     *
50
+     * @param invocables an object which looks like an [[StateDeclaration.resolve]] object; keys are resolve names and values are injectable functions
51
+     * @param locals key/value pre-resolved data (locals)
52
+     * @param parent a promise for a "parent resolve"
53
+     */
54
+    resolve: function (invocables, locals, parent) {
55
+        if (locals === void 0) { locals = {}; }
56
+        var parentNode = new core.PathNode(new core.StateObject({ params: {}, resolvables: [] }));
57
+        var node = new core.PathNode(new core.StateObject({ params: {}, resolvables: [] }));
58
+        var context = new core.ResolveContext([parentNode, node]);
59
+        context.addResolvables(core.resolvablesBuilder({ resolve: invocables }), node.state);
60
+        var resolveData = function (parentLocals) {
61
+            var rewrap = function (_locals) { return core.resolvablesBuilder({ resolve: core.mapObj(_locals, function (local) { return function () { return local; }; }) }); };
62
+            context.addResolvables(rewrap(parentLocals), parentNode.state);
63
+            context.addResolvables(rewrap(locals), node.state);
64
+            var tuples2ObjR = function (acc, tuple) {
65
+                acc[tuple.token] = tuple.value;
66
+                return acc;
67
+            };
68
+            return context.resolvePath().then(function (results) { return results.reduce(tuples2ObjR, {}); });
69
+        };
70
+        return parent ? parent.then(resolveData) : resolveData({});
71
+    }
72
+};
73
+/** @hidden */
74
+var resolveFactory = function () { return $resolve; };
75
+// The old $resolve service
76
+angular.module('ui.router').factory('$resolve', resolveFactory);
77
+
78
+exports.resolveFactory = resolveFactory;
79
+
80
+Object.defineProperty(exports, '__esModule', { value: true });
81
+
82
+})));
83
+//# sourceMappingURL=resolveService.js.map

Dosya farkı çok büyük olduğundan ihmal edildi
+ 19 - 0
static/bower_components/angular-ui-router/release/resolveService.js.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8 - 0
static/bower_components/angular-ui-router/release/resolveService.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 47 - 0
static/bower_components/angular-ui-router/release/resolveService.min.js.map


+ 294 - 0
static/bower_components/angular-ui-router/release/stateEvents.js

@@ -0,0 +1,294 @@
1
+/**
2
+ * State-based routing for AngularJS 1.x
3
+ * @version v1.0.10
4
+ * @link https://ui-router.github.io
5
+ * @license MIT License, http://www.opensource.org/licenses/MIT
6
+ */
7
+(function (global, factory) {
8
+	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('angular')) :
9
+	typeof define === 'function' && define.amd ? define(['exports', 'angular'], factory) :
10
+	(factory((global['@uirouter/angularjs-state-events'] = {}),global.angular));
11
+}(this, (function (exports,ng_from_import) { 'use strict';
12
+
13
+var ng_from_global = angular;
14
+var ng = (ng_from_import && ng_from_import.module) ? ng_from_import : ng_from_global;
15
+
16
+/**
17
+ * # Legacy state events
18
+ *
19
+ * Polyfill implementation of the UI-Router 0.2.x state events.
20
+ *
21
+ * The 0.2.x state events are deprecated.  We recommend moving to Transition Hooks instead, as they
22
+ * provide much more flexibility, support async, and provide the context (the Transition, etc) necessary
23
+ * to implement meaningful application behaviors.
24
+ *
25
+ * To enable these state events, include the `stateEvents.js` file in your project, e.g.,
26
+ * ```
27
+ * <script src="stateEvents.js"></script>
28
+ * ```
29
+ * and also make sure you depend on the `ui.router.state.events` angular module, e.g.,
30
+ * ```
31
+ * angular.module("myApplication", ['ui.router', 'ui.router.state.events']
32
+ * ```
33
+ *
34
+ * @module ng1_state_events
35
+ */ /** */
36
+/**
37
+ * An event broadcast on `$rootScope` when the state transition **begins**.
38
+ *
39
+ * ### Deprecation warning: use [[TransitionService.onStart]] instead
40
+ *
41
+ * You can use `event.preventDefault()`
42
+ * to prevent the transition from happening and then the transition promise will be
43
+ * rejected with a `'transition prevented'` value.
44
+ *
45
+ * Additional arguments to the event handler are provided:
46
+ * - `toState`: the Transition Target state
47
+ * - `toParams`: the Transition Target Params
48
+ * - `fromState`: the state the transition is coming from
49
+ * - `fromParams`: the parameters from the state the transition is coming from
50
+ * - `options`: any Transition Options
51
+ * - `$transition$`: the [[Transition]]
52
+ *
53
+ * #### Example:
54
+ * ```js
55
+ * $rootScope.$on('$stateChangeStart', function(event, transition) {
56
+ *   event.preventDefault();
57
+ *   // transitionTo() promise will be rejected with
58
+ *   // a 'transition prevented' error
59
+ * })
60
+ * ```
61
+ *
62
+ * @event $stateChangeStart
63
+ * @deprecated
64
+ */
65
+var $stateChangeStart;
66
+/**
67
+ * An event broadcast on `$rootScope` if a transition is **cancelled**.
68
+ *
69
+ * ### Deprecation warning: use [[TransitionService.onStart]] instead
70
+ *
71
+ * Additional arguments to the event handler are provided:
72
+ * - `toState`: the Transition Target state
73
+ * - `toParams`: the Transition Target Params
74
+ * - `fromState`: the state the transition is coming from
75
+ * - `fromParams`: the parameters from the state the transition is coming from
76
+ * - `options`: any Transition Options
77
+ * - `$transition$`: the [[Transition]] that was cancelled
78
+ *
79
+ * @event $stateChangeCancel
80
+ * @deprecated
81
+ */
82
+var $stateChangeCancel;
83
+/**
84
+ * An event broadcast on `$rootScope` once the state transition is **complete**.
85
+ *
86
+ * ### Deprecation warning: use [[TransitionService.onStart]] and [[Transition.promise]], or [[Transition.onSuccess]]
87
+ *
88
+ * Additional arguments to the event handler are provided:
89
+ * - `toState`: the Transition Target state
90
+ * - `toParams`: the Transition Target Params
91
+ * - `fromState`: the state the transition is coming from
92
+ * - `fromParams`: the parameters from the state the transition is coming from
93
+ * - `options`: any Transition Options
94
+ * - `$transition$`: the [[Transition]] that just succeeded
95
+ *
96
+ * @event $stateChangeSuccess
97
+ * @deprecated
98
+ */
99
+var $stateChangeSuccess;
100
+/**
101
+ * An event broadcast on `$rootScope` when an **error occurs** during transition.
102
+ *
103
+ * ### Deprecation warning: use [[TransitionService.onStart]] and [[Transition.promise]], or [[Transition.onError]]
104
+ *
105
+ * It's important to note that if you
106
+ * have any errors in your resolve functions (javascript errors, non-existent services, etc)
107
+ * they will not throw traditionally. You must listen for this $stateChangeError event to
108
+ * catch **ALL** errors.
109
+ *
110
+ * Additional arguments to the event handler are provided:
111
+ * - `toState`: the Transition Target state
112
+ * - `toParams`: the Transition Target Params
113
+ * - `fromState`: the state the transition is coming from
114
+ * - `fromParams`: the parameters from the state the transition is coming from
115
+ * - `error`: The reason the transition errored.
116
+ * - `options`: any Transition Options
117
+ * - `$transition$`: the [[Transition]] that errored
118
+ *
119
+ * @event $stateChangeError
120
+ * @deprecated
121
+ */
122
+var $stateChangeError;
123
+/**
124
+ * An event broadcast on `$rootScope` when a requested state **cannot be found** using the provided state name.
125
+ *
126
+ * ### Deprecation warning: use [[StateService.onInvalid]] instead
127
+ *
128
+ * The event is broadcast allowing any handlers a single chance to deal with the error (usually by
129
+ * lazy-loading the unfound state). A `TargetState` object is passed to the listener handler,
130
+ * you can see its properties in the example. You can use `event.preventDefault()` to abort the
131
+ * transition and the promise returned from `transitionTo()` will be rejected with a
132
+ * `'transition aborted'` error.
133
+ *
134
+ * Additional arguments to the event handler are provided:
135
+ * - `unfoundState` Unfound State information. Contains: `to, toParams, options` properties.
136
+ * - `fromState`: the state the transition is coming from
137
+ * - `fromParams`: the parameters from the state the transition is coming from
138
+ * - `options`: any Transition Options
139
+ *
140
+ * #### Example:
141
+ * ```js
142
+ * // somewhere, assume lazy.state has not been defined
143
+ * $state.go("lazy.state", { a: 1, b: 2 }, { inherit: false });
144
+ *
145
+ * // somewhere else
146
+ * $scope.$on('$stateNotFound', function(event, transition) {
147
+ * function(event, unfoundState, fromState, fromParams){
148
+ *     console.log(unfoundState.to); // "lazy.state"
149
+ *     console.log(unfoundState.toParams); // {a:1, b:2}
150
+ *     console.log(unfoundState.options); // {inherit:false} + default options
151
+ * });
152
+ * ```
153
+ *
154
+ * @event $stateNotFound
155
+ * @deprecated
156
+ */
157
+var $stateNotFound;
158
+(function () {
159
+    var isFunction = ng.isFunction, isString = ng.isString;
160
+    function applyPairs(memo, keyValTuple) {
161
+        var key, value;
162
+        if (Array.isArray(keyValTuple))
163
+            key = keyValTuple[0], value = keyValTuple[1];
164
+        if (!isString(key))
165
+            throw new Error("invalid parameters to applyPairs");
166
+        memo[key] = value;
167
+        return memo;
168
+    }
169
+    function stateChangeStartHandler($transition$) {
170
+        if (!$transition$.options().notify || !$transition$.valid() || $transition$.ignored())
171
+            return;
172
+        var $injector = $transition$.injector();
173
+        var $stateEvents = $injector.get('$stateEvents');
174
+        var $rootScope = $injector.get('$rootScope');
175
+        var $state = $injector.get('$state');
176
+        var $urlRouter = $injector.get('$urlRouter');
177
+        var enabledEvents = $stateEvents.provider.enabled();
178
+        var toParams = $transition$.params("to");
179
+        var fromParams = $transition$.params("from");
180
+        if (enabledEvents.$stateChangeSuccess) {
181
+            var startEvent = $rootScope.$broadcast('$stateChangeStart', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
182
+            if (startEvent.defaultPrevented) {
183
+                if (enabledEvents.$stateChangeCancel) {
184
+                    $rootScope.$broadcast('$stateChangeCancel', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
185
+                }
186
+                //Don't update and resync url if there's been a new transition started. see issue #2238, #600
187
+                if ($state.transition == null)
188
+                    $urlRouter.update();
189
+                return false;
190
+            }
191
+            // right after global state is updated
192
+            var successOpts = { priority: 9999 };
193
+            $transition$.onSuccess({}, function () {
194
+                $rootScope.$broadcast('$stateChangeSuccess', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
195
+            }, successOpts);
196
+        }
197
+        if (enabledEvents.$stateChangeError) {
198
+            $transition$.promise["catch"](function (error) {
199
+                if (error && (error.type === 2 /* RejectType.SUPERSEDED */ || error.type === 3 /* RejectType.ABORTED */))
200
+                    return;
201
+                var evt = $rootScope.$broadcast('$stateChangeError', $transition$.to(), toParams, $transition$.from(), fromParams, error, $transition$.options(), $transition$);
202
+                if (!evt.defaultPrevented) {
203
+                    $urlRouter.update();
204
+                }
205
+            });
206
+        }
207
+    }
208
+    stateNotFoundHandler.$inject = ['$to$', '$from$', '$state', '$rootScope', '$urlRouter'];
209
+    function stateNotFoundHandler($to$, $from$, injector) {
210
+        var $state = injector.get('$state');
211
+        var $rootScope = injector.get('$rootScope');
212
+        var $urlRouter = injector.get('$urlRouter');
213
+        var redirect = { to: $to$.identifier(), toParams: $to$.params(), options: $to$.options() };
214
+        var e = $rootScope.$broadcast('$stateNotFound', redirect, $from$.state(), $from$.params());
215
+        if (e.defaultPrevented || e.retry)
216
+            $urlRouter.update();
217
+        function redirectFn() {
218
+            return $state.target(redirect.to, redirect.toParams, redirect.options);
219
+        }
220
+        if (e.defaultPrevented) {
221
+            return false;
222
+        }
223
+        else if (e.retry || !!$state.get(redirect.to)) {
224
+            return e.retry && isFunction(e.retry.then) ? e.retry.then(redirectFn) : redirectFn();
225
+        }
226
+    }
227
+    $StateEventsProvider.$inject = ['$stateProvider'];
228
+    function $StateEventsProvider($stateProvider) {
229
+        $StateEventsProvider.prototype.instance = this;
230
+        var runtime = false;
231
+        var allEvents = ['$stateChangeStart', '$stateNotFound', '$stateChangeSuccess', '$stateChangeError'];
232
+        var enabledStateEvents = allEvents.map(function (e) { return [e, true]; }).reduce(applyPairs, {});
233
+        function assertNotRuntime() {
234
+            if (runtime)
235
+                throw new Error("Cannot enable events at runtime (use $stateEventsProvider");
236
+        }
237
+        /**
238
+         * Enables the deprecated UI-Router 0.2.x State Events
239
+         * [ '$stateChangeStart', '$stateNotFound', '$stateChangeSuccess', '$stateChangeError' ]
240
+         */
241
+        this.enable = function () {
242
+            var events = [];
243
+            for (var _i = 0; _i < arguments.length; _i++) {
244
+                events[_i] = arguments[_i];
245
+            }
246
+            assertNotRuntime();
247
+            if (!events || !events.length)
248
+                events = allEvents;
249
+            events.forEach(function (event) { return enabledStateEvents[event] = true; });
250
+        };
251
+        /**
252
+         * Disables the deprecated UI-Router 0.2.x State Events
253
+         * [ '$stateChangeStart', '$stateNotFound', '$stateChangeSuccess', '$stateChangeError' ]
254
+         */
255
+        this.disable = function () {
256
+            var events = [];
257
+            for (var _i = 0; _i < arguments.length; _i++) {
258
+                events[_i] = arguments[_i];
259
+            }
260
+            assertNotRuntime();
261
+            if (!events || !events.length)
262
+                events = allEvents;
263
+            events.forEach(function (event) { return delete enabledStateEvents[event]; });
264
+        };
265
+        this.enabled = function () { return enabledStateEvents; };
266
+        this.$get = $get;
267
+        $get.$inject = ['$transitions'];
268
+        function $get($transitions) {
269
+            runtime = true;
270
+            if (enabledStateEvents["$stateNotFound"])
271
+                $stateProvider.onInvalid(stateNotFoundHandler);
272
+            if (enabledStateEvents.$stateChangeStart)
273
+                $transitions.onBefore({}, stateChangeStartHandler, { priority: 1000 });
274
+            return {
275
+                provider: $StateEventsProvider.prototype.instance
276
+            };
277
+        }
278
+    }
279
+    ng.module('ui.router.state.events', ['ui.router.state'])
280
+        .provider("$stateEvents", $StateEventsProvider)
281
+        .run(['$stateEvents', function ($stateEvents) {
282
+        }]);
283
+})();
284
+
285
+exports.$stateChangeStart = $stateChangeStart;
286
+exports.$stateChangeCancel = $stateChangeCancel;
287
+exports.$stateChangeSuccess = $stateChangeSuccess;
288
+exports.$stateChangeError = $stateChangeError;
289
+exports.$stateNotFound = $stateNotFound;
290
+
291
+Object.defineProperty(exports, '__esModule', { value: true });
292
+
293
+})));
294
+//# sourceMappingURL=stateEvents.js.map

Dosya farkı çok büyük olduğundan ihmal edildi
+ 17 - 0
static/bower_components/angular-ui-router/release/stateEvents.js.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8 - 0
static/bower_components/angular-ui-router/release/stateEvents.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 102 - 0
static/bower_components/angular-ui-router/release/stateEvents.min.js.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 2014 - 0
static/bower_components/angular-ui-router/release/ui-router-angularjs.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 70 - 0
static/bower_components/angular-ui-router/release/ui-router-angularjs.js.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 9 - 0
static/bower_components/angular-ui-router/release/ui-router-angularjs.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 541 - 0
static/bower_components/angular-ui-router/release/ui-router-angularjs.min.js.map


+ 116 - 0
static/bower_components/angular-ui-router/rollup.config.js

@@ -0,0 +1,116 @@
1
+import nodeResolve from 'rollup-plugin-node-resolve';
2
+import uglify from 'rollup-plugin-uglify';
3
+import progress from 'rollup-plugin-progress';
4
+import sourcemaps from 'rollup-plugin-sourcemaps';
5
+import visualizer from 'rollup-plugin-visualizer';
6
+
7
+const MINIFY = process.env.MINIFY;
8
+const MONOLITHIC = process.env.MONOLITHIC;
9
+const ROUTER = process.env.ROUTER;
10
+const EVENTS = process.env.EVENTS;
11
+const RESOLVE = process.env.RESOLVE;
12
+
13
+const pkg = require('./package.json');
14
+let banner =
15
+`/**
16
+ * ${pkg.description}`;
17
+if (ROUTER && MONOLITHIC) {
18
+  banner += `
19
+ * NOTICE: This monolithic bundle also bundles the @uirouter/core code.
20
+ *         This causes it to be incompatible with plugins that depend on @uirouter/core.
21
+ *         We recommend switching to the ui-router-core.js and ui-router-angularjs.js bundles instead.
22
+ *         For more information, see https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles`
23
+} else if (ROUTER) {
24
+  banner += `
25
+ * This bundle requires the ui-router-core.js bundle from the @uirouter/core package.`
26
+}
27
+banner += `
28
+ * @version v${pkg.version}
29
+ * @link ${pkg.homepage}
30
+ * @license MIT License, http://www.opensource.org/licenses/MIT
31
+ */`;
32
+
33
+const uglifyOpts = { output: {} };
34
+// retain multiline comment with @license
35
+uglifyOpts.output.comments = (node, comment) =>
36
+comment.type === 'comment2' && /@license/i.test(comment.value);
37
+
38
+const onwarn = (warning) => {
39
+  // Suppress this error message... https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined
40
+  const ignores = ['THIS_IS_UNDEFINED'];
41
+  if (!ignores.some(code => code === warning.code)) {
42
+    console.error(warning.message);
43
+  }
44
+};
45
+
46
+const plugins = [
47
+  nodeResolve({jsnext: true}),
48
+  progress({ clearLine: false }),
49
+  sourcemaps(),
50
+];
51
+
52
+if (MINIFY) plugins.push(uglify(uglifyOpts));
53
+if (ROUTER && MINIFY) plugins.push(visualizer({ sourcemap: true }));
54
+
55
+const extension = MINIFY ? ".min.js" : ".js";
56
+
57
+const BASE_CONFIG = {
58
+  sourcemap: true,
59
+  exports: 'named',
60
+  plugins: plugins,
61
+  banner: banner,
62
+  onwarn: onwarn,
63
+};
64
+
65
+const ROUTER_CONFIG = Object.assign({
66
+  input: 'lib-esm/index.js',
67
+  external: ['angular', '@uirouter/core'],
68
+  output: {
69
+    file: 'release/ui-router-angularjs' + extension,
70
+    format: 'umd',
71
+    name: '@uirouter/angularjs',
72
+    globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
73
+  },
74
+}, BASE_CONFIG);
75
+
76
+// Also bundles the code from @uirouter/core into the same bundle
77
+const MONOLITHIC_ROUTER_CONFIG = Object.assign({
78
+  input: 'lib-esm/index.js',
79
+  external: 'angular',
80
+  output: {
81
+    file: 'release/angular-ui-router' + extension,
82
+    format: 'umd',
83
+    name: '@uirouter/angularjs',
84
+    globals: { angular: 'angular' },
85
+  },
86
+}, BASE_CONFIG);
87
+
88
+const EVENTS_CONFIG = Object.assign({}, BASE_CONFIG, {
89
+  input: 'lib-esm/legacy/stateEvents.js',
90
+  external: ['angular', '@uirouter/core'],
91
+  output: {
92
+    file: 'release/stateEvents' + extension,
93
+    format: 'umd',
94
+    name: '@uirouter/angularjs-state-events',
95
+    globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
96
+  },
97
+});
98
+
99
+const RESOLVE_CONFIG = Object.assign({}, BASE_CONFIG, {
100
+  input: 'lib-esm/legacy/resolveService.js',
101
+  external: ['angular', '@uirouter/core'],
102
+  output: {
103
+    file: 'release/resolveService' + extension,
104
+    format: 'umd',
105
+    name: '@uirouter/angularjs-resolve-service',
106
+    globals: { angular: 'angular', '@uirouter/core': '@uirouter/core' },
107
+  },
108
+});
109
+
110
+const CONFIG =
111
+    RESOLVE ? RESOLVE_CONFIG :
112
+    EVENTS ? EVENTS_CONFIG :
113
+    MONOLITHIC ? MONOLITHIC_ROUTER_CONFIG :
114
+    ROUTER ? ROUTER_CONFIG : ROUTER_CONFIG;
115
+
116
+export default CONFIG;

+ 60 - 0
static/bower_components/angular-ui-router/tslint.json

@@ -0,0 +1,60 @@
1
+{ 
2
+  "rules": {
3
+    "align": [true, "parameters", "statements"],
4
+    "ban": false,
5
+    "class-name": true,
6
+    "comment-format": [false, "check-space", "check-lowercase" ],
7
+    "curly": false,
8
+    "eofline": false,
9
+    "forin": true,
10
+    "indent": [true, "spaces"],
11
+    "interface-name": false,
12
+    "jsdoc-format": true,
13
+    "label-position": true,
14
+    "label-undefined": true,
15
+    "max-line-length": [true, 180],
16
+    "member-access": false,
17
+    "member-ordering": [false, "public-before-private", "static-before-instance", "variables-before-functions" ],
18
+    "no-any": false,
19
+    "no-arg": true,
20
+    "no-bitwise": true,
21
+    "no-conditional-assignment": true,
22
+    "no-console": [true, "debug", "info", "time", "timeEnd", "trace" ],
23
+    "no-construct": true,
24
+    "no-constructor-vars": false,
25
+    "no-debugger": true,
26
+    "no-duplicate-key": true,
27
+    "no-shadowed-variable": true,
28
+    "no-duplicate-variable": true,
29
+    "no-empty": false,
30
+    "no-eval": true,
31
+    "no-internal-module": true,
32
+    "no-require-imports": true,
33
+    "no-string-literal": false,
34
+    "no-switch-case-fall-through": true,
35
+    "no-trailing-comma": true,
36
+    "no-trailing-whitespace": false,
37
+    "no-unreachable": true,
38
+    "no-unused-expression": [true, "allow-fast-null-checks"],
39
+    "no-unused-variable": true,
40
+    "no-use-before-declare": true,
41
+    "no-var-keyword": true,
42
+    "no-var-requires": true,
43
+    "one-line": [true, "check-open-brace", "check-catch", "check-else", "check-whitespace" ],
44
+    "quotemark": [false, "double"],
45
+    "radix": true,
46
+    "semicolon": true,
47
+    "switch-default": true,
48
+    "triple-equals": [true, "allow-null-check"],
49
+    "typedef": [false, "call-signature", "parameter", "property-declaration", "variable-declaration", "member-variable-declaration" ],
50
+    "typedef-whitespace": [true, {
51
+        "call-signature": "nospace",
52
+        "index-signature": "nospace",
53
+        "parameter": "nospace",
54
+        "variable-declaration": "nospace"
55
+    }],
56
+    "use-strict": [false, "check-module", "check-function" ],
57
+    "variable-name": false,
58
+    "whitespace": [true, "check-branch", "check-decl", "check-operator", "check-separator", "check-type" ]
59
+}
60
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 3984 - 0
static/bower_components/angular-ui-router/yarn.lock


+ 18 - 0
static/bower_components/angular/.bower.json

@@ -0,0 +1,18 @@
1
+{
2
+  "name": "angular",
3
+  "version": "1.6.6",
4
+  "license": "MIT",
5
+  "main": "./angular.js",
6
+  "ignore": [],
7
+  "dependencies": {},
8
+  "homepage": "https://github.com/angular/bower-angular",
9
+  "_release": "1.6.6",
10
+  "_resolution": {
11
+    "type": "version",
12
+    "tag": "v1.6.6",
13
+    "commit": "928fe478bd68d049ff9863dc51814eac24d33b9a"
14
+  },
15
+  "_source": "https://github.com/angular/bower-angular.git",
16
+  "_target": ">= 1.2.0",
17
+  "_originalSource": "angular"
18
+}

+ 21 - 0
static/bower_components/angular/LICENSE.md

@@ -0,0 +1,21 @@
1
+The MIT License (MIT)
2
+
3
+Copyright (c) 2016 Angular
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+SOFTWARE.

+ 64 - 0
static/bower_components/angular/README.md

@@ -0,0 +1,64 @@
1
+# packaged angular
2
+
3
+This repo is for distribution on `npm` and `bower`. The source for this module is in the
4
+[main AngularJS repo](https://github.com/angular/angular.js).
5
+Please file issues and pull requests against that repo.
6
+
7
+## Install
8
+
9
+You can install this package either with `npm` or with `bower`.
10
+
11
+### npm
12
+
13
+```shell
14
+npm install angular
15
+```
16
+
17
+Then add a `<script>` to your `index.html`:
18
+
19
+```html
20
+<script src="/node_modules/angular/angular.js"></script>
21
+```
22
+
23
+Or `require('angular')` from your code.
24
+
25
+### bower
26
+
27
+```shell
28
+bower install angular
29
+```
30
+
31
+Then add a `<script>` to your `index.html`:
32
+
33
+```html
34
+<script src="/bower_components/angular/angular.js"></script>
35
+```
36
+
37
+## Documentation
38
+
39
+Documentation is available on the
40
+[AngularJS docs site](http://docs.angularjs.org/).
41
+
42
+## License
43
+
44
+The MIT License
45
+
46
+Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
47
+
48
+Permission is hereby granted, free of charge, to any person obtaining a copy
49
+of this software and associated documentation files (the "Software"), to deal
50
+in the Software without restriction, including without limitation the rights
51
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
52
+copies of the Software, and to permit persons to whom the Software is
53
+furnished to do so, subject to the following conditions:
54
+
55
+The above copyright notice and this permission notice shall be included in
56
+all copies or substantial portions of the Software.
57
+
58
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
59
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
60
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
61
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
62
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
63
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
64
+THE SOFTWARE.

+ 21 - 0
static/bower_components/angular/angular-csp.css

@@ -0,0 +1,21 @@
1
+/* Include this file in your html if you are using the CSP mode. */
2
+
3
+@charset "UTF-8";
4
+
5
+[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
6
+.ng-cloak, .x-ng-cloak,
7
+.ng-hide:not(.ng-hide-animate) {
8
+  display: none !important;
9
+}
10
+
11
+ng\:form {
12
+  display: block;
13
+}
14
+
15
+.ng-animate-shim {
16
+  visibility:hidden;
17
+}
18
+
19
+.ng-anchor {
20
+  position:absolute;
21
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 33889 - 0
static/bower_components/angular/angular.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 335 - 0
static/bower_components/angular/angular.min.js


BIN
static/bower_components/angular/angular.min.js.gzip


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8 - 0
static/bower_components/angular/angular.min.js.map


+ 9 - 0
static/bower_components/angular/bower.json

@@ -0,0 +1,9 @@
1
+{
2
+  "name": "angular",
3
+  "version": "1.6.6",
4
+  "license": "MIT",
5
+  "main": "./angular.js",
6
+  "ignore": [],
7
+  "dependencies": {
8
+  }
9
+}

+ 2 - 0
static/bower_components/angular/index.js

@@ -0,0 +1,2 @@
1
+require('./angular');
2
+module.exports = angular;

+ 25 - 0
static/bower_components/angular/package.json

@@ -0,0 +1,25 @@
1
+{
2
+  "name": "angular",
3
+  "version": "1.6.6",
4
+  "description": "HTML enhanced for web apps",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "repository": {
10
+    "type": "git",
11
+    "url": "https://github.com/angular/angular.js.git"
12
+  },
13
+  "keywords": [
14
+    "angular",
15
+    "framework",
16
+    "browser",
17
+    "client-side"
18
+  ],
19
+  "author": "Angular Core Team <angular-core+npm@google.com>",
20
+  "license": "MIT",
21
+  "bugs": {
22
+    "url": "https://github.com/angular/angular.js/issues"
23
+  },
24
+  "homepage": "http://angularjs.org"
25
+}

+ 25 - 0
static/bower_components/jquery/.bower.json

@@ -0,0 +1,25 @@
1
+{
2
+  "name": "jquery",
3
+  "main": "dist/jquery.js",
4
+  "license": "MIT",
5
+  "ignore": [
6
+    "package.json"
7
+  ],
8
+  "keywords": [
9
+    "jquery",
10
+    "javascript",
11
+    "browser",
12
+    "library"
13
+  ],
14
+  "homepage": "https://github.com/jquery/jquery-dist",
15
+  "version": "3.2.1",
16
+  "_release": "3.2.1",
17
+  "_resolution": {
18
+    "type": "version",
19
+    "tag": "3.2.1",
20
+    "commit": "77d2a51d0520d2ee44173afdf4e40a9201f5964e"
21
+  },
22
+  "_source": "https://github.com/jquery/jquery-dist.git",
23
+  "_target": ">=1.7",
24
+  "_originalSource": "jquery"
25
+}

+ 301 - 0
static/bower_components/jquery/AUTHORS.txt

@@ -0,0 +1,301 @@
1
+Authors ordered by first contribution.
2
+
3
+John Resig <jeresig@gmail.com>
4
+Gilles van den Hoven <gilles0181@gmail.com>
5
+Michael Geary <mike@geary.com>
6
+Stefan Petre <stefan.petre@gmail.com>
7
+Yehuda Katz <wycats@gmail.com>
8
+Corey Jewett <cj@syntheticplayground.com>
9
+Klaus Hartl <klaus.hartl@gmail.com>
10
+Franck Marcia <franck.marcia@gmail.com>
11
+Jörn Zaefferer <joern.zaefferer@gmail.com>
12
+Paul Bakaus <paul.bakaus@gmail.com>
13
+Brandon Aaron <brandon.aaron@gmail.com>
14
+Mike Alsup <malsup@gmail.com>
15
+Dave Methvin <dave.methvin@gmail.com>
16
+Ed Engelhardt <edengelhardt@gmail.com>
17
+Sean Catchpole <littlecooldude@gmail.com>
18
+Paul Mclanahan <pmclanahan@gmail.com>
19
+David Serduke <davidserduke@gmail.com>
20
+Richard D. Worth <rdworth@gmail.com>
21
+Scott González <scott.gonzalez@gmail.com>
22
+Ariel Flesler <aflesler@gmail.com>
23
+Jon Evans <jon@springyweb.com>
24
+TJ Holowaychuk <tj@vision-media.ca>
25
+Michael Bensoussan <mickey@seesmic.com>
26
+Robert Katić <robert.katic@gmail.com>
27
+Louis-Rémi Babé <lrbabe@gmail.com>
28
+Earle Castledine <mrspeaker@gmail.com>
29
+Damian Janowski <damian.janowski@gmail.com>
30
+Rich Dougherty <rich@rd.gen.nz>
31
+Kim Dalsgaard <kim@kimdalsgaard.com>
32
+Andrea Giammarchi <andrea.giammarchi@gmail.com>
33
+Mark Gibson <jollytoad@gmail.com>
34
+Karl Swedberg <kswedberg@gmail.com>
35
+Justin Meyer <justinbmeyer@gmail.com>
36
+Ben Alman <cowboy@rj3.net>
37
+James Padolsey <cla@padolsey.net>
38
+David Petersen <public@petersendidit.com>
39
+Batiste Bieler <batiste.bieler@gmail.com>
40
+Alexander Farkas <info@corrupt-system.de>
41
+Rick Waldron <waldron.rick@gmail.com>
42
+Filipe Fortes <filipe@fortes.com>
43
+Neeraj Singh <neerajdotname@gmail.com>
44
+Paul Irish <paul.irish@gmail.com>
45
+Iraê Carvalho <irae@irae.pro.br>
46
+Matt Curry <matt@pseudocoder.com>
47
+Michael Monteleone <michael@michaelmonteleone.net>
48
+Noah Sloan <noah.sloan@gmail.com>
49
+Tom Viner <github@viner.tv>
50
+Douglas Neiner <doug@dougneiner.com>
51
+Adam J. Sontag <ajpiano@ajpiano.com>
52
+Dave Reed <dareed@microsoft.com>
53
+Ralph Whitbeck <ralph.whitbeck@gmail.com>
54
+Carl Fürstenberg <azatoth@gmail.com>
55
+Jacob Wright <jacwright@gmail.com>
56
+J. Ryan Stinnett <jryans@gmail.com>
57
+unknown <Igen005@.upcorp.ad.uprr.com>
58
+temp01 <temp01irc@gmail.com>
59
+Heungsub Lee <h@subl.ee>
60
+Colin Snover <github.com@zetafleet.com>
61
+Ryan W Tenney <ryan@10e.us>
62
+Pinhook <contact@pinhooklabs.com>
63
+Ron Otten <r.j.g.otten@gmail.com>
64
+Jephte Clain <Jephte.Clain@univ-reunion.fr>
65
+Anton Matzneller <obhvsbypqghgc@gmail.com>
66
+Alex Sexton <AlexSexton@gmail.com>
67
+Dan Heberden <danheberden@gmail.com>
68
+Henri Wiechers <hwiechers@gmail.com>
69
+Russell Holbrook <russell.holbrook@patch.com>
70
+Julian Aubourg <aubourg.julian@gmail.com>
71
+Gianni Alessandro Chiappetta <gianni@runlevel6.org>
72
+Scott Jehl <scottjehl@gmail.com>
73
+James Burke <jrburke@gmail.com>
74
+Jonas Pfenniger <jonas@pfenniger.name>
75
+Xavi Ramirez <xavi.rmz@gmail.com>
76
+Jared Grippe <jared@deadlyicon.com>
77
+Sylvester Keil <sylvester@keil.or.at>
78
+Brandon Sterne <bsterne@mozilla.com>
79
+Mathias Bynens <mathias@qiwi.be>
80
+Timmy Willison <4timmywil@gmail.com>
81
+Corey Frang <gnarf37@gmail.com>
82
+Digitalxero <digitalxero>
83
+Anton Kovalyov <anton@kovalyov.net>
84
+David Murdoch <david@davidmurdoch.com>
85
+Josh Varner <josh.varner@gmail.com>
86
+Charles McNulty <cmcnulty@kznf.com>
87
+Jordan Boesch <jboesch26@gmail.com>
88
+Jess Thrysoee <jess@thrysoee.dk>
89
+Michael Murray <m@murz.net>
90
+Lee Carpenter <elcarpie@gmail.com>
91
+Alexis Abril <me@alexisabril.com>
92
+Rob Morgan <robbym@gmail.com>
93
+John Firebaugh <john_firebaugh@bigfix.com>
94
+Sam Bisbee <sam@sbisbee.com>
95
+Gilmore Davidson <gilmoreorless@gmail.com>
96
+Brian Brennan <me@brianlovesthings.com>
97
+Xavier Montillet <xavierm02.net@gmail.com>
98
+Daniel Pihlstrom <sciolist.se@gmail.com>
99
+Sahab Yazdani <sahab.yazdani+github@gmail.com>
100
+avaly <github-com@agachi.name>
101
+Scott Hughes <hi@scott-hughes.me>
102
+Mike Sherov <mike.sherov@gmail.com>
103
+Greg Hazel <ghazel@gmail.com>
104
+Schalk Neethling <schalk@ossreleasefeed.com>
105
+Denis Knauf <Denis.Knauf@gmail.com>
106
+Timo Tijhof <krinklemail@gmail.com>
107
+Steen Nielsen <swinedk@gmail.com>
108
+Anton Ryzhov <anton@ryzhov.me>
109
+Shi Chuan <shichuanr@gmail.com>
110
+Berker Peksag <berker.peksag@gmail.com>
111
+Toby Brain <tobyb@freshview.com>
112
+Matt Mueller <mattmuelle@gmail.com>
113
+Justin <drakefjustin@gmail.com>
114
+Daniel Herman <daniel.c.herman@gmail.com>
115
+Oleg Gaidarenko <markelog@gmail.com>
116
+Richard Gibson <richard.gibson@gmail.com>
117
+Rafaël Blais Masson <rafbmasson@gmail.com>
118
+cmc3cn <59194618@qq.com>
119
+Joe Presbrey <presbrey@gmail.com>
120
+Sindre Sorhus <sindresorhus@gmail.com>
121
+Arne de Bree <arne@bukkie.nl>
122
+Vladislav Zarakovsky <vlad.zar@gmail.com>
123
+Andrew E Monat <amonat@gmail.com>
124
+Oskari <admin@o-programs.com>
125
+Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
126
+tsinha <tsinha@Anthonys-MacBook-Pro.local>
127
+Matt Farmer <matt@frmr.me>
128
+Trey Hunner <treyhunner@gmail.com>
129
+Jason Moon <jmoon@socialcast.com>
130
+Jeffery To <jeffery.to@gmail.com>
131
+Kris Borchers <kris.borchers@gmail.com>
132
+Vladimir Zhuravlev <private.face@gmail.com>
133
+Jacob Thornton <jacobthornton@gmail.com>
134
+Chad Killingsworth <chadkillingsworth@missouristate.edu>
135
+Nowres Rafid <nowres.rafed@gmail.com>
136
+David Benjamin <davidben@mit.edu>
137
+Uri Gilad <antishok@gmail.com>
138
+Chris Faulkner <thefaulkner@gmail.com>
139
+Elijah Manor <elijah.manor@gmail.com>
140
+Daniel Chatfield <chatfielddaniel@gmail.com>
141
+Nikita Govorov <nikita.govorov@gmail.com>
142
+Wesley Walser <waw325@gmail.com>
143
+Mike Pennisi <mike@mikepennisi.com>
144
+Markus Staab <markus.staab@redaxo.de>
145
+Dave Riddle <david@joyvuu.com>
146
+Callum Macrae <callum@lynxphp.com>
147
+Benjamin Truyman <bentruyman@gmail.com>
148
+James Huston <james@jameshuston.net>
149
+Erick Ruiz de Chávez <erickrdch@gmail.com>
150
+David Bonner <dbonner@cogolabs.com>
151
+Akintayo Akinwunmi <aakinwunmi@judge.com>
152
+MORGAN <morgan@morgangraphics.com>
153
+Ismail Khair <ismail.khair@gmail.com>
154
+Carl Danley <carldanley@gmail.com>
155
+Mike Petrovich <michael.c.petrovich@gmail.com>
156
+Greg Lavallee <greglavallee@wapolabs.com>
157
+Daniel Gálvez <dgalvez@editablething.com>
158
+Sai Lung Wong <sai.wong@huffingtonpost.com>
159
+Tom H Fuertes <TomFuertes@gmail.com>
160
+Roland Eckl <eckl.roland@googlemail.com>
161
+Jay Merrifield <fracmak@gmail.com>
162
+Allen J Schmidt Jr <cobrasoft@gmail.com>
163
+Jonathan Sampson <jjdsampson@gmail.com>
164
+Marcel Greter <marcel.greter@ocbnet.ch>
165
+Matthias Jäggli <matthias.jaeggli@gmail.com>
166
+David Fox <dfoxinator@gmail.com>
167
+Yiming He <yiminghe@gmail.com>
168
+Devin Cooper <cooper.semantics@gmail.com>
169
+Paul Ramos <paul.b.ramos@gmail.com>
170
+Rod Vagg <rod@vagg.org>
171
+Bennett Sorbo <bsorbo@gmail.com>
172
+Sebastian Burkhard <sebi.burkhard@gmail.com>
173
+Zachary Adam Kaplan <razic@viralkitty.com>
174
+nanto_vi <nanto@moon.email.ne.jp>
175
+nanto <nanto@moon.email.ne.jp>
176
+Danil Somsikov <danilasomsikov@gmail.com>
177
+Ryunosuke SATO <tricknotes.rs@gmail.com>
178
+Jean Boussier <jean.boussier@gmail.com>
179
+Adam Coulombe <me@adam.co>
180
+Andrew Plummer <plummer.andrew@gmail.com>
181
+Mark Raddatz <mraddatz@gmail.com>
182
+Isaac Z. Schlueter <i@izs.me>
183
+Karl Sieburg <ksieburg@yahoo.com>
184
+Pascal Borreli <pascal@borreli.com>
185
+Nguyen Phuc Lam <ruado1987@gmail.com>
186
+Dmitry Gusev <dmitry.gusev@gmail.com>
187
+Michał Gołębiowski <m.goleb@gmail.com>
188
+Li Xudong <istonelee@gmail.com>
189
+Steven Benner <admin@stevenbenner.com>
190
+Tom H Fuertes <tomfuertes@gmail.com>
191
+Renato Oliveira dos Santos <ros3@cin.ufpe.br>
192
+ros3cin <ros3@cin.ufpe.br>
193
+Jason Bedard <jason+jquery@jbedard.ca>
194
+Kyle Robinson Young <kyle@dontkry.com>
195
+Chris Talkington <chris@talkingtontech.com>
196
+Eddie Monge <eddie@eddiemonge.com>
197
+Terry Jones <terry@jon.es>
198
+Jason Merino <jasonmerino@gmail.com>
199
+Jeremy Dunck <jdunck@gmail.com>
200
+Chris Price <price.c@gmail.com>
201
+Guy Bedford <guybedford@gmail.com>
202
+Amey Sakhadeo <me@ameyms.com>
203
+Mike Sidorov <mikes.ekb@gmail.com>
204
+Anthony Ryan <anthonyryan1@gmail.com>
205
+Dominik D. Geyer <dominik.geyer@gmail.com>
206
+George Kats <katsgeorgeek@gmail.com>
207
+Lihan Li <frankieteardrop@gmail.com>
208
+Ronny Springer <springer.ronny@gmail.com>
209
+Chris Antaki <ChrisAntaki@gmail.com>
210
+Marian Sollmann <marian.sollmann@cargomedia.ch>
211
+njhamann <njhamann@gmail.com>
212
+Ilya Kantor <iliakan@gmail.com>
213
+David Hong <d.hong@me.com>
214
+John Paul <john@johnkpaul.com>
215
+Jakob Stoeck <jakob@pokermania.de>
216
+Christopher Jones <chris@cjqed.com>
217
+Forbes Lindesay <forbes@lindesay.co.uk>
218
+S. Andrew Sheppard <andrew@wq.io>
219
+Leonardo Balter <leonardo.balter@gmail.com>
220
+Roman Reiß <me@silverwind.io>
221
+Benjy Cui <benjytrys@gmail.com>
222
+Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
223
+John Hoven <hovenj@gmail.com>
224
+Philip Jägenstedt <philip@foolip.org>
225
+Christian Kosmowski <ksmwsk@gmail.com>
226
+Liang Peng <poppinlp@gmail.com>
227
+TJ VanToll <tj.vantoll@gmail.com>
228
+Senya Pugach <upisfree@outlook.com>
229
+Aurelio De Rosa <aurelioderosa@gmail.com>
230
+Nazar Mokrynskyi <nazar@mokrynskyi.com>
231
+Amit Merchant <bullredeyes@gmail.com>
232
+Jason Bedard <jason+github@jbedard.ca>
233
+Arthur Verschaeve <contact@arthurverschaeve.be>
234
+Dan Hart <danhart@notonthehighstreet.com>
235
+Bin Xin <rhyzix@gmail.com>
236
+David Corbacho <davidcorbacho@gmail.com>
237
+Veaceslav Grimalschi <grimalschi@yandex.ru>
238
+Daniel Husar <dano.husar@gmail.com>
239
+Frederic Hemberger <mail@frederic-hemberger.de>
240
+Ben Toews <mastahyeti@gmail.com>
241
+Aditya Raghavan <araghavan3@gmail.com>
242
+Victor Homyakov <vkhomyackov@gmail.com>
243
+Shivaji Varma <contact@shivajivarma.com>
244
+Nicolas HENRY <icewil@gmail.com>
245
+Anne-Gaelle Colom <coloma@westminster.ac.uk>
246
+George Mauer <gmauer@gmail.com>
247
+Leonardo Braga <leonardo.braga@gmail.com>
248
+Stephen Edgar <stephen@netweb.com.au>
249
+Thomas Tortorini <thomastortorini@gmail.com>
250
+Winston Howes <winstonhowes@gmail.com>
251
+Jon Hester <jon.d.hester@gmail.com>
252
+Alexander O'Mara <me@alexomara.com>
253
+Bastian Buchholz <buchholz.bastian@googlemail.com>
254
+Arthur Stolyar <nekr.fabula@gmail.com>
255
+Calvin Metcalf <calvin.metcalf@gmail.com>
256
+Mu Haibao <mhbseal@163.com>
257
+Richard McDaniel <rm0026@uah.edu>
258
+Chris Rebert <github@rebertia.com>
259
+Gabriel Schulhof <gabriel.schulhof@intel.com>
260
+Gilad Peleg <giladp007@gmail.com>
261
+Martin Naumann <martin@geekonaut.de>
262
+Marek Lewandowski <m.lewandowski@cksource.com>
263
+Bruno Pérel <brunoperel@gmail.com>
264
+Reed Loden <reed@reedloden.com>
265
+Daniel Nill <daniellnill@gmail.com>
266
+Yongwoo Jeon <yongwoo.jeon@navercorp.com>
267
+Sean Henderson <seanh.za@gmail.com>
268
+Richard Kraaijenhagen <stdin+git@riichard.com>
269
+Connor Atherton <c.liam.atherton@gmail.com>
270
+Gary Ye <garysye@gmail.com>
271
+Christian Grete <webmaster@christiangrete.com>
272
+Liza Ramo <liza.h.ramo@gmail.com>
273
+Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
274
+Joelle Fleurantin <joasqueeniebee@gmail.com>
275
+Jae Sung Park <alberto.park@gmail.com>
276
+Jun Sun <klsforever@gmail.com>
277
+Josh Soref <apache@soref.com>
278
+Henry Wong <henryw4k@gmail.com>
279
+Jon Dufresne <jon.dufresne@gmail.com>
280
+Martijn W. van der Lee <martijn@vanderlee.com>
281
+Devin Wilson <dwilson6.github@gmail.com>
282
+Steve Mao <maochenyan@gmail.com>
283
+Zack Hall <zackhall@outlook.com>
284
+Bernhard M. Wiedemann <jquerybmw@lsmod.de>
285
+Todor Prikumov <tono_pr@abv.bg>
286
+Jha Naman <createnaman@gmail.com>
287
+William Robinet <william.robinet@conostix.com>
288
+Alexander Lisianoi <all3fox@gmail.com>
289
+Vitaliy Terziev <vitaliyterziev@gmail.com>
290
+Joe Trumbull <trumbull.j@gmail.com>
291
+Alexander K <xpyro@ya.ru>
292
+Damian Senn <jquery@topaxi.codes>
293
+Ralin Chimev <ralin.chimev@gmail.com>
294
+Felipe Sateler <fsateler@gmail.com>
295
+Christophe Tafani-Dereeper <christophetd@hotmail.fr>
296
+Manoj Kumar <nithmanoj@gmail.com>
297
+David Broder-Rodgers <broder93@gmail.com>
298
+Alex Louden <alex@louden.com>
299
+Alex Padilla <alexonezero@outlook.com>
300
+南漂一卒 <shiy007@qq.com>
301
+karan-96 <karanbatra96@gmail.com>

+ 36 - 0
static/bower_components/jquery/LICENSE.txt

@@ -0,0 +1,36 @@
1
+Copyright JS Foundation and other contributors, https://js.foundation/
2
+
3
+This software consists of voluntary contributions made by many
4
+individuals. For exact contribution history, see the revision history
5
+available at https://github.com/jquery/jquery
6
+
7
+The following license applies to all parts of this software except as
8
+documented below:
9
+
10
+====
11
+
12
+Permission is hereby granted, free of charge, to any person obtaining
13
+a copy of this software and associated documentation files (the
14
+"Software"), to deal in the Software without restriction, including
15
+without limitation the rights to use, copy, modify, merge, publish,
16
+distribute, sublicense, and/or sell copies of the Software, and to
17
+permit persons to whom the Software is furnished to do so, subject to
18
+the following conditions:
19
+
20
+The above copyright notice and this permission notice shall be
21
+included in all copies or substantial portions of the Software.
22
+
23
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+
31
+====
32
+
33
+All files located in the node_modules and external directories are
34
+externally maintained libraries used by this software which have their
35
+own licenses; we recommend you read them, as their terms may differ from
36
+the terms above.

+ 67 - 0
static/bower_components/jquery/README.md

@@ -0,0 +1,67 @@
1
+# jQuery
2
+
3
+> jQuery is a fast, small, and feature-rich JavaScript library.
4
+
5
+For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).
6
+For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
7
+
8
+If upgrading, please see the [blog post for 3.2.1](https://blog.jquery.com/2017/03/20/jquery-3-2-1-now-available/). This includes notable differences from the previous version and a more readable changelog.
9
+
10
+## Including jQuery
11
+
12
+Below are some of the most common ways to include jQuery.
13
+
14
+### Browser
15
+
16
+#### Script tag
17
+
18
+```html
19
+<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
20
+```
21
+
22
+#### Babel
23
+
24
+[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
25
+
26
+```js
27
+import $ from "jquery";
28
+```
29
+
30
+#### Browserify/Webpack
31
+
32
+There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...
33
+
34
+```js
35
+var $ = require("jquery");
36
+```
37
+
38
+#### AMD (Asynchronous Module Definition)
39
+
40
+AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).
41
+
42
+```js
43
+define(["jquery"], function($) {
44
+
45
+});
46
+```
47
+
48
+### Node
49
+
50
+To include jQuery in [Node](nodejs.org), first install with npm.
51
+
52
+```sh
53
+npm install jquery
54
+```
55
+
56
+For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.
57
+
58
+```js
59
+require("jsdom").env("", function(err, window) {
60
+	if (err) {
61
+		console.error(err);
62
+		return;
63
+	}
64
+
65
+	var $ = require("jquery")(window);
66
+});
67
+```

+ 14 - 0
static/bower_components/jquery/bower.json

@@ -0,0 +1,14 @@
1
+{
2
+  "name": "jquery",
3
+  "main": "dist/jquery.js",
4
+  "license": "MIT",
5
+  "ignore": [
6
+    "package.json"
7
+  ],
8
+  "keywords": [
9
+    "jquery",
10
+    "javascript",
11
+    "browser",
12
+    "library"
13
+  ]
14
+}

+ 476 - 0
static/bower_components/jquery/dist/core.js

@@ -0,0 +1,476 @@
1
+/* global Symbol */
2
+// Defining this global in .eslintrc.json would create a danger of using the global
3
+// unguarded in another place, it seems safer to define global only for this module
4
+
5
+define( [
6
+	"./var/arr",
7
+	"./var/document",
8
+	"./var/getProto",
9
+	"./var/slice",
10
+	"./var/concat",
11
+	"./var/push",
12
+	"./var/indexOf",
13
+	"./var/class2type",
14
+	"./var/toString",
15
+	"./var/hasOwn",
16
+	"./var/fnToString",
17
+	"./var/ObjectFunctionString",
18
+	"./var/support",
19
+	"./core/DOMEval"
20
+], function( arr, document, getProto, slice, concat, push, indexOf,
21
+	class2type, toString, hasOwn, fnToString, ObjectFunctionString,
22
+	support, DOMEval ) {
23
+
24
+"use strict";
25
+
26
+var
27
+	version = "3.2.1",
28
+
29
+	// Define a local copy of jQuery
30
+	jQuery = function( selector, context ) {
31
+
32
+		// The jQuery object is actually just the init constructor 'enhanced'
33
+		// Need init if jQuery is called (just allow error to be thrown if not included)
34
+		return new jQuery.fn.init( selector, context );
35
+	},
36
+
37
+	// Support: Android <=4.0 only
38
+	// Make sure we trim BOM and NBSP
39
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
40
+
41
+	// Matches dashed string for camelizing
42
+	rmsPrefix = /^-ms-/,
43
+	rdashAlpha = /-([a-z])/g,
44
+
45
+	// Used by jQuery.camelCase as callback to replace()
46
+	fcamelCase = function( all, letter ) {
47
+		return letter.toUpperCase();
48
+	};
49
+
50
+jQuery.fn = jQuery.prototype = {
51
+
52
+	// The current version of jQuery being used
53
+	jquery: version,
54
+
55
+	constructor: jQuery,
56
+
57
+	// The default length of a jQuery object is 0
58
+	length: 0,
59
+
60
+	toArray: function() {
61
+		return slice.call( this );
62
+	},
63
+
64
+	// Get the Nth element in the matched element set OR
65
+	// Get the whole matched element set as a clean array
66
+	get: function( num ) {
67
+
68
+		// Return all the elements in a clean array
69
+		if ( num == null ) {
70
+			return slice.call( this );
71
+		}
72
+
73
+		// Return just the one element from the set
74
+		return num < 0 ? this[ num + this.length ] : this[ num ];
75
+	},
76
+
77
+	// Take an array of elements and push it onto the stack
78
+	// (returning the new matched element set)
79
+	pushStack: function( elems ) {
80
+
81
+		// Build a new jQuery matched element set
82
+		var ret = jQuery.merge( this.constructor(), elems );
83
+
84
+		// Add the old object onto the stack (as a reference)
85
+		ret.prevObject = this;
86
+
87
+		// Return the newly-formed element set
88
+		return ret;
89
+	},
90
+
91
+	// Execute a callback for every element in the matched set.
92
+	each: function( callback ) {
93
+		return jQuery.each( this, callback );
94
+	},
95
+
96
+	map: function( callback ) {
97
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
98
+			return callback.call( elem, i, elem );
99
+		} ) );
100
+	},
101
+
102
+	slice: function() {
103
+		return this.pushStack( slice.apply( this, arguments ) );
104
+	},
105
+
106
+	first: function() {
107
+		return this.eq( 0 );
108
+	},
109
+
110
+	last: function() {
111
+		return this.eq( -1 );
112
+	},
113
+
114
+	eq: function( i ) {
115
+		var len = this.length,
116
+			j = +i + ( i < 0 ? len : 0 );
117
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
118
+	},
119
+
120
+	end: function() {
121
+		return this.prevObject || this.constructor();
122
+	},
123
+
124
+	// For internal use only.
125
+	// Behaves like an Array's method, not like a jQuery method.
126
+	push: push,
127
+	sort: arr.sort,
128
+	splice: arr.splice
129
+};
130
+
131
+jQuery.extend = jQuery.fn.extend = function() {
132
+	var options, name, src, copy, copyIsArray, clone,
133
+		target = arguments[ 0 ] || {},
134
+		i = 1,
135
+		length = arguments.length,
136
+		deep = false;
137
+
138
+	// Handle a deep copy situation
139
+	if ( typeof target === "boolean" ) {
140
+		deep = target;
141
+
142
+		// Skip the boolean and the target
143
+		target = arguments[ i ] || {};
144
+		i++;
145
+	}
146
+
147
+	// Handle case when target is a string or something (possible in deep copy)
148
+	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
149
+		target = {};
150
+	}
151
+
152
+	// Extend jQuery itself if only one argument is passed
153
+	if ( i === length ) {
154
+		target = this;
155
+		i--;
156
+	}
157
+
158
+	for ( ; i < length; i++ ) {
159
+
160
+		// Only deal with non-null/undefined values
161
+		if ( ( options = arguments[ i ] ) != null ) {
162
+
163
+			// Extend the base object
164
+			for ( name in options ) {
165
+				src = target[ name ];
166
+				copy = options[ name ];
167
+
168
+				// Prevent never-ending loop
169
+				if ( target === copy ) {
170
+					continue;
171
+				}
172
+
173
+				// Recurse if we're merging plain objects or arrays
174
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
175
+					( copyIsArray = Array.isArray( copy ) ) ) ) {
176
+
177
+					if ( copyIsArray ) {
178
+						copyIsArray = false;
179
+						clone = src && Array.isArray( src ) ? src : [];
180
+
181
+					} else {
182
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
183
+					}
184
+
185
+					// Never move original objects, clone them
186
+					target[ name ] = jQuery.extend( deep, clone, copy );
187
+
188
+				// Don't bring in undefined values
189
+				} else if ( copy !== undefined ) {
190
+					target[ name ] = copy;
191
+				}
192
+			}
193
+		}
194
+	}
195
+
196
+	// Return the modified object
197
+	return target;
198
+};
199
+
200
+jQuery.extend( {
201
+
202
+	// Unique for each copy of jQuery on the page
203
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
204
+
205
+	// Assume jQuery is ready without the ready module
206
+	isReady: true,
207
+
208
+	error: function( msg ) {
209
+		throw new Error( msg );
210
+	},
211
+
212
+	noop: function() {},
213
+
214
+	isFunction: function( obj ) {
215
+		return jQuery.type( obj ) === "function";
216
+	},
217
+
218
+	isWindow: function( obj ) {
219
+		return obj != null && obj === obj.window;
220
+	},
221
+
222
+	isNumeric: function( obj ) {
223
+
224
+		// As of jQuery 3.0, isNumeric is limited to
225
+		// strings and numbers (primitives or objects)
226
+		// that can be coerced to finite numbers (gh-2662)
227
+		var type = jQuery.type( obj );
228
+		return ( type === "number" || type === "string" ) &&
229
+
230
+			// parseFloat NaNs numeric-cast false positives ("")
231
+			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
232
+			// subtraction forces infinities to NaN
233
+			!isNaN( obj - parseFloat( obj ) );
234
+	},
235
+
236
+	isPlainObject: function( obj ) {
237
+		var proto, Ctor;
238
+
239
+		// Detect obvious negatives
240
+		// Use toString instead of jQuery.type to catch host objects
241
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
242
+			return false;
243
+		}
244
+
245
+		proto = getProto( obj );
246
+
247
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
248
+		if ( !proto ) {
249
+			return true;
250
+		}
251
+
252
+		// Objects with prototype are plain iff they were constructed by a global Object function
253
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
254
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
255
+	},
256
+
257
+	isEmptyObject: function( obj ) {
258
+
259
+		/* eslint-disable no-unused-vars */
260
+		// See https://github.com/eslint/eslint/issues/6125
261
+		var name;
262
+
263
+		for ( name in obj ) {
264
+			return false;
265
+		}
266
+		return true;
267
+	},
268
+
269
+	type: function( obj ) {
270
+		if ( obj == null ) {
271
+			return obj + "";
272
+		}
273
+
274
+		// Support: Android <=2.3 only (functionish RegExp)
275
+		return typeof obj === "object" || typeof obj === "function" ?
276
+			class2type[ toString.call( obj ) ] || "object" :
277
+			typeof obj;
278
+	},
279
+
280
+	// Evaluates a script in a global context
281
+	globalEval: function( code ) {
282
+		DOMEval( code );
283
+	},
284
+
285
+	// Convert dashed to camelCase; used by the css and data modules
286
+	// Support: IE <=9 - 11, Edge 12 - 13
287
+	// Microsoft forgot to hump their vendor prefix (#9572)
288
+	camelCase: function( string ) {
289
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
290
+	},
291
+
292
+	each: function( obj, callback ) {
293
+		var length, i = 0;
294
+
295
+		if ( isArrayLike( obj ) ) {
296
+			length = obj.length;
297
+			for ( ; i < length; i++ ) {
298
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
299
+					break;
300
+				}
301
+			}
302
+		} else {
303
+			for ( i in obj ) {
304
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
305
+					break;
306
+				}
307
+			}
308
+		}
309
+
310
+		return obj;
311
+	},
312
+
313
+	// Support: Android <=4.0 only
314
+	trim: function( text ) {
315
+		return text == null ?
316
+			"" :
317
+			( text + "" ).replace( rtrim, "" );
318
+	},
319
+
320
+	// results is for internal usage only
321
+	makeArray: function( arr, results ) {
322
+		var ret = results || [];
323
+
324
+		if ( arr != null ) {
325
+			if ( isArrayLike( Object( arr ) ) ) {
326
+				jQuery.merge( ret,
327
+					typeof arr === "string" ?
328
+					[ arr ] : arr
329
+				);
330
+			} else {
331
+				push.call( ret, arr );
332
+			}
333
+		}
334
+
335
+		return ret;
336
+	},
337
+
338
+	inArray: function( elem, arr, i ) {
339
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
340
+	},
341
+
342
+	// Support: Android <=4.0 only, PhantomJS 1 only
343
+	// push.apply(_, arraylike) throws on ancient WebKit
344
+	merge: function( first, second ) {
345
+		var len = +second.length,
346
+			j = 0,
347
+			i = first.length;
348
+
349
+		for ( ; j < len; j++ ) {
350
+			first[ i++ ] = second[ j ];
351
+		}
352
+
353
+		first.length = i;
354
+
355
+		return first;
356
+	},
357
+
358
+	grep: function( elems, callback, invert ) {
359
+		var callbackInverse,
360
+			matches = [],
361
+			i = 0,
362
+			length = elems.length,
363
+			callbackExpect = !invert;
364
+
365
+		// Go through the array, only saving the items
366
+		// that pass the validator function
367
+		for ( ; i < length; i++ ) {
368
+			callbackInverse = !callback( elems[ i ], i );
369
+			if ( callbackInverse !== callbackExpect ) {
370
+				matches.push( elems[ i ] );
371
+			}
372
+		}
373
+
374
+		return matches;
375
+	},
376
+
377
+	// arg is for internal usage only
378
+	map: function( elems, callback, arg ) {
379
+		var length, value,
380
+			i = 0,
381
+			ret = [];
382
+
383
+		// Go through the array, translating each of the items to their new values
384
+		if ( isArrayLike( elems ) ) {
385
+			length = elems.length;
386
+			for ( ; i < length; i++ ) {
387
+				value = callback( elems[ i ], i, arg );
388
+
389
+				if ( value != null ) {
390
+					ret.push( value );
391
+				}
392
+			}
393
+
394
+		// Go through every key on the object,
395
+		} else {
396
+			for ( i in elems ) {
397
+				value = callback( elems[ i ], i, arg );
398
+
399
+				if ( value != null ) {
400
+					ret.push( value );
401
+				}
402
+			}
403
+		}
404
+
405
+		// Flatten any nested arrays
406
+		return concat.apply( [], ret );
407
+	},
408
+
409
+	// A global GUID counter for objects
410
+	guid: 1,
411
+
412
+	// Bind a function to a context, optionally partially applying any
413
+	// arguments.
414
+	proxy: function( fn, context ) {
415
+		var tmp, args, proxy;
416
+
417
+		if ( typeof context === "string" ) {
418
+			tmp = fn[ context ];
419
+			context = fn;
420
+			fn = tmp;
421
+		}
422
+
423
+		// Quick check to determine if target is callable, in the spec
424
+		// this throws a TypeError, but we will just return undefined.
425
+		if ( !jQuery.isFunction( fn ) ) {
426
+			return undefined;
427
+		}
428
+
429
+		// Simulated bind
430
+		args = slice.call( arguments, 2 );
431
+		proxy = function() {
432
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
433
+		};
434
+
435
+		// Set the guid of unique handler to the same of original handler, so it can be removed
436
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
437
+
438
+		return proxy;
439
+	},
440
+
441
+	now: Date.now,
442
+
443
+	// jQuery.support is not used in Core but other projects attach their
444
+	// properties to it so it needs to exist.
445
+	support: support
446
+} );
447
+
448
+if ( typeof Symbol === "function" ) {
449
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
450
+}
451
+
452
+// Populate the class2type map
453
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
454
+function( i, name ) {
455
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
456
+} );
457
+
458
+function isArrayLike( obj ) {
459
+
460
+	// Support: real iOS 8.2 only (not reproducible in simulator)
461
+	// `in` check used to prevent JIT error (gh-2145)
462
+	// hasOwn isn't used here due to false negatives
463
+	// regarding Nodelist length in IE
464
+	var length = !!obj && "length" in obj && obj.length,
465
+		type = jQuery.type( obj );
466
+
467
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
468
+		return false;
469
+	}
470
+
471
+	return type === "array" || length === 0 ||
472
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
473
+}
474
+
475
+return jQuery;
476
+} );

Dosya farkı çok büyük olduğundan ihmal edildi
+ 10253 - 0
static/bower_components/jquery/dist/jquery.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 4 - 0
static/bower_components/jquery/dist/jquery.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
static/bower_components/jquery/dist/jquery.min.map


Dosya farkı çok büyük olduğundan ihmal edildi
+ 8160 - 0
static/bower_components/jquery/dist/jquery.slim.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 4 - 0
static/bower_components/jquery/dist/jquery.slim.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
static/bower_components/jquery/dist/jquery.slim.min.map


+ 36 - 0
static/bower_components/jquery/external/sizzle/LICENSE.txt

@@ -0,0 +1,36 @@
1
+Copyright jQuery Foundation and other contributors, https://jquery.org/
2
+
3
+This software consists of voluntary contributions made by many
4
+individuals. For exact contribution history, see the revision history
5
+available at https://github.com/jquery/sizzle
6
+
7
+The following license applies to all parts of this software except as
8
+documented below:
9
+
10
+====
11
+
12
+Permission is hereby granted, free of charge, to any person obtaining
13
+a copy of this software and associated documentation files (the
14
+"Software"), to deal in the Software without restriction, including
15
+without limitation the rights to use, copy, modify, merge, publish,
16
+distribute, sublicense, and/or sell copies of the Software, and to
17
+permit persons to whom the Software is furnished to do so, subject to
18
+the following conditions:
19
+
20
+The above copyright notice and this permission notice shall be
21
+included in all copies or substantial portions of the Software.
22
+
23
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+
31
+====
32
+
33
+All files located in the node_modules and external directories are
34
+externally maintained libraries used by this software which have their
35
+own licenses; we recommend you read them, as their terms may differ from
36
+the terms above.

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2272 - 0
static/bower_components/jquery/external/sizzle/dist/sizzle.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 3 - 0
static/bower_components/jquery/external/sizzle/dist/sizzle.min.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
static/bower_components/jquery/external/sizzle/dist/sizzle.min.map


+ 5 - 0
static/bower_components/jquery/src/.eslintrc.json

@@ -0,0 +1,5 @@
1
+{
2
+	"root": true,
3
+
4
+	"extends": "../.eslintrc-browser.json"
5
+}

+ 855 - 0
static/bower_components/jquery/src/ajax.js

@@ -0,0 +1,855 @@
1
+define( [
2
+	"./core",
3
+	"./var/document",
4
+	"./var/rnothtmlwhite",
5
+	"./ajax/var/location",
6
+	"./ajax/var/nonce",
7
+	"./ajax/var/rquery",
8
+
9
+	"./core/init",
10
+	"./ajax/parseXML",
11
+	"./event/trigger",
12
+	"./deferred",
13
+	"./serialize" // jQuery.param
14
+], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
15
+
16
+"use strict";
17
+
18
+var
19
+	r20 = /%20/g,
20
+	rhash = /#.*$/,
21
+	rantiCache = /([?&])_=[^&]*/,
22
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
23
+
24
+	// #7653, #8125, #8152: local protocol detection
25
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
26
+	rnoContent = /^(?:GET|HEAD)$/,
27
+	rprotocol = /^\/\//,
28
+
29
+	/* Prefilters
30
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
31
+	 * 2) These are called:
32
+	 *    - BEFORE asking for a transport
33
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
34
+	 * 3) key is the dataType
35
+	 * 4) the catchall symbol "*" can be used
36
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
37
+	 */
38
+	prefilters = {},
39
+
40
+	/* Transports bindings
41
+	 * 1) key is the dataType
42
+	 * 2) the catchall symbol "*" can be used
43
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
44
+	 */
45
+	transports = {},
46
+
47
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
48
+	allTypes = "*/".concat( "*" ),
49
+
50
+	// Anchor tag for parsing the document origin
51
+	originAnchor = document.createElement( "a" );
52
+	originAnchor.href = location.href;
53
+
54
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
55
+function addToPrefiltersOrTransports( structure ) {
56
+
57
+	// dataTypeExpression is optional and defaults to "*"
58
+	return function( dataTypeExpression, func ) {
59
+
60
+		if ( typeof dataTypeExpression !== "string" ) {
61
+			func = dataTypeExpression;
62
+			dataTypeExpression = "*";
63
+		}
64
+
65
+		var dataType,
66
+			i = 0,
67
+			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
68
+
69
+		if ( jQuery.isFunction( func ) ) {
70
+
71
+			// For each dataType in the dataTypeExpression
72
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
73
+
74
+				// Prepend if requested
75
+				if ( dataType[ 0 ] === "+" ) {
76
+					dataType = dataType.slice( 1 ) || "*";
77
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
78
+
79
+				// Otherwise append
80
+				} else {
81
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
82
+				}
83
+			}
84
+		}
85
+	};
86
+}
87
+
88
+// Base inspection function for prefilters and transports
89
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
90
+
91
+	var inspected = {},
92
+		seekingTransport = ( structure === transports );
93
+
94
+	function inspect( dataType ) {
95
+		var selected;
96
+		inspected[ dataType ] = true;
97
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
98
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
99
+			if ( typeof dataTypeOrTransport === "string" &&
100
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
101
+
102
+				options.dataTypes.unshift( dataTypeOrTransport );
103
+				inspect( dataTypeOrTransport );
104
+				return false;
105
+			} else if ( seekingTransport ) {
106
+				return !( selected = dataTypeOrTransport );
107
+			}
108
+		} );
109
+		return selected;
110
+	}
111
+
112
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
113
+}
114
+
115
+// A special extend for ajax options
116
+// that takes "flat" options (not to be deep extended)
117
+// Fixes #9887
118
+function ajaxExtend( target, src ) {
119
+	var key, deep,
120
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
121
+
122
+	for ( key in src ) {
123
+		if ( src[ key ] !== undefined ) {
124
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
125
+		}
126
+	}
127
+	if ( deep ) {
128
+		jQuery.extend( true, target, deep );
129
+	}
130
+
131
+	return target;
132
+}
133
+
134
+/* Handles responses to an ajax request:
135
+ * - finds the right dataType (mediates between content-type and expected dataType)
136
+ * - returns the corresponding response
137
+ */
138
+function ajaxHandleResponses( s, jqXHR, responses ) {
139
+
140
+	var ct, type, finalDataType, firstDataType,
141
+		contents = s.contents,
142
+		dataTypes = s.dataTypes;
143
+
144
+	// Remove auto dataType and get content-type in the process
145
+	while ( dataTypes[ 0 ] === "*" ) {
146
+		dataTypes.shift();
147
+		if ( ct === undefined ) {
148
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
149
+		}
150
+	}
151
+
152
+	// Check if we're dealing with a known content-type
153
+	if ( ct ) {
154
+		for ( type in contents ) {
155
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
156
+				dataTypes.unshift( type );
157
+				break;
158
+			}
159
+		}
160
+	}
161
+
162
+	// Check to see if we have a response for the expected dataType
163
+	if ( dataTypes[ 0 ] in responses ) {
164
+		finalDataType = dataTypes[ 0 ];
165
+	} else {
166
+
167
+		// Try convertible dataTypes
168
+		for ( type in responses ) {
169
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
170
+				finalDataType = type;
171
+				break;
172
+			}
173
+			if ( !firstDataType ) {
174
+				firstDataType = type;
175
+			}
176
+		}
177
+
178
+		// Or just use first one
179
+		finalDataType = finalDataType || firstDataType;
180
+	}
181
+
182
+	// If we found a dataType
183
+	// We add the dataType to the list if needed
184
+	// and return the corresponding response
185
+	if ( finalDataType ) {
186
+		if ( finalDataType !== dataTypes[ 0 ] ) {
187
+			dataTypes.unshift( finalDataType );
188
+		}
189
+		return responses[ finalDataType ];
190
+	}
191
+}
192
+
193
+/* Chain conversions given the request and the original response
194
+ * Also sets the responseXXX fields on the jqXHR instance
195
+ */
196
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
197
+	var conv2, current, conv, tmp, prev,
198
+		converters = {},
199
+
200
+		// Work with a copy of dataTypes in case we need to modify it for conversion
201
+		dataTypes = s.dataTypes.slice();
202
+
203
+	// Create converters map with lowercased keys
204
+	if ( dataTypes[ 1 ] ) {
205
+		for ( conv in s.converters ) {
206
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
207
+		}
208
+	}
209
+
210
+	current = dataTypes.shift();
211
+
212
+	// Convert to each sequential dataType
213
+	while ( current ) {
214
+
215
+		if ( s.responseFields[ current ] ) {
216
+			jqXHR[ s.responseFields[ current ] ] = response;
217
+		}
218
+
219
+		// Apply the dataFilter if provided
220
+		if ( !prev && isSuccess && s.dataFilter ) {
221
+			response = s.dataFilter( response, s.dataType );
222
+		}
223
+
224
+		prev = current;
225
+		current = dataTypes.shift();
226
+
227
+		if ( current ) {
228
+
229
+			// There's only work to do if current dataType is non-auto
230
+			if ( current === "*" ) {
231
+
232
+				current = prev;
233
+
234
+			// Convert response if prev dataType is non-auto and differs from current
235
+			} else if ( prev !== "*" && prev !== current ) {
236
+
237
+				// Seek a direct converter
238
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
239
+
240
+				// If none found, seek a pair
241
+				if ( !conv ) {
242
+					for ( conv2 in converters ) {
243
+
244
+						// If conv2 outputs current
245
+						tmp = conv2.split( " " );
246
+						if ( tmp[ 1 ] === current ) {
247
+
248
+							// If prev can be converted to accepted input
249
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
250
+								converters[ "* " + tmp[ 0 ] ];
251
+							if ( conv ) {
252
+
253
+								// Condense equivalence converters
254
+								if ( conv === true ) {
255
+									conv = converters[ conv2 ];
256
+
257
+								// Otherwise, insert the intermediate dataType
258
+								} else if ( converters[ conv2 ] !== true ) {
259
+									current = tmp[ 0 ];
260
+									dataTypes.unshift( tmp[ 1 ] );
261
+								}
262
+								break;
263
+							}
264
+						}
265
+					}
266
+				}
267
+
268
+				// Apply converter (if not an equivalence)
269
+				if ( conv !== true ) {
270
+
271
+					// Unless errors are allowed to bubble, catch and return them
272
+					if ( conv && s.throws ) {
273
+						response = conv( response );
274
+					} else {
275
+						try {
276
+							response = conv( response );
277
+						} catch ( e ) {
278
+							return {
279
+								state: "parsererror",
280
+								error: conv ? e : "No conversion from " + prev + " to " + current
281
+							};
282
+						}
283
+					}
284
+				}
285
+			}
286
+		}
287
+	}
288
+
289
+	return { state: "success", data: response };
290
+}
291
+
292
+jQuery.extend( {
293
+
294
+	// Counter for holding the number of active queries
295
+	active: 0,
296
+
297
+	// Last-Modified header cache for next request
298
+	lastModified: {},
299
+	etag: {},
300
+
301
+	ajaxSettings: {
302
+		url: location.href,
303
+		type: "GET",
304
+		isLocal: rlocalProtocol.test( location.protocol ),
305
+		global: true,
306
+		processData: true,
307
+		async: true,
308
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
309
+
310
+		/*
311
+		timeout: 0,
312
+		data: null,
313
+		dataType: null,
314
+		username: null,
315
+		password: null,
316
+		cache: null,
317
+		throws: false,
318
+		traditional: false,
319
+		headers: {},
320
+		*/
321
+
322
+		accepts: {
323
+			"*": allTypes,
324
+			text: "text/plain",
325
+			html: "text/html",
326
+			xml: "application/xml, text/xml",
327
+			json: "application/json, text/javascript"
328
+		},
329
+
330
+		contents: {
331
+			xml: /\bxml\b/,
332
+			html: /\bhtml/,
333
+			json: /\bjson\b/
334
+		},
335
+
336
+		responseFields: {
337
+			xml: "responseXML",
338
+			text: "responseText",
339
+			json: "responseJSON"
340
+		},
341
+
342
+		// Data converters
343
+		// Keys separate source (or catchall "*") and destination types with a single space
344
+		converters: {
345
+
346
+			// Convert anything to text
347
+			"* text": String,
348
+
349
+			// Text to html (true = no transformation)
350
+			"text html": true,
351
+
352
+			// Evaluate text as a json expression
353
+			"text json": JSON.parse,
354
+
355
+			// Parse text as xml
356
+			"text xml": jQuery.parseXML
357
+		},
358
+
359
+		// For options that shouldn't be deep extended:
360
+		// you can add your own custom options here if
361
+		// and when you create one that shouldn't be
362
+		// deep extended (see ajaxExtend)
363
+		flatOptions: {
364
+			url: true,
365
+			context: true
366
+		}
367
+	},
368
+
369
+	// Creates a full fledged settings object into target
370
+	// with both ajaxSettings and settings fields.
371
+	// If target is omitted, writes into ajaxSettings.
372
+	ajaxSetup: function( target, settings ) {
373
+		return settings ?
374
+
375
+			// Building a settings object
376
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
377
+
378
+			// Extending ajaxSettings
379
+			ajaxExtend( jQuery.ajaxSettings, target );
380
+	},
381
+
382
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
383
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
384
+
385
+	// Main method
386
+	ajax: function( url, options ) {
387
+
388
+		// If url is an object, simulate pre-1.5 signature
389
+		if ( typeof url === "object" ) {
390
+			options = url;
391
+			url = undefined;
392
+		}
393
+
394
+		// Force options to be an object
395
+		options = options || {};
396
+
397
+		var transport,
398
+
399
+			// URL without anti-cache param
400
+			cacheURL,
401
+
402
+			// Response headers
403
+			responseHeadersString,
404
+			responseHeaders,
405
+
406
+			// timeout handle
407
+			timeoutTimer,
408
+
409
+			// Url cleanup var
410
+			urlAnchor,
411
+
412
+			// Request state (becomes false upon send and true upon completion)
413
+			completed,
414
+
415
+			// To know if global events are to be dispatched
416
+			fireGlobals,
417
+
418
+			// Loop variable
419
+			i,
420
+
421
+			// uncached part of the url
422
+			uncached,
423
+
424
+			// Create the final options object
425
+			s = jQuery.ajaxSetup( {}, options ),
426
+
427
+			// Callbacks context
428
+			callbackContext = s.context || s,
429
+
430
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
431
+			globalEventContext = s.context &&
432
+				( callbackContext.nodeType || callbackContext.jquery ) ?
433
+					jQuery( callbackContext ) :
434
+					jQuery.event,
435
+
436
+			// Deferreds
437
+			deferred = jQuery.Deferred(),
438
+			completeDeferred = jQuery.Callbacks( "once memory" ),
439
+
440
+			// Status-dependent callbacks
441
+			statusCode = s.statusCode || {},
442
+
443
+			// Headers (they are sent all at once)
444
+			requestHeaders = {},
445
+			requestHeadersNames = {},
446
+
447
+			// Default abort message
448
+			strAbort = "canceled",
449
+
450
+			// Fake xhr
451
+			jqXHR = {
452
+				readyState: 0,
453
+
454
+				// Builds headers hashtable if needed
455
+				getResponseHeader: function( key ) {
456
+					var match;
457
+					if ( completed ) {
458
+						if ( !responseHeaders ) {
459
+							responseHeaders = {};
460
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
461
+								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
462
+							}
463
+						}
464
+						match = responseHeaders[ key.toLowerCase() ];
465
+					}
466
+					return match == null ? null : match;
467
+				},
468
+
469
+				// Raw string
470
+				getAllResponseHeaders: function() {
471
+					return completed ? responseHeadersString : null;
472
+				},
473
+
474
+				// Caches the header
475
+				setRequestHeader: function( name, value ) {
476
+					if ( completed == null ) {
477
+						name = requestHeadersNames[ name.toLowerCase() ] =
478
+							requestHeadersNames[ name.toLowerCase() ] || name;
479
+						requestHeaders[ name ] = value;
480
+					}
481
+					return this;
482
+				},
483
+
484
+				// Overrides response content-type header
485
+				overrideMimeType: function( type ) {
486
+					if ( completed == null ) {
487
+						s.mimeType = type;
488
+					}
489
+					return this;
490
+				},
491
+
492
+				// Status-dependent callbacks
493
+				statusCode: function( map ) {
494
+					var code;
495
+					if ( map ) {
496
+						if ( completed ) {
497
+
498
+							// Execute the appropriate callbacks
499
+							jqXHR.always( map[ jqXHR.status ] );
500
+						} else {
501
+
502
+							// Lazy-add the new callbacks in a way that preserves old ones
503
+							for ( code in map ) {
504
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
505
+							}
506
+						}
507
+					}
508
+					return this;
509
+				},
510
+
511
+				// Cancel the request
512
+				abort: function( statusText ) {
513
+					var finalText = statusText || strAbort;
514
+					if ( transport ) {
515
+						transport.abort( finalText );
516
+					}
517
+					done( 0, finalText );
518
+					return this;
519
+				}
520
+			};
521
+
522
+		// Attach deferreds
523
+		deferred.promise( jqXHR );
524
+
525
+		// Add protocol if not provided (prefilters might expect it)
526
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
527
+		// We also use the url parameter if available
528
+		s.url = ( ( url || s.url || location.href ) + "" )
529
+			.replace( rprotocol, location.protocol + "//" );
530
+
531
+		// Alias method option to type as per ticket #12004
532
+		s.type = options.method || options.type || s.method || s.type;
533
+
534
+		// Extract dataTypes list
535
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
536
+
537
+		// A cross-domain request is in order when the origin doesn't match the current origin.
538
+		if ( s.crossDomain == null ) {
539
+			urlAnchor = document.createElement( "a" );
540
+
541
+			// Support: IE <=8 - 11, Edge 12 - 13
542
+			// IE throws exception on accessing the href property if url is malformed,
543
+			// e.g. http://example.com:80x/
544
+			try {
545
+				urlAnchor.href = s.url;
546
+
547
+				// Support: IE <=8 - 11 only
548
+				// Anchor's host property isn't correctly set when s.url is relative
549
+				urlAnchor.href = urlAnchor.href;
550
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
551
+					urlAnchor.protocol + "//" + urlAnchor.host;
552
+			} catch ( e ) {
553
+
554
+				// If there is an error parsing the URL, assume it is crossDomain,
555
+				// it can be rejected by the transport if it is invalid
556
+				s.crossDomain = true;
557
+			}
558
+		}
559
+
560
+		// Convert data if not already a string
561
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
562
+			s.data = jQuery.param( s.data, s.traditional );
563
+		}
564
+
565
+		// Apply prefilters
566
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
567
+
568
+		// If request was aborted inside a prefilter, stop there
569
+		if ( completed ) {
570
+			return jqXHR;
571
+		}
572
+
573
+		// We can fire global events as of now if asked to
574
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
575
+		fireGlobals = jQuery.event && s.global;
576
+
577
+		// Watch for a new set of requests
578
+		if ( fireGlobals && jQuery.active++ === 0 ) {
579
+			jQuery.event.trigger( "ajaxStart" );
580
+		}
581
+
582
+		// Uppercase the type
583
+		s.type = s.type.toUpperCase();
584
+
585
+		// Determine if request has content
586
+		s.hasContent = !rnoContent.test( s.type );
587
+
588
+		// Save the URL in case we're toying with the If-Modified-Since
589
+		// and/or If-None-Match header later on
590
+		// Remove hash to simplify url manipulation
591
+		cacheURL = s.url.replace( rhash, "" );
592
+
593
+		// More options handling for requests with no content
594
+		if ( !s.hasContent ) {
595
+
596
+			// Remember the hash so we can put it back
597
+			uncached = s.url.slice( cacheURL.length );
598
+
599
+			// If data is available, append data to url
600
+			if ( s.data ) {
601
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
602
+
603
+				// #9682: remove data so that it's not used in an eventual retry
604
+				delete s.data;
605
+			}
606
+
607
+			// Add or update anti-cache param if needed
608
+			if ( s.cache === false ) {
609
+				cacheURL = cacheURL.replace( rantiCache, "$1" );
610
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
611
+			}
612
+
613
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
614
+			s.url = cacheURL + uncached;
615
+
616
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
617
+		} else if ( s.data && s.processData &&
618
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
619
+			s.data = s.data.replace( r20, "+" );
620
+		}
621
+
622
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
623
+		if ( s.ifModified ) {
624
+			if ( jQuery.lastModified[ cacheURL ] ) {
625
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
626
+			}
627
+			if ( jQuery.etag[ cacheURL ] ) {
628
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
629
+			}
630
+		}
631
+
632
+		// Set the correct header, if data is being sent
633
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
634
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
635
+		}
636
+
637
+		// Set the Accepts header for the server, depending on the dataType
638
+		jqXHR.setRequestHeader(
639
+			"Accept",
640
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
641
+				s.accepts[ s.dataTypes[ 0 ] ] +
642
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
643
+				s.accepts[ "*" ]
644
+		);
645
+
646
+		// Check for headers option
647
+		for ( i in s.headers ) {
648
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
649
+		}
650
+
651
+		// Allow custom headers/mimetypes and early abort
652
+		if ( s.beforeSend &&
653
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
654
+
655
+			// Abort if not done already and return
656
+			return jqXHR.abort();
657
+		}
658
+
659
+		// Aborting is no longer a cancellation
660
+		strAbort = "abort";
661
+
662
+		// Install callbacks on deferreds
663
+		completeDeferred.add( s.complete );
664
+		jqXHR.done( s.success );
665
+		jqXHR.fail( s.error );
666
+
667
+		// Get transport
668
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
669
+
670
+		// If no transport, we auto-abort
671
+		if ( !transport ) {
672
+			done( -1, "No Transport" );
673
+		} else {
674
+			jqXHR.readyState = 1;
675
+
676
+			// Send global event
677
+			if ( fireGlobals ) {
678
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
679
+			}
680
+
681
+			// If request was aborted inside ajaxSend, stop there
682
+			if ( completed ) {
683
+				return jqXHR;
684
+			}
685
+
686
+			// Timeout
687
+			if ( s.async && s.timeout > 0 ) {
688
+				timeoutTimer = window.setTimeout( function() {
689
+					jqXHR.abort( "timeout" );
690
+				}, s.timeout );
691
+			}
692
+
693
+			try {
694
+				completed = false;
695
+				transport.send( requestHeaders, done );
696
+			} catch ( e ) {
697
+
698
+				// Rethrow post-completion exceptions
699
+				if ( completed ) {
700
+					throw e;
701
+				}
702
+
703
+				// Propagate others as results
704
+				done( -1, e );
705
+			}
706
+		}
707
+
708
+		// Callback for when everything is done
709
+		function done( status, nativeStatusText, responses, headers ) {
710
+			var isSuccess, success, error, response, modified,
711
+				statusText = nativeStatusText;
712
+
713
+			// Ignore repeat invocations
714
+			if ( completed ) {
715
+				return;
716
+			}
717
+
718
+			completed = true;
719
+
720
+			// Clear timeout if it exists
721
+			if ( timeoutTimer ) {
722
+				window.clearTimeout( timeoutTimer );
723
+			}
724
+
725
+			// Dereference transport for early garbage collection
726
+			// (no matter how long the jqXHR object will be used)
727
+			transport = undefined;
728
+
729
+			// Cache response headers
730
+			responseHeadersString = headers || "";
731
+
732
+			// Set readyState
733
+			jqXHR.readyState = status > 0 ? 4 : 0;
734
+
735
+			// Determine if successful
736
+			isSuccess = status >= 200 && status < 300 || status === 304;
737
+
738
+			// Get response data
739
+			if ( responses ) {
740
+				response = ajaxHandleResponses( s, jqXHR, responses );
741
+			}
742
+
743
+			// Convert no matter what (that way responseXXX fields are always set)
744
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
745
+
746
+			// If successful, handle type chaining
747
+			if ( isSuccess ) {
748
+
749
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
750
+				if ( s.ifModified ) {
751
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
752
+					if ( modified ) {
753
+						jQuery.lastModified[ cacheURL ] = modified;
754
+					}
755
+					modified = jqXHR.getResponseHeader( "etag" );
756
+					if ( modified ) {
757
+						jQuery.etag[ cacheURL ] = modified;
758
+					}
759
+				}
760
+
761
+				// if no content
762
+				if ( status === 204 || s.type === "HEAD" ) {
763
+					statusText = "nocontent";
764
+
765
+				// if not modified
766
+				} else if ( status === 304 ) {
767
+					statusText = "notmodified";
768
+
769
+				// If we have data, let's convert it
770
+				} else {
771
+					statusText = response.state;
772
+					success = response.data;
773
+					error = response.error;
774
+					isSuccess = !error;
775
+				}
776
+			} else {
777
+
778
+				// Extract error from statusText and normalize for non-aborts
779
+				error = statusText;
780
+				if ( status || !statusText ) {
781
+					statusText = "error";
782
+					if ( status < 0 ) {
783
+						status = 0;
784
+					}
785
+				}
786
+			}
787
+
788
+			// Set data for the fake xhr object
789
+			jqXHR.status = status;
790
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
791
+
792
+			// Success/Error
793
+			if ( isSuccess ) {
794
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
795
+			} else {
796
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
797
+			}
798
+
799
+			// Status-dependent callbacks
800
+			jqXHR.statusCode( statusCode );
801
+			statusCode = undefined;
802
+
803
+			if ( fireGlobals ) {
804
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
805
+					[ jqXHR, s, isSuccess ? success : error ] );
806
+			}
807
+
808
+			// Complete
809
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
810
+
811
+			if ( fireGlobals ) {
812
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
813
+
814
+				// Handle the global AJAX counter
815
+				if ( !( --jQuery.active ) ) {
816
+					jQuery.event.trigger( "ajaxStop" );
817
+				}
818
+			}
819
+		}
820
+
821
+		return jqXHR;
822
+	},
823
+
824
+	getJSON: function( url, data, callback ) {
825
+		return jQuery.get( url, data, callback, "json" );
826
+	},
827
+
828
+	getScript: function( url, callback ) {
829
+		return jQuery.get( url, undefined, callback, "script" );
830
+	}
831
+} );
832
+
833
+jQuery.each( [ "get", "post" ], function( i, method ) {
834
+	jQuery[ method ] = function( url, data, callback, type ) {
835
+
836
+		// Shift arguments if data argument was omitted
837
+		if ( jQuery.isFunction( data ) ) {
838
+			type = type || callback;
839
+			callback = data;
840
+			data = undefined;
841
+		}
842
+
843
+		// The url can be an options object (which then must have .url)
844
+		return jQuery.ajax( jQuery.extend( {
845
+			url: url,
846
+			type: method,
847
+			dataType: type,
848
+			data: data,
849
+			success: callback
850
+		}, jQuery.isPlainObject( url ) && url ) );
851
+	};
852
+} );
853
+
854
+return jQuery;
855
+} );

+ 102 - 0
static/bower_components/jquery/src/ajax/jsonp.js

@@ -0,0 +1,102 @@
1
+define( [
2
+	"../core",
3
+	"./var/nonce",
4
+	"./var/rquery",
5
+	"../ajax"
6
+], function( jQuery, nonce, rquery ) {
7
+
8
+"use strict";
9
+
10
+var oldCallbacks = [],
11
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
12
+
13
+// Default jsonp settings
14
+jQuery.ajaxSetup( {
15
+	jsonp: "callback",
16
+	jsonpCallback: function() {
17
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
18
+		this[ callback ] = true;
19
+		return callback;
20
+	}
21
+} );
22
+
23
+// Detect, normalize options and install callbacks for jsonp requests
24
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
25
+
26
+	var callbackName, overwritten, responseContainer,
27
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
28
+			"url" :
29
+			typeof s.data === "string" &&
30
+				( s.contentType || "" )
31
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
32
+				rjsonp.test( s.data ) && "data"
33
+		);
34
+
35
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
36
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
37
+
38
+		// Get callback name, remembering preexisting value associated with it
39
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
40
+			s.jsonpCallback() :
41
+			s.jsonpCallback;
42
+
43
+		// Insert callback into url or form data
44
+		if ( jsonProp ) {
45
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
46
+		} else if ( s.jsonp !== false ) {
47
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
48
+		}
49
+
50
+		// Use data converter to retrieve json after script execution
51
+		s.converters[ "script json" ] = function() {
52
+			if ( !responseContainer ) {
53
+				jQuery.error( callbackName + " was not called" );
54
+			}
55
+			return responseContainer[ 0 ];
56
+		};
57
+
58
+		// Force json dataType
59
+		s.dataTypes[ 0 ] = "json";
60
+
61
+		// Install callback
62
+		overwritten = window[ callbackName ];
63
+		window[ callbackName ] = function() {
64
+			responseContainer = arguments;
65
+		};
66
+
67
+		// Clean-up function (fires after converters)
68
+		jqXHR.always( function() {
69
+
70
+			// If previous value didn't exist - remove it
71
+			if ( overwritten === undefined ) {
72
+				jQuery( window ).removeProp( callbackName );
73
+
74
+			// Otherwise restore preexisting value
75
+			} else {
76
+				window[ callbackName ] = overwritten;
77
+			}
78
+
79
+			// Save back as free
80
+			if ( s[ callbackName ] ) {
81
+
82
+				// Make sure that re-using the options doesn't screw things around
83
+				s.jsonpCallback = originalSettings.jsonpCallback;
84
+
85
+				// Save the callback name for future use
86
+				oldCallbacks.push( callbackName );
87
+			}
88
+
89
+			// Call if it was a function and we have a response
90
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
91
+				overwritten( responseContainer[ 0 ] );
92
+			}
93
+
94
+			responseContainer = overwritten = undefined;
95
+		} );
96
+
97
+		// Delegate to script
98
+		return "script";
99
+	}
100
+} );
101
+
102
+} );

+ 76 - 0
static/bower_components/jquery/src/ajax/load.js

@@ -0,0 +1,76 @@
1
+define( [
2
+	"../core",
3
+	"../core/stripAndCollapse",
4
+	"../core/parseHTML",
5
+	"../ajax",
6
+	"../traversing",
7
+	"../manipulation",
8
+	"../selector"
9
+], function( jQuery, stripAndCollapse ) {
10
+
11
+"use strict";
12
+
13
+/**
14
+ * Load a url into a page
15
+ */
16
+jQuery.fn.load = function( url, params, callback ) {
17
+	var selector, type, response,
18
+		self = this,
19
+		off = url.indexOf( " " );
20
+
21
+	if ( off > -1 ) {
22
+		selector = stripAndCollapse( url.slice( off ) );
23
+		url = url.slice( 0, off );
24
+	}
25
+
26
+	// If it's a function
27
+	if ( jQuery.isFunction( params ) ) {
28
+
29
+		// We assume that it's the callback
30
+		callback = params;
31
+		params = undefined;
32
+
33
+	// Otherwise, build a param string
34
+	} else if ( params && typeof params === "object" ) {
35
+		type = "POST";
36
+	}
37
+
38
+	// If we have elements to modify, make the request
39
+	if ( self.length > 0 ) {
40
+		jQuery.ajax( {
41
+			url: url,
42
+
43
+			// If "type" variable is undefined, then "GET" method will be used.
44
+			// Make value of this field explicit since
45
+			// user can override it through ajaxSetup method
46
+			type: type || "GET",
47
+			dataType: "html",
48
+			data: params
49
+		} ).done( function( responseText ) {
50
+
51
+			// Save response for use in complete callback
52
+			response = arguments;
53
+
54
+			self.html( selector ?
55
+
56
+				// If a selector was specified, locate the right elements in a dummy div
57
+				// Exclude scripts to avoid IE 'Permission Denied' errors
58
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
59
+
60
+				// Otherwise use the full result
61
+				responseText );
62
+
63
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
64
+		// but they are ignored because response was set above.
65
+		// If it fails, this function gets "jqXHR", "status", "error"
66
+		} ).always( callback && function( jqXHR, status ) {
67
+			self.each( function() {
68
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
69
+			} );
70
+		} );
71
+	}
72
+
73
+	return this;
74
+};
75
+
76
+} );

+ 30 - 0
static/bower_components/jquery/src/ajax/parseXML.js

@@ -0,0 +1,30 @@
1
+define( [
2
+	"../core"
3
+], function( jQuery ) {
4
+
5
+"use strict";
6
+
7
+// Cross-browser xml parsing
8
+jQuery.parseXML = function( data ) {
9
+	var xml;
10
+	if ( !data || typeof data !== "string" ) {
11
+		return null;
12
+	}
13
+
14
+	// Support: IE 9 - 11 only
15
+	// IE throws on parseFromString with invalid input.
16
+	try {
17
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
18
+	} catch ( e ) {
19
+		xml = undefined;
20
+	}
21
+
22
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
23
+		jQuery.error( "Invalid XML: " + data );
24
+	}
25
+	return xml;
26
+};
27
+
28
+return jQuery.parseXML;
29
+
30
+} );

+ 77 - 0
static/bower_components/jquery/src/ajax/script.js

@@ -0,0 +1,77 @@
1
+define( [
2
+	"../core",
3
+	"../var/document",
4
+	"../ajax"
5
+], function( jQuery, document ) {
6
+
7
+"use strict";
8
+
9
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10
+jQuery.ajaxPrefilter( function( s ) {
11
+	if ( s.crossDomain ) {
12
+		s.contents.script = false;
13
+	}
14
+} );
15
+
16
+// Install script dataType
17
+jQuery.ajaxSetup( {
18
+	accepts: {
19
+		script: "text/javascript, application/javascript, " +
20
+			"application/ecmascript, application/x-ecmascript"
21
+	},
22
+	contents: {
23
+		script: /\b(?:java|ecma)script\b/
24
+	},
25
+	converters: {
26
+		"text script": function( text ) {
27
+			jQuery.globalEval( text );
28
+			return text;
29
+		}
30
+	}
31
+} );
32
+
33
+// Handle cache's special case and crossDomain
34
+jQuery.ajaxPrefilter( "script", function( s ) {
35
+	if ( s.cache === undefined ) {
36
+		s.cache = false;
37
+	}
38
+	if ( s.crossDomain ) {
39
+		s.type = "GET";
40
+	}
41
+} );
42
+
43
+// Bind script tag hack transport
44
+jQuery.ajaxTransport( "script", function( s ) {
45
+
46
+	// This transport only deals with cross domain requests
47
+	if ( s.crossDomain ) {
48
+		var script, callback;
49
+		return {
50
+			send: function( _, complete ) {
51
+				script = jQuery( "<script>" ).prop( {
52
+					charset: s.scriptCharset,
53
+					src: s.url
54
+				} ).on(
55
+					"load error",
56
+					callback = function( evt ) {
57
+						script.remove();
58
+						callback = null;
59
+						if ( evt ) {
60
+							complete( evt.type === "error" ? 404 : 200, evt.type );
61
+						}
62
+					}
63
+				);
64
+
65
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
66
+				document.head.appendChild( script[ 0 ] );
67
+			},
68
+			abort: function() {
69
+				if ( callback ) {
70
+					callback();
71
+				}
72
+			}
73
+		};
74
+	}
75
+} );
76
+
77
+} );

+ 5 - 0
static/bower_components/jquery/src/ajax/var/location.js

@@ -0,0 +1,5 @@
1
+define( function() {
2
+	"use strict";
3
+
4
+	return window.location;
5
+} );

+ 0 - 0
static/bower_components/jquery/src/ajax/var/nonce.js


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor

tum/OBAppSrc - Gogs: Simplico Git Service

説明なし