Version Description
- 2018-09-23
Download this release
Release Info
Developer | optimole |
Plugin | Image optimization & Lazy Load by Optimole |
Version | 1.0.1 |
Comparing to | |
See all releases |
Version 1.0.1
- CHANGELOG.md +11 -0
- README.md +1 -0
- assets/css/style.scss +103 -0
- assets/img/logo.png +0 -0
- assets/js/assets/img/optimole-logo.png +0 -0
- assets/js/bundle.js +16278 -0
- assets/js/bundle.min.js +11 -0
CHANGELOG.md
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
### v1.0.1 - 2018-09-23
|
3 |
+
**Changes:**
|
4 |
+
|
5 |
+
### v1.0.1 - 2018-09-23
|
6 |
+
**Changes:**
|
7 |
+
* Tag first stable version for wordpress.org.
|
8 |
+
|
9 |
+
### v1.0.0 - 2018-09-11
|
10 |
+
**Changes:**
|
11 |
+
* First version of the plugin
|
README.md
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
# optimole-wp
|
assets/css/style.scss
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#optimole-app {
|
2 |
+
padding: 0 30px 0 20px;
|
3 |
+
|
4 |
+
$primary: #e7602a;
|
5 |
+
$success: #34a85e;
|
6 |
+
$danger: #d54222;
|
7 |
+
$info: #008ec2;
|
8 |
+
|
9 |
+
@import "~bulma/bulma";
|
10 |
+
|
11 |
+
.card {
|
12 |
+
transition: all 750ms ease-in-out;
|
13 |
+
border: 0;
|
14 |
+
border-radius: .1875rem;
|
15 |
+
-webkit-box-shadow: 0 1px 15px 1px rgba(39, 39, 39, .1);
|
16 |
+
box-shadow: 0 1px 15px 1px rgba(39, 39, 39, .1);
|
17 |
+
}
|
18 |
+
.logo {
|
19 |
+
margin-bottom: 10px;
|
20 |
+
img {
|
21 |
+
max-width: 180px;
|
22 |
+
margin: 0 auto;
|
23 |
+
}
|
24 |
+
}
|
25 |
+
.vue-js-switch {
|
26 |
+
align-self: center;
|
27 |
+
}
|
28 |
+
.api-key-control {
|
29 |
+
padding: 0 15px 0 0;
|
30 |
+
}
|
31 |
+
|
32 |
+
.api-key-field .button.is-danger {
|
33 |
+
padding-left: 20px;
|
34 |
+
padding-right: 20px;
|
35 |
+
}
|
36 |
+
|
37 |
+
.api-key-label, .label {
|
38 |
+
align-self: center;
|
39 |
+
margin: 0.5em 10px 0.5em 0;
|
40 |
+
font-size: 1em;
|
41 |
+
}
|
42 |
+
.header {
|
43 |
+
padding: 0 1.5rem 0;
|
44 |
+
&.level {
|
45 |
+
margin-bottom: 0;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
.account {
|
49 |
+
img {
|
50 |
+
border-top-right-radius: 4px;
|
51 |
+
border-bottom-right-radius: 4px;
|
52 |
+
}
|
53 |
+
.label {
|
54 |
+
margin-bottom: 0;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
//Optimized images.
|
59 |
+
.optimized-images {
|
60 |
+
|
61 |
+
table td, table th {
|
62 |
+
vertical-align: middle;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
//Fade animation.
|
68 |
+
.fade-enter-active, .fade-leave-active {
|
69 |
+
transition: opacity .5s;
|
70 |
+
}
|
71 |
+
|
72 |
+
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */
|
73 |
+
{
|
74 |
+
opacity: 0;
|
75 |
+
}
|
76 |
+
|
77 |
+
.media_page_optimole #wpbody-content > * {
|
78 |
+
display: none !important;
|
79 |
+
}
|
80 |
+
|
81 |
+
.media_page_optimole #wpbody-content > #optimole-app {
|
82 |
+
display: block !important;
|
83 |
+
}
|
84 |
+
#optimole-app img.optml-image{
|
85 |
+
float:left;
|
86 |
+
max-width: 100px;
|
87 |
+
width:auto;
|
88 |
+
margin: auto;
|
89 |
+
}
|
90 |
+
.optml-ratio-feedback .emoji{
|
91 |
+
font-size: 1.5em;
|
92 |
+
}
|
93 |
+
.optml-ratio-feedback{
|
94 |
+
float:right;
|
95 |
+
padding-right: 20px;
|
96 |
+
}
|
97 |
+
.optml-image-heading{
|
98 |
+
text-align: left;
|
99 |
+
}
|
100 |
+
th.optml-image-ratio-heading{
|
101 |
+
text-align: right !important;
|
102 |
+
font-size: 150%;
|
103 |
+
}
|
assets/img/logo.png
ADDED
Binary file
|
assets/js/assets/img/optimole-logo.png
ADDED
Binary file
|
assets/js/bundle.js
ADDED
@@ -0,0 +1,16278 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/******/ (function(modules) { // webpackBootstrap
|
2 |
+
/******/ // The module cache
|
3 |
+
/******/ var installedModules = {};
|
4 |
+
/******/
|
5 |
+
/******/ // The require function
|
6 |
+
/******/ function __webpack_require__(moduleId) {
|
7 |
+
/******/
|
8 |
+
/******/ // Check if module is in cache
|
9 |
+
/******/ if(installedModules[moduleId]) {
|
10 |
+
/******/ return installedModules[moduleId].exports;
|
11 |
+
/******/ }
|
12 |
+
/******/ // Create a new module (and put it into the cache)
|
13 |
+
/******/ var module = installedModules[moduleId] = {
|
14 |
+
/******/ i: moduleId,
|
15 |
+
/******/ l: false,
|
16 |
+
/******/ exports: {}
|
17 |
+
/******/ };
|
18 |
+
/******/
|
19 |
+
/******/ // Execute the module function
|
20 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
21 |
+
/******/
|
22 |
+
/******/ // Flag the module as loaded
|
23 |
+
/******/ module.l = true;
|
24 |
+
/******/
|
25 |
+
/******/ // Return the exports of the module
|
26 |
+
/******/ return module.exports;
|
27 |
+
/******/ }
|
28 |
+
/******/
|
29 |
+
/******/
|
30 |
+
/******/ // expose the modules object (__webpack_modules__)
|
31 |
+
/******/ __webpack_require__.m = modules;
|
32 |
+
/******/
|
33 |
+
/******/ // expose the module cache
|
34 |
+
/******/ __webpack_require__.c = installedModules;
|
35 |
+
/******/
|
36 |
+
/******/ // define getter function for harmony exports
|
37 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
38 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
39 |
+
/******/ Object.defineProperty(exports, name, {
|
40 |
+
/******/ configurable: false,
|
41 |
+
/******/ enumerable: true,
|
42 |
+
/******/ get: getter
|
43 |
+
/******/ });
|
44 |
+
/******/ }
|
45 |
+
/******/ };
|
46 |
+
/******/
|
47 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
48 |
+
/******/ __webpack_require__.n = function(module) {
|
49 |
+
/******/ var getter = module && module.__esModule ?
|
50 |
+
/******/ function getDefault() { return module['default']; } :
|
51 |
+
/******/ function getModuleExports() { return module; };
|
52 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
53 |
+
/******/ return getter;
|
54 |
+
/******/ };
|
55 |
+
/******/
|
56 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
57 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
58 |
+
/******/
|
59 |
+
/******/ // __webpack_public_path__
|
60 |
+
/******/ __webpack_require__.p = "/";
|
61 |
+
/******/
|
62 |
+
/******/ // Load entry module and return exports
|
63 |
+
/******/ return __webpack_require__(__webpack_require__.s = 6);
|
64 |
+
/******/ })
|
65 |
+
/************************************************************************/
|
66 |
+
/******/ ([
|
67 |
+
/* 0 */
|
68 |
+
/***/ (function(module, exports) {
|
69 |
+
|
70 |
+
/*
|
71 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
72 |
+
Author Tobias Koppers @sokra
|
73 |
+
*/
|
74 |
+
// css base code, injected by the css-loader
|
75 |
+
module.exports = function() {
|
76 |
+
var list = [];
|
77 |
+
|
78 |
+
// return the list of modules as css string
|
79 |
+
list.toString = function toString() {
|
80 |
+
var result = [];
|
81 |
+
for(var i = 0; i < this.length; i++) {
|
82 |
+
var item = this[i];
|
83 |
+
if(item[2]) {
|
84 |
+
result.push("@media " + item[2] + "{" + item[1] + "}");
|
85 |
+
} else {
|
86 |
+
result.push(item[1]);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
return result.join("");
|
90 |
+
};
|
91 |
+
|
92 |
+
// import a list of modules into the list
|
93 |
+
list.i = function(modules, mediaQuery) {
|
94 |
+
if(typeof modules === "string")
|
95 |
+
modules = [[null, modules, ""]];
|
96 |
+
var alreadyImportedModules = {};
|
97 |
+
for(var i = 0; i < this.length; i++) {
|
98 |
+
var id = this[i][0];
|
99 |
+
if(typeof id === "number")
|
100 |
+
alreadyImportedModules[id] = true;
|
101 |
+
}
|
102 |
+
for(i = 0; i < modules.length; i++) {
|
103 |
+
var item = modules[i];
|
104 |
+
// skip already imported module
|
105 |
+
// this implementation is not 100% perfect for weird media query combinations
|
106 |
+
// when a module is imported multiple times with different media queries.
|
107 |
+
// I hope this will never occur (Hey this way we have smaller bundles)
|
108 |
+
if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
|
109 |
+
if(mediaQuery && !item[2]) {
|
110 |
+
item[2] = mediaQuery;
|
111 |
+
} else if(mediaQuery) {
|
112 |
+
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
|
113 |
+
}
|
114 |
+
list.push(item);
|
115 |
+
}
|
116 |
+
}
|
117 |
+
};
|
118 |
+
return list;
|
119 |
+
};
|
120 |
+
|
121 |
+
|
122 |
+
/***/ }),
|
123 |
+
/* 1 */
|
124 |
+
/***/ (function(module, exports) {
|
125 |
+
|
126 |
+
/*
|
127 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
128 |
+
Author Tobias Koppers @sokra
|
129 |
+
*/
|
130 |
+
var stylesInDom = {},
|
131 |
+
memoize = function(fn) {
|
132 |
+
var memo;
|
133 |
+
return function () {
|
134 |
+
if (typeof memo === "undefined") memo = fn.apply(this, arguments);
|
135 |
+
return memo;
|
136 |
+
};
|
137 |
+
},
|
138 |
+
isOldIE = memoize(function() {
|
139 |
+
return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase());
|
140 |
+
}),
|
141 |
+
getHeadElement = memoize(function () {
|
142 |
+
return document.head || document.getElementsByTagName("head")[0];
|
143 |
+
}),
|
144 |
+
singletonElement = null,
|
145 |
+
singletonCounter = 0,
|
146 |
+
styleElementsInsertedAtTop = [];
|
147 |
+
|
148 |
+
module.exports = function(list, options) {
|
149 |
+
if(typeof DEBUG !== "undefined" && DEBUG) {
|
150 |
+
if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
|
151 |
+
}
|
152 |
+
|
153 |
+
options = options || {};
|
154 |
+
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
155 |
+
// tags it will allow on a page
|
156 |
+
if (typeof options.singleton === "undefined") options.singleton = isOldIE();
|
157 |
+
|
158 |
+
// By default, add <style> tags to the bottom of <head>.
|
159 |
+
if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
|
160 |
+
|
161 |
+
var styles = listToStyles(list);
|
162 |
+
addStylesToDom(styles, options);
|
163 |
+
|
164 |
+
return function update(newList) {
|
165 |
+
var mayRemove = [];
|
166 |
+
for(var i = 0; i < styles.length; i++) {
|
167 |
+
var item = styles[i];
|
168 |
+
var domStyle = stylesInDom[item.id];
|
169 |
+
domStyle.refs--;
|
170 |
+
mayRemove.push(domStyle);
|
171 |
+
}
|
172 |
+
if(newList) {
|
173 |
+
var newStyles = listToStyles(newList);
|
174 |
+
addStylesToDom(newStyles, options);
|
175 |
+
}
|
176 |
+
for(var i = 0; i < mayRemove.length; i++) {
|
177 |
+
var domStyle = mayRemove[i];
|
178 |
+
if(domStyle.refs === 0) {
|
179 |
+
for(var j = 0; j < domStyle.parts.length; j++)
|
180 |
+
domStyle.parts[j]();
|
181 |
+
delete stylesInDom[domStyle.id];
|
182 |
+
}
|
183 |
+
}
|
184 |
+
};
|
185 |
+
}
|
186 |
+
|
187 |
+
function addStylesToDom(styles, options) {
|
188 |
+
for(var i = 0; i < styles.length; i++) {
|
189 |
+
var item = styles[i];
|
190 |
+
var domStyle = stylesInDom[item.id];
|
191 |
+
if(domStyle) {
|
192 |
+
domStyle.refs++;
|
193 |
+
for(var j = 0; j < domStyle.parts.length; j++) {
|
194 |
+
domStyle.parts[j](item.parts[j]);
|
195 |
+
}
|
196 |
+
for(; j < item.parts.length; j++) {
|
197 |
+
domStyle.parts.push(addStyle(item.parts[j], options));
|
198 |
+
}
|
199 |
+
} else {
|
200 |
+
var parts = [];
|
201 |
+
for(var j = 0; j < item.parts.length; j++) {
|
202 |
+
parts.push(addStyle(item.parts[j], options));
|
203 |
+
}
|
204 |
+
stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
|
205 |
+
}
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
function listToStyles(list) {
|
210 |
+
var styles = [];
|
211 |
+
var newStyles = {};
|
212 |
+
for(var i = 0; i < list.length; i++) {
|
213 |
+
var item = list[i];
|
214 |
+
var id = item[0];
|
215 |
+
var css = item[1];
|
216 |
+
var media = item[2];
|
217 |
+
var sourceMap = item[3];
|
218 |
+
var part = {css: css, media: media, sourceMap: sourceMap};
|
219 |
+
if(!newStyles[id])
|
220 |
+
styles.push(newStyles[id] = {id: id, parts: [part]});
|
221 |
+
else
|
222 |
+
newStyles[id].parts.push(part);
|
223 |
+
}
|
224 |
+
return styles;
|
225 |
+
}
|
226 |
+
|
227 |
+
function insertStyleElement(options, styleElement) {
|
228 |
+
var head = getHeadElement();
|
229 |
+
var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
|
230 |
+
if (options.insertAt === "top") {
|
231 |
+
if(!lastStyleElementInsertedAtTop) {
|
232 |
+
head.insertBefore(styleElement, head.firstChild);
|
233 |
+
} else if(lastStyleElementInsertedAtTop.nextSibling) {
|
234 |
+
head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
|
235 |
+
} else {
|
236 |
+
head.appendChild(styleElement);
|
237 |
+
}
|
238 |
+
styleElementsInsertedAtTop.push(styleElement);
|
239 |
+
} else if (options.insertAt === "bottom") {
|
240 |
+
head.appendChild(styleElement);
|
241 |
+
} else {
|
242 |
+
throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
function removeStyleElement(styleElement) {
|
247 |
+
styleElement.parentNode.removeChild(styleElement);
|
248 |
+
var idx = styleElementsInsertedAtTop.indexOf(styleElement);
|
249 |
+
if(idx >= 0) {
|
250 |
+
styleElementsInsertedAtTop.splice(idx, 1);
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
function createStyleElement(options) {
|
255 |
+
var styleElement = document.createElement("style");
|
256 |
+
styleElement.type = "text/css";
|
257 |
+
insertStyleElement(options, styleElement);
|
258 |
+
return styleElement;
|
259 |
+
}
|
260 |
+
|
261 |
+
function createLinkElement(options) {
|
262 |
+
var linkElement = document.createElement("link");
|
263 |
+
linkElement.rel = "stylesheet";
|
264 |
+
insertStyleElement(options, linkElement);
|
265 |
+
return linkElement;
|
266 |
+
}
|
267 |
+
|
268 |
+
function addStyle(obj, options) {
|
269 |
+
var styleElement, update, remove;
|
270 |
+
|
271 |
+
if (options.singleton) {
|
272 |
+
var styleIndex = singletonCounter++;
|
273 |
+
styleElement = singletonElement || (singletonElement = createStyleElement(options));
|
274 |
+
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
|
275 |
+
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
|
276 |
+
} else if(obj.sourceMap &&
|
277 |
+
typeof URL === "function" &&
|
278 |
+
typeof URL.createObjectURL === "function" &&
|
279 |
+
typeof URL.revokeObjectURL === "function" &&
|
280 |
+
typeof Blob === "function" &&
|
281 |
+
typeof btoa === "function") {
|
282 |
+
styleElement = createLinkElement(options);
|
283 |
+
update = updateLink.bind(null, styleElement);
|
284 |
+
remove = function() {
|
285 |
+
removeStyleElement(styleElement);
|
286 |
+
if(styleElement.href)
|
287 |
+
URL.revokeObjectURL(styleElement.href);
|
288 |
+
};
|
289 |
+
} else {
|
290 |
+
styleElement = createStyleElement(options);
|
291 |
+
update = applyToTag.bind(null, styleElement);
|
292 |
+
remove = function() {
|
293 |
+
removeStyleElement(styleElement);
|
294 |
+
};
|
295 |
+
}
|
296 |
+
|
297 |
+
update(obj);
|
298 |
+
|
299 |
+
return function updateStyle(newObj) {
|
300 |
+
if(newObj) {
|
301 |
+
if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
|
302 |
+
return;
|
303 |
+
update(obj = newObj);
|
304 |
+
} else {
|
305 |
+
remove();
|
306 |
+
}
|
307 |
+
};
|
308 |
+
}
|
309 |
+
|
310 |
+
var replaceText = (function () {
|
311 |
+
var textStore = [];
|
312 |
+
|
313 |
+
return function (index, replacement) {
|
314 |
+
textStore[index] = replacement;
|
315 |
+
return textStore.filter(Boolean).join('\n');
|
316 |
+
};
|
317 |
+
})();
|
318 |
+
|
319 |
+
function applyToSingletonTag(styleElement, index, remove, obj) {
|
320 |
+
var css = remove ? "" : obj.css;
|
321 |
+
|
322 |
+
if (styleElement.styleSheet) {
|
323 |
+
styleElement.styleSheet.cssText = replaceText(index, css);
|
324 |
+
} else {
|
325 |
+
var cssNode = document.createTextNode(css);
|
326 |
+
var childNodes = styleElement.childNodes;
|
327 |
+
if (childNodes[index]) styleElement.removeChild(childNodes[index]);
|
328 |
+
if (childNodes.length) {
|
329 |
+
styleElement.insertBefore(cssNode, childNodes[index]);
|
330 |
+
} else {
|
331 |
+
styleElement.appendChild(cssNode);
|
332 |
+
}
|
333 |
+
}
|
334 |
+
}
|
335 |
+
|
336 |
+
function applyToTag(styleElement, obj) {
|
337 |
+
var css = obj.css;
|
338 |
+
var media = obj.media;
|
339 |
+
|
340 |
+
if(media) {
|
341 |
+
styleElement.setAttribute("media", media)
|
342 |
+
}
|
343 |
+
|
344 |
+
if(styleElement.styleSheet) {
|
345 |
+
styleElement.styleSheet.cssText = css;
|
346 |
+
} else {
|
347 |
+
while(styleElement.firstChild) {
|
348 |
+
styleElement.removeChild(styleElement.firstChild);
|
349 |
+
}
|
350 |
+
styleElement.appendChild(document.createTextNode(css));
|
351 |
+
}
|
352 |
+
}
|
353 |
+
|
354 |
+
function updateLink(linkElement, obj) {
|
355 |
+
var css = obj.css;
|
356 |
+
var sourceMap = obj.sourceMap;
|
357 |
+
|
358 |
+
if(sourceMap) {
|
359 |
+
// http://stackoverflow.com/a/26603875
|
360 |
+
css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
|
361 |
+
}
|
362 |
+
|
363 |
+
var blob = new Blob([css], { type: "text/css" });
|
364 |
+
|
365 |
+
var oldSrc = linkElement.href;
|
366 |
+
|
367 |
+
linkElement.href = URL.createObjectURL(blob);
|
368 |
+
|
369 |
+
if(oldSrc)
|
370 |
+
URL.revokeObjectURL(oldSrc);
|
371 |
+
}
|
372 |
+
|
373 |
+
|
374 |
+
/***/ }),
|
375 |
+
/* 2 */
|
376 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
377 |
+
|
378 |
+
"use strict";
|
379 |
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
380 |
+
/* WEBPACK VAR INJECTION */(function(process, global, setImmediate) {/*!
|
381 |
+
* Vue.js v2.5.17
|
382 |
+
* (c) 2014-2018 Evan You
|
383 |
+
* Released under the MIT License.
|
384 |
+
*/
|
385 |
+
/* */
|
386 |
+
|
387 |
+
var emptyObject = Object.freeze({});
|
388 |
+
|
389 |
+
// these helpers produces better vm code in JS engines due to their
|
390 |
+
// explicitness and function inlining
|
391 |
+
function isUndef (v) {
|
392 |
+
return v === undefined || v === null
|
393 |
+
}
|
394 |
+
|
395 |
+
function isDef (v) {
|
396 |
+
return v !== undefined && v !== null
|
397 |
+
}
|
398 |
+
|
399 |
+
function isTrue (v) {
|
400 |
+
return v === true
|
401 |
+
}
|
402 |
+
|
403 |
+
function isFalse (v) {
|
404 |
+
return v === false
|
405 |
+
}
|
406 |
+
|
407 |
+
/**
|
408 |
+
* Check if value is primitive
|
409 |
+
*/
|
410 |
+
function isPrimitive (value) {
|
411 |
+
return (
|
412 |
+
typeof value === 'string' ||
|
413 |
+
typeof value === 'number' ||
|
414 |
+
// $flow-disable-line
|
415 |
+
typeof value === 'symbol' ||
|
416 |
+
typeof value === 'boolean'
|
417 |
+
)
|
418 |
+
}
|
419 |
+
|
420 |
+
/**
|
421 |
+
* Quick object check - this is primarily used to tell
|
422 |
+
* Objects from primitive values when we know the value
|
423 |
+
* is a JSON-compliant type.
|
424 |
+
*/
|
425 |
+
function isObject (obj) {
|
426 |
+
return obj !== null && typeof obj === 'object'
|
427 |
+
}
|
428 |
+
|
429 |
+
/**
|
430 |
+
* Get the raw type string of a value e.g. [object Object]
|
431 |
+
*/
|
432 |
+
var _toString = Object.prototype.toString;
|
433 |
+
|
434 |
+
function toRawType (value) {
|
435 |
+
return _toString.call(value).slice(8, -1)
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* Strict object type check. Only returns true
|
440 |
+
* for plain JavaScript objects.
|
441 |
+
*/
|
442 |
+
function isPlainObject (obj) {
|
443 |
+
return _toString.call(obj) === '[object Object]'
|
444 |
+
}
|
445 |
+
|
446 |
+
function isRegExp (v) {
|
447 |
+
return _toString.call(v) === '[object RegExp]'
|
448 |
+
}
|
449 |
+
|
450 |
+
/**
|
451 |
+
* Check if val is a valid array index.
|
452 |
+
*/
|
453 |
+
function isValidArrayIndex (val) {
|
454 |
+
var n = parseFloat(String(val));
|
455 |
+
return n >= 0 && Math.floor(n) === n && isFinite(val)
|
456 |
+
}
|
457 |
+
|
458 |
+
/**
|
459 |
+
* Convert a value to a string that is actually rendered.
|
460 |
+
*/
|
461 |
+
function toString (val) {
|
462 |
+
return val == null
|
463 |
+
? ''
|
464 |
+
: typeof val === 'object'
|
465 |
+
? JSON.stringify(val, null, 2)
|
466 |
+
: String(val)
|
467 |
+
}
|
468 |
+
|
469 |
+
/**
|
470 |
+
* Convert a input value to a number for persistence.
|
471 |
+
* If the conversion fails, return original string.
|
472 |
+
*/
|
473 |
+
function toNumber (val) {
|
474 |
+
var n = parseFloat(val);
|
475 |
+
return isNaN(n) ? val : n
|
476 |
+
}
|
477 |
+
|
478 |
+
/**
|
479 |
+
* Make a map and return a function for checking if a key
|
480 |
+
* is in that map.
|
481 |
+
*/
|
482 |
+
function makeMap (
|
483 |
+
str,
|
484 |
+
expectsLowerCase
|
485 |
+
) {
|
486 |
+
var map = Object.create(null);
|
487 |
+
var list = str.split(',');
|
488 |
+
for (var i = 0; i < list.length; i++) {
|
489 |
+
map[list[i]] = true;
|
490 |
+
}
|
491 |
+
return expectsLowerCase
|
492 |
+
? function (val) { return map[val.toLowerCase()]; }
|
493 |
+
: function (val) { return map[val]; }
|
494 |
+
}
|
495 |
+
|
496 |
+
/**
|
497 |
+
* Check if a tag is a built-in tag.
|
498 |
+
*/
|
499 |
+
var isBuiltInTag = makeMap('slot,component', true);
|
500 |
+
|
501 |
+
/**
|
502 |
+
* Check if a attribute is a reserved attribute.
|
503 |
+
*/
|
504 |
+
var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
|
505 |
+
|
506 |
+
/**
|
507 |
+
* Remove an item from an array
|
508 |
+
*/
|
509 |
+
function remove (arr, item) {
|
510 |
+
if (arr.length) {
|
511 |
+
var index = arr.indexOf(item);
|
512 |
+
if (index > -1) {
|
513 |
+
return arr.splice(index, 1)
|
514 |
+
}
|
515 |
+
}
|
516 |
+
}
|
517 |
+
|
518 |
+
/**
|
519 |
+
* Check whether the object has the property.
|
520 |
+
*/
|
521 |
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
522 |
+
function hasOwn (obj, key) {
|
523 |
+
return hasOwnProperty.call(obj, key)
|
524 |
+
}
|
525 |
+
|
526 |
+
/**
|
527 |
+
* Create a cached version of a pure function.
|
528 |
+
*/
|
529 |
+
function cached (fn) {
|
530 |
+
var cache = Object.create(null);
|
531 |
+
return (function cachedFn (str) {
|
532 |
+
var hit = cache[str];
|
533 |
+
return hit || (cache[str] = fn(str))
|
534 |
+
})
|
535 |
+
}
|
536 |
+
|
537 |
+
/**
|
538 |
+
* Camelize a hyphen-delimited string.
|
539 |
+
*/
|
540 |
+
var camelizeRE = /-(\w)/g;
|
541 |
+
var camelize = cached(function (str) {
|
542 |
+
return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
|
543 |
+
});
|
544 |
+
|
545 |
+
/**
|
546 |
+
* Capitalize a string.
|
547 |
+
*/
|
548 |
+
var capitalize = cached(function (str) {
|
549 |
+
return str.charAt(0).toUpperCase() + str.slice(1)
|
550 |
+
});
|
551 |
+
|
552 |
+
/**
|
553 |
+
* Hyphenate a camelCase string.
|
554 |
+
*/
|
555 |
+
var hyphenateRE = /\B([A-Z])/g;
|
556 |
+
var hyphenate = cached(function (str) {
|
557 |
+
return str.replace(hyphenateRE, '-$1').toLowerCase()
|
558 |
+
});
|
559 |
+
|
560 |
+
/**
|
561 |
+
* Simple bind polyfill for environments that do not support it... e.g.
|
562 |
+
* PhantomJS 1.x. Technically we don't need this anymore since native bind is
|
563 |
+
* now more performant in most browsers, but removing it would be breaking for
|
564 |
+
* code that was able to run in PhantomJS 1.x, so this must be kept for
|
565 |
+
* backwards compatibility.
|
566 |
+
*/
|
567 |
+
|
568 |
+
/* istanbul ignore next */
|
569 |
+
function polyfillBind (fn, ctx) {
|
570 |
+
function boundFn (a) {
|
571 |
+
var l = arguments.length;
|
572 |
+
return l
|
573 |
+
? l > 1
|
574 |
+
? fn.apply(ctx, arguments)
|
575 |
+
: fn.call(ctx, a)
|
576 |
+
: fn.call(ctx)
|
577 |
+
}
|
578 |
+
|
579 |
+
boundFn._length = fn.length;
|
580 |
+
return boundFn
|
581 |
+
}
|
582 |
+
|
583 |
+
function nativeBind (fn, ctx) {
|
584 |
+
return fn.bind(ctx)
|
585 |
+
}
|
586 |
+
|
587 |
+
var bind = Function.prototype.bind
|
588 |
+
? nativeBind
|
589 |
+
: polyfillBind;
|
590 |
+
|
591 |
+
/**
|
592 |
+
* Convert an Array-like object to a real Array.
|
593 |
+
*/
|
594 |
+
function toArray (list, start) {
|
595 |
+
start = start || 0;
|
596 |
+
var i = list.length - start;
|
597 |
+
var ret = new Array(i);
|
598 |
+
while (i--) {
|
599 |
+
ret[i] = list[i + start];
|
600 |
+
}
|
601 |
+
return ret
|
602 |
+
}
|
603 |
+
|
604 |
+
/**
|
605 |
+
* Mix properties into target object.
|
606 |
+
*/
|
607 |
+
function extend (to, _from) {
|
608 |
+
for (var key in _from) {
|
609 |
+
to[key] = _from[key];
|
610 |
+
}
|
611 |
+
return to
|
612 |
+
}
|
613 |
+
|
614 |
+
/**
|
615 |
+
* Merge an Array of Objects into a single Object.
|
616 |
+
*/
|
617 |
+
function toObject (arr) {
|
618 |
+
var res = {};
|
619 |
+
for (var i = 0; i < arr.length; i++) {
|
620 |
+
if (arr[i]) {
|
621 |
+
extend(res, arr[i]);
|
622 |
+
}
|
623 |
+
}
|
624 |
+
return res
|
625 |
+
}
|
626 |
+
|
627 |
+
/**
|
628 |
+
* Perform no operation.
|
629 |
+
* Stubbing args to make Flow happy without leaving useless transpiled code
|
630 |
+
* with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
|
631 |
+
*/
|
632 |
+
function noop (a, b, c) {}
|
633 |
+
|
634 |
+
/**
|
635 |
+
* Always return false.
|
636 |
+
*/
|
637 |
+
var no = function (a, b, c) { return false; };
|
638 |
+
|
639 |
+
/**
|
640 |
+
* Return same value
|
641 |
+
*/
|
642 |
+
var identity = function (_) { return _; };
|
643 |
+
|
644 |
+
/**
|
645 |
+
* Generate a static keys string from compiler modules.
|
646 |
+
*/
|
647 |
+
function genStaticKeys (modules) {
|
648 |
+
return modules.reduce(function (keys, m) {
|
649 |
+
return keys.concat(m.staticKeys || [])
|
650 |
+
}, []).join(',')
|
651 |
+
}
|
652 |
+
|
653 |
+
/**
|
654 |
+
* Check if two values are loosely equal - that is,
|
655 |
+
* if they are plain objects, do they have the same shape?
|
656 |
+
*/
|
657 |
+
function looseEqual (a, b) {
|
658 |
+
if (a === b) { return true }
|
659 |
+
var isObjectA = isObject(a);
|
660 |
+
var isObjectB = isObject(b);
|
661 |
+
if (isObjectA && isObjectB) {
|
662 |
+
try {
|
663 |
+
var isArrayA = Array.isArray(a);
|
664 |
+
var isArrayB = Array.isArray(b);
|
665 |
+
if (isArrayA && isArrayB) {
|
666 |
+
return a.length === b.length && a.every(function (e, i) {
|
667 |
+
return looseEqual(e, b[i])
|
668 |
+
})
|
669 |
+
} else if (!isArrayA && !isArrayB) {
|
670 |
+
var keysA = Object.keys(a);
|
671 |
+
var keysB = Object.keys(b);
|
672 |
+
return keysA.length === keysB.length && keysA.every(function (key) {
|
673 |
+
return looseEqual(a[key], b[key])
|
674 |
+
})
|
675 |
+
} else {
|
676 |
+
/* istanbul ignore next */
|
677 |
+
return false
|
678 |
+
}
|
679 |
+
} catch (e) {
|
680 |
+
/* istanbul ignore next */
|
681 |
+
return false
|
682 |
+
}
|
683 |
+
} else if (!isObjectA && !isObjectB) {
|
684 |
+
return String(a) === String(b)
|
685 |
+
} else {
|
686 |
+
return false
|
687 |
+
}
|
688 |
+
}
|
689 |
+
|
690 |
+
function looseIndexOf (arr, val) {
|
691 |
+
for (var i = 0; i < arr.length; i++) {
|
692 |
+
if (looseEqual(arr[i], val)) { return i }
|
693 |
+
}
|
694 |
+
return -1
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* Ensure a function is called only once.
|
699 |
+
*/
|
700 |
+
function once (fn) {
|
701 |
+
var called = false;
|
702 |
+
return function () {
|
703 |
+
if (!called) {
|
704 |
+
called = true;
|
705 |
+
fn.apply(this, arguments);
|
706 |
+
}
|
707 |
+
}
|
708 |
+
}
|
709 |
+
|
710 |
+
var SSR_ATTR = 'data-server-rendered';
|
711 |
+
|
712 |
+
var ASSET_TYPES = [
|
713 |
+
'component',
|
714 |
+
'directive',
|
715 |
+
'filter'
|
716 |
+
];
|
717 |
+
|
718 |
+
var LIFECYCLE_HOOKS = [
|
719 |
+
'beforeCreate',
|
720 |
+
'created',
|
721 |
+
'beforeMount',
|
722 |
+
'mounted',
|
723 |
+
'beforeUpdate',
|
724 |
+
'updated',
|
725 |
+
'beforeDestroy',
|
726 |
+
'destroyed',
|
727 |
+
'activated',
|
728 |
+
'deactivated',
|
729 |
+
'errorCaptured'
|
730 |
+
];
|
731 |
+
|
732 |
+
/* */
|
733 |
+
|
734 |
+
var config = ({
|
735 |
+
/**
|
736 |
+
* Option merge strategies (used in core/util/options)
|
737 |
+
*/
|
738 |
+
// $flow-disable-line
|
739 |
+
optionMergeStrategies: Object.create(null),
|
740 |
+
|
741 |
+
/**
|
742 |
+
* Whether to suppress warnings.
|
743 |
+
*/
|
744 |
+
silent: false,
|
745 |
+
|
746 |
+
/**
|
747 |
+
* Show production mode tip message on boot?
|
748 |
+
*/
|
749 |
+
productionTip: process.env.NODE_ENV !== 'production',
|
750 |
+
|
751 |
+
/**
|
752 |
+
* Whether to enable devtools
|
753 |
+
*/
|
754 |
+
devtools: process.env.NODE_ENV !== 'production',
|
755 |
+
|
756 |
+
/**
|
757 |
+
* Whether to record perf
|
758 |
+
*/
|
759 |
+
performance: false,
|
760 |
+
|
761 |
+
/**
|
762 |
+
* Error handler for watcher errors
|
763 |
+
*/
|
764 |
+
errorHandler: null,
|
765 |
+
|
766 |
+
/**
|
767 |
+
* Warn handler for watcher warns
|
768 |
+
*/
|
769 |
+
warnHandler: null,
|
770 |
+
|
771 |
+
/**
|
772 |
+
* Ignore certain custom elements
|
773 |
+
*/
|
774 |
+
ignoredElements: [],
|
775 |
+
|
776 |
+
/**
|
777 |
+
* Custom user key aliases for v-on
|
778 |
+
*/
|
779 |
+
// $flow-disable-line
|
780 |
+
keyCodes: Object.create(null),
|
781 |
+
|
782 |
+
/**
|
783 |
+
* Check if a tag is reserved so that it cannot be registered as a
|
784 |
+
* component. This is platform-dependent and may be overwritten.
|
785 |
+
*/
|
786 |
+
isReservedTag: no,
|
787 |
+
|
788 |
+
/**
|
789 |
+
* Check if an attribute is reserved so that it cannot be used as a component
|
790 |
+
* prop. This is platform-dependent and may be overwritten.
|
791 |
+
*/
|
792 |
+
isReservedAttr: no,
|
793 |
+
|
794 |
+
/**
|
795 |
+
* Check if a tag is an unknown element.
|
796 |
+
* Platform-dependent.
|
797 |
+
*/
|
798 |
+
isUnknownElement: no,
|
799 |
+
|
800 |
+
/**
|
801 |
+
* Get the namespace of an element
|
802 |
+
*/
|
803 |
+
getTagNamespace: noop,
|
804 |
+
|
805 |
+
/**
|
806 |
+
* Parse the real tag name for the specific platform.
|
807 |
+
*/
|
808 |
+
parsePlatformTagName: identity,
|
809 |
+
|
810 |
+
/**
|
811 |
+
* Check if an attribute must be bound using property, e.g. value
|
812 |
+
* Platform-dependent.
|
813 |
+
*/
|
814 |
+
mustUseProp: no,
|
815 |
+
|
816 |
+
/**
|
817 |
+
* Exposed for legacy reasons
|
818 |
+
*/
|
819 |
+
_lifecycleHooks: LIFECYCLE_HOOKS
|
820 |
+
})
|
821 |
+
|
822 |
+
/* */
|
823 |
+
|
824 |
+
/**
|
825 |
+
* Check if a string starts with $ or _
|
826 |
+
*/
|
827 |
+
function isReserved (str) {
|
828 |
+
var c = (str + '').charCodeAt(0);
|
829 |
+
return c === 0x24 || c === 0x5F
|
830 |
+
}
|
831 |
+
|
832 |
+
/**
|
833 |
+
* Define a property.
|
834 |
+
*/
|
835 |
+
function def (obj, key, val, enumerable) {
|
836 |
+
Object.defineProperty(obj, key, {
|
837 |
+
value: val,
|
838 |
+
enumerable: !!enumerable,
|
839 |
+
writable: true,
|
840 |
+
configurable: true
|
841 |
+
});
|
842 |
+
}
|
843 |
+
|
844 |
+
/**
|
845 |
+
* Parse simple path.
|
846 |
+
*/
|
847 |
+
var bailRE = /[^\w.$]/;
|
848 |
+
function parsePath (path) {
|
849 |
+
if (bailRE.test(path)) {
|
850 |
+
return
|
851 |
+
}
|
852 |
+
var segments = path.split('.');
|
853 |
+
return function (obj) {
|
854 |
+
for (var i = 0; i < segments.length; i++) {
|
855 |
+
if (!obj) { return }
|
856 |
+
obj = obj[segments[i]];
|
857 |
+
}
|
858 |
+
return obj
|
859 |
+
}
|
860 |
+
}
|
861 |
+
|
862 |
+
/* */
|
863 |
+
|
864 |
+
// can we use __proto__?
|
865 |
+
var hasProto = '__proto__' in {};
|
866 |
+
|
867 |
+
// Browser environment sniffing
|
868 |
+
var inBrowser = typeof window !== 'undefined';
|
869 |
+
var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
|
870 |
+
var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
|
871 |
+
var UA = inBrowser && window.navigator.userAgent.toLowerCase();
|
872 |
+
var isIE = UA && /msie|trident/.test(UA);
|
873 |
+
var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
|
874 |
+
var isEdge = UA && UA.indexOf('edge/') > 0;
|
875 |
+
var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
|
876 |
+
var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
|
877 |
+
var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
|
878 |
+
|
879 |
+
// Firefox has a "watch" function on Object.prototype...
|
880 |
+
var nativeWatch = ({}).watch;
|
881 |
+
|
882 |
+
var supportsPassive = false;
|
883 |
+
if (inBrowser) {
|
884 |
+
try {
|
885 |
+
var opts = {};
|
886 |
+
Object.defineProperty(opts, 'passive', ({
|
887 |
+
get: function get () {
|
888 |
+
/* istanbul ignore next */
|
889 |
+
supportsPassive = true;
|
890 |
+
}
|
891 |
+
})); // https://github.com/facebook/flow/issues/285
|
892 |
+
window.addEventListener('test-passive', null, opts);
|
893 |
+
} catch (e) {}
|
894 |
+
}
|
895 |
+
|
896 |
+
// this needs to be lazy-evaled because vue may be required before
|
897 |
+
// vue-server-renderer can set VUE_ENV
|
898 |
+
var _isServer;
|
899 |
+
var isServerRendering = function () {
|
900 |
+
if (_isServer === undefined) {
|
901 |
+
/* istanbul ignore if */
|
902 |
+
if (!inBrowser && !inWeex && typeof global !== 'undefined') {
|
903 |
+
// detect presence of vue-server-renderer and avoid
|
904 |
+
// Webpack shimming the process
|
905 |
+
_isServer = global['process'].env.VUE_ENV === 'server';
|
906 |
+
} else {
|
907 |
+
_isServer = false;
|
908 |
+
}
|
909 |
+
}
|
910 |
+
return _isServer
|
911 |
+
};
|
912 |
+
|
913 |
+
// detect devtools
|
914 |
+
var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
915 |
+
|
916 |
+
/* istanbul ignore next */
|
917 |
+
function isNative (Ctor) {
|
918 |
+
return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
|
919 |
+
}
|
920 |
+
|
921 |
+
var hasSymbol =
|
922 |
+
typeof Symbol !== 'undefined' && isNative(Symbol) &&
|
923 |
+
typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
|
924 |
+
|
925 |
+
var _Set;
|
926 |
+
/* istanbul ignore if */ // $flow-disable-line
|
927 |
+
if (typeof Set !== 'undefined' && isNative(Set)) {
|
928 |
+
// use native Set when available.
|
929 |
+
_Set = Set;
|
930 |
+
} else {
|
931 |
+
// a non-standard Set polyfill that only works with primitive keys.
|
932 |
+
_Set = (function () {
|
933 |
+
function Set () {
|
934 |
+
this.set = Object.create(null);
|
935 |
+
}
|
936 |
+
Set.prototype.has = function has (key) {
|
937 |
+
return this.set[key] === true
|
938 |
+
};
|
939 |
+
Set.prototype.add = function add (key) {
|
940 |
+
this.set[key] = true;
|
941 |
+
};
|
942 |
+
Set.prototype.clear = function clear () {
|
943 |
+
this.set = Object.create(null);
|
944 |
+
};
|
945 |
+
|
946 |
+
return Set;
|
947 |
+
}());
|
948 |
+
}
|
949 |
+
|
950 |
+
/* */
|
951 |
+
|
952 |
+
var warn = noop;
|
953 |
+
var tip = noop;
|
954 |
+
var generateComponentTrace = (noop); // work around flow check
|
955 |
+
var formatComponentName = (noop);
|
956 |
+
|
957 |
+
if (process.env.NODE_ENV !== 'production') {
|
958 |
+
var hasConsole = typeof console !== 'undefined';
|
959 |
+
var classifyRE = /(?:^|[-_])(\w)/g;
|
960 |
+
var classify = function (str) { return str
|
961 |
+
.replace(classifyRE, function (c) { return c.toUpperCase(); })
|
962 |
+
.replace(/[-_]/g, ''); };
|
963 |
+
|
964 |
+
warn = function (msg, vm) {
|
965 |
+
var trace = vm ? generateComponentTrace(vm) : '';
|
966 |
+
|
967 |
+
if (config.warnHandler) {
|
968 |
+
config.warnHandler.call(null, msg, vm, trace);
|
969 |
+
} else if (hasConsole && (!config.silent)) {
|
970 |
+
console.error(("[Vue warn]: " + msg + trace));
|
971 |
+
}
|
972 |
+
};
|
973 |
+
|
974 |
+
tip = function (msg, vm) {
|
975 |
+
if (hasConsole && (!config.silent)) {
|
976 |
+
console.warn("[Vue tip]: " + msg + (
|
977 |
+
vm ? generateComponentTrace(vm) : ''
|
978 |
+
));
|
979 |
+
}
|
980 |
+
};
|
981 |
+
|
982 |
+
formatComponentName = function (vm, includeFile) {
|
983 |
+
if (vm.$root === vm) {
|
984 |
+
return '<Root>'
|
985 |
+
}
|
986 |
+
var options = typeof vm === 'function' && vm.cid != null
|
987 |
+
? vm.options
|
988 |
+
: vm._isVue
|
989 |
+
? vm.$options || vm.constructor.options
|
990 |
+
: vm || {};
|
991 |
+
var name = options.name || options._componentTag;
|
992 |
+
var file = options.__file;
|
993 |
+
if (!name && file) {
|
994 |
+
var match = file.match(/([^/\\]+)\.vue$/);
|
995 |
+
name = match && match[1];
|
996 |
+
}
|
997 |
+
|
998 |
+
return (
|
999 |
+
(name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
|
1000 |
+
(file && includeFile !== false ? (" at " + file) : '')
|
1001 |
+
)
|
1002 |
+
};
|
1003 |
+
|
1004 |
+
var repeat = function (str, n) {
|
1005 |
+
var res = '';
|
1006 |
+
while (n) {
|
1007 |
+
if (n % 2 === 1) { res += str; }
|
1008 |
+
if (n > 1) { str += str; }
|
1009 |
+
n >>= 1;
|
1010 |
+
}
|
1011 |
+
return res
|
1012 |
+
};
|
1013 |
+
|
1014 |
+
generateComponentTrace = function (vm) {
|
1015 |
+
if (vm._isVue && vm.$parent) {
|
1016 |
+
var tree = [];
|
1017 |
+
var currentRecursiveSequence = 0;
|
1018 |
+
while (vm) {
|
1019 |
+
if (tree.length > 0) {
|
1020 |
+
var last = tree[tree.length - 1];
|
1021 |
+
if (last.constructor === vm.constructor) {
|
1022 |
+
currentRecursiveSequence++;
|
1023 |
+
vm = vm.$parent;
|
1024 |
+
continue
|
1025 |
+
} else if (currentRecursiveSequence > 0) {
|
1026 |
+
tree[tree.length - 1] = [last, currentRecursiveSequence];
|
1027 |
+
currentRecursiveSequence = 0;
|
1028 |
+
}
|
1029 |
+
}
|
1030 |
+
tree.push(vm);
|
1031 |
+
vm = vm.$parent;
|
1032 |
+
}
|
1033 |
+
return '\n\nfound in\n\n' + tree
|
1034 |
+
.map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
|
1035 |
+
? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
|
1036 |
+
: formatComponentName(vm))); })
|
1037 |
+
.join('\n')
|
1038 |
+
} else {
|
1039 |
+
return ("\n\n(found in " + (formatComponentName(vm)) + ")")
|
1040 |
+
}
|
1041 |
+
};
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
/* */
|
1045 |
+
|
1046 |
+
|
1047 |
+
var uid = 0;
|
1048 |
+
|
1049 |
+
/**
|
1050 |
+
* A dep is an observable that can have multiple
|
1051 |
+
* directives subscribing to it.
|
1052 |
+
*/
|
1053 |
+
var Dep = function Dep () {
|
1054 |
+
this.id = uid++;
|
1055 |
+
this.subs = [];
|
1056 |
+
};
|
1057 |
+
|
1058 |
+
Dep.prototype.addSub = function addSub (sub) {
|
1059 |
+
this.subs.push(sub);
|
1060 |
+
};
|
1061 |
+
|
1062 |
+
Dep.prototype.removeSub = function removeSub (sub) {
|
1063 |
+
remove(this.subs, sub);
|
1064 |
+
};
|
1065 |
+
|
1066 |
+
Dep.prototype.depend = function depend () {
|
1067 |
+
if (Dep.target) {
|
1068 |
+
Dep.target.addDep(this);
|
1069 |
+
}
|
1070 |
+
};
|
1071 |
+
|
1072 |
+
Dep.prototype.notify = function notify () {
|
1073 |
+
// stabilize the subscriber list first
|
1074 |
+
var subs = this.subs.slice();
|
1075 |
+
for (var i = 0, l = subs.length; i < l; i++) {
|
1076 |
+
subs[i].update();
|
1077 |
+
}
|
1078 |
+
};
|
1079 |
+
|
1080 |
+
// the current target watcher being evaluated.
|
1081 |
+
// this is globally unique because there could be only one
|
1082 |
+
// watcher being evaluated at any time.
|
1083 |
+
Dep.target = null;
|
1084 |
+
var targetStack = [];
|
1085 |
+
|
1086 |
+
function pushTarget (_target) {
|
1087 |
+
if (Dep.target) { targetStack.push(Dep.target); }
|
1088 |
+
Dep.target = _target;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
function popTarget () {
|
1092 |
+
Dep.target = targetStack.pop();
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
/* */
|
1096 |
+
|
1097 |
+
var VNode = function VNode (
|
1098 |
+
tag,
|
1099 |
+
data,
|
1100 |
+
children,
|
1101 |
+
text,
|
1102 |
+
elm,
|
1103 |
+
context,
|
1104 |
+
componentOptions,
|
1105 |
+
asyncFactory
|
1106 |
+
) {
|
1107 |
+
this.tag = tag;
|
1108 |
+
this.data = data;
|
1109 |
+
this.children = children;
|
1110 |
+
this.text = text;
|
1111 |
+
this.elm = elm;
|
1112 |
+
this.ns = undefined;
|
1113 |
+
this.context = context;
|
1114 |
+
this.fnContext = undefined;
|
1115 |
+
this.fnOptions = undefined;
|
1116 |
+
this.fnScopeId = undefined;
|
1117 |
+
this.key = data && data.key;
|
1118 |
+
this.componentOptions = componentOptions;
|
1119 |
+
this.componentInstance = undefined;
|
1120 |
+
this.parent = undefined;
|
1121 |
+
this.raw = false;
|
1122 |
+
this.isStatic = false;
|
1123 |
+
this.isRootInsert = true;
|
1124 |
+
this.isComment = false;
|
1125 |
+
this.isCloned = false;
|
1126 |
+
this.isOnce = false;
|
1127 |
+
this.asyncFactory = asyncFactory;
|
1128 |
+
this.asyncMeta = undefined;
|
1129 |
+
this.isAsyncPlaceholder = false;
|
1130 |
+
};
|
1131 |
+
|
1132 |
+
var prototypeAccessors = { child: { configurable: true } };
|
1133 |
+
|
1134 |
+
// DEPRECATED: alias for componentInstance for backwards compat.
|
1135 |
+
/* istanbul ignore next */
|
1136 |
+
prototypeAccessors.child.get = function () {
|
1137 |
+
return this.componentInstance
|
1138 |
+
};
|
1139 |
+
|
1140 |
+
Object.defineProperties( VNode.prototype, prototypeAccessors );
|
1141 |
+
|
1142 |
+
var createEmptyVNode = function (text) {
|
1143 |
+
if ( text === void 0 ) text = '';
|
1144 |
+
|
1145 |
+
var node = new VNode();
|
1146 |
+
node.text = text;
|
1147 |
+
node.isComment = true;
|
1148 |
+
return node
|
1149 |
+
};
|
1150 |
+
|
1151 |
+
function createTextVNode (val) {
|
1152 |
+
return new VNode(undefined, undefined, undefined, String(val))
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
// optimized shallow clone
|
1156 |
+
// used for static nodes and slot nodes because they may be reused across
|
1157 |
+
// multiple renders, cloning them avoids errors when DOM manipulations rely
|
1158 |
+
// on their elm reference.
|
1159 |
+
function cloneVNode (vnode) {
|
1160 |
+
var cloned = new VNode(
|
1161 |
+
vnode.tag,
|
1162 |
+
vnode.data,
|
1163 |
+
vnode.children,
|
1164 |
+
vnode.text,
|
1165 |
+
vnode.elm,
|
1166 |
+
vnode.context,
|
1167 |
+
vnode.componentOptions,
|
1168 |
+
vnode.asyncFactory
|
1169 |
+
);
|
1170 |
+
cloned.ns = vnode.ns;
|
1171 |
+
cloned.isStatic = vnode.isStatic;
|
1172 |
+
cloned.key = vnode.key;
|
1173 |
+
cloned.isComment = vnode.isComment;
|
1174 |
+
cloned.fnContext = vnode.fnContext;
|
1175 |
+
cloned.fnOptions = vnode.fnOptions;
|
1176 |
+
cloned.fnScopeId = vnode.fnScopeId;
|
1177 |
+
cloned.isCloned = true;
|
1178 |
+
return cloned
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
/*
|
1182 |
+
* not type checking this file because flow doesn't play well with
|
1183 |
+
* dynamically accessing methods on Array prototype
|
1184 |
+
*/
|
1185 |
+
|
1186 |
+
var arrayProto = Array.prototype;
|
1187 |
+
var arrayMethods = Object.create(arrayProto);
|
1188 |
+
|
1189 |
+
var methodsToPatch = [
|
1190 |
+
'push',
|
1191 |
+
'pop',
|
1192 |
+
'shift',
|
1193 |
+
'unshift',
|
1194 |
+
'splice',
|
1195 |
+
'sort',
|
1196 |
+
'reverse'
|
1197 |
+
];
|
1198 |
+
|
1199 |
+
/**
|
1200 |
+
* Intercept mutating methods and emit events
|
1201 |
+
*/
|
1202 |
+
methodsToPatch.forEach(function (method) {
|
1203 |
+
// cache original method
|
1204 |
+
var original = arrayProto[method];
|
1205 |
+
def(arrayMethods, method, function mutator () {
|
1206 |
+
var args = [], len = arguments.length;
|
1207 |
+
while ( len-- ) args[ len ] = arguments[ len ];
|
1208 |
+
|
1209 |
+
var result = original.apply(this, args);
|
1210 |
+
var ob = this.__ob__;
|
1211 |
+
var inserted;
|
1212 |
+
switch (method) {
|
1213 |
+
case 'push':
|
1214 |
+
case 'unshift':
|
1215 |
+
inserted = args;
|
1216 |
+
break
|
1217 |
+
case 'splice':
|
1218 |
+
inserted = args.slice(2);
|
1219 |
+
break
|
1220 |
+
}
|
1221 |
+
if (inserted) { ob.observeArray(inserted); }
|
1222 |
+
// notify change
|
1223 |
+
ob.dep.notify();
|
1224 |
+
return result
|
1225 |
+
});
|
1226 |
+
});
|
1227 |
+
|
1228 |
+
/* */
|
1229 |
+
|
1230 |
+
var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
|
1231 |
+
|
1232 |
+
/**
|
1233 |
+
* In some cases we may want to disable observation inside a component's
|
1234 |
+
* update computation.
|
1235 |
+
*/
|
1236 |
+
var shouldObserve = true;
|
1237 |
+
|
1238 |
+
function toggleObserving (value) {
|
1239 |
+
shouldObserve = value;
|
1240 |
+
}
|
1241 |
+
|
1242 |
+
/**
|
1243 |
+
* Observer class that is attached to each observed
|
1244 |
+
* object. Once attached, the observer converts the target
|
1245 |
+
* object's property keys into getter/setters that
|
1246 |
+
* collect dependencies and dispatch updates.
|
1247 |
+
*/
|
1248 |
+
var Observer = function Observer (value) {
|
1249 |
+
this.value = value;
|
1250 |
+
this.dep = new Dep();
|
1251 |
+
this.vmCount = 0;
|
1252 |
+
def(value, '__ob__', this);
|
1253 |
+
if (Array.isArray(value)) {
|
1254 |
+
var augment = hasProto
|
1255 |
+
? protoAugment
|
1256 |
+
: copyAugment;
|
1257 |
+
augment(value, arrayMethods, arrayKeys);
|
1258 |
+
this.observeArray(value);
|
1259 |
+
} else {
|
1260 |
+
this.walk(value);
|
1261 |
+
}
|
1262 |
+
};
|
1263 |
+
|
1264 |
+
/**
|
1265 |
+
* Walk through each property and convert them into
|
1266 |
+
* getter/setters. This method should only be called when
|
1267 |
+
* value type is Object.
|
1268 |
+
*/
|
1269 |
+
Observer.prototype.walk = function walk (obj) {
|
1270 |
+
var keys = Object.keys(obj);
|
1271 |
+
for (var i = 0; i < keys.length; i++) {
|
1272 |
+
defineReactive(obj, keys[i]);
|
1273 |
+
}
|
1274 |
+
};
|
1275 |
+
|
1276 |
+
/**
|
1277 |
+
* Observe a list of Array items.
|
1278 |
+
*/
|
1279 |
+
Observer.prototype.observeArray = function observeArray (items) {
|
1280 |
+
for (var i = 0, l = items.length; i < l; i++) {
|
1281 |
+
observe(items[i]);
|
1282 |
+
}
|
1283 |
+
};
|
1284 |
+
|
1285 |
+
// helpers
|
1286 |
+
|
1287 |
+
/**
|
1288 |
+
* Augment an target Object or Array by intercepting
|
1289 |
+
* the prototype chain using __proto__
|
1290 |
+
*/
|
1291 |
+
function protoAugment (target, src, keys) {
|
1292 |
+
/* eslint-disable no-proto */
|
1293 |
+
target.__proto__ = src;
|
1294 |
+
/* eslint-enable no-proto */
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
/**
|
1298 |
+
* Augment an target Object or Array by defining
|
1299 |
+
* hidden properties.
|
1300 |
+
*/
|
1301 |
+
/* istanbul ignore next */
|
1302 |
+
function copyAugment (target, src, keys) {
|
1303 |
+
for (var i = 0, l = keys.length; i < l; i++) {
|
1304 |
+
var key = keys[i];
|
1305 |
+
def(target, key, src[key]);
|
1306 |
+
}
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
/**
|
1310 |
+
* Attempt to create an observer instance for a value,
|
1311 |
+
* returns the new observer if successfully observed,
|
1312 |
+
* or the existing observer if the value already has one.
|
1313 |
+
*/
|
1314 |
+
function observe (value, asRootData) {
|
1315 |
+
if (!isObject(value) || value instanceof VNode) {
|
1316 |
+
return
|
1317 |
+
}
|
1318 |
+
var ob;
|
1319 |
+
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
|
1320 |
+
ob = value.__ob__;
|
1321 |
+
} else if (
|
1322 |
+
shouldObserve &&
|
1323 |
+
!isServerRendering() &&
|
1324 |
+
(Array.isArray(value) || isPlainObject(value)) &&
|
1325 |
+
Object.isExtensible(value) &&
|
1326 |
+
!value._isVue
|
1327 |
+
) {
|
1328 |
+
ob = new Observer(value);
|
1329 |
+
}
|
1330 |
+
if (asRootData && ob) {
|
1331 |
+
ob.vmCount++;
|
1332 |
+
}
|
1333 |
+
return ob
|
1334 |
+
}
|
1335 |
+
|
1336 |
+
/**
|
1337 |
+
* Define a reactive property on an Object.
|
1338 |
+
*/
|
1339 |
+
function defineReactive (
|
1340 |
+
obj,
|
1341 |
+
key,
|
1342 |
+
val,
|
1343 |
+
customSetter,
|
1344 |
+
shallow
|
1345 |
+
) {
|
1346 |
+
var dep = new Dep();
|
1347 |
+
|
1348 |
+
var property = Object.getOwnPropertyDescriptor(obj, key);
|
1349 |
+
if (property && property.configurable === false) {
|
1350 |
+
return
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
// cater for pre-defined getter/setters
|
1354 |
+
var getter = property && property.get;
|
1355 |
+
if (!getter && arguments.length === 2) {
|
1356 |
+
val = obj[key];
|
1357 |
+
}
|
1358 |
+
var setter = property && property.set;
|
1359 |
+
|
1360 |
+
var childOb = !shallow && observe(val);
|
1361 |
+
Object.defineProperty(obj, key, {
|
1362 |
+
enumerable: true,
|
1363 |
+
configurable: true,
|
1364 |
+
get: function reactiveGetter () {
|
1365 |
+
var value = getter ? getter.call(obj) : val;
|
1366 |
+
if (Dep.target) {
|
1367 |
+
dep.depend();
|
1368 |
+
if (childOb) {
|
1369 |
+
childOb.dep.depend();
|
1370 |
+
if (Array.isArray(value)) {
|
1371 |
+
dependArray(value);
|
1372 |
+
}
|
1373 |
+
}
|
1374 |
+
}
|
1375 |
+
return value
|
1376 |
+
},
|
1377 |
+
set: function reactiveSetter (newVal) {
|
1378 |
+
var value = getter ? getter.call(obj) : val;
|
1379 |
+
/* eslint-disable no-self-compare */
|
1380 |
+
if (newVal === value || (newVal !== newVal && value !== value)) {
|
1381 |
+
return
|
1382 |
+
}
|
1383 |
+
/* eslint-enable no-self-compare */
|
1384 |
+
if (process.env.NODE_ENV !== 'production' && customSetter) {
|
1385 |
+
customSetter();
|
1386 |
+
}
|
1387 |
+
if (setter) {
|
1388 |
+
setter.call(obj, newVal);
|
1389 |
+
} else {
|
1390 |
+
val = newVal;
|
1391 |
+
}
|
1392 |
+
childOb = !shallow && observe(newVal);
|
1393 |
+
dep.notify();
|
1394 |
+
}
|
1395 |
+
});
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
/**
|
1399 |
+
* Set a property on an object. Adds the new property and
|
1400 |
+
* triggers change notification if the property doesn't
|
1401 |
+
* already exist.
|
1402 |
+
*/
|
1403 |
+
function set (target, key, val) {
|
1404 |
+
if (process.env.NODE_ENV !== 'production' &&
|
1405 |
+
(isUndef(target) || isPrimitive(target))
|
1406 |
+
) {
|
1407 |
+
warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
|
1408 |
+
}
|
1409 |
+
if (Array.isArray(target) && isValidArrayIndex(key)) {
|
1410 |
+
target.length = Math.max(target.length, key);
|
1411 |
+
target.splice(key, 1, val);
|
1412 |
+
return val
|
1413 |
+
}
|
1414 |
+
if (key in target && !(key in Object.prototype)) {
|
1415 |
+
target[key] = val;
|
1416 |
+
return val
|
1417 |
+
}
|
1418 |
+
var ob = (target).__ob__;
|
1419 |
+
if (target._isVue || (ob && ob.vmCount)) {
|
1420 |
+
process.env.NODE_ENV !== 'production' && warn(
|
1421 |
+
'Avoid adding reactive properties to a Vue instance or its root $data ' +
|
1422 |
+
'at runtime - declare it upfront in the data option.'
|
1423 |
+
);
|
1424 |
+
return val
|
1425 |
+
}
|
1426 |
+
if (!ob) {
|
1427 |
+
target[key] = val;
|
1428 |
+
return val
|
1429 |
+
}
|
1430 |
+
defineReactive(ob.value, key, val);
|
1431 |
+
ob.dep.notify();
|
1432 |
+
return val
|
1433 |
+
}
|
1434 |
+
|
1435 |
+
/**
|
1436 |
+
* Delete a property and trigger change if necessary.
|
1437 |
+
*/
|
1438 |
+
function del (target, key) {
|
1439 |
+
if (process.env.NODE_ENV !== 'production' &&
|
1440 |
+
(isUndef(target) || isPrimitive(target))
|
1441 |
+
) {
|
1442 |
+
warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
|
1443 |
+
}
|
1444 |
+
if (Array.isArray(target) && isValidArrayIndex(key)) {
|
1445 |
+
target.splice(key, 1);
|
1446 |
+
return
|
1447 |
+
}
|
1448 |
+
var ob = (target).__ob__;
|
1449 |
+
if (target._isVue || (ob && ob.vmCount)) {
|
1450 |
+
process.env.NODE_ENV !== 'production' && warn(
|
1451 |
+
'Avoid deleting properties on a Vue instance or its root $data ' +
|
1452 |
+
'- just set it to null.'
|
1453 |
+
);
|
1454 |
+
return
|
1455 |
+
}
|
1456 |
+
if (!hasOwn(target, key)) {
|
1457 |
+
return
|
1458 |
+
}
|
1459 |
+
delete target[key];
|
1460 |
+
if (!ob) {
|
1461 |
+
return
|
1462 |
+
}
|
1463 |
+
ob.dep.notify();
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
/**
|
1467 |
+
* Collect dependencies on array elements when the array is touched, since
|
1468 |
+
* we cannot intercept array element access like property getters.
|
1469 |
+
*/
|
1470 |
+
function dependArray (value) {
|
1471 |
+
for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
|
1472 |
+
e = value[i];
|
1473 |
+
e && e.__ob__ && e.__ob__.dep.depend();
|
1474 |
+
if (Array.isArray(e)) {
|
1475 |
+
dependArray(e);
|
1476 |
+
}
|
1477 |
+
}
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
/* */
|
1481 |
+
|
1482 |
+
/**
|
1483 |
+
* Option overwriting strategies are functions that handle
|
1484 |
+
* how to merge a parent option value and a child option
|
1485 |
+
* value into the final value.
|
1486 |
+
*/
|
1487 |
+
var strats = config.optionMergeStrategies;
|
1488 |
+
|
1489 |
+
/**
|
1490 |
+
* Options with restrictions
|
1491 |
+
*/
|
1492 |
+
if (process.env.NODE_ENV !== 'production') {
|
1493 |
+
strats.el = strats.propsData = function (parent, child, vm, key) {
|
1494 |
+
if (!vm) {
|
1495 |
+
warn(
|
1496 |
+
"option \"" + key + "\" can only be used during instance " +
|
1497 |
+
'creation with the `new` keyword.'
|
1498 |
+
);
|
1499 |
+
}
|
1500 |
+
return defaultStrat(parent, child)
|
1501 |
+
};
|
1502 |
+
}
|
1503 |
+
|
1504 |
+
/**
|
1505 |
+
* Helper that recursively merges two data objects together.
|
1506 |
+
*/
|
1507 |
+
function mergeData (to, from) {
|
1508 |
+
if (!from) { return to }
|
1509 |
+
var key, toVal, fromVal;
|
1510 |
+
var keys = Object.keys(from);
|
1511 |
+
for (var i = 0; i < keys.length; i++) {
|
1512 |
+
key = keys[i];
|
1513 |
+
toVal = to[key];
|
1514 |
+
fromVal = from[key];
|
1515 |
+
if (!hasOwn(to, key)) {
|
1516 |
+
set(to, key, fromVal);
|
1517 |
+
} else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
|
1518 |
+
mergeData(toVal, fromVal);
|
1519 |
+
}
|
1520 |
+
}
|
1521 |
+
return to
|
1522 |
+
}
|
1523 |
+
|
1524 |
+
/**
|
1525 |
+
* Data
|
1526 |
+
*/
|
1527 |
+
function mergeDataOrFn (
|
1528 |
+
parentVal,
|
1529 |
+
childVal,
|
1530 |
+
vm
|
1531 |
+
) {
|
1532 |
+
if (!vm) {
|
1533 |
+
// in a Vue.extend merge, both should be functions
|
1534 |
+
if (!childVal) {
|
1535 |
+
return parentVal
|
1536 |
+
}
|
1537 |
+
if (!parentVal) {
|
1538 |
+
return childVal
|
1539 |
+
}
|
1540 |
+
// when parentVal & childVal are both present,
|
1541 |
+
// we need to return a function that returns the
|
1542 |
+
// merged result of both functions... no need to
|
1543 |
+
// check if parentVal is a function here because
|
1544 |
+
// it has to be a function to pass previous merges.
|
1545 |
+
return function mergedDataFn () {
|
1546 |
+
return mergeData(
|
1547 |
+
typeof childVal === 'function' ? childVal.call(this, this) : childVal,
|
1548 |
+
typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
|
1549 |
+
)
|
1550 |
+
}
|
1551 |
+
} else {
|
1552 |
+
return function mergedInstanceDataFn () {
|
1553 |
+
// instance merge
|
1554 |
+
var instanceData = typeof childVal === 'function'
|
1555 |
+
? childVal.call(vm, vm)
|
1556 |
+
: childVal;
|
1557 |
+
var defaultData = typeof parentVal === 'function'
|
1558 |
+
? parentVal.call(vm, vm)
|
1559 |
+
: parentVal;
|
1560 |
+
if (instanceData) {
|
1561 |
+
return mergeData(instanceData, defaultData)
|
1562 |
+
} else {
|
1563 |
+
return defaultData
|
1564 |
+
}
|
1565 |
+
}
|
1566 |
+
}
|
1567 |
+
}
|
1568 |
+
|
1569 |
+
strats.data = function (
|
1570 |
+
parentVal,
|
1571 |
+
childVal,
|
1572 |
+
vm
|
1573 |
+
) {
|
1574 |
+
if (!vm) {
|
1575 |
+
if (childVal && typeof childVal !== 'function') {
|
1576 |
+
process.env.NODE_ENV !== 'production' && warn(
|
1577 |
+
'The "data" option should be a function ' +
|
1578 |
+
'that returns a per-instance value in component ' +
|
1579 |
+
'definitions.',
|
1580 |
+
vm
|
1581 |
+
);
|
1582 |
+
|
1583 |
+
return parentVal
|
1584 |
+
}
|
1585 |
+
return mergeDataOrFn(parentVal, childVal)
|
1586 |
+
}
|
1587 |
+
|
1588 |
+
return mergeDataOrFn(parentVal, childVal, vm)
|
1589 |
+
};
|
1590 |
+
|
1591 |
+
/**
|
1592 |
+
* Hooks and props are merged as arrays.
|
1593 |
+
*/
|
1594 |
+
function mergeHook (
|
1595 |
+
parentVal,
|
1596 |
+
childVal
|
1597 |
+
) {
|
1598 |
+
return childVal
|
1599 |
+
? parentVal
|
1600 |
+
? parentVal.concat(childVal)
|
1601 |
+
: Array.isArray(childVal)
|
1602 |
+
? childVal
|
1603 |
+
: [childVal]
|
1604 |
+
: parentVal
|
1605 |
+
}
|
1606 |
+
|
1607 |
+
LIFECYCLE_HOOKS.forEach(function (hook) {
|
1608 |
+
strats[hook] = mergeHook;
|
1609 |
+
});
|
1610 |
+
|
1611 |
+
/**
|
1612 |
+
* Assets
|
1613 |
+
*
|
1614 |
+
* When a vm is present (instance creation), we need to do
|
1615 |
+
* a three-way merge between constructor options, instance
|
1616 |
+
* options and parent options.
|
1617 |
+
*/
|
1618 |
+
function mergeAssets (
|
1619 |
+
parentVal,
|
1620 |
+
childVal,
|
1621 |
+
vm,
|
1622 |
+
key
|
1623 |
+
) {
|
1624 |
+
var res = Object.create(parentVal || null);
|
1625 |
+
if (childVal) {
|
1626 |
+
process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);
|
1627 |
+
return extend(res, childVal)
|
1628 |
+
} else {
|
1629 |
+
return res
|
1630 |
+
}
|
1631 |
+
}
|
1632 |
+
|
1633 |
+
ASSET_TYPES.forEach(function (type) {
|
1634 |
+
strats[type + 's'] = mergeAssets;
|
1635 |
+
});
|
1636 |
+
|
1637 |
+
/**
|
1638 |
+
* Watchers.
|
1639 |
+
*
|
1640 |
+
* Watchers hashes should not overwrite one
|
1641 |
+
* another, so we merge them as arrays.
|
1642 |
+
*/
|
1643 |
+
strats.watch = function (
|
1644 |
+
parentVal,
|
1645 |
+
childVal,
|
1646 |
+
vm,
|
1647 |
+
key
|
1648 |
+
) {
|
1649 |
+
// work around Firefox's Object.prototype.watch...
|
1650 |
+
if (parentVal === nativeWatch) { parentVal = undefined; }
|
1651 |
+
if (childVal === nativeWatch) { childVal = undefined; }
|
1652 |
+
/* istanbul ignore if */
|
1653 |
+
if (!childVal) { return Object.create(parentVal || null) }
|
1654 |
+
if (process.env.NODE_ENV !== 'production') {
|
1655 |
+
assertObjectType(key, childVal, vm);
|
1656 |
+
}
|
1657 |
+
if (!parentVal) { return childVal }
|
1658 |
+
var ret = {};
|
1659 |
+
extend(ret, parentVal);
|
1660 |
+
for (var key$1 in childVal) {
|
1661 |
+
var parent = ret[key$1];
|
1662 |
+
var child = childVal[key$1];
|
1663 |
+
if (parent && !Array.isArray(parent)) {
|
1664 |
+
parent = [parent];
|
1665 |
+
}
|
1666 |
+
ret[key$1] = parent
|
1667 |
+
? parent.concat(child)
|
1668 |
+
: Array.isArray(child) ? child : [child];
|
1669 |
+
}
|
1670 |
+
return ret
|
1671 |
+
};
|
1672 |
+
|
1673 |
+
/**
|
1674 |
+
* Other object hashes.
|
1675 |
+
*/
|
1676 |
+
strats.props =
|
1677 |
+
strats.methods =
|
1678 |
+
strats.inject =
|
1679 |
+
strats.computed = function (
|
1680 |
+
parentVal,
|
1681 |
+
childVal,
|
1682 |
+
vm,
|
1683 |
+
key
|
1684 |
+
) {
|
1685 |
+
if (childVal && process.env.NODE_ENV !== 'production') {
|
1686 |
+
assertObjectType(key, childVal, vm);
|
1687 |
+
}
|
1688 |
+
if (!parentVal) { return childVal }
|
1689 |
+
var ret = Object.create(null);
|
1690 |
+
extend(ret, parentVal);
|
1691 |
+
if (childVal) { extend(ret, childVal); }
|
1692 |
+
return ret
|
1693 |
+
};
|
1694 |
+
strats.provide = mergeDataOrFn;
|
1695 |
+
|
1696 |
+
/**
|
1697 |
+
* Default strategy.
|
1698 |
+
*/
|
1699 |
+
var defaultStrat = function (parentVal, childVal) {
|
1700 |
+
return childVal === undefined
|
1701 |
+
? parentVal
|
1702 |
+
: childVal
|
1703 |
+
};
|
1704 |
+
|
1705 |
+
/**
|
1706 |
+
* Validate component names
|
1707 |
+
*/
|
1708 |
+
function checkComponents (options) {
|
1709 |
+
for (var key in options.components) {
|
1710 |
+
validateComponentName(key);
|
1711 |
+
}
|
1712 |
+
}
|
1713 |
+
|
1714 |
+
function validateComponentName (name) {
|
1715 |
+
if (!/^[a-zA-Z][\w-]*$/.test(name)) {
|
1716 |
+
warn(
|
1717 |
+
'Invalid component name: "' + name + '". Component names ' +
|
1718 |
+
'can only contain alphanumeric characters and the hyphen, ' +
|
1719 |
+
'and must start with a letter.'
|
1720 |
+
);
|
1721 |
+
}
|
1722 |
+
if (isBuiltInTag(name) || config.isReservedTag(name)) {
|
1723 |
+
warn(
|
1724 |
+
'Do not use built-in or reserved HTML elements as component ' +
|
1725 |
+
'id: ' + name
|
1726 |
+
);
|
1727 |
+
}
|
1728 |
+
}
|
1729 |
+
|
1730 |
+
/**
|
1731 |
+
* Ensure all props option syntax are normalized into the
|
1732 |
+
* Object-based format.
|
1733 |
+
*/
|
1734 |
+
function normalizeProps (options, vm) {
|
1735 |
+
var props = options.props;
|
1736 |
+
if (!props) { return }
|
1737 |
+
var res = {};
|
1738 |
+
var i, val, name;
|
1739 |
+
if (Array.isArray(props)) {
|
1740 |
+
i = props.length;
|
1741 |
+
while (i--) {
|
1742 |
+
val = props[i];
|
1743 |
+
if (typeof val === 'string') {
|
1744 |
+
name = camelize(val);
|
1745 |
+
res[name] = { type: null };
|
1746 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
1747 |
+
warn('props must be strings when using array syntax.');
|
1748 |
+
}
|
1749 |
+
}
|
1750 |
+
} else if (isPlainObject(props)) {
|
1751 |
+
for (var key in props) {
|
1752 |
+
val = props[key];
|
1753 |
+
name = camelize(key);
|
1754 |
+
res[name] = isPlainObject(val)
|
1755 |
+
? val
|
1756 |
+
: { type: val };
|
1757 |
+
}
|
1758 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
1759 |
+
warn(
|
1760 |
+
"Invalid value for option \"props\": expected an Array or an Object, " +
|
1761 |
+
"but got " + (toRawType(props)) + ".",
|
1762 |
+
vm
|
1763 |
+
);
|
1764 |
+
}
|
1765 |
+
options.props = res;
|
1766 |
+
}
|
1767 |
+
|
1768 |
+
/**
|
1769 |
+
* Normalize all injections into Object-based format
|
1770 |
+
*/
|
1771 |
+
function normalizeInject (options, vm) {
|
1772 |
+
var inject = options.inject;
|
1773 |
+
if (!inject) { return }
|
1774 |
+
var normalized = options.inject = {};
|
1775 |
+
if (Array.isArray(inject)) {
|
1776 |
+
for (var i = 0; i < inject.length; i++) {
|
1777 |
+
normalized[inject[i]] = { from: inject[i] };
|
1778 |
+
}
|
1779 |
+
} else if (isPlainObject(inject)) {
|
1780 |
+
for (var key in inject) {
|
1781 |
+
var val = inject[key];
|
1782 |
+
normalized[key] = isPlainObject(val)
|
1783 |
+
? extend({ from: key }, val)
|
1784 |
+
: { from: val };
|
1785 |
+
}
|
1786 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
1787 |
+
warn(
|
1788 |
+
"Invalid value for option \"inject\": expected an Array or an Object, " +
|
1789 |
+
"but got " + (toRawType(inject)) + ".",
|
1790 |
+
vm
|
1791 |
+
);
|
1792 |
+
}
|
1793 |
+
}
|
1794 |
+
|
1795 |
+
/**
|
1796 |
+
* Normalize raw function directives into object format.
|
1797 |
+
*/
|
1798 |
+
function normalizeDirectives (options) {
|
1799 |
+
var dirs = options.directives;
|
1800 |
+
if (dirs) {
|
1801 |
+
for (var key in dirs) {
|
1802 |
+
var def = dirs[key];
|
1803 |
+
if (typeof def === 'function') {
|
1804 |
+
dirs[key] = { bind: def, update: def };
|
1805 |
+
}
|
1806 |
+
}
|
1807 |
+
}
|
1808 |
+
}
|
1809 |
+
|
1810 |
+
function assertObjectType (name, value, vm) {
|
1811 |
+
if (!isPlainObject(value)) {
|
1812 |
+
warn(
|
1813 |
+
"Invalid value for option \"" + name + "\": expected an Object, " +
|
1814 |
+
"but got " + (toRawType(value)) + ".",
|
1815 |
+
vm
|
1816 |
+
);
|
1817 |
+
}
|
1818 |
+
}
|
1819 |
+
|
1820 |
+
/**
|
1821 |
+
* Merge two option objects into a new one.
|
1822 |
+
* Core utility used in both instantiation and inheritance.
|
1823 |
+
*/
|
1824 |
+
function mergeOptions (
|
1825 |
+
parent,
|
1826 |
+
child,
|
1827 |
+
vm
|
1828 |
+
) {
|
1829 |
+
if (process.env.NODE_ENV !== 'production') {
|
1830 |
+
checkComponents(child);
|
1831 |
+
}
|
1832 |
+
|
1833 |
+
if (typeof child === 'function') {
|
1834 |
+
child = child.options;
|
1835 |
+
}
|
1836 |
+
|
1837 |
+
normalizeProps(child, vm);
|
1838 |
+
normalizeInject(child, vm);
|
1839 |
+
normalizeDirectives(child);
|
1840 |
+
var extendsFrom = child.extends;
|
1841 |
+
if (extendsFrom) {
|
1842 |
+
parent = mergeOptions(parent, extendsFrom, vm);
|
1843 |
+
}
|
1844 |
+
if (child.mixins) {
|
1845 |
+
for (var i = 0, l = child.mixins.length; i < l; i++) {
|
1846 |
+
parent = mergeOptions(parent, child.mixins[i], vm);
|
1847 |
+
}
|
1848 |
+
}
|
1849 |
+
var options = {};
|
1850 |
+
var key;
|
1851 |
+
for (key in parent) {
|
1852 |
+
mergeField(key);
|
1853 |
+
}
|
1854 |
+
for (key in child) {
|
1855 |
+
if (!hasOwn(parent, key)) {
|
1856 |
+
mergeField(key);
|
1857 |
+
}
|
1858 |
+
}
|
1859 |
+
function mergeField (key) {
|
1860 |
+
var strat = strats[key] || defaultStrat;
|
1861 |
+
options[key] = strat(parent[key], child[key], vm, key);
|
1862 |
+
}
|
1863 |
+
return options
|
1864 |
+
}
|
1865 |
+
|
1866 |
+
/**
|
1867 |
+
* Resolve an asset.
|
1868 |
+
* This function is used because child instances need access
|
1869 |
+
* to assets defined in its ancestor chain.
|
1870 |
+
*/
|
1871 |
+
function resolveAsset (
|
1872 |
+
options,
|
1873 |
+
type,
|
1874 |
+
id,
|
1875 |
+
warnMissing
|
1876 |
+
) {
|
1877 |
+
/* istanbul ignore if */
|
1878 |
+
if (typeof id !== 'string') {
|
1879 |
+
return
|
1880 |
+
}
|
1881 |
+
var assets = options[type];
|
1882 |
+
// check local registration variations first
|
1883 |
+
if (hasOwn(assets, id)) { return assets[id] }
|
1884 |
+
var camelizedId = camelize(id);
|
1885 |
+
if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
|
1886 |
+
var PascalCaseId = capitalize(camelizedId);
|
1887 |
+
if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
|
1888 |
+
// fallback to prototype chain
|
1889 |
+
var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
|
1890 |
+
if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {
|
1891 |
+
warn(
|
1892 |
+
'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
|
1893 |
+
options
|
1894 |
+
);
|
1895 |
+
}
|
1896 |
+
return res
|
1897 |
+
}
|
1898 |
+
|
1899 |
+
/* */
|
1900 |
+
|
1901 |
+
function validateProp (
|
1902 |
+
key,
|
1903 |
+
propOptions,
|
1904 |
+
propsData,
|
1905 |
+
vm
|
1906 |
+
) {
|
1907 |
+
var prop = propOptions[key];
|
1908 |
+
var absent = !hasOwn(propsData, key);
|
1909 |
+
var value = propsData[key];
|
1910 |
+
// boolean casting
|
1911 |
+
var booleanIndex = getTypeIndex(Boolean, prop.type);
|
1912 |
+
if (booleanIndex > -1) {
|
1913 |
+
if (absent && !hasOwn(prop, 'default')) {
|
1914 |
+
value = false;
|
1915 |
+
} else if (value === '' || value === hyphenate(key)) {
|
1916 |
+
// only cast empty string / same name to boolean if
|
1917 |
+
// boolean has higher priority
|
1918 |
+
var stringIndex = getTypeIndex(String, prop.type);
|
1919 |
+
if (stringIndex < 0 || booleanIndex < stringIndex) {
|
1920 |
+
value = true;
|
1921 |
+
}
|
1922 |
+
}
|
1923 |
+
}
|
1924 |
+
// check default value
|
1925 |
+
if (value === undefined) {
|
1926 |
+
value = getPropDefaultValue(vm, prop, key);
|
1927 |
+
// since the default value is a fresh copy,
|
1928 |
+
// make sure to observe it.
|
1929 |
+
var prevShouldObserve = shouldObserve;
|
1930 |
+
toggleObserving(true);
|
1931 |
+
observe(value);
|
1932 |
+
toggleObserving(prevShouldObserve);
|
1933 |
+
}
|
1934 |
+
if (
|
1935 |
+
process.env.NODE_ENV !== 'production' &&
|
1936 |
+
// skip validation for weex recycle-list child component props
|
1937 |
+
!(false && isObject(value) && ('@binding' in value))
|
1938 |
+
) {
|
1939 |
+
assertProp(prop, key, value, vm, absent);
|
1940 |
+
}
|
1941 |
+
return value
|
1942 |
+
}
|
1943 |
+
|
1944 |
+
/**
|
1945 |
+
* Get the default value of a prop.
|
1946 |
+
*/
|
1947 |
+
function getPropDefaultValue (vm, prop, key) {
|
1948 |
+
// no default, return undefined
|
1949 |
+
if (!hasOwn(prop, 'default')) {
|
1950 |
+
return undefined
|
1951 |
+
}
|
1952 |
+
var def = prop.default;
|
1953 |
+
// warn against non-factory defaults for Object & Array
|
1954 |
+
if (process.env.NODE_ENV !== 'production' && isObject(def)) {
|
1955 |
+
warn(
|
1956 |
+
'Invalid default value for prop "' + key + '": ' +
|
1957 |
+
'Props with type Object/Array must use a factory function ' +
|
1958 |
+
'to return the default value.',
|
1959 |
+
vm
|
1960 |
+
);
|
1961 |
+
}
|
1962 |
+
// the raw prop value was also undefined from previous render,
|
1963 |
+
// return previous default value to avoid unnecessary watcher trigger
|
1964 |
+
if (vm && vm.$options.propsData &&
|
1965 |
+
vm.$options.propsData[key] === undefined &&
|
1966 |
+
vm._props[key] !== undefined
|
1967 |
+
) {
|
1968 |
+
return vm._props[key]
|
1969 |
+
}
|
1970 |
+
// call factory function for non-Function types
|
1971 |
+
// a value is Function if its prototype is function even across different execution context
|
1972 |
+
return typeof def === 'function' && getType(prop.type) !== 'Function'
|
1973 |
+
? def.call(vm)
|
1974 |
+
: def
|
1975 |
+
}
|
1976 |
+
|
1977 |
+
/**
|
1978 |
+
* Assert whether a prop is valid.
|
1979 |
+
*/
|
1980 |
+
function assertProp (
|
1981 |
+
prop,
|
1982 |
+
name,
|
1983 |
+
value,
|
1984 |
+
vm,
|
1985 |
+
absent
|
1986 |
+
) {
|
1987 |
+
if (prop.required && absent) {
|
1988 |
+
warn(
|
1989 |
+
'Missing required prop: "' + name + '"',
|
1990 |
+
vm
|
1991 |
+
);
|
1992 |
+
return
|
1993 |
+
}
|
1994 |
+
if (value == null && !prop.required) {
|
1995 |
+
return
|
1996 |
+
}
|
1997 |
+
var type = prop.type;
|
1998 |
+
var valid = !type || type === true;
|
1999 |
+
var expectedTypes = [];
|
2000 |
+
if (type) {
|
2001 |
+
if (!Array.isArray(type)) {
|
2002 |
+
type = [type];
|
2003 |
+
}
|
2004 |
+
for (var i = 0; i < type.length && !valid; i++) {
|
2005 |
+
var assertedType = assertType(value, type[i]);
|
2006 |
+
expectedTypes.push(assertedType.expectedType || '');
|
2007 |
+
valid = assertedType.valid;
|
2008 |
+
}
|
2009 |
+
}
|
2010 |
+
if (!valid) {
|
2011 |
+
warn(
|
2012 |
+
"Invalid prop: type check failed for prop \"" + name + "\"." +
|
2013 |
+
" Expected " + (expectedTypes.map(capitalize).join(', ')) +
|
2014 |
+
", got " + (toRawType(value)) + ".",
|
2015 |
+
vm
|
2016 |
+
);
|
2017 |
+
return
|
2018 |
+
}
|
2019 |
+
var validator = prop.validator;
|
2020 |
+
if (validator) {
|
2021 |
+
if (!validator(value)) {
|
2022 |
+
warn(
|
2023 |
+
'Invalid prop: custom validator check failed for prop "' + name + '".',
|
2024 |
+
vm
|
2025 |
+
);
|
2026 |
+
}
|
2027 |
+
}
|
2028 |
+
}
|
2029 |
+
|
2030 |
+
var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
|
2031 |
+
|
2032 |
+
function assertType (value, type) {
|
2033 |
+
var valid;
|
2034 |
+
var expectedType = getType(type);
|
2035 |
+
if (simpleCheckRE.test(expectedType)) {
|
2036 |
+
var t = typeof value;
|
2037 |
+
valid = t === expectedType.toLowerCase();
|
2038 |
+
// for primitive wrapper objects
|
2039 |
+
if (!valid && t === 'object') {
|
2040 |
+
valid = value instanceof type;
|
2041 |
+
}
|
2042 |
+
} else if (expectedType === 'Object') {
|
2043 |
+
valid = isPlainObject(value);
|
2044 |
+
} else if (expectedType === 'Array') {
|
2045 |
+
valid = Array.isArray(value);
|
2046 |
+
} else {
|
2047 |
+
valid = value instanceof type;
|
2048 |
+
}
|
2049 |
+
return {
|
2050 |
+
valid: valid,
|
2051 |
+
expectedType: expectedType
|
2052 |
+
}
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
/**
|
2056 |
+
* Use function string name to check built-in types,
|
2057 |
+
* because a simple equality check will fail when running
|
2058 |
+
* across different vms / iframes.
|
2059 |
+
*/
|
2060 |
+
function getType (fn) {
|
2061 |
+
var match = fn && fn.toString().match(/^\s*function (\w+)/);
|
2062 |
+
return match ? match[1] : ''
|
2063 |
+
}
|
2064 |
+
|
2065 |
+
function isSameType (a, b) {
|
2066 |
+
return getType(a) === getType(b)
|
2067 |
+
}
|
2068 |
+
|
2069 |
+
function getTypeIndex (type, expectedTypes) {
|
2070 |
+
if (!Array.isArray(expectedTypes)) {
|
2071 |
+
return isSameType(expectedTypes, type) ? 0 : -1
|
2072 |
+
}
|
2073 |
+
for (var i = 0, len = expectedTypes.length; i < len; i++) {
|
2074 |
+
if (isSameType(expectedTypes[i], type)) {
|
2075 |
+
return i
|
2076 |
+
}
|
2077 |
+
}
|
2078 |
+
return -1
|
2079 |
+
}
|
2080 |
+
|
2081 |
+
/* */
|
2082 |
+
|
2083 |
+
function handleError (err, vm, info) {
|
2084 |
+
if (vm) {
|
2085 |
+
var cur = vm;
|
2086 |
+
while ((cur = cur.$parent)) {
|
2087 |
+
var hooks = cur.$options.errorCaptured;
|
2088 |
+
if (hooks) {
|
2089 |
+
for (var i = 0; i < hooks.length; i++) {
|
2090 |
+
try {
|
2091 |
+
var capture = hooks[i].call(cur, err, vm, info) === false;
|
2092 |
+
if (capture) { return }
|
2093 |
+
} catch (e) {
|
2094 |
+
globalHandleError(e, cur, 'errorCaptured hook');
|
2095 |
+
}
|
2096 |
+
}
|
2097 |
+
}
|
2098 |
+
}
|
2099 |
+
}
|
2100 |
+
globalHandleError(err, vm, info);
|
2101 |
+
}
|
2102 |
+
|
2103 |
+
function globalHandleError (err, vm, info) {
|
2104 |
+
if (config.errorHandler) {
|
2105 |
+
try {
|
2106 |
+
return config.errorHandler.call(null, err, vm, info)
|
2107 |
+
} catch (e) {
|
2108 |
+
logError(e, null, 'config.errorHandler');
|
2109 |
+
}
|
2110 |
+
}
|
2111 |
+
logError(err, vm, info);
|
2112 |
+
}
|
2113 |
+
|
2114 |
+
function logError (err, vm, info) {
|
2115 |
+
if (process.env.NODE_ENV !== 'production') {
|
2116 |
+
warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
|
2117 |
+
}
|
2118 |
+
/* istanbul ignore else */
|
2119 |
+
if ((inBrowser || inWeex) && typeof console !== 'undefined') {
|
2120 |
+
console.error(err);
|
2121 |
+
} else {
|
2122 |
+
throw err
|
2123 |
+
}
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
/* */
|
2127 |
+
/* globals MessageChannel */
|
2128 |
+
|
2129 |
+
var callbacks = [];
|
2130 |
+
var pending = false;
|
2131 |
+
|
2132 |
+
function flushCallbacks () {
|
2133 |
+
pending = false;
|
2134 |
+
var copies = callbacks.slice(0);
|
2135 |
+
callbacks.length = 0;
|
2136 |
+
for (var i = 0; i < copies.length; i++) {
|
2137 |
+
copies[i]();
|
2138 |
+
}
|
2139 |
+
}
|
2140 |
+
|
2141 |
+
// Here we have async deferring wrappers using both microtasks and (macro) tasks.
|
2142 |
+
// In < 2.4 we used microtasks everywhere, but there are some scenarios where
|
2143 |
+
// microtasks have too high a priority and fire in between supposedly
|
2144 |
+
// sequential events (e.g. #4521, #6690) or even between bubbling of the same
|
2145 |
+
// event (#6566). However, using (macro) tasks everywhere also has subtle problems
|
2146 |
+
// when state is changed right before repaint (e.g. #6813, out-in transitions).
|
2147 |
+
// Here we use microtask by default, but expose a way to force (macro) task when
|
2148 |
+
// needed (e.g. in event handlers attached by v-on).
|
2149 |
+
var microTimerFunc;
|
2150 |
+
var macroTimerFunc;
|
2151 |
+
var useMacroTask = false;
|
2152 |
+
|
2153 |
+
// Determine (macro) task defer implementation.
|
2154 |
+
// Technically setImmediate should be the ideal choice, but it's only available
|
2155 |
+
// in IE. The only polyfill that consistently queues the callback after all DOM
|
2156 |
+
// events triggered in the same loop is by using MessageChannel.
|
2157 |
+
/* istanbul ignore if */
|
2158 |
+
if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
|
2159 |
+
macroTimerFunc = function () {
|
2160 |
+
setImmediate(flushCallbacks);
|
2161 |
+
};
|
2162 |
+
} else if (typeof MessageChannel !== 'undefined' && (
|
2163 |
+
isNative(MessageChannel) ||
|
2164 |
+
// PhantomJS
|
2165 |
+
MessageChannel.toString() === '[object MessageChannelConstructor]'
|
2166 |
+
)) {
|
2167 |
+
var channel = new MessageChannel();
|
2168 |
+
var port = channel.port2;
|
2169 |
+
channel.port1.onmessage = flushCallbacks;
|
2170 |
+
macroTimerFunc = function () {
|
2171 |
+
port.postMessage(1);
|
2172 |
+
};
|
2173 |
+
} else {
|
2174 |
+
/* istanbul ignore next */
|
2175 |
+
macroTimerFunc = function () {
|
2176 |
+
setTimeout(flushCallbacks, 0);
|
2177 |
+
};
|
2178 |
+
}
|
2179 |
+
|
2180 |
+
// Determine microtask defer implementation.
|
2181 |
+
/* istanbul ignore next, $flow-disable-line */
|
2182 |
+
if (typeof Promise !== 'undefined' && isNative(Promise)) {
|
2183 |
+
var p = Promise.resolve();
|
2184 |
+
microTimerFunc = function () {
|
2185 |
+
p.then(flushCallbacks);
|
2186 |
+
// in problematic UIWebViews, Promise.then doesn't completely break, but
|
2187 |
+
// it can get stuck in a weird state where callbacks are pushed into the
|
2188 |
+
// microtask queue but the queue isn't being flushed, until the browser
|
2189 |
+
// needs to do some other work, e.g. handle a timer. Therefore we can
|
2190 |
+
// "force" the microtask queue to be flushed by adding an empty timer.
|
2191 |
+
if (isIOS) { setTimeout(noop); }
|
2192 |
+
};
|
2193 |
+
} else {
|
2194 |
+
// fallback to macro
|
2195 |
+
microTimerFunc = macroTimerFunc;
|
2196 |
+
}
|
2197 |
+
|
2198 |
+
/**
|
2199 |
+
* Wrap a function so that if any code inside triggers state change,
|
2200 |
+
* the changes are queued using a (macro) task instead of a microtask.
|
2201 |
+
*/
|
2202 |
+
function withMacroTask (fn) {
|
2203 |
+
return fn._withTask || (fn._withTask = function () {
|
2204 |
+
useMacroTask = true;
|
2205 |
+
var res = fn.apply(null, arguments);
|
2206 |
+
useMacroTask = false;
|
2207 |
+
return res
|
2208 |
+
})
|
2209 |
+
}
|
2210 |
+
|
2211 |
+
function nextTick (cb, ctx) {
|
2212 |
+
var _resolve;
|
2213 |
+
callbacks.push(function () {
|
2214 |
+
if (cb) {
|
2215 |
+
try {
|
2216 |
+
cb.call(ctx);
|
2217 |
+
} catch (e) {
|
2218 |
+
handleError(e, ctx, 'nextTick');
|
2219 |
+
}
|
2220 |
+
} else if (_resolve) {
|
2221 |
+
_resolve(ctx);
|
2222 |
+
}
|
2223 |
+
});
|
2224 |
+
if (!pending) {
|
2225 |
+
pending = true;
|
2226 |
+
if (useMacroTask) {
|
2227 |
+
macroTimerFunc();
|
2228 |
+
} else {
|
2229 |
+
microTimerFunc();
|
2230 |
+
}
|
2231 |
+
}
|
2232 |
+
// $flow-disable-line
|
2233 |
+
if (!cb && typeof Promise !== 'undefined') {
|
2234 |
+
return new Promise(function (resolve) {
|
2235 |
+
_resolve = resolve;
|
2236 |
+
})
|
2237 |
+
}
|
2238 |
+
}
|
2239 |
+
|
2240 |
+
/* */
|
2241 |
+
|
2242 |
+
var mark;
|
2243 |
+
var measure;
|
2244 |
+
|
2245 |
+
if (process.env.NODE_ENV !== 'production') {
|
2246 |
+
var perf = inBrowser && window.performance;
|
2247 |
+
/* istanbul ignore if */
|
2248 |
+
if (
|
2249 |
+
perf &&
|
2250 |
+
perf.mark &&
|
2251 |
+
perf.measure &&
|
2252 |
+
perf.clearMarks &&
|
2253 |
+
perf.clearMeasures
|
2254 |
+
) {
|
2255 |
+
mark = function (tag) { return perf.mark(tag); };
|
2256 |
+
measure = function (name, startTag, endTag) {
|
2257 |
+
perf.measure(name, startTag, endTag);
|
2258 |
+
perf.clearMarks(startTag);
|
2259 |
+
perf.clearMarks(endTag);
|
2260 |
+
perf.clearMeasures(name);
|
2261 |
+
};
|
2262 |
+
}
|
2263 |
+
}
|
2264 |
+
|
2265 |
+
/* not type checking this file because flow doesn't play well with Proxy */
|
2266 |
+
|
2267 |
+
var initProxy;
|
2268 |
+
|
2269 |
+
if (process.env.NODE_ENV !== 'production') {
|
2270 |
+
var allowedGlobals = makeMap(
|
2271 |
+
'Infinity,undefined,NaN,isFinite,isNaN,' +
|
2272 |
+
'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
|
2273 |
+
'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
|
2274 |
+
'require' // for Webpack/Browserify
|
2275 |
+
);
|
2276 |
+
|
2277 |
+
var warnNonPresent = function (target, key) {
|
2278 |
+
warn(
|
2279 |
+
"Property or method \"" + key + "\" is not defined on the instance but " +
|
2280 |
+
'referenced during render. Make sure that this property is reactive, ' +
|
2281 |
+
'either in the data option, or for class-based components, by ' +
|
2282 |
+
'initializing the property. ' +
|
2283 |
+
'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
|
2284 |
+
target
|
2285 |
+
);
|
2286 |
+
};
|
2287 |
+
|
2288 |
+
var hasProxy =
|
2289 |
+
typeof Proxy !== 'undefined' && isNative(Proxy);
|
2290 |
+
|
2291 |
+
if (hasProxy) {
|
2292 |
+
var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
|
2293 |
+
config.keyCodes = new Proxy(config.keyCodes, {
|
2294 |
+
set: function set (target, key, value) {
|
2295 |
+
if (isBuiltInModifier(key)) {
|
2296 |
+
warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
|
2297 |
+
return false
|
2298 |
+
} else {
|
2299 |
+
target[key] = value;
|
2300 |
+
return true
|
2301 |
+
}
|
2302 |
+
}
|
2303 |
+
});
|
2304 |
+
}
|
2305 |
+
|
2306 |
+
var hasHandler = {
|
2307 |
+
has: function has (target, key) {
|
2308 |
+
var has = key in target;
|
2309 |
+
var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
|
2310 |
+
if (!has && !isAllowed) {
|
2311 |
+
warnNonPresent(target, key);
|
2312 |
+
}
|
2313 |
+
return has || !isAllowed
|
2314 |
+
}
|
2315 |
+
};
|
2316 |
+
|
2317 |
+
var getHandler = {
|
2318 |
+
get: function get (target, key) {
|
2319 |
+
if (typeof key === 'string' && !(key in target)) {
|
2320 |
+
warnNonPresent(target, key);
|
2321 |
+
}
|
2322 |
+
return target[key]
|
2323 |
+
}
|
2324 |
+
};
|
2325 |
+
|
2326 |
+
initProxy = function initProxy (vm) {
|
2327 |
+
if (hasProxy) {
|
2328 |
+
// determine which proxy handler to use
|
2329 |
+
var options = vm.$options;
|
2330 |
+
var handlers = options.render && options.render._withStripped
|
2331 |
+
? getHandler
|
2332 |
+
: hasHandler;
|
2333 |
+
vm._renderProxy = new Proxy(vm, handlers);
|
2334 |
+
} else {
|
2335 |
+
vm._renderProxy = vm;
|
2336 |
+
}
|
2337 |
+
};
|
2338 |
+
}
|
2339 |
+
|
2340 |
+
/* */
|
2341 |
+
|
2342 |
+
var seenObjects = new _Set();
|
2343 |
+
|
2344 |
+
/**
|
2345 |
+
* Recursively traverse an object to evoke all converted
|
2346 |
+
* getters, so that every nested property inside the object
|
2347 |
+
* is collected as a "deep" dependency.
|
2348 |
+
*/
|
2349 |
+
function traverse (val) {
|
2350 |
+
_traverse(val, seenObjects);
|
2351 |
+
seenObjects.clear();
|
2352 |
+
}
|
2353 |
+
|
2354 |
+
function _traverse (val, seen) {
|
2355 |
+
var i, keys;
|
2356 |
+
var isA = Array.isArray(val);
|
2357 |
+
if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
|
2358 |
+
return
|
2359 |
+
}
|
2360 |
+
if (val.__ob__) {
|
2361 |
+
var depId = val.__ob__.dep.id;
|
2362 |
+
if (seen.has(depId)) {
|
2363 |
+
return
|
2364 |
+
}
|
2365 |
+
seen.add(depId);
|
2366 |
+
}
|
2367 |
+
if (isA) {
|
2368 |
+
i = val.length;
|
2369 |
+
while (i--) { _traverse(val[i], seen); }
|
2370 |
+
} else {
|
2371 |
+
keys = Object.keys(val);
|
2372 |
+
i = keys.length;
|
2373 |
+
while (i--) { _traverse(val[keys[i]], seen); }
|
2374 |
+
}
|
2375 |
+
}
|
2376 |
+
|
2377 |
+
/* */
|
2378 |
+
|
2379 |
+
var normalizeEvent = cached(function (name) {
|
2380 |
+
var passive = name.charAt(0) === '&';
|
2381 |
+
name = passive ? name.slice(1) : name;
|
2382 |
+
var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
|
2383 |
+
name = once$$1 ? name.slice(1) : name;
|
2384 |
+
var capture = name.charAt(0) === '!';
|
2385 |
+
name = capture ? name.slice(1) : name;
|
2386 |
+
return {
|
2387 |
+
name: name,
|
2388 |
+
once: once$$1,
|
2389 |
+
capture: capture,
|
2390 |
+
passive: passive
|
2391 |
+
}
|
2392 |
+
});
|
2393 |
+
|
2394 |
+
function createFnInvoker (fns) {
|
2395 |
+
function invoker () {
|
2396 |
+
var arguments$1 = arguments;
|
2397 |
+
|
2398 |
+
var fns = invoker.fns;
|
2399 |
+
if (Array.isArray(fns)) {
|
2400 |
+
var cloned = fns.slice();
|
2401 |
+
for (var i = 0; i < cloned.length; i++) {
|
2402 |
+
cloned[i].apply(null, arguments$1);
|
2403 |
+
}
|
2404 |
+
} else {
|
2405 |
+
// return handler return value for single handlers
|
2406 |
+
return fns.apply(null, arguments)
|
2407 |
+
}
|
2408 |
+
}
|
2409 |
+
invoker.fns = fns;
|
2410 |
+
return invoker
|
2411 |
+
}
|
2412 |
+
|
2413 |
+
function updateListeners (
|
2414 |
+
on,
|
2415 |
+
oldOn,
|
2416 |
+
add,
|
2417 |
+
remove$$1,
|
2418 |
+
vm
|
2419 |
+
) {
|
2420 |
+
var name, def, cur, old, event;
|
2421 |
+
for (name in on) {
|
2422 |
+
def = cur = on[name];
|
2423 |
+
old = oldOn[name];
|
2424 |
+
event = normalizeEvent(name);
|
2425 |
+
/* istanbul ignore if */
|
2426 |
+
if (isUndef(cur)) {
|
2427 |
+
process.env.NODE_ENV !== 'production' && warn(
|
2428 |
+
"Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
|
2429 |
+
vm
|
2430 |
+
);
|
2431 |
+
} else if (isUndef(old)) {
|
2432 |
+
if (isUndef(cur.fns)) {
|
2433 |
+
cur = on[name] = createFnInvoker(cur);
|
2434 |
+
}
|
2435 |
+
add(event.name, cur, event.once, event.capture, event.passive, event.params);
|
2436 |
+
} else if (cur !== old) {
|
2437 |
+
old.fns = cur;
|
2438 |
+
on[name] = old;
|
2439 |
+
}
|
2440 |
+
}
|
2441 |
+
for (name in oldOn) {
|
2442 |
+
if (isUndef(on[name])) {
|
2443 |
+
event = normalizeEvent(name);
|
2444 |
+
remove$$1(event.name, oldOn[name], event.capture);
|
2445 |
+
}
|
2446 |
+
}
|
2447 |
+
}
|
2448 |
+
|
2449 |
+
/* */
|
2450 |
+
|
2451 |
+
function mergeVNodeHook (def, hookKey, hook) {
|
2452 |
+
if (def instanceof VNode) {
|
2453 |
+
def = def.data.hook || (def.data.hook = {});
|
2454 |
+
}
|
2455 |
+
var invoker;
|
2456 |
+
var oldHook = def[hookKey];
|
2457 |
+
|
2458 |
+
function wrappedHook () {
|
2459 |
+
hook.apply(this, arguments);
|
2460 |
+
// important: remove merged hook to ensure it's called only once
|
2461 |
+
// and prevent memory leak
|
2462 |
+
remove(invoker.fns, wrappedHook);
|
2463 |
+
}
|
2464 |
+
|
2465 |
+
if (isUndef(oldHook)) {
|
2466 |
+
// no existing hook
|
2467 |
+
invoker = createFnInvoker([wrappedHook]);
|
2468 |
+
} else {
|
2469 |
+
/* istanbul ignore if */
|
2470 |
+
if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
|
2471 |
+
// already a merged invoker
|
2472 |
+
invoker = oldHook;
|
2473 |
+
invoker.fns.push(wrappedHook);
|
2474 |
+
} else {
|
2475 |
+
// existing plain hook
|
2476 |
+
invoker = createFnInvoker([oldHook, wrappedHook]);
|
2477 |
+
}
|
2478 |
+
}
|
2479 |
+
|
2480 |
+
invoker.merged = true;
|
2481 |
+
def[hookKey] = invoker;
|
2482 |
+
}
|
2483 |
+
|
2484 |
+
/* */
|
2485 |
+
|
2486 |
+
function extractPropsFromVNodeData (
|
2487 |
+
data,
|
2488 |
+
Ctor,
|
2489 |
+
tag
|
2490 |
+
) {
|
2491 |
+
// we are only extracting raw values here.
|
2492 |
+
// validation and default values are handled in the child
|
2493 |
+
// component itself.
|
2494 |
+
var propOptions = Ctor.options.props;
|
2495 |
+
if (isUndef(propOptions)) {
|
2496 |
+
return
|
2497 |
+
}
|
2498 |
+
var res = {};
|
2499 |
+
var attrs = data.attrs;
|
2500 |
+
var props = data.props;
|
2501 |
+
if (isDef(attrs) || isDef(props)) {
|
2502 |
+
for (var key in propOptions) {
|
2503 |
+
var altKey = hyphenate(key);
|
2504 |
+
if (process.env.NODE_ENV !== 'production') {
|
2505 |
+
var keyInLowerCase = key.toLowerCase();
|
2506 |
+
if (
|
2507 |
+
key !== keyInLowerCase &&
|
2508 |
+
attrs && hasOwn(attrs, keyInLowerCase)
|
2509 |
+
) {
|
2510 |
+
tip(
|
2511 |
+
"Prop \"" + keyInLowerCase + "\" is passed to component " +
|
2512 |
+
(formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
|
2513 |
+
" \"" + key + "\". " +
|
2514 |
+
"Note that HTML attributes are case-insensitive and camelCased " +
|
2515 |
+
"props need to use their kebab-case equivalents when using in-DOM " +
|
2516 |
+
"templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
|
2517 |
+
);
|
2518 |
+
}
|
2519 |
+
}
|
2520 |
+
checkProp(res, props, key, altKey, true) ||
|
2521 |
+
checkProp(res, attrs, key, altKey, false);
|
2522 |
+
}
|
2523 |
+
}
|
2524 |
+
return res
|
2525 |
+
}
|
2526 |
+
|
2527 |
+
function checkProp (
|
2528 |
+
res,
|
2529 |
+
hash,
|
2530 |
+
key,
|
2531 |
+
altKey,
|
2532 |
+
preserve
|
2533 |
+
) {
|
2534 |
+
if (isDef(hash)) {
|
2535 |
+
if (hasOwn(hash, key)) {
|
2536 |
+
res[key] = hash[key];
|
2537 |
+
if (!preserve) {
|
2538 |
+
delete hash[key];
|
2539 |
+
}
|
2540 |
+
return true
|
2541 |
+
} else if (hasOwn(hash, altKey)) {
|
2542 |
+
res[key] = hash[altKey];
|
2543 |
+
if (!preserve) {
|
2544 |
+
delete hash[altKey];
|
2545 |
+
}
|
2546 |
+
return true
|
2547 |
+
}
|
2548 |
+
}
|
2549 |
+
return false
|
2550 |
+
}
|
2551 |
+
|
2552 |
+
/* */
|
2553 |
+
|
2554 |
+
// The template compiler attempts to minimize the need for normalization by
|
2555 |
+
// statically analyzing the template at compile time.
|
2556 |
+
//
|
2557 |
+
// For plain HTML markup, normalization can be completely skipped because the
|
2558 |
+
// generated render function is guaranteed to return Array<VNode>. There are
|
2559 |
+
// two cases where extra normalization is needed:
|
2560 |
+
|
2561 |
+
// 1. When the children contains components - because a functional component
|
2562 |
+
// may return an Array instead of a single root. In this case, just a simple
|
2563 |
+
// normalization is needed - if any child is an Array, we flatten the whole
|
2564 |
+
// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
|
2565 |
+
// because functional components already normalize their own children.
|
2566 |
+
function simpleNormalizeChildren (children) {
|
2567 |
+
for (var i = 0; i < children.length; i++) {
|
2568 |
+
if (Array.isArray(children[i])) {
|
2569 |
+
return Array.prototype.concat.apply([], children)
|
2570 |
+
}
|
2571 |
+
}
|
2572 |
+
return children
|
2573 |
+
}
|
2574 |
+
|
2575 |
+
// 2. When the children contains constructs that always generated nested Arrays,
|
2576 |
+
// e.g. <template>, <slot>, v-for, or when the children is provided by user
|
2577 |
+
// with hand-written render functions / JSX. In such cases a full normalization
|
2578 |
+
// is needed to cater to all possible types of children values.
|
2579 |
+
function normalizeChildren (children) {
|
2580 |
+
return isPrimitive(children)
|
2581 |
+
? [createTextVNode(children)]
|
2582 |
+
: Array.isArray(children)
|
2583 |
+
? normalizeArrayChildren(children)
|
2584 |
+
: undefined
|
2585 |
+
}
|
2586 |
+
|
2587 |
+
function isTextNode (node) {
|
2588 |
+
return isDef(node) && isDef(node.text) && isFalse(node.isComment)
|
2589 |
+
}
|
2590 |
+
|
2591 |
+
function normalizeArrayChildren (children, nestedIndex) {
|
2592 |
+
var res = [];
|
2593 |
+
var i, c, lastIndex, last;
|
2594 |
+
for (i = 0; i < children.length; i++) {
|
2595 |
+
c = children[i];
|
2596 |
+
if (isUndef(c) || typeof c === 'boolean') { continue }
|
2597 |
+
lastIndex = res.length - 1;
|
2598 |
+
last = res[lastIndex];
|
2599 |
+
// nested
|
2600 |
+
if (Array.isArray(c)) {
|
2601 |
+
if (c.length > 0) {
|
2602 |
+
c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
|
2603 |
+
// merge adjacent text nodes
|
2604 |
+
if (isTextNode(c[0]) && isTextNode(last)) {
|
2605 |
+
res[lastIndex] = createTextVNode(last.text + (c[0]).text);
|
2606 |
+
c.shift();
|
2607 |
+
}
|
2608 |
+
res.push.apply(res, c);
|
2609 |
+
}
|
2610 |
+
} else if (isPrimitive(c)) {
|
2611 |
+
if (isTextNode(last)) {
|
2612 |
+
// merge adjacent text nodes
|
2613 |
+
// this is necessary for SSR hydration because text nodes are
|
2614 |
+
// essentially merged when rendered to HTML strings
|
2615 |
+
res[lastIndex] = createTextVNode(last.text + c);
|
2616 |
+
} else if (c !== '') {
|
2617 |
+
// convert primitive to vnode
|
2618 |
+
res.push(createTextVNode(c));
|
2619 |
+
}
|
2620 |
+
} else {
|
2621 |
+
if (isTextNode(c) && isTextNode(last)) {
|
2622 |
+
// merge adjacent text nodes
|
2623 |
+
res[lastIndex] = createTextVNode(last.text + c.text);
|
2624 |
+
} else {
|
2625 |
+
// default key for nested array children (likely generated by v-for)
|
2626 |
+
if (isTrue(children._isVList) &&
|
2627 |
+
isDef(c.tag) &&
|
2628 |
+
isUndef(c.key) &&
|
2629 |
+
isDef(nestedIndex)) {
|
2630 |
+
c.key = "__vlist" + nestedIndex + "_" + i + "__";
|
2631 |
+
}
|
2632 |
+
res.push(c);
|
2633 |
+
}
|
2634 |
+
}
|
2635 |
+
}
|
2636 |
+
return res
|
2637 |
+
}
|
2638 |
+
|
2639 |
+
/* */
|
2640 |
+
|
2641 |
+
function ensureCtor (comp, base) {
|
2642 |
+
if (
|
2643 |
+
comp.__esModule ||
|
2644 |
+
(hasSymbol && comp[Symbol.toStringTag] === 'Module')
|
2645 |
+
) {
|
2646 |
+
comp = comp.default;
|
2647 |
+
}
|
2648 |
+
return isObject(comp)
|
2649 |
+
? base.extend(comp)
|
2650 |
+
: comp
|
2651 |
+
}
|
2652 |
+
|
2653 |
+
function createAsyncPlaceholder (
|
2654 |
+
factory,
|
2655 |
+
data,
|
2656 |
+
context,
|
2657 |
+
children,
|
2658 |
+
tag
|
2659 |
+
) {
|
2660 |
+
var node = createEmptyVNode();
|
2661 |
+
node.asyncFactory = factory;
|
2662 |
+
node.asyncMeta = { data: data, context: context, children: children, tag: tag };
|
2663 |
+
return node
|
2664 |
+
}
|
2665 |
+
|
2666 |
+
function resolveAsyncComponent (
|
2667 |
+
factory,
|
2668 |
+
baseCtor,
|
2669 |
+
context
|
2670 |
+
) {
|
2671 |
+
if (isTrue(factory.error) && isDef(factory.errorComp)) {
|
2672 |
+
return factory.errorComp
|
2673 |
+
}
|
2674 |
+
|
2675 |
+
if (isDef(factory.resolved)) {
|
2676 |
+
return factory.resolved
|
2677 |
+
}
|
2678 |
+
|
2679 |
+
if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
|
2680 |
+
return factory.loadingComp
|
2681 |
+
}
|
2682 |
+
|
2683 |
+
if (isDef(factory.contexts)) {
|
2684 |
+
// already pending
|
2685 |
+
factory.contexts.push(context);
|
2686 |
+
} else {
|
2687 |
+
var contexts = factory.contexts = [context];
|
2688 |
+
var sync = true;
|
2689 |
+
|
2690 |
+
var forceRender = function () {
|
2691 |
+
for (var i = 0, l = contexts.length; i < l; i++) {
|
2692 |
+
contexts[i].$forceUpdate();
|
2693 |
+
}
|
2694 |
+
};
|
2695 |
+
|
2696 |
+
var resolve = once(function (res) {
|
2697 |
+
// cache resolved
|
2698 |
+
factory.resolved = ensureCtor(res, baseCtor);
|
2699 |
+
// invoke callbacks only if this is not a synchronous resolve
|
2700 |
+
// (async resolves are shimmed as synchronous during SSR)
|
2701 |
+
if (!sync) {
|
2702 |
+
forceRender();
|
2703 |
+
}
|
2704 |
+
});
|
2705 |
+
|
2706 |
+
var reject = once(function (reason) {
|
2707 |
+
process.env.NODE_ENV !== 'production' && warn(
|
2708 |
+
"Failed to resolve async component: " + (String(factory)) +
|
2709 |
+
(reason ? ("\nReason: " + reason) : '')
|
2710 |
+
);
|
2711 |
+
if (isDef(factory.errorComp)) {
|
2712 |
+
factory.error = true;
|
2713 |
+
forceRender();
|
2714 |
+
}
|
2715 |
+
});
|
2716 |
+
|
2717 |
+
var res = factory(resolve, reject);
|
2718 |
+
|
2719 |
+
if (isObject(res)) {
|
2720 |
+
if (typeof res.then === 'function') {
|
2721 |
+
// () => Promise
|
2722 |
+
if (isUndef(factory.resolved)) {
|
2723 |
+
res.then(resolve, reject);
|
2724 |
+
}
|
2725 |
+
} else if (isDef(res.component) && typeof res.component.then === 'function') {
|
2726 |
+
res.component.then(resolve, reject);
|
2727 |
+
|
2728 |
+
if (isDef(res.error)) {
|
2729 |
+
factory.errorComp = ensureCtor(res.error, baseCtor);
|
2730 |
+
}
|
2731 |
+
|
2732 |
+
if (isDef(res.loading)) {
|
2733 |
+
factory.loadingComp = ensureCtor(res.loading, baseCtor);
|
2734 |
+
if (res.delay === 0) {
|
2735 |
+
factory.loading = true;
|
2736 |
+
} else {
|
2737 |
+
setTimeout(function () {
|
2738 |
+
if (isUndef(factory.resolved) && isUndef(factory.error)) {
|
2739 |
+
factory.loading = true;
|
2740 |
+
forceRender();
|
2741 |
+
}
|
2742 |
+
}, res.delay || 200);
|
2743 |
+
}
|
2744 |
+
}
|
2745 |
+
|
2746 |
+
if (isDef(res.timeout)) {
|
2747 |
+
setTimeout(function () {
|
2748 |
+
if (isUndef(factory.resolved)) {
|
2749 |
+
reject(
|
2750 |
+
process.env.NODE_ENV !== 'production'
|
2751 |
+
? ("timeout (" + (res.timeout) + "ms)")
|
2752 |
+
: null
|
2753 |
+
);
|
2754 |
+
}
|
2755 |
+
}, res.timeout);
|
2756 |
+
}
|
2757 |
+
}
|
2758 |
+
}
|
2759 |
+
|
2760 |
+
sync = false;
|
2761 |
+
// return in case resolved synchronously
|
2762 |
+
return factory.loading
|
2763 |
+
? factory.loadingComp
|
2764 |
+
: factory.resolved
|
2765 |
+
}
|
2766 |
+
}
|
2767 |
+
|
2768 |
+
/* */
|
2769 |
+
|
2770 |
+
function isAsyncPlaceholder (node) {
|
2771 |
+
return node.isComment && node.asyncFactory
|
2772 |
+
}
|
2773 |
+
|
2774 |
+
/* */
|
2775 |
+
|
2776 |
+
function getFirstComponentChild (children) {
|
2777 |
+
if (Array.isArray(children)) {
|
2778 |
+
for (var i = 0; i < children.length; i++) {
|
2779 |
+
var c = children[i];
|
2780 |
+
if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
|
2781 |
+
return c
|
2782 |
+
}
|
2783 |
+
}
|
2784 |
+
}
|
2785 |
+
}
|
2786 |
+
|
2787 |
+
/* */
|
2788 |
+
|
2789 |
+
/* */
|
2790 |
+
|
2791 |
+
function initEvents (vm) {
|
2792 |
+
vm._events = Object.create(null);
|
2793 |
+
vm._hasHookEvent = false;
|
2794 |
+
// init parent attached events
|
2795 |
+
var listeners = vm.$options._parentListeners;
|
2796 |
+
if (listeners) {
|
2797 |
+
updateComponentListeners(vm, listeners);
|
2798 |
+
}
|
2799 |
+
}
|
2800 |
+
|
2801 |
+
var target;
|
2802 |
+
|
2803 |
+
function add (event, fn, once) {
|
2804 |
+
if (once) {
|
2805 |
+
target.$once(event, fn);
|
2806 |
+
} else {
|
2807 |
+
target.$on(event, fn);
|
2808 |
+
}
|
2809 |
+
}
|
2810 |
+
|
2811 |
+
function remove$1 (event, fn) {
|
2812 |
+
target.$off(event, fn);
|
2813 |
+
}
|
2814 |
+
|
2815 |
+
function updateComponentListeners (
|
2816 |
+
vm,
|
2817 |
+
listeners,
|
2818 |
+
oldListeners
|
2819 |
+
) {
|
2820 |
+
target = vm;
|
2821 |
+
updateListeners(listeners, oldListeners || {}, add, remove$1, vm);
|
2822 |
+
target = undefined;
|
2823 |
+
}
|
2824 |
+
|
2825 |
+
function eventsMixin (Vue) {
|
2826 |
+
var hookRE = /^hook:/;
|
2827 |
+
Vue.prototype.$on = function (event, fn) {
|
2828 |
+
var this$1 = this;
|
2829 |
+
|
2830 |
+
var vm = this;
|
2831 |
+
if (Array.isArray(event)) {
|
2832 |
+
for (var i = 0, l = event.length; i < l; i++) {
|
2833 |
+
this$1.$on(event[i], fn);
|
2834 |
+
}
|
2835 |
+
} else {
|
2836 |
+
(vm._events[event] || (vm._events[event] = [])).push(fn);
|
2837 |
+
// optimize hook:event cost by using a boolean flag marked at registration
|
2838 |
+
// instead of a hash lookup
|
2839 |
+
if (hookRE.test(event)) {
|
2840 |
+
vm._hasHookEvent = true;
|
2841 |
+
}
|
2842 |
+
}
|
2843 |
+
return vm
|
2844 |
+
};
|
2845 |
+
|
2846 |
+
Vue.prototype.$once = function (event, fn) {
|
2847 |
+
var vm = this;
|
2848 |
+
function on () {
|
2849 |
+
vm.$off(event, on);
|
2850 |
+
fn.apply(vm, arguments);
|
2851 |
+
}
|
2852 |
+
on.fn = fn;
|
2853 |
+
vm.$on(event, on);
|
2854 |
+
return vm
|
2855 |
+
};
|
2856 |
+
|
2857 |
+
Vue.prototype.$off = function (event, fn) {
|
2858 |
+
var this$1 = this;
|
2859 |
+
|
2860 |
+
var vm = this;
|
2861 |
+
// all
|
2862 |
+
if (!arguments.length) {
|
2863 |
+
vm._events = Object.create(null);
|
2864 |
+
return vm
|
2865 |
+
}
|
2866 |
+
// array of events
|
2867 |
+
if (Array.isArray(event)) {
|
2868 |
+
for (var i = 0, l = event.length; i < l; i++) {
|
2869 |
+
this$1.$off(event[i], fn);
|
2870 |
+
}
|
2871 |
+
return vm
|
2872 |
+
}
|
2873 |
+
// specific event
|
2874 |
+
var cbs = vm._events[event];
|
2875 |
+
if (!cbs) {
|
2876 |
+
return vm
|
2877 |
+
}
|
2878 |
+
if (!fn) {
|
2879 |
+
vm._events[event] = null;
|
2880 |
+
return vm
|
2881 |
+
}
|
2882 |
+
if (fn) {
|
2883 |
+
// specific handler
|
2884 |
+
var cb;
|
2885 |
+
var i$1 = cbs.length;
|
2886 |
+
while (i$1--) {
|
2887 |
+
cb = cbs[i$1];
|
2888 |
+
if (cb === fn || cb.fn === fn) {
|
2889 |
+
cbs.splice(i$1, 1);
|
2890 |
+
break
|
2891 |
+
}
|
2892 |
+
}
|
2893 |
+
}
|
2894 |
+
return vm
|
2895 |
+
};
|
2896 |
+
|
2897 |
+
Vue.prototype.$emit = function (event) {
|
2898 |
+
var vm = this;
|
2899 |
+
if (process.env.NODE_ENV !== 'production') {
|
2900 |
+
var lowerCaseEvent = event.toLowerCase();
|
2901 |
+
if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
|
2902 |
+
tip(
|
2903 |
+
"Event \"" + lowerCaseEvent + "\" is emitted in component " +
|
2904 |
+
(formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
|
2905 |
+
"Note that HTML attributes are case-insensitive and you cannot use " +
|
2906 |
+
"v-on to listen to camelCase events when using in-DOM templates. " +
|
2907 |
+
"You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
|
2908 |
+
);
|
2909 |
+
}
|
2910 |
+
}
|
2911 |
+
var cbs = vm._events[event];
|
2912 |
+
if (cbs) {
|
2913 |
+
cbs = cbs.length > 1 ? toArray(cbs) : cbs;
|
2914 |
+
var args = toArray(arguments, 1);
|
2915 |
+
for (var i = 0, l = cbs.length; i < l; i++) {
|
2916 |
+
try {
|
2917 |
+
cbs[i].apply(vm, args);
|
2918 |
+
} catch (e) {
|
2919 |
+
handleError(e, vm, ("event handler for \"" + event + "\""));
|
2920 |
+
}
|
2921 |
+
}
|
2922 |
+
}
|
2923 |
+
return vm
|
2924 |
+
};
|
2925 |
+
}
|
2926 |
+
|
2927 |
+
/* */
|
2928 |
+
|
2929 |
+
|
2930 |
+
|
2931 |
+
/**
|
2932 |
+
* Runtime helper for resolving raw children VNodes into a slot object.
|
2933 |
+
*/
|
2934 |
+
function resolveSlots (
|
2935 |
+
children,
|
2936 |
+
context
|
2937 |
+
) {
|
2938 |
+
var slots = {};
|
2939 |
+
if (!children) {
|
2940 |
+
return slots
|
2941 |
+
}
|
2942 |
+
for (var i = 0, l = children.length; i < l; i++) {
|
2943 |
+
var child = children[i];
|
2944 |
+
var data = child.data;
|
2945 |
+
// remove slot attribute if the node is resolved as a Vue slot node
|
2946 |
+
if (data && data.attrs && data.attrs.slot) {
|
2947 |
+
delete data.attrs.slot;
|
2948 |
+
}
|
2949 |
+
// named slots should only be respected if the vnode was rendered in the
|
2950 |
+
// same context.
|
2951 |
+
if ((child.context === context || child.fnContext === context) &&
|
2952 |
+
data && data.slot != null
|
2953 |
+
) {
|
2954 |
+
var name = data.slot;
|
2955 |
+
var slot = (slots[name] || (slots[name] = []));
|
2956 |
+
if (child.tag === 'template') {
|
2957 |
+
slot.push.apply(slot, child.children || []);
|
2958 |
+
} else {
|
2959 |
+
slot.push(child);
|
2960 |
+
}
|
2961 |
+
} else {
|
2962 |
+
(slots.default || (slots.default = [])).push(child);
|
2963 |
+
}
|
2964 |
+
}
|
2965 |
+
// ignore slots that contains only whitespace
|
2966 |
+
for (var name$1 in slots) {
|
2967 |
+
if (slots[name$1].every(isWhitespace)) {
|
2968 |
+
delete slots[name$1];
|
2969 |
+
}
|
2970 |
+
}
|
2971 |
+
return slots
|
2972 |
+
}
|
2973 |
+
|
2974 |
+
function isWhitespace (node) {
|
2975 |
+
return (node.isComment && !node.asyncFactory) || node.text === ' '
|
2976 |
+
}
|
2977 |
+
|
2978 |
+
function resolveScopedSlots (
|
2979 |
+
fns, // see flow/vnode
|
2980 |
+
res
|
2981 |
+
) {
|
2982 |
+
res = res || {};
|
2983 |
+
for (var i = 0; i < fns.length; i++) {
|
2984 |
+
if (Array.isArray(fns[i])) {
|
2985 |
+
resolveScopedSlots(fns[i], res);
|
2986 |
+
} else {
|
2987 |
+
res[fns[i].key] = fns[i].fn;
|
2988 |
+
}
|
2989 |
+
}
|
2990 |
+
return res
|
2991 |
+
}
|
2992 |
+
|
2993 |
+
/* */
|
2994 |
+
|
2995 |
+
var activeInstance = null;
|
2996 |
+
var isUpdatingChildComponent = false;
|
2997 |
+
|
2998 |
+
function initLifecycle (vm) {
|
2999 |
+
var options = vm.$options;
|
3000 |
+
|
3001 |
+
// locate first non-abstract parent
|
3002 |
+
var parent = options.parent;
|
3003 |
+
if (parent && !options.abstract) {
|
3004 |
+
while (parent.$options.abstract && parent.$parent) {
|
3005 |
+
parent = parent.$parent;
|
3006 |
+
}
|
3007 |
+
parent.$children.push(vm);
|
3008 |
+
}
|
3009 |
+
|
3010 |
+
vm.$parent = parent;
|
3011 |
+
vm.$root = parent ? parent.$root : vm;
|
3012 |
+
|
3013 |
+
vm.$children = [];
|
3014 |
+
vm.$refs = {};
|
3015 |
+
|
3016 |
+
vm._watcher = null;
|
3017 |
+
vm._inactive = null;
|
3018 |
+
vm._directInactive = false;
|
3019 |
+
vm._isMounted = false;
|
3020 |
+
vm._isDestroyed = false;
|
3021 |
+
vm._isBeingDestroyed = false;
|
3022 |
+
}
|
3023 |
+
|
3024 |
+
function lifecycleMixin (Vue) {
|
3025 |
+
Vue.prototype._update = function (vnode, hydrating) {
|
3026 |
+
var vm = this;
|
3027 |
+
if (vm._isMounted) {
|
3028 |
+
callHook(vm, 'beforeUpdate');
|
3029 |
+
}
|
3030 |
+
var prevEl = vm.$el;
|
3031 |
+
var prevVnode = vm._vnode;
|
3032 |
+
var prevActiveInstance = activeInstance;
|
3033 |
+
activeInstance = vm;
|
3034 |
+
vm._vnode = vnode;
|
3035 |
+
// Vue.prototype.__patch__ is injected in entry points
|
3036 |
+
// based on the rendering backend used.
|
3037 |
+
if (!prevVnode) {
|
3038 |
+
// initial render
|
3039 |
+
vm.$el = vm.__patch__(
|
3040 |
+
vm.$el, vnode, hydrating, false /* removeOnly */,
|
3041 |
+
vm.$options._parentElm,
|
3042 |
+
vm.$options._refElm
|
3043 |
+
);
|
3044 |
+
// no need for the ref nodes after initial patch
|
3045 |
+
// this prevents keeping a detached DOM tree in memory (#5851)
|
3046 |
+
vm.$options._parentElm = vm.$options._refElm = null;
|
3047 |
+
} else {
|
3048 |
+
// updates
|
3049 |
+
vm.$el = vm.__patch__(prevVnode, vnode);
|
3050 |
+
}
|
3051 |
+
activeInstance = prevActiveInstance;
|
3052 |
+
// update __vue__ reference
|
3053 |
+
if (prevEl) {
|
3054 |
+
prevEl.__vue__ = null;
|
3055 |
+
}
|
3056 |
+
if (vm.$el) {
|
3057 |
+
vm.$el.__vue__ = vm;
|
3058 |
+
}
|
3059 |
+
// if parent is an HOC, update its $el as well
|
3060 |
+
if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
|
3061 |
+
vm.$parent.$el = vm.$el;
|
3062 |
+
}
|
3063 |
+
// updated hook is called by the scheduler to ensure that children are
|
3064 |
+
// updated in a parent's updated hook.
|
3065 |
+
};
|
3066 |
+
|
3067 |
+
Vue.prototype.$forceUpdate = function () {
|
3068 |
+
var vm = this;
|
3069 |
+
if (vm._watcher) {
|
3070 |
+
vm._watcher.update();
|
3071 |
+
}
|
3072 |
+
};
|
3073 |
+
|
3074 |
+
Vue.prototype.$destroy = function () {
|
3075 |
+
var vm = this;
|
3076 |
+
if (vm._isBeingDestroyed) {
|
3077 |
+
return
|
3078 |
+
}
|
3079 |
+
callHook(vm, 'beforeDestroy');
|
3080 |
+
vm._isBeingDestroyed = true;
|
3081 |
+
// remove self from parent
|
3082 |
+
var parent = vm.$parent;
|
3083 |
+
if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
|
3084 |
+
remove(parent.$children, vm);
|
3085 |
+
}
|
3086 |
+
// teardown watchers
|
3087 |
+
if (vm._watcher) {
|
3088 |
+
vm._watcher.teardown();
|
3089 |
+
}
|
3090 |
+
var i = vm._watchers.length;
|
3091 |
+
while (i--) {
|
3092 |
+
vm._watchers[i].teardown();
|
3093 |
+
}
|
3094 |
+
// remove reference from data ob
|
3095 |
+
// frozen object may not have observer.
|
3096 |
+
if (vm._data.__ob__) {
|
3097 |
+
vm._data.__ob__.vmCount--;
|
3098 |
+
}
|
3099 |
+
// call the last hook...
|
3100 |
+
vm._isDestroyed = true;
|
3101 |
+
// invoke destroy hooks on current rendered tree
|
3102 |
+
vm.__patch__(vm._vnode, null);
|
3103 |
+
// fire destroyed hook
|
3104 |
+
callHook(vm, 'destroyed');
|
3105 |
+
// turn off all instance listeners.
|
3106 |
+
vm.$off();
|
3107 |
+
// remove __vue__ reference
|
3108 |
+
if (vm.$el) {
|
3109 |
+
vm.$el.__vue__ = null;
|
3110 |
+
}
|
3111 |
+
// release circular reference (#6759)
|
3112 |
+
if (vm.$vnode) {
|
3113 |
+
vm.$vnode.parent = null;
|
3114 |
+
}
|
3115 |
+
};
|
3116 |
+
}
|
3117 |
+
|
3118 |
+
function mountComponent (
|
3119 |
+
vm,
|
3120 |
+
el,
|
3121 |
+
hydrating
|
3122 |
+
) {
|
3123 |
+
vm.$el = el;
|
3124 |
+
if (!vm.$options.render) {
|
3125 |
+
vm.$options.render = createEmptyVNode;
|
3126 |
+
if (process.env.NODE_ENV !== 'production') {
|
3127 |
+
/* istanbul ignore if */
|
3128 |
+
if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
|
3129 |
+
vm.$options.el || el) {
|
3130 |
+
warn(
|
3131 |
+
'You are using the runtime-only build of Vue where the template ' +
|
3132 |
+
'compiler is not available. Either pre-compile the templates into ' +
|
3133 |
+
'render functions, or use the compiler-included build.',
|
3134 |
+
vm
|
3135 |
+
);
|
3136 |
+
} else {
|
3137 |
+
warn(
|
3138 |
+
'Failed to mount component: template or render function not defined.',
|
3139 |
+
vm
|
3140 |
+
);
|
3141 |
+
}
|
3142 |
+
}
|
3143 |
+
}
|
3144 |
+
callHook(vm, 'beforeMount');
|
3145 |
+
|
3146 |
+
var updateComponent;
|
3147 |
+
/* istanbul ignore if */
|
3148 |
+
if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
|
3149 |
+
updateComponent = function () {
|
3150 |
+
var name = vm._name;
|
3151 |
+
var id = vm._uid;
|
3152 |
+
var startTag = "vue-perf-start:" + id;
|
3153 |
+
var endTag = "vue-perf-end:" + id;
|
3154 |
+
|
3155 |
+
mark(startTag);
|
3156 |
+
var vnode = vm._render();
|
3157 |
+
mark(endTag);
|
3158 |
+
measure(("vue " + name + " render"), startTag, endTag);
|
3159 |
+
|
3160 |
+
mark(startTag);
|
3161 |
+
vm._update(vnode, hydrating);
|
3162 |
+
mark(endTag);
|
3163 |
+
measure(("vue " + name + " patch"), startTag, endTag);
|
3164 |
+
};
|
3165 |
+
} else {
|
3166 |
+
updateComponent = function () {
|
3167 |
+
vm._update(vm._render(), hydrating);
|
3168 |
+
};
|
3169 |
+
}
|
3170 |
+
|
3171 |
+
// we set this to vm._watcher inside the watcher's constructor
|
3172 |
+
// since the watcher's initial patch may call $forceUpdate (e.g. inside child
|
3173 |
+
// component's mounted hook), which relies on vm._watcher being already defined
|
3174 |
+
new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);
|
3175 |
+
hydrating = false;
|
3176 |
+
|
3177 |
+
// manually mounted instance, call mounted on self
|
3178 |
+
// mounted is called for render-created child components in its inserted hook
|
3179 |
+
if (vm.$vnode == null) {
|
3180 |
+
vm._isMounted = true;
|
3181 |
+
callHook(vm, 'mounted');
|
3182 |
+
}
|
3183 |
+
return vm
|
3184 |
+
}
|
3185 |
+
|
3186 |
+
function updateChildComponent (
|
3187 |
+
vm,
|
3188 |
+
propsData,
|
3189 |
+
listeners,
|
3190 |
+
parentVnode,
|
3191 |
+
renderChildren
|
3192 |
+
) {
|
3193 |
+
if (process.env.NODE_ENV !== 'production') {
|
3194 |
+
isUpdatingChildComponent = true;
|
3195 |
+
}
|
3196 |
+
|
3197 |
+
// determine whether component has slot children
|
3198 |
+
// we need to do this before overwriting $options._renderChildren
|
3199 |
+
var hasChildren = !!(
|
3200 |
+
renderChildren || // has new static slots
|
3201 |
+
vm.$options._renderChildren || // has old static slots
|
3202 |
+
parentVnode.data.scopedSlots || // has new scoped slots
|
3203 |
+
vm.$scopedSlots !== emptyObject // has old scoped slots
|
3204 |
+
);
|
3205 |
+
|
3206 |
+
vm.$options._parentVnode = parentVnode;
|
3207 |
+
vm.$vnode = parentVnode; // update vm's placeholder node without re-render
|
3208 |
+
|
3209 |
+
if (vm._vnode) { // update child tree's parent
|
3210 |
+
vm._vnode.parent = parentVnode;
|
3211 |
+
}
|
3212 |
+
vm.$options._renderChildren = renderChildren;
|
3213 |
+
|
3214 |
+
// update $attrs and $listeners hash
|
3215 |
+
// these are also reactive so they may trigger child update if the child
|
3216 |
+
// used them during render
|
3217 |
+
vm.$attrs = parentVnode.data.attrs || emptyObject;
|
3218 |
+
vm.$listeners = listeners || emptyObject;
|
3219 |
+
|
3220 |
+
// update props
|
3221 |
+
if (propsData && vm.$options.props) {
|
3222 |
+
toggleObserving(false);
|
3223 |
+
var props = vm._props;
|
3224 |
+
var propKeys = vm.$options._propKeys || [];
|
3225 |
+
for (var i = 0; i < propKeys.length; i++) {
|
3226 |
+
var key = propKeys[i];
|
3227 |
+
var propOptions = vm.$options.props; // wtf flow?
|
3228 |
+
props[key] = validateProp(key, propOptions, propsData, vm);
|
3229 |
+
}
|
3230 |
+
toggleObserving(true);
|
3231 |
+
// keep a copy of raw propsData
|
3232 |
+
vm.$options.propsData = propsData;
|
3233 |
+
}
|
3234 |
+
|
3235 |
+
// update listeners
|
3236 |
+
listeners = listeners || emptyObject;
|
3237 |
+
var oldListeners = vm.$options._parentListeners;
|
3238 |
+
vm.$options._parentListeners = listeners;
|
3239 |
+
updateComponentListeners(vm, listeners, oldListeners);
|
3240 |
+
|
3241 |
+
// resolve slots + force update if has children
|
3242 |
+
if (hasChildren) {
|
3243 |
+
vm.$slots = resolveSlots(renderChildren, parentVnode.context);
|
3244 |
+
vm.$forceUpdate();
|
3245 |
+
}
|
3246 |
+
|
3247 |
+
if (process.env.NODE_ENV !== 'production') {
|
3248 |
+
isUpdatingChildComponent = false;
|
3249 |
+
}
|
3250 |
+
}
|
3251 |
+
|
3252 |
+
function isInInactiveTree (vm) {
|
3253 |
+
while (vm && (vm = vm.$parent)) {
|
3254 |
+
if (vm._inactive) { return true }
|
3255 |
+
}
|
3256 |
+
return false
|
3257 |
+
}
|
3258 |
+
|
3259 |
+
function activateChildComponent (vm, direct) {
|
3260 |
+
if (direct) {
|
3261 |
+
vm._directInactive = false;
|
3262 |
+
if (isInInactiveTree(vm)) {
|
3263 |
+
return
|
3264 |
+
}
|
3265 |
+
} else if (vm._directInactive) {
|
3266 |
+
return
|
3267 |
+
}
|
3268 |
+
if (vm._inactive || vm._inactive === null) {
|
3269 |
+
vm._inactive = false;
|
3270 |
+
for (var i = 0; i < vm.$children.length; i++) {
|
3271 |
+
activateChildComponent(vm.$children[i]);
|
3272 |
+
}
|
3273 |
+
callHook(vm, 'activated');
|
3274 |
+
}
|
3275 |
+
}
|
3276 |
+
|
3277 |
+
function deactivateChildComponent (vm, direct) {
|
3278 |
+
if (direct) {
|
3279 |
+
vm._directInactive = true;
|
3280 |
+
if (isInInactiveTree(vm)) {
|
3281 |
+
return
|
3282 |
+
}
|
3283 |
+
}
|
3284 |
+
if (!vm._inactive) {
|
3285 |
+
vm._inactive = true;
|
3286 |
+
for (var i = 0; i < vm.$children.length; i++) {
|
3287 |
+
deactivateChildComponent(vm.$children[i]);
|
3288 |
+
}
|
3289 |
+
callHook(vm, 'deactivated');
|
3290 |
+
}
|
3291 |
+
}
|
3292 |
+
|
3293 |
+
function callHook (vm, hook) {
|
3294 |
+
// #7573 disable dep collection when invoking lifecycle hooks
|
3295 |
+
pushTarget();
|
3296 |
+
var handlers = vm.$options[hook];
|
3297 |
+
if (handlers) {
|
3298 |
+
for (var i = 0, j = handlers.length; i < j; i++) {
|
3299 |
+
try {
|
3300 |
+
handlers[i].call(vm);
|
3301 |
+
} catch (e) {
|
3302 |
+
handleError(e, vm, (hook + " hook"));
|
3303 |
+
}
|
3304 |
+
}
|
3305 |
+
}
|
3306 |
+
if (vm._hasHookEvent) {
|
3307 |
+
vm.$emit('hook:' + hook);
|
3308 |
+
}
|
3309 |
+
popTarget();
|
3310 |
+
}
|
3311 |
+
|
3312 |
+
/* */
|
3313 |
+
|
3314 |
+
|
3315 |
+
var MAX_UPDATE_COUNT = 100;
|
3316 |
+
|
3317 |
+
var queue = [];
|
3318 |
+
var activatedChildren = [];
|
3319 |
+
var has = {};
|
3320 |
+
var circular = {};
|
3321 |
+
var waiting = false;
|
3322 |
+
var flushing = false;
|
3323 |
+
var index = 0;
|
3324 |
+
|
3325 |
+
/**
|
3326 |
+
* Reset the scheduler's state.
|
3327 |
+
*/
|
3328 |
+
function resetSchedulerState () {
|
3329 |
+
index = queue.length = activatedChildren.length = 0;
|
3330 |
+
has = {};
|
3331 |
+
if (process.env.NODE_ENV !== 'production') {
|
3332 |
+
circular = {};
|
3333 |
+
}
|
3334 |
+
waiting = flushing = false;
|
3335 |
+
}
|
3336 |
+
|
3337 |
+
/**
|
3338 |
+
* Flush both queues and run the watchers.
|
3339 |
+
*/
|
3340 |
+
function flushSchedulerQueue () {
|
3341 |
+
flushing = true;
|
3342 |
+
var watcher, id;
|
3343 |
+
|
3344 |
+
// Sort queue before flush.
|
3345 |
+
// This ensures that:
|
3346 |
+
// 1. Components are updated from parent to child. (because parent is always
|
3347 |
+
// created before the child)
|
3348 |
+
// 2. A component's user watchers are run before its render watcher (because
|
3349 |
+
// user watchers are created before the render watcher)
|
3350 |
+
// 3. If a component is destroyed during a parent component's watcher run,
|
3351 |
+
// its watchers can be skipped.
|
3352 |
+
queue.sort(function (a, b) { return a.id - b.id; });
|
3353 |
+
|
3354 |
+
// do not cache length because more watchers might be pushed
|
3355 |
+
// as we run existing watchers
|
3356 |
+
for (index = 0; index < queue.length; index++) {
|
3357 |
+
watcher = queue[index];
|
3358 |
+
id = watcher.id;
|
3359 |
+
has[id] = null;
|
3360 |
+
watcher.run();
|
3361 |
+
// in dev build, check and stop circular updates.
|
3362 |
+
if (process.env.NODE_ENV !== 'production' && has[id] != null) {
|
3363 |
+
circular[id] = (circular[id] || 0) + 1;
|
3364 |
+
if (circular[id] > MAX_UPDATE_COUNT) {
|
3365 |
+
warn(
|
3366 |
+
'You may have an infinite update loop ' + (
|
3367 |
+
watcher.user
|
3368 |
+
? ("in watcher with expression \"" + (watcher.expression) + "\"")
|
3369 |
+
: "in a component render function."
|
3370 |
+
),
|
3371 |
+
watcher.vm
|
3372 |
+
);
|
3373 |
+
break
|
3374 |
+
}
|
3375 |
+
}
|
3376 |
+
}
|
3377 |
+
|
3378 |
+
// keep copies of post queues before resetting state
|
3379 |
+
var activatedQueue = activatedChildren.slice();
|
3380 |
+
var updatedQueue = queue.slice();
|
3381 |
+
|
3382 |
+
resetSchedulerState();
|
3383 |
+
|
3384 |
+
// call component updated and activated hooks
|
3385 |
+
callActivatedHooks(activatedQueue);
|
3386 |
+
callUpdatedHooks(updatedQueue);
|
3387 |
+
|
3388 |
+
// devtool hook
|
3389 |
+
/* istanbul ignore if */
|
3390 |
+
if (devtools && config.devtools) {
|
3391 |
+
devtools.emit('flush');
|
3392 |
+
}
|
3393 |
+
}
|
3394 |
+
|
3395 |
+
function callUpdatedHooks (queue) {
|
3396 |
+
var i = queue.length;
|
3397 |
+
while (i--) {
|
3398 |
+
var watcher = queue[i];
|
3399 |
+
var vm = watcher.vm;
|
3400 |
+
if (vm._watcher === watcher && vm._isMounted) {
|
3401 |
+
callHook(vm, 'updated');
|
3402 |
+
}
|
3403 |
+
}
|
3404 |
+
}
|
3405 |
+
|
3406 |
+
/**
|
3407 |
+
* Queue a kept-alive component that was activated during patch.
|
3408 |
+
* The queue will be processed after the entire tree has been patched.
|
3409 |
+
*/
|
3410 |
+
function queueActivatedComponent (vm) {
|
3411 |
+
// setting _inactive to false here so that a render function can
|
3412 |
+
// rely on checking whether it's in an inactive tree (e.g. router-view)
|
3413 |
+
vm._inactive = false;
|
3414 |
+
activatedChildren.push(vm);
|
3415 |
+
}
|
3416 |
+
|
3417 |
+
function callActivatedHooks (queue) {
|
3418 |
+
for (var i = 0; i < queue.length; i++) {
|
3419 |
+
queue[i]._inactive = true;
|
3420 |
+
activateChildComponent(queue[i], true /* true */);
|
3421 |
+
}
|
3422 |
+
}
|
3423 |
+
|
3424 |
+
/**
|
3425 |
+
* Push a watcher into the watcher queue.
|
3426 |
+
* Jobs with duplicate IDs will be skipped unless it's
|
3427 |
+
* pushed when the queue is being flushed.
|
3428 |
+
*/
|
3429 |
+
function queueWatcher (watcher) {
|
3430 |
+
var id = watcher.id;
|
3431 |
+
if (has[id] == null) {
|
3432 |
+
has[id] = true;
|
3433 |
+
if (!flushing) {
|
3434 |
+
queue.push(watcher);
|
3435 |
+
} else {
|
3436 |
+
// if already flushing, splice the watcher based on its id
|
3437 |
+
// if already past its id, it will be run next immediately.
|
3438 |
+
var i = queue.length - 1;
|
3439 |
+
while (i > index && queue[i].id > watcher.id) {
|
3440 |
+
i--;
|
3441 |
+
}
|
3442 |
+
queue.splice(i + 1, 0, watcher);
|
3443 |
+
}
|
3444 |
+
// queue the flush
|
3445 |
+
if (!waiting) {
|
3446 |
+
waiting = true;
|
3447 |
+
nextTick(flushSchedulerQueue);
|
3448 |
+
}
|
3449 |
+
}
|
3450 |
+
}
|
3451 |
+
|
3452 |
+
/* */
|
3453 |
+
|
3454 |
+
var uid$1 = 0;
|
3455 |
+
|
3456 |
+
/**
|
3457 |
+
* A watcher parses an expression, collects dependencies,
|
3458 |
+
* and fires callback when the expression value changes.
|
3459 |
+
* This is used for both the $watch() api and directives.
|
3460 |
+
*/
|
3461 |
+
var Watcher = function Watcher (
|
3462 |
+
vm,
|
3463 |
+
expOrFn,
|
3464 |
+
cb,
|
3465 |
+
options,
|
3466 |
+
isRenderWatcher
|
3467 |
+
) {
|
3468 |
+
this.vm = vm;
|
3469 |
+
if (isRenderWatcher) {
|
3470 |
+
vm._watcher = this;
|
3471 |
+
}
|
3472 |
+
vm._watchers.push(this);
|
3473 |
+
// options
|
3474 |
+
if (options) {
|
3475 |
+
this.deep = !!options.deep;
|
3476 |
+
this.user = !!options.user;
|
3477 |
+
this.lazy = !!options.lazy;
|
3478 |
+
this.sync = !!options.sync;
|
3479 |
+
} else {
|
3480 |
+
this.deep = this.user = this.lazy = this.sync = false;
|
3481 |
+
}
|
3482 |
+
this.cb = cb;
|
3483 |
+
this.id = ++uid$1; // uid for batching
|
3484 |
+
this.active = true;
|
3485 |
+
this.dirty = this.lazy; // for lazy watchers
|
3486 |
+
this.deps = [];
|
3487 |
+
this.newDeps = [];
|
3488 |
+
this.depIds = new _Set();
|
3489 |
+
this.newDepIds = new _Set();
|
3490 |
+
this.expression = process.env.NODE_ENV !== 'production'
|
3491 |
+
? expOrFn.toString()
|
3492 |
+
: '';
|
3493 |
+
// parse expression for getter
|
3494 |
+
if (typeof expOrFn === 'function') {
|
3495 |
+
this.getter = expOrFn;
|
3496 |
+
} else {
|
3497 |
+
this.getter = parsePath(expOrFn);
|
3498 |
+
if (!this.getter) {
|
3499 |
+
this.getter = function () {};
|
3500 |
+
process.env.NODE_ENV !== 'production' && warn(
|
3501 |
+
"Failed watching path: \"" + expOrFn + "\" " +
|
3502 |
+
'Watcher only accepts simple dot-delimited paths. ' +
|
3503 |
+
'For full control, use a function instead.',
|
3504 |
+
vm
|
3505 |
+
);
|
3506 |
+
}
|
3507 |
+
}
|
3508 |
+
this.value = this.lazy
|
3509 |
+
? undefined
|
3510 |
+
: this.get();
|
3511 |
+
};
|
3512 |
+
|
3513 |
+
/**
|
3514 |
+
* Evaluate the getter, and re-collect dependencies.
|
3515 |
+
*/
|
3516 |
+
Watcher.prototype.get = function get () {
|
3517 |
+
pushTarget(this);
|
3518 |
+
var value;
|
3519 |
+
var vm = this.vm;
|
3520 |
+
try {
|
3521 |
+
value = this.getter.call(vm, vm);
|
3522 |
+
} catch (e) {
|
3523 |
+
if (this.user) {
|
3524 |
+
handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
|
3525 |
+
} else {
|
3526 |
+
throw e
|
3527 |
+
}
|
3528 |
+
} finally {
|
3529 |
+
// "touch" every property so they are all tracked as
|
3530 |
+
// dependencies for deep watching
|
3531 |
+
if (this.deep) {
|
3532 |
+
traverse(value);
|
3533 |
+
}
|
3534 |
+
popTarget();
|
3535 |
+
this.cleanupDeps();
|
3536 |
+
}
|
3537 |
+
return value
|
3538 |
+
};
|
3539 |
+
|
3540 |
+
/**
|
3541 |
+
* Add a dependency to this directive.
|
3542 |
+
*/
|
3543 |
+
Watcher.prototype.addDep = function addDep (dep) {
|
3544 |
+
var id = dep.id;
|
3545 |
+
if (!this.newDepIds.has(id)) {
|
3546 |
+
this.newDepIds.add(id);
|
3547 |
+
this.newDeps.push(dep);
|
3548 |
+
if (!this.depIds.has(id)) {
|
3549 |
+
dep.addSub(this);
|
3550 |
+
}
|
3551 |
+
}
|
3552 |
+
};
|
3553 |
+
|
3554 |
+
/**
|
3555 |
+
* Clean up for dependency collection.
|
3556 |
+
*/
|
3557 |
+
Watcher.prototype.cleanupDeps = function cleanupDeps () {
|
3558 |
+
var this$1 = this;
|
3559 |
+
|
3560 |
+
var i = this.deps.length;
|
3561 |
+
while (i--) {
|
3562 |
+
var dep = this$1.deps[i];
|
3563 |
+
if (!this$1.newDepIds.has(dep.id)) {
|
3564 |
+
dep.removeSub(this$1);
|
3565 |
+
}
|
3566 |
+
}
|
3567 |
+
var tmp = this.depIds;
|
3568 |
+
this.depIds = this.newDepIds;
|
3569 |
+
this.newDepIds = tmp;
|
3570 |
+
this.newDepIds.clear();
|
3571 |
+
tmp = this.deps;
|
3572 |
+
this.deps = this.newDeps;
|
3573 |
+
this.newDeps = tmp;
|
3574 |
+
this.newDeps.length = 0;
|
3575 |
+
};
|
3576 |
+
|
3577 |
+
/**
|
3578 |
+
* Subscriber interface.
|
3579 |
+
* Will be called when a dependency changes.
|
3580 |
+
*/
|
3581 |
+
Watcher.prototype.update = function update () {
|
3582 |
+
/* istanbul ignore else */
|
3583 |
+
if (this.lazy) {
|
3584 |
+
this.dirty = true;
|
3585 |
+
} else if (this.sync) {
|
3586 |
+
this.run();
|
3587 |
+
} else {
|
3588 |
+
queueWatcher(this);
|
3589 |
+
}
|
3590 |
+
};
|
3591 |
+
|
3592 |
+
/**
|
3593 |
+
* Scheduler job interface.
|
3594 |
+
* Will be called by the scheduler.
|
3595 |
+
*/
|
3596 |
+
Watcher.prototype.run = function run () {
|
3597 |
+
if (this.active) {
|
3598 |
+
var value = this.get();
|
3599 |
+
if (
|
3600 |
+
value !== this.value ||
|
3601 |
+
// Deep watchers and watchers on Object/Arrays should fire even
|
3602 |
+
// when the value is the same, because the value may
|
3603 |
+
// have mutated.
|
3604 |
+
isObject(value) ||
|
3605 |
+
this.deep
|
3606 |
+
) {
|
3607 |
+
// set new value
|
3608 |
+
var oldValue = this.value;
|
3609 |
+
this.value = value;
|
3610 |
+
if (this.user) {
|
3611 |
+
try {
|
3612 |
+
this.cb.call(this.vm, value, oldValue);
|
3613 |
+
} catch (e) {
|
3614 |
+
handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
|
3615 |
+
}
|
3616 |
+
} else {
|
3617 |
+
this.cb.call(this.vm, value, oldValue);
|
3618 |
+
}
|
3619 |
+
}
|
3620 |
+
}
|
3621 |
+
};
|
3622 |
+
|
3623 |
+
/**
|
3624 |
+
* Evaluate the value of the watcher.
|
3625 |
+
* This only gets called for lazy watchers.
|
3626 |
+
*/
|
3627 |
+
Watcher.prototype.evaluate = function evaluate () {
|
3628 |
+
this.value = this.get();
|
3629 |
+
this.dirty = false;
|
3630 |
+
};
|
3631 |
+
|
3632 |
+
/**
|
3633 |
+
* Depend on all deps collected by this watcher.
|
3634 |
+
*/
|
3635 |
+
Watcher.prototype.depend = function depend () {
|
3636 |
+
var this$1 = this;
|
3637 |
+
|
3638 |
+
var i = this.deps.length;
|
3639 |
+
while (i--) {
|
3640 |
+
this$1.deps[i].depend();
|
3641 |
+
}
|
3642 |
+
};
|
3643 |
+
|
3644 |
+
/**
|
3645 |
+
* Remove self from all dependencies' subscriber list.
|
3646 |
+
*/
|
3647 |
+
Watcher.prototype.teardown = function teardown () {
|
3648 |
+
var this$1 = this;
|
3649 |
+
|
3650 |
+
if (this.active) {
|
3651 |
+
// remove self from vm's watcher list
|
3652 |
+
// this is a somewhat expensive operation so we skip it
|
3653 |
+
// if the vm is being destroyed.
|
3654 |
+
if (!this.vm._isBeingDestroyed) {
|
3655 |
+
remove(this.vm._watchers, this);
|
3656 |
+
}
|
3657 |
+
var i = this.deps.length;
|
3658 |
+
while (i--) {
|
3659 |
+
this$1.deps[i].removeSub(this$1);
|
3660 |
+
}
|
3661 |
+
this.active = false;
|
3662 |
+
}
|
3663 |
+
};
|
3664 |
+
|
3665 |
+
/* */
|
3666 |
+
|
3667 |
+
var sharedPropertyDefinition = {
|
3668 |
+
enumerable: true,
|
3669 |
+
configurable: true,
|
3670 |
+
get: noop,
|
3671 |
+
set: noop
|
3672 |
+
};
|
3673 |
+
|
3674 |
+
function proxy (target, sourceKey, key) {
|
3675 |
+
sharedPropertyDefinition.get = function proxyGetter () {
|
3676 |
+
return this[sourceKey][key]
|
3677 |
+
};
|
3678 |
+
sharedPropertyDefinition.set = function proxySetter (val) {
|
3679 |
+
this[sourceKey][key] = val;
|
3680 |
+
};
|
3681 |
+
Object.defineProperty(target, key, sharedPropertyDefinition);
|
3682 |
+
}
|
3683 |
+
|
3684 |
+
function initState (vm) {
|
3685 |
+
vm._watchers = [];
|
3686 |
+
var opts = vm.$options;
|
3687 |
+
if (opts.props) { initProps(vm, opts.props); }
|
3688 |
+
if (opts.methods) { initMethods(vm, opts.methods); }
|
3689 |
+
if (opts.data) {
|
3690 |
+
initData(vm);
|
3691 |
+
} else {
|
3692 |
+
observe(vm._data = {}, true /* asRootData */);
|
3693 |
+
}
|
3694 |
+
if (opts.computed) { initComputed(vm, opts.computed); }
|
3695 |
+
if (opts.watch && opts.watch !== nativeWatch) {
|
3696 |
+
initWatch(vm, opts.watch);
|
3697 |
+
}
|
3698 |
+
}
|
3699 |
+
|
3700 |
+
function initProps (vm, propsOptions) {
|
3701 |
+
var propsData = vm.$options.propsData || {};
|
3702 |
+
var props = vm._props = {};
|
3703 |
+
// cache prop keys so that future props updates can iterate using Array
|
3704 |
+
// instead of dynamic object key enumeration.
|
3705 |
+
var keys = vm.$options._propKeys = [];
|
3706 |
+
var isRoot = !vm.$parent;
|
3707 |
+
// root instance props should be converted
|
3708 |
+
if (!isRoot) {
|
3709 |
+
toggleObserving(false);
|
3710 |
+
}
|
3711 |
+
var loop = function ( key ) {
|
3712 |
+
keys.push(key);
|
3713 |
+
var value = validateProp(key, propsOptions, propsData, vm);
|
3714 |
+
/* istanbul ignore else */
|
3715 |
+
if (process.env.NODE_ENV !== 'production') {
|
3716 |
+
var hyphenatedKey = hyphenate(key);
|
3717 |
+
if (isReservedAttribute(hyphenatedKey) ||
|
3718 |
+
config.isReservedAttr(hyphenatedKey)) {
|
3719 |
+
warn(
|
3720 |
+
("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
|
3721 |
+
vm
|
3722 |
+
);
|
3723 |
+
}
|
3724 |
+
defineReactive(props, key, value, function () {
|
3725 |
+
if (vm.$parent && !isUpdatingChildComponent) {
|
3726 |
+
warn(
|
3727 |
+
"Avoid mutating a prop directly since the value will be " +
|
3728 |
+
"overwritten whenever the parent component re-renders. " +
|
3729 |
+
"Instead, use a data or computed property based on the prop's " +
|
3730 |
+
"value. Prop being mutated: \"" + key + "\"",
|
3731 |
+
vm
|
3732 |
+
);
|
3733 |
+
}
|
3734 |
+
});
|
3735 |
+
} else {
|
3736 |
+
defineReactive(props, key, value);
|
3737 |
+
}
|
3738 |
+
// static props are already proxied on the component's prototype
|
3739 |
+
// during Vue.extend(). We only need to proxy props defined at
|
3740 |
+
// instantiation here.
|
3741 |
+
if (!(key in vm)) {
|
3742 |
+
proxy(vm, "_props", key);
|
3743 |
+
}
|
3744 |
+
};
|
3745 |
+
|
3746 |
+
for (var key in propsOptions) loop( key );
|
3747 |
+
toggleObserving(true);
|
3748 |
+
}
|
3749 |
+
|
3750 |
+
function initData (vm) {
|
3751 |
+
var data = vm.$options.data;
|
3752 |
+
data = vm._data = typeof data === 'function'
|
3753 |
+
? getData(data, vm)
|
3754 |
+
: data || {};
|
3755 |
+
if (!isPlainObject(data)) {
|
3756 |
+
data = {};
|
3757 |
+
process.env.NODE_ENV !== 'production' && warn(
|
3758 |
+
'data functions should return an object:\n' +
|
3759 |
+
'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
|
3760 |
+
vm
|
3761 |
+
);
|
3762 |
+
}
|
3763 |
+
// proxy data on instance
|
3764 |
+
var keys = Object.keys(data);
|
3765 |
+
var props = vm.$options.props;
|
3766 |
+
var methods = vm.$options.methods;
|
3767 |
+
var i = keys.length;
|
3768 |
+
while (i--) {
|
3769 |
+
var key = keys[i];
|
3770 |
+
if (process.env.NODE_ENV !== 'production') {
|
3771 |
+
if (methods && hasOwn(methods, key)) {
|
3772 |
+
warn(
|
3773 |
+
("Method \"" + key + "\" has already been defined as a data property."),
|
3774 |
+
vm
|
3775 |
+
);
|
3776 |
+
}
|
3777 |
+
}
|
3778 |
+
if (props && hasOwn(props, key)) {
|
3779 |
+
process.env.NODE_ENV !== 'production' && warn(
|
3780 |
+
"The data property \"" + key + "\" is already declared as a prop. " +
|
3781 |
+
"Use prop default value instead.",
|
3782 |
+
vm
|
3783 |
+
);
|
3784 |
+
} else if (!isReserved(key)) {
|
3785 |
+
proxy(vm, "_data", key);
|
3786 |
+
}
|
3787 |
+
}
|
3788 |
+
// observe data
|
3789 |
+
observe(data, true /* asRootData */);
|
3790 |
+
}
|
3791 |
+
|
3792 |
+
function getData (data, vm) {
|
3793 |
+
// #7573 disable dep collection when invoking data getters
|
3794 |
+
pushTarget();
|
3795 |
+
try {
|
3796 |
+
return data.call(vm, vm)
|
3797 |
+
} catch (e) {
|
3798 |
+
handleError(e, vm, "data()");
|
3799 |
+
return {}
|
3800 |
+
} finally {
|
3801 |
+
popTarget();
|
3802 |
+
}
|
3803 |
+
}
|
3804 |
+
|
3805 |
+
var computedWatcherOptions = { lazy: true };
|
3806 |
+
|
3807 |
+
function initComputed (vm, computed) {
|
3808 |
+
// $flow-disable-line
|
3809 |
+
var watchers = vm._computedWatchers = Object.create(null);
|
3810 |
+
// computed properties are just getters during SSR
|
3811 |
+
var isSSR = isServerRendering();
|
3812 |
+
|
3813 |
+
for (var key in computed) {
|
3814 |
+
var userDef = computed[key];
|
3815 |
+
var getter = typeof userDef === 'function' ? userDef : userDef.get;
|
3816 |
+
if (process.env.NODE_ENV !== 'production' && getter == null) {
|
3817 |
+
warn(
|
3818 |
+
("Getter is missing for computed property \"" + key + "\"."),
|
3819 |
+
vm
|
3820 |
+
);
|
3821 |
+
}
|
3822 |
+
|
3823 |
+
if (!isSSR) {
|
3824 |
+
// create internal watcher for the computed property.
|
3825 |
+
watchers[key] = new Watcher(
|
3826 |
+
vm,
|
3827 |
+
getter || noop,
|
3828 |
+
noop,
|
3829 |
+
computedWatcherOptions
|
3830 |
+
);
|
3831 |
+
}
|
3832 |
+
|
3833 |
+
// component-defined computed properties are already defined on the
|
3834 |
+
// component prototype. We only need to define computed properties defined
|
3835 |
+
// at instantiation here.
|
3836 |
+
if (!(key in vm)) {
|
3837 |
+
defineComputed(vm, key, userDef);
|
3838 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
3839 |
+
if (key in vm.$data) {
|
3840 |
+
warn(("The computed property \"" + key + "\" is already defined in data."), vm);
|
3841 |
+
} else if (vm.$options.props && key in vm.$options.props) {
|
3842 |
+
warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
|
3843 |
+
}
|
3844 |
+
}
|
3845 |
+
}
|
3846 |
+
}
|
3847 |
+
|
3848 |
+
function defineComputed (
|
3849 |
+
target,
|
3850 |
+
key,
|
3851 |
+
userDef
|
3852 |
+
) {
|
3853 |
+
var shouldCache = !isServerRendering();
|
3854 |
+
if (typeof userDef === 'function') {
|
3855 |
+
sharedPropertyDefinition.get = shouldCache
|
3856 |
+
? createComputedGetter(key)
|
3857 |
+
: userDef;
|
3858 |
+
sharedPropertyDefinition.set = noop;
|
3859 |
+
} else {
|
3860 |
+
sharedPropertyDefinition.get = userDef.get
|
3861 |
+
? shouldCache && userDef.cache !== false
|
3862 |
+
? createComputedGetter(key)
|
3863 |
+
: userDef.get
|
3864 |
+
: noop;
|
3865 |
+
sharedPropertyDefinition.set = userDef.set
|
3866 |
+
? userDef.set
|
3867 |
+
: noop;
|
3868 |
+
}
|
3869 |
+
if (process.env.NODE_ENV !== 'production' &&
|
3870 |
+
sharedPropertyDefinition.set === noop) {
|
3871 |
+
sharedPropertyDefinition.set = function () {
|
3872 |
+
warn(
|
3873 |
+
("Computed property \"" + key + "\" was assigned to but it has no setter."),
|
3874 |
+
this
|
3875 |
+
);
|
3876 |
+
};
|
3877 |
+
}
|
3878 |
+
Object.defineProperty(target, key, sharedPropertyDefinition);
|
3879 |
+
}
|
3880 |
+
|
3881 |
+
function createComputedGetter (key) {
|
3882 |
+
return function computedGetter () {
|
3883 |
+
var watcher = this._computedWatchers && this._computedWatchers[key];
|
3884 |
+
if (watcher) {
|
3885 |
+
if (watcher.dirty) {
|
3886 |
+
watcher.evaluate();
|
3887 |
+
}
|
3888 |
+
if (Dep.target) {
|
3889 |
+
watcher.depend();
|
3890 |
+
}
|
3891 |
+
return watcher.value
|
3892 |
+
}
|
3893 |
+
}
|
3894 |
+
}
|
3895 |
+
|
3896 |
+
function initMethods (vm, methods) {
|
3897 |
+
var props = vm.$options.props;
|
3898 |
+
for (var key in methods) {
|
3899 |
+
if (process.env.NODE_ENV !== 'production') {
|
3900 |
+
if (methods[key] == null) {
|
3901 |
+
warn(
|
3902 |
+
"Method \"" + key + "\" has an undefined value in the component definition. " +
|
3903 |
+
"Did you reference the function correctly?",
|
3904 |
+
vm
|
3905 |
+
);
|
3906 |
+
}
|
3907 |
+
if (props && hasOwn(props, key)) {
|
3908 |
+
warn(
|
3909 |
+
("Method \"" + key + "\" has already been defined as a prop."),
|
3910 |
+
vm
|
3911 |
+
);
|
3912 |
+
}
|
3913 |
+
if ((key in vm) && isReserved(key)) {
|
3914 |
+
warn(
|
3915 |
+
"Method \"" + key + "\" conflicts with an existing Vue instance method. " +
|
3916 |
+
"Avoid defining component methods that start with _ or $."
|
3917 |
+
);
|
3918 |
+
}
|
3919 |
+
}
|
3920 |
+
vm[key] = methods[key] == null ? noop : bind(methods[key], vm);
|
3921 |
+
}
|
3922 |
+
}
|
3923 |
+
|
3924 |
+
function initWatch (vm, watch) {
|
3925 |
+
for (var key in watch) {
|
3926 |
+
var handler = watch[key];
|
3927 |
+
if (Array.isArray(handler)) {
|
3928 |
+
for (var i = 0; i < handler.length; i++) {
|
3929 |
+
createWatcher(vm, key, handler[i]);
|
3930 |
+
}
|
3931 |
+
} else {
|
3932 |
+
createWatcher(vm, key, handler);
|
3933 |
+
}
|
3934 |
+
}
|
3935 |
+
}
|
3936 |
+
|
3937 |
+
function createWatcher (
|
3938 |
+
vm,
|
3939 |
+
expOrFn,
|
3940 |
+
handler,
|
3941 |
+
options
|
3942 |
+
) {
|
3943 |
+
if (isPlainObject(handler)) {
|
3944 |
+
options = handler;
|
3945 |
+
handler = handler.handler;
|
3946 |
+
}
|
3947 |
+
if (typeof handler === 'string') {
|
3948 |
+
handler = vm[handler];
|
3949 |
+
}
|
3950 |
+
return vm.$watch(expOrFn, handler, options)
|
3951 |
+
}
|
3952 |
+
|
3953 |
+
function stateMixin (Vue) {
|
3954 |
+
// flow somehow has problems with directly declared definition object
|
3955 |
+
// when using Object.defineProperty, so we have to procedurally build up
|
3956 |
+
// the object here.
|
3957 |
+
var dataDef = {};
|
3958 |
+
dataDef.get = function () { return this._data };
|
3959 |
+
var propsDef = {};
|
3960 |
+
propsDef.get = function () { return this._props };
|
3961 |
+
if (process.env.NODE_ENV !== 'production') {
|
3962 |
+
dataDef.set = function (newData) {
|
3963 |
+
warn(
|
3964 |
+
'Avoid replacing instance root $data. ' +
|
3965 |
+
'Use nested data properties instead.',
|
3966 |
+
this
|
3967 |
+
);
|
3968 |
+
};
|
3969 |
+
propsDef.set = function () {
|
3970 |
+
warn("$props is readonly.", this);
|
3971 |
+
};
|
3972 |
+
}
|
3973 |
+
Object.defineProperty(Vue.prototype, '$data', dataDef);
|
3974 |
+
Object.defineProperty(Vue.prototype, '$props', propsDef);
|
3975 |
+
|
3976 |
+
Vue.prototype.$set = set;
|
3977 |
+
Vue.prototype.$delete = del;
|
3978 |
+
|
3979 |
+
Vue.prototype.$watch = function (
|
3980 |
+
expOrFn,
|
3981 |
+
cb,
|
3982 |
+
options
|
3983 |
+
) {
|
3984 |
+
var vm = this;
|
3985 |
+
if (isPlainObject(cb)) {
|
3986 |
+
return createWatcher(vm, expOrFn, cb, options)
|
3987 |
+
}
|
3988 |
+
options = options || {};
|
3989 |
+
options.user = true;
|
3990 |
+
var watcher = new Watcher(vm, expOrFn, cb, options);
|
3991 |
+
if (options.immediate) {
|
3992 |
+
cb.call(vm, watcher.value);
|
3993 |
+
}
|
3994 |
+
return function unwatchFn () {
|
3995 |
+
watcher.teardown();
|
3996 |
+
}
|
3997 |
+
};
|
3998 |
+
}
|
3999 |
+
|
4000 |
+
/* */
|
4001 |
+
|
4002 |
+
function initProvide (vm) {
|
4003 |
+
var provide = vm.$options.provide;
|
4004 |
+
if (provide) {
|
4005 |
+
vm._provided = typeof provide === 'function'
|
4006 |
+
? provide.call(vm)
|
4007 |
+
: provide;
|
4008 |
+
}
|
4009 |
+
}
|
4010 |
+
|
4011 |
+
function initInjections (vm) {
|
4012 |
+
var result = resolveInject(vm.$options.inject, vm);
|
4013 |
+
if (result) {
|
4014 |
+
toggleObserving(false);
|
4015 |
+
Object.keys(result).forEach(function (key) {
|
4016 |
+
/* istanbul ignore else */
|
4017 |
+
if (process.env.NODE_ENV !== 'production') {
|
4018 |
+
defineReactive(vm, key, result[key], function () {
|
4019 |
+
warn(
|
4020 |
+
"Avoid mutating an injected value directly since the changes will be " +
|
4021 |
+
"overwritten whenever the provided component re-renders. " +
|
4022 |
+
"injection being mutated: \"" + key + "\"",
|
4023 |
+
vm
|
4024 |
+
);
|
4025 |
+
});
|
4026 |
+
} else {
|
4027 |
+
defineReactive(vm, key, result[key]);
|
4028 |
+
}
|
4029 |
+
});
|
4030 |
+
toggleObserving(true);
|
4031 |
+
}
|
4032 |
+
}
|
4033 |
+
|
4034 |
+
function resolveInject (inject, vm) {
|
4035 |
+
if (inject) {
|
4036 |
+
// inject is :any because flow is not smart enough to figure out cached
|
4037 |
+
var result = Object.create(null);
|
4038 |
+
var keys = hasSymbol
|
4039 |
+
? Reflect.ownKeys(inject).filter(function (key) {
|
4040 |
+
/* istanbul ignore next */
|
4041 |
+
return Object.getOwnPropertyDescriptor(inject, key).enumerable
|
4042 |
+
})
|
4043 |
+
: Object.keys(inject);
|
4044 |
+
|
4045 |
+
for (var i = 0; i < keys.length; i++) {
|
4046 |
+
var key = keys[i];
|
4047 |
+
var provideKey = inject[key].from;
|
4048 |
+
var source = vm;
|
4049 |
+
while (source) {
|
4050 |
+
if (source._provided && hasOwn(source._provided, provideKey)) {
|
4051 |
+
result[key] = source._provided[provideKey];
|
4052 |
+
break
|
4053 |
+
}
|
4054 |
+
source = source.$parent;
|
4055 |
+
}
|
4056 |
+
if (!source) {
|
4057 |
+
if ('default' in inject[key]) {
|
4058 |
+
var provideDefault = inject[key].default;
|
4059 |
+
result[key] = typeof provideDefault === 'function'
|
4060 |
+
? provideDefault.call(vm)
|
4061 |
+
: provideDefault;
|
4062 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
4063 |
+
warn(("Injection \"" + key + "\" not found"), vm);
|
4064 |
+
}
|
4065 |
+
}
|
4066 |
+
}
|
4067 |
+
return result
|
4068 |
+
}
|
4069 |
+
}
|
4070 |
+
|
4071 |
+
/* */
|
4072 |
+
|
4073 |
+
/**
|
4074 |
+
* Runtime helper for rendering v-for lists.
|
4075 |
+
*/
|
4076 |
+
function renderList (
|
4077 |
+
val,
|
4078 |
+
render
|
4079 |
+
) {
|
4080 |
+
var ret, i, l, keys, key;
|
4081 |
+
if (Array.isArray(val) || typeof val === 'string') {
|
4082 |
+
ret = new Array(val.length);
|
4083 |
+
for (i = 0, l = val.length; i < l; i++) {
|
4084 |
+
ret[i] = render(val[i], i);
|
4085 |
+
}
|
4086 |
+
} else if (typeof val === 'number') {
|
4087 |
+
ret = new Array(val);
|
4088 |
+
for (i = 0; i < val; i++) {
|
4089 |
+
ret[i] = render(i + 1, i);
|
4090 |
+
}
|
4091 |
+
} else if (isObject(val)) {
|
4092 |
+
keys = Object.keys(val);
|
4093 |
+
ret = new Array(keys.length);
|
4094 |
+
for (i = 0, l = keys.length; i < l; i++) {
|
4095 |
+
key = keys[i];
|
4096 |
+
ret[i] = render(val[key], key, i);
|
4097 |
+
}
|
4098 |
+
}
|
4099 |
+
if (isDef(ret)) {
|
4100 |
+
(ret)._isVList = true;
|
4101 |
+
}
|
4102 |
+
return ret
|
4103 |
+
}
|
4104 |
+
|
4105 |
+
/* */
|
4106 |
+
|
4107 |
+
/**
|
4108 |
+
* Runtime helper for rendering <slot>
|
4109 |
+
*/
|
4110 |
+
function renderSlot (
|
4111 |
+
name,
|
4112 |
+
fallback,
|
4113 |
+
props,
|
4114 |
+
bindObject
|
4115 |
+
) {
|
4116 |
+
var scopedSlotFn = this.$scopedSlots[name];
|
4117 |
+
var nodes;
|
4118 |
+
if (scopedSlotFn) { // scoped slot
|
4119 |
+
props = props || {};
|
4120 |
+
if (bindObject) {
|
4121 |
+
if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {
|
4122 |
+
warn(
|
4123 |
+
'slot v-bind without argument expects an Object',
|
4124 |
+
this
|
4125 |
+
);
|
4126 |
+
}
|
4127 |
+
props = extend(extend({}, bindObject), props);
|
4128 |
+
}
|
4129 |
+
nodes = scopedSlotFn(props) || fallback;
|
4130 |
+
} else {
|
4131 |
+
var slotNodes = this.$slots[name];
|
4132 |
+
// warn duplicate slot usage
|
4133 |
+
if (slotNodes) {
|
4134 |
+
if (process.env.NODE_ENV !== 'production' && slotNodes._rendered) {
|
4135 |
+
warn(
|
4136 |
+
"Duplicate presence of slot \"" + name + "\" found in the same render tree " +
|
4137 |
+
"- this will likely cause render errors.",
|
4138 |
+
this
|
4139 |
+
);
|
4140 |
+
}
|
4141 |
+
slotNodes._rendered = true;
|
4142 |
+
}
|
4143 |
+
nodes = slotNodes || fallback;
|
4144 |
+
}
|
4145 |
+
|
4146 |
+
var target = props && props.slot;
|
4147 |
+
if (target) {
|
4148 |
+
return this.$createElement('template', { slot: target }, nodes)
|
4149 |
+
} else {
|
4150 |
+
return nodes
|
4151 |
+
}
|
4152 |
+
}
|
4153 |
+
|
4154 |
+
/* */
|
4155 |
+
|
4156 |
+
/**
|
4157 |
+
* Runtime helper for resolving filters
|
4158 |
+
*/
|
4159 |
+
function resolveFilter (id) {
|
4160 |
+
return resolveAsset(this.$options, 'filters', id, true) || identity
|
4161 |
+
}
|
4162 |
+
|
4163 |
+
/* */
|
4164 |
+
|
4165 |
+
function isKeyNotMatch (expect, actual) {
|
4166 |
+
if (Array.isArray(expect)) {
|
4167 |
+
return expect.indexOf(actual) === -1
|
4168 |
+
} else {
|
4169 |
+
return expect !== actual
|
4170 |
+
}
|
4171 |
+
}
|
4172 |
+
|
4173 |
+
/**
|
4174 |
+
* Runtime helper for checking keyCodes from config.
|
4175 |
+
* exposed as Vue.prototype._k
|
4176 |
+
* passing in eventKeyName as last argument separately for backwards compat
|
4177 |
+
*/
|
4178 |
+
function checkKeyCodes (
|
4179 |
+
eventKeyCode,
|
4180 |
+
key,
|
4181 |
+
builtInKeyCode,
|
4182 |
+
eventKeyName,
|
4183 |
+
builtInKeyName
|
4184 |
+
) {
|
4185 |
+
var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
|
4186 |
+
if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
|
4187 |
+
return isKeyNotMatch(builtInKeyName, eventKeyName)
|
4188 |
+
} else if (mappedKeyCode) {
|
4189 |
+
return isKeyNotMatch(mappedKeyCode, eventKeyCode)
|
4190 |
+
} else if (eventKeyName) {
|
4191 |
+
return hyphenate(eventKeyName) !== key
|
4192 |
+
}
|
4193 |
+
}
|
4194 |
+
|
4195 |
+
/* */
|
4196 |
+
|
4197 |
+
/**
|
4198 |
+
* Runtime helper for merging v-bind="object" into a VNode's data.
|
4199 |
+
*/
|
4200 |
+
function bindObjectProps (
|
4201 |
+
data,
|
4202 |
+
tag,
|
4203 |
+
value,
|
4204 |
+
asProp,
|
4205 |
+
isSync
|
4206 |
+
) {
|
4207 |
+
if (value) {
|
4208 |
+
if (!isObject(value)) {
|
4209 |
+
process.env.NODE_ENV !== 'production' && warn(
|
4210 |
+
'v-bind without argument expects an Object or Array value',
|
4211 |
+
this
|
4212 |
+
);
|
4213 |
+
} else {
|
4214 |
+
if (Array.isArray(value)) {
|
4215 |
+
value = toObject(value);
|
4216 |
+
}
|
4217 |
+
var hash;
|
4218 |
+
var loop = function ( key ) {
|
4219 |
+
if (
|
4220 |
+
key === 'class' ||
|
4221 |
+
key === 'style' ||
|
4222 |
+
isReservedAttribute(key)
|
4223 |
+
) {
|
4224 |
+
hash = data;
|
4225 |
+
} else {
|
4226 |
+
var type = data.attrs && data.attrs.type;
|
4227 |
+
hash = asProp || config.mustUseProp(tag, type, key)
|
4228 |
+
? data.domProps || (data.domProps = {})
|
4229 |
+
: data.attrs || (data.attrs = {});
|
4230 |
+
}
|
4231 |
+
if (!(key in hash)) {
|
4232 |
+
hash[key] = value[key];
|
4233 |
+
|
4234 |
+
if (isSync) {
|
4235 |
+
var on = data.on || (data.on = {});
|
4236 |
+
on[("update:" + key)] = function ($event) {
|
4237 |
+
value[key] = $event;
|
4238 |
+
};
|
4239 |
+
}
|
4240 |
+
}
|
4241 |
+
};
|
4242 |
+
|
4243 |
+
for (var key in value) loop( key );
|
4244 |
+
}
|
4245 |
+
}
|
4246 |
+
return data
|
4247 |
+
}
|
4248 |
+
|
4249 |
+
/* */
|
4250 |
+
|
4251 |
+
/**
|
4252 |
+
* Runtime helper for rendering static trees.
|
4253 |
+
*/
|
4254 |
+
function renderStatic (
|
4255 |
+
index,
|
4256 |
+
isInFor
|
4257 |
+
) {
|
4258 |
+
var cached = this._staticTrees || (this._staticTrees = []);
|
4259 |
+
var tree = cached[index];
|
4260 |
+
// if has already-rendered static tree and not inside v-for,
|
4261 |
+
// we can reuse the same tree.
|
4262 |
+
if (tree && !isInFor) {
|
4263 |
+
return tree
|
4264 |
+
}
|
4265 |
+
// otherwise, render a fresh tree.
|
4266 |
+
tree = cached[index] = this.$options.staticRenderFns[index].call(
|
4267 |
+
this._renderProxy,
|
4268 |
+
null,
|
4269 |
+
this // for render fns generated for functional component templates
|
4270 |
+
);
|
4271 |
+
markStatic(tree, ("__static__" + index), false);
|
4272 |
+
return tree
|
4273 |
+
}
|
4274 |
+
|
4275 |
+
/**
|
4276 |
+
* Runtime helper for v-once.
|
4277 |
+
* Effectively it means marking the node as static with a unique key.
|
4278 |
+
*/
|
4279 |
+
function markOnce (
|
4280 |
+
tree,
|
4281 |
+
index,
|
4282 |
+
key
|
4283 |
+
) {
|
4284 |
+
markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
|
4285 |
+
return tree
|
4286 |
+
}
|
4287 |
+
|
4288 |
+
function markStatic (
|
4289 |
+
tree,
|
4290 |
+
key,
|
4291 |
+
isOnce
|
4292 |
+
) {
|
4293 |
+
if (Array.isArray(tree)) {
|
4294 |
+
for (var i = 0; i < tree.length; i++) {
|
4295 |
+
if (tree[i] && typeof tree[i] !== 'string') {
|
4296 |
+
markStaticNode(tree[i], (key + "_" + i), isOnce);
|
4297 |
+
}
|
4298 |
+
}
|
4299 |
+
} else {
|
4300 |
+
markStaticNode(tree, key, isOnce);
|
4301 |
+
}
|
4302 |
+
}
|
4303 |
+
|
4304 |
+
function markStaticNode (node, key, isOnce) {
|
4305 |
+
node.isStatic = true;
|
4306 |
+
node.key = key;
|
4307 |
+
node.isOnce = isOnce;
|
4308 |
+
}
|
4309 |
+
|
4310 |
+
/* */
|
4311 |
+
|
4312 |
+
function bindObjectListeners (data, value) {
|
4313 |
+
if (value) {
|
4314 |
+
if (!isPlainObject(value)) {
|
4315 |
+
process.env.NODE_ENV !== 'production' && warn(
|
4316 |
+
'v-on without argument expects an Object value',
|
4317 |
+
this
|
4318 |
+
);
|
4319 |
+
} else {
|
4320 |
+
var on = data.on = data.on ? extend({}, data.on) : {};
|
4321 |
+
for (var key in value) {
|
4322 |
+
var existing = on[key];
|
4323 |
+
var ours = value[key];
|
4324 |
+
on[key] = existing ? [].concat(existing, ours) : ours;
|
4325 |
+
}
|
4326 |
+
}
|
4327 |
+
}
|
4328 |
+
return data
|
4329 |
+
}
|
4330 |
+
|
4331 |
+
/* */
|
4332 |
+
|
4333 |
+
function installRenderHelpers (target) {
|
4334 |
+
target._o = markOnce;
|
4335 |
+
target._n = toNumber;
|
4336 |
+
target._s = toString;
|
4337 |
+
target._l = renderList;
|
4338 |
+
target._t = renderSlot;
|
4339 |
+
target._q = looseEqual;
|
4340 |
+
target._i = looseIndexOf;
|
4341 |
+
target._m = renderStatic;
|
4342 |
+
target._f = resolveFilter;
|
4343 |
+
target._k = checkKeyCodes;
|
4344 |
+
target._b = bindObjectProps;
|
4345 |
+
target._v = createTextVNode;
|
4346 |
+
target._e = createEmptyVNode;
|
4347 |
+
target._u = resolveScopedSlots;
|
4348 |
+
target._g = bindObjectListeners;
|
4349 |
+
}
|
4350 |
+
|
4351 |
+
/* */
|
4352 |
+
|
4353 |
+
function FunctionalRenderContext (
|
4354 |
+
data,
|
4355 |
+
props,
|
4356 |
+
children,
|
4357 |
+
parent,
|
4358 |
+
Ctor
|
4359 |
+
) {
|
4360 |
+
var options = Ctor.options;
|
4361 |
+
// ensure the createElement function in functional components
|
4362 |
+
// gets a unique context - this is necessary for correct named slot check
|
4363 |
+
var contextVm;
|
4364 |
+
if (hasOwn(parent, '_uid')) {
|
4365 |
+
contextVm = Object.create(parent);
|
4366 |
+
// $flow-disable-line
|
4367 |
+
contextVm._original = parent;
|
4368 |
+
} else {
|
4369 |
+
// the context vm passed in is a functional context as well.
|
4370 |
+
// in this case we want to make sure we are able to get a hold to the
|
4371 |
+
// real context instance.
|
4372 |
+
contextVm = parent;
|
4373 |
+
// $flow-disable-line
|
4374 |
+
parent = parent._original;
|
4375 |
+
}
|
4376 |
+
var isCompiled = isTrue(options._compiled);
|
4377 |
+
var needNormalization = !isCompiled;
|
4378 |
+
|
4379 |
+
this.data = data;
|
4380 |
+
this.props = props;
|
4381 |
+
this.children = children;
|
4382 |
+
this.parent = parent;
|
4383 |
+
this.listeners = data.on || emptyObject;
|
4384 |
+
this.injections = resolveInject(options.inject, parent);
|
4385 |
+
this.slots = function () { return resolveSlots(children, parent); };
|
4386 |
+
|
4387 |
+
// support for compiled functional template
|
4388 |
+
if (isCompiled) {
|
4389 |
+
// exposing $options for renderStatic()
|
4390 |
+
this.$options = options;
|
4391 |
+
// pre-resolve slots for renderSlot()
|
4392 |
+
this.$slots = this.slots();
|
4393 |
+
this.$scopedSlots = data.scopedSlots || emptyObject;
|
4394 |
+
}
|
4395 |
+
|
4396 |
+
if (options._scopeId) {
|
4397 |
+
this._c = function (a, b, c, d) {
|
4398 |
+
var vnode = createElement(contextVm, a, b, c, d, needNormalization);
|
4399 |
+
if (vnode && !Array.isArray(vnode)) {
|
4400 |
+
vnode.fnScopeId = options._scopeId;
|
4401 |
+
vnode.fnContext = parent;
|
4402 |
+
}
|
4403 |
+
return vnode
|
4404 |
+
};
|
4405 |
+
} else {
|
4406 |
+
this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
|
4407 |
+
}
|
4408 |
+
}
|
4409 |
+
|
4410 |
+
installRenderHelpers(FunctionalRenderContext.prototype);
|
4411 |
+
|
4412 |
+
function createFunctionalComponent (
|
4413 |
+
Ctor,
|
4414 |
+
propsData,
|
4415 |
+
data,
|
4416 |
+
contextVm,
|
4417 |
+
children
|
4418 |
+
) {
|
4419 |
+
var options = Ctor.options;
|
4420 |
+
var props = {};
|
4421 |
+
var propOptions = options.props;
|
4422 |
+
if (isDef(propOptions)) {
|
4423 |
+
for (var key in propOptions) {
|
4424 |
+
props[key] = validateProp(key, propOptions, propsData || emptyObject);
|
4425 |
+
}
|
4426 |
+
} else {
|
4427 |
+
if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
|
4428 |
+
if (isDef(data.props)) { mergeProps(props, data.props); }
|
4429 |
+
}
|
4430 |
+
|
4431 |
+
var renderContext = new FunctionalRenderContext(
|
4432 |
+
data,
|
4433 |
+
props,
|
4434 |
+
children,
|
4435 |
+
contextVm,
|
4436 |
+
Ctor
|
4437 |
+
);
|
4438 |
+
|
4439 |
+
var vnode = options.render.call(null, renderContext._c, renderContext);
|
4440 |
+
|
4441 |
+
if (vnode instanceof VNode) {
|
4442 |
+
return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)
|
4443 |
+
} else if (Array.isArray(vnode)) {
|
4444 |
+
var vnodes = normalizeChildren(vnode) || [];
|
4445 |
+
var res = new Array(vnodes.length);
|
4446 |
+
for (var i = 0; i < vnodes.length; i++) {
|
4447 |
+
res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);
|
4448 |
+
}
|
4449 |
+
return res
|
4450 |
+
}
|
4451 |
+
}
|
4452 |
+
|
4453 |
+
function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {
|
4454 |
+
// #7817 clone node before setting fnContext, otherwise if the node is reused
|
4455 |
+
// (e.g. it was from a cached normal slot) the fnContext causes named slots
|
4456 |
+
// that should not be matched to match.
|
4457 |
+
var clone = cloneVNode(vnode);
|
4458 |
+
clone.fnContext = contextVm;
|
4459 |
+
clone.fnOptions = options;
|
4460 |
+
if (data.slot) {
|
4461 |
+
(clone.data || (clone.data = {})).slot = data.slot;
|
4462 |
+
}
|
4463 |
+
return clone
|
4464 |
+
}
|
4465 |
+
|
4466 |
+
function mergeProps (to, from) {
|
4467 |
+
for (var key in from) {
|
4468 |
+
to[camelize(key)] = from[key];
|
4469 |
+
}
|
4470 |
+
}
|
4471 |
+
|
4472 |
+
/* */
|
4473 |
+
|
4474 |
+
|
4475 |
+
|
4476 |
+
|
4477 |
+
// Register the component hook to weex native render engine.
|
4478 |
+
// The hook will be triggered by native, not javascript.
|
4479 |
+
|
4480 |
+
|
4481 |
+
// Updates the state of the component to weex native render engine.
|
4482 |
+
|
4483 |
+
/* */
|
4484 |
+
|
4485 |
+
// https://github.com/Hanks10100/weex-native-directive/tree/master/component
|
4486 |
+
|
4487 |
+
// listening on native callback
|
4488 |
+
|
4489 |
+
/* */
|
4490 |
+
|
4491 |
+
/* */
|
4492 |
+
|
4493 |
+
// inline hooks to be invoked on component VNodes during patch
|
4494 |
+
var componentVNodeHooks = {
|
4495 |
+
init: function init (
|
4496 |
+
vnode,
|
4497 |
+
hydrating,
|
4498 |
+
parentElm,
|
4499 |
+
refElm
|
4500 |
+
) {
|
4501 |
+
if (
|
4502 |
+
vnode.componentInstance &&
|
4503 |
+
!vnode.componentInstance._isDestroyed &&
|
4504 |
+
vnode.data.keepAlive
|
4505 |
+
) {
|
4506 |
+
// kept-alive components, treat as a patch
|
4507 |
+
var mountedNode = vnode; // work around flow
|
4508 |
+
componentVNodeHooks.prepatch(mountedNode, mountedNode);
|
4509 |
+
} else {
|
4510 |
+
var child = vnode.componentInstance = createComponentInstanceForVnode(
|
4511 |
+
vnode,
|
4512 |
+
activeInstance,
|
4513 |
+
parentElm,
|
4514 |
+
refElm
|
4515 |
+
);
|
4516 |
+
child.$mount(hydrating ? vnode.elm : undefined, hydrating);
|
4517 |
+
}
|
4518 |
+
},
|
4519 |
+
|
4520 |
+
prepatch: function prepatch (oldVnode, vnode) {
|
4521 |
+
var options = vnode.componentOptions;
|
4522 |
+
var child = vnode.componentInstance = oldVnode.componentInstance;
|
4523 |
+
updateChildComponent(
|
4524 |
+
child,
|
4525 |
+
options.propsData, // updated props
|
4526 |
+
options.listeners, // updated listeners
|
4527 |
+
vnode, // new parent vnode
|
4528 |
+
options.children // new children
|
4529 |
+
);
|
4530 |
+
},
|
4531 |
+
|
4532 |
+
insert: function insert (vnode) {
|
4533 |
+
var context = vnode.context;
|
4534 |
+
var componentInstance = vnode.componentInstance;
|
4535 |
+
if (!componentInstance._isMounted) {
|
4536 |
+
componentInstance._isMounted = true;
|
4537 |
+
callHook(componentInstance, 'mounted');
|
4538 |
+
}
|
4539 |
+
if (vnode.data.keepAlive) {
|
4540 |
+
if (context._isMounted) {
|
4541 |
+
// vue-router#1212
|
4542 |
+
// During updates, a kept-alive component's child components may
|
4543 |
+
// change, so directly walking the tree here may call activated hooks
|
4544 |
+
// on incorrect children. Instead we push them into a queue which will
|
4545 |
+
// be processed after the whole patch process ended.
|
4546 |
+
queueActivatedComponent(componentInstance);
|
4547 |
+
} else {
|
4548 |
+
activateChildComponent(componentInstance, true /* direct */);
|
4549 |
+
}
|
4550 |
+
}
|
4551 |
+
},
|
4552 |
+
|
4553 |
+
destroy: function destroy (vnode) {
|
4554 |
+
var componentInstance = vnode.componentInstance;
|
4555 |
+
if (!componentInstance._isDestroyed) {
|
4556 |
+
if (!vnode.data.keepAlive) {
|
4557 |
+
componentInstance.$destroy();
|
4558 |
+
} else {
|
4559 |
+
deactivateChildComponent(componentInstance, true /* direct */);
|
4560 |
+
}
|
4561 |
+
}
|
4562 |
+
}
|
4563 |
+
};
|
4564 |
+
|
4565 |
+
var hooksToMerge = Object.keys(componentVNodeHooks);
|
4566 |
+
|
4567 |
+
function createComponent (
|
4568 |
+
Ctor,
|
4569 |
+
data,
|
4570 |
+
context,
|
4571 |
+
children,
|
4572 |
+
tag
|
4573 |
+
) {
|
4574 |
+
if (isUndef(Ctor)) {
|
4575 |
+
return
|
4576 |
+
}
|
4577 |
+
|
4578 |
+
var baseCtor = context.$options._base;
|
4579 |
+
|
4580 |
+
// plain options object: turn it into a constructor
|
4581 |
+
if (isObject(Ctor)) {
|
4582 |
+
Ctor = baseCtor.extend(Ctor);
|
4583 |
+
}
|
4584 |
+
|
4585 |
+
// if at this stage it's not a constructor or an async component factory,
|
4586 |
+
// reject.
|
4587 |
+
if (typeof Ctor !== 'function') {
|
4588 |
+
if (process.env.NODE_ENV !== 'production') {
|
4589 |
+
warn(("Invalid Component definition: " + (String(Ctor))), context);
|
4590 |
+
}
|
4591 |
+
return
|
4592 |
+
}
|
4593 |
+
|
4594 |
+
// async component
|
4595 |
+
var asyncFactory;
|
4596 |
+
if (isUndef(Ctor.cid)) {
|
4597 |
+
asyncFactory = Ctor;
|
4598 |
+
Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);
|
4599 |
+
if (Ctor === undefined) {
|
4600 |
+
// return a placeholder node for async component, which is rendered
|
4601 |
+
// as a comment node but preserves all the raw information for the node.
|
4602 |
+
// the information will be used for async server-rendering and hydration.
|
4603 |
+
return createAsyncPlaceholder(
|
4604 |
+
asyncFactory,
|
4605 |
+
data,
|
4606 |
+
context,
|
4607 |
+
children,
|
4608 |
+
tag
|
4609 |
+
)
|
4610 |
+
}
|
4611 |
+
}
|
4612 |
+
|
4613 |
+
data = data || {};
|
4614 |
+
|
4615 |
+
// resolve constructor options in case global mixins are applied after
|
4616 |
+
// component constructor creation
|
4617 |
+
resolveConstructorOptions(Ctor);
|
4618 |
+
|
4619 |
+
// transform component v-model data into props & events
|
4620 |
+
if (isDef(data.model)) {
|
4621 |
+
transformModel(Ctor.options, data);
|
4622 |
+
}
|
4623 |
+
|
4624 |
+
// extract props
|
4625 |
+
var propsData = extractPropsFromVNodeData(data, Ctor, tag);
|
4626 |
+
|
4627 |
+
// functional component
|
4628 |
+
if (isTrue(Ctor.options.functional)) {
|
4629 |
+
return createFunctionalComponent(Ctor, propsData, data, context, children)
|
4630 |
+
}
|
4631 |
+
|
4632 |
+
// extract listeners, since these needs to be treated as
|
4633 |
+
// child component listeners instead of DOM listeners
|
4634 |
+
var listeners = data.on;
|
4635 |
+
// replace with listeners with .native modifier
|
4636 |
+
// so it gets processed during parent component patch.
|
4637 |
+
data.on = data.nativeOn;
|
4638 |
+
|
4639 |
+
if (isTrue(Ctor.options.abstract)) {
|
4640 |
+
// abstract components do not keep anything
|
4641 |
+
// other than props & listeners & slot
|
4642 |
+
|
4643 |
+
// work around flow
|
4644 |
+
var slot = data.slot;
|
4645 |
+
data = {};
|
4646 |
+
if (slot) {
|
4647 |
+
data.slot = slot;
|
4648 |
+
}
|
4649 |
+
}
|
4650 |
+
|
4651 |
+
// install component management hooks onto the placeholder node
|
4652 |
+
installComponentHooks(data);
|
4653 |
+
|
4654 |
+
// return a placeholder vnode
|
4655 |
+
var name = Ctor.options.name || tag;
|
4656 |
+
var vnode = new VNode(
|
4657 |
+
("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
|
4658 |
+
data, undefined, undefined, undefined, context,
|
4659 |
+
{ Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
|
4660 |
+
asyncFactory
|
4661 |
+
);
|
4662 |
+
|
4663 |
+
// Weex specific: invoke recycle-list optimized @render function for
|
4664 |
+
// extracting cell-slot template.
|
4665 |
+
// https://github.com/Hanks10100/weex-native-directive/tree/master/component
|
4666 |
+
/* istanbul ignore if */
|
4667 |
+
return vnode
|
4668 |
+
}
|
4669 |
+
|
4670 |
+
function createComponentInstanceForVnode (
|
4671 |
+
vnode, // we know it's MountedComponentVNode but flow doesn't
|
4672 |
+
parent, // activeInstance in lifecycle state
|
4673 |
+
parentElm,
|
4674 |
+
refElm
|
4675 |
+
) {
|
4676 |
+
var options = {
|
4677 |
+
_isComponent: true,
|
4678 |
+
parent: parent,
|
4679 |
+
_parentVnode: vnode,
|
4680 |
+
_parentElm: parentElm || null,
|
4681 |
+
_refElm: refElm || null
|
4682 |
+
};
|
4683 |
+
// check inline-template render functions
|
4684 |
+
var inlineTemplate = vnode.data.inlineTemplate;
|
4685 |
+
if (isDef(inlineTemplate)) {
|
4686 |
+
options.render = inlineTemplate.render;
|
4687 |
+
options.staticRenderFns = inlineTemplate.staticRenderFns;
|
4688 |
+
}
|
4689 |
+
return new vnode.componentOptions.Ctor(options)
|
4690 |
+
}
|
4691 |
+
|
4692 |
+
function installComponentHooks (data) {
|
4693 |
+
var hooks = data.hook || (data.hook = {});
|
4694 |
+
for (var i = 0; i < hooksToMerge.length; i++) {
|
4695 |
+
var key = hooksToMerge[i];
|
4696 |
+
hooks[key] = componentVNodeHooks[key];
|
4697 |
+
}
|
4698 |
+
}
|
4699 |
+
|
4700 |
+
// transform component v-model info (value and callback) into
|
4701 |
+
// prop and event handler respectively.
|
4702 |
+
function transformModel (options, data) {
|
4703 |
+
var prop = (options.model && options.model.prop) || 'value';
|
4704 |
+
var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;
|
4705 |
+
var on = data.on || (data.on = {});
|
4706 |
+
if (isDef(on[event])) {
|
4707 |
+
on[event] = [data.model.callback].concat(on[event]);
|
4708 |
+
} else {
|
4709 |
+
on[event] = data.model.callback;
|
4710 |
+
}
|
4711 |
+
}
|
4712 |
+
|
4713 |
+
/* */
|
4714 |
+
|
4715 |
+
var SIMPLE_NORMALIZE = 1;
|
4716 |
+
var ALWAYS_NORMALIZE = 2;
|
4717 |
+
|
4718 |
+
// wrapper function for providing a more flexible interface
|
4719 |
+
// without getting yelled at by flow
|
4720 |
+
function createElement (
|
4721 |
+
context,
|
4722 |
+
tag,
|
4723 |
+
data,
|
4724 |
+
children,
|
4725 |
+
normalizationType,
|
4726 |
+
alwaysNormalize
|
4727 |
+
) {
|
4728 |
+
if (Array.isArray(data) || isPrimitive(data)) {
|
4729 |
+
normalizationType = children;
|
4730 |
+
children = data;
|
4731 |
+
data = undefined;
|
4732 |
+
}
|
4733 |
+
if (isTrue(alwaysNormalize)) {
|
4734 |
+
normalizationType = ALWAYS_NORMALIZE;
|
4735 |
+
}
|
4736 |
+
return _createElement(context, tag, data, children, normalizationType)
|
4737 |
+
}
|
4738 |
+
|
4739 |
+
function _createElement (
|
4740 |
+
context,
|
4741 |
+
tag,
|
4742 |
+
data,
|
4743 |
+
children,
|
4744 |
+
normalizationType
|
4745 |
+
) {
|
4746 |
+
if (isDef(data) && isDef((data).__ob__)) {
|
4747 |
+
process.env.NODE_ENV !== 'production' && warn(
|
4748 |
+
"Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
|
4749 |
+
'Always create fresh vnode data objects in each render!',
|
4750 |
+
context
|
4751 |
+
);
|
4752 |
+
return createEmptyVNode()
|
4753 |
+
}
|
4754 |
+
// object syntax in v-bind
|
4755 |
+
if (isDef(data) && isDef(data.is)) {
|
4756 |
+
tag = data.is;
|
4757 |
+
}
|
4758 |
+
if (!tag) {
|
4759 |
+
// in case of component :is set to falsy value
|
4760 |
+
return createEmptyVNode()
|
4761 |
+
}
|
4762 |
+
// warn against non-primitive key
|
4763 |
+
if (process.env.NODE_ENV !== 'production' &&
|
4764 |
+
isDef(data) && isDef(data.key) && !isPrimitive(data.key)
|
4765 |
+
) {
|
4766 |
+
{
|
4767 |
+
warn(
|
4768 |
+
'Avoid using non-primitive value as key, ' +
|
4769 |
+
'use string/number value instead.',
|
4770 |
+
context
|
4771 |
+
);
|
4772 |
+
}
|
4773 |
+
}
|
4774 |
+
// support single function children as default scoped slot
|
4775 |
+
if (Array.isArray(children) &&
|
4776 |
+
typeof children[0] === 'function'
|
4777 |
+
) {
|
4778 |
+
data = data || {};
|
4779 |
+
data.scopedSlots = { default: children[0] };
|
4780 |
+
children.length = 0;
|
4781 |
+
}
|
4782 |
+
if (normalizationType === ALWAYS_NORMALIZE) {
|
4783 |
+
children = normalizeChildren(children);
|
4784 |
+
} else if (normalizationType === SIMPLE_NORMALIZE) {
|
4785 |
+
children = simpleNormalizeChildren(children);
|
4786 |
+
}
|
4787 |
+
var vnode, ns;
|
4788 |
+
if (typeof tag === 'string') {
|
4789 |
+
var Ctor;
|
4790 |
+
ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
|
4791 |
+
if (config.isReservedTag(tag)) {
|
4792 |
+
// platform built-in elements
|
4793 |
+
vnode = new VNode(
|
4794 |
+
config.parsePlatformTagName(tag), data, children,
|
4795 |
+
undefined, undefined, context
|
4796 |
+
);
|
4797 |
+
} else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
|
4798 |
+
// component
|
4799 |
+
vnode = createComponent(Ctor, data, context, children, tag);
|
4800 |
+
} else {
|
4801 |
+
// unknown or unlisted namespaced elements
|
4802 |
+
// check at runtime because it may get assigned a namespace when its
|
4803 |
+
// parent normalizes children
|
4804 |
+
vnode = new VNode(
|
4805 |
+
tag, data, children,
|
4806 |
+
undefined, undefined, context
|
4807 |
+
);
|
4808 |
+
}
|
4809 |
+
} else {
|
4810 |
+
// direct component options / constructor
|
4811 |
+
vnode = createComponent(tag, data, context, children);
|
4812 |
+
}
|
4813 |
+
if (Array.isArray(vnode)) {
|
4814 |
+
return vnode
|
4815 |
+
} else if (isDef(vnode)) {
|
4816 |
+
if (isDef(ns)) { applyNS(vnode, ns); }
|
4817 |
+
if (isDef(data)) { registerDeepBindings(data); }
|
4818 |
+
return vnode
|
4819 |
+
} else {
|
4820 |
+
return createEmptyVNode()
|
4821 |
+
}
|
4822 |
+
}
|
4823 |
+
|
4824 |
+
function applyNS (vnode, ns, force) {
|
4825 |
+
vnode.ns = ns;
|
4826 |
+
if (vnode.tag === 'foreignObject') {
|
4827 |
+
// use default namespace inside foreignObject
|
4828 |
+
ns = undefined;
|
4829 |
+
force = true;
|
4830 |
+
}
|
4831 |
+
if (isDef(vnode.children)) {
|
4832 |
+
for (var i = 0, l = vnode.children.length; i < l; i++) {
|
4833 |
+
var child = vnode.children[i];
|
4834 |
+
if (isDef(child.tag) && (
|
4835 |
+
isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
|
4836 |
+
applyNS(child, ns, force);
|
4837 |
+
}
|
4838 |
+
}
|
4839 |
+
}
|
4840 |
+
}
|
4841 |
+
|
4842 |
+
// ref #5318
|
4843 |
+
// necessary to ensure parent re-render when deep bindings like :style and
|
4844 |
+
// :class are used on slot nodes
|
4845 |
+
function registerDeepBindings (data) {
|
4846 |
+
if (isObject(data.style)) {
|
4847 |
+
traverse(data.style);
|
4848 |
+
}
|
4849 |
+
if (isObject(data.class)) {
|
4850 |
+
traverse(data.class);
|
4851 |
+
}
|
4852 |
+
}
|
4853 |
+
|
4854 |
+
/* */
|
4855 |
+
|
4856 |
+
function initRender (vm) {
|
4857 |
+
vm._vnode = null; // the root of the child tree
|
4858 |
+
vm._staticTrees = null; // v-once cached trees
|
4859 |
+
var options = vm.$options;
|
4860 |
+
var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
|
4861 |
+
var renderContext = parentVnode && parentVnode.context;
|
4862 |
+
vm.$slots = resolveSlots(options._renderChildren, renderContext);
|
4863 |
+
vm.$scopedSlots = emptyObject;
|
4864 |
+
// bind the createElement fn to this instance
|
4865 |
+
// so that we get proper render context inside it.
|
4866 |
+
// args order: tag, data, children, normalizationType, alwaysNormalize
|
4867 |
+
// internal version is used by render functions compiled from templates
|
4868 |
+
vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
|
4869 |
+
// normalization is always applied for the public version, used in
|
4870 |
+
// user-written render functions.
|
4871 |
+
vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
|
4872 |
+
|
4873 |
+
// $attrs & $listeners are exposed for easier HOC creation.
|
4874 |
+
// they need to be reactive so that HOCs using them are always updated
|
4875 |
+
var parentData = parentVnode && parentVnode.data;
|
4876 |
+
|
4877 |
+
/* istanbul ignore else */
|
4878 |
+
if (process.env.NODE_ENV !== 'production') {
|
4879 |
+
defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
|
4880 |
+
!isUpdatingChildComponent && warn("$attrs is readonly.", vm);
|
4881 |
+
}, true);
|
4882 |
+
defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {
|
4883 |
+
!isUpdatingChildComponent && warn("$listeners is readonly.", vm);
|
4884 |
+
}, true);
|
4885 |
+
} else {
|
4886 |
+
defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);
|
4887 |
+
defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);
|
4888 |
+
}
|
4889 |
+
}
|
4890 |
+
|
4891 |
+
function renderMixin (Vue) {
|
4892 |
+
// install runtime convenience helpers
|
4893 |
+
installRenderHelpers(Vue.prototype);
|
4894 |
+
|
4895 |
+
Vue.prototype.$nextTick = function (fn) {
|
4896 |
+
return nextTick(fn, this)
|
4897 |
+
};
|
4898 |
+
|
4899 |
+
Vue.prototype._render = function () {
|
4900 |
+
var vm = this;
|
4901 |
+
var ref = vm.$options;
|
4902 |
+
var render = ref.render;
|
4903 |
+
var _parentVnode = ref._parentVnode;
|
4904 |
+
|
4905 |
+
// reset _rendered flag on slots for duplicate slot check
|
4906 |
+
if (process.env.NODE_ENV !== 'production') {
|
4907 |
+
for (var key in vm.$slots) {
|
4908 |
+
// $flow-disable-line
|
4909 |
+
vm.$slots[key]._rendered = false;
|
4910 |
+
}
|
4911 |
+
}
|
4912 |
+
|
4913 |
+
if (_parentVnode) {
|
4914 |
+
vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;
|
4915 |
+
}
|
4916 |
+
|
4917 |
+
// set parent vnode. this allows render functions to have access
|
4918 |
+
// to the data on the placeholder node.
|
4919 |
+
vm.$vnode = _parentVnode;
|
4920 |
+
// render self
|
4921 |
+
var vnode;
|
4922 |
+
try {
|
4923 |
+
vnode = render.call(vm._renderProxy, vm.$createElement);
|
4924 |
+
} catch (e) {
|
4925 |
+
handleError(e, vm, "render");
|
4926 |
+
// return error render result,
|
4927 |
+
// or previous vnode to prevent render error causing blank component
|
4928 |
+
/* istanbul ignore else */
|
4929 |
+
if (process.env.NODE_ENV !== 'production') {
|
4930 |
+
if (vm.$options.renderError) {
|
4931 |
+
try {
|
4932 |
+
vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
|
4933 |
+
} catch (e) {
|
4934 |
+
handleError(e, vm, "renderError");
|
4935 |
+
vnode = vm._vnode;
|
4936 |
+
}
|
4937 |
+
} else {
|
4938 |
+
vnode = vm._vnode;
|
4939 |
+
}
|
4940 |
+
} else {
|
4941 |
+
vnode = vm._vnode;
|
4942 |
+
}
|
4943 |
+
}
|
4944 |
+
// return empty vnode in case the render function errored out
|
4945 |
+
if (!(vnode instanceof VNode)) {
|
4946 |
+
if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {
|
4947 |
+
warn(
|
4948 |
+
'Multiple root nodes returned from render function. Render function ' +
|
4949 |
+
'should return a single root node.',
|
4950 |
+
vm
|
4951 |
+
);
|
4952 |
+
}
|
4953 |
+
vnode = createEmptyVNode();
|
4954 |
+
}
|
4955 |
+
// set parent
|
4956 |
+
vnode.parent = _parentVnode;
|
4957 |
+
return vnode
|
4958 |
+
};
|
4959 |
+
}
|
4960 |
+
|
4961 |
+
/* */
|
4962 |
+
|
4963 |
+
var uid$3 = 0;
|
4964 |
+
|
4965 |
+
function initMixin (Vue) {
|
4966 |
+
Vue.prototype._init = function (options) {
|
4967 |
+
var vm = this;
|
4968 |
+
// a uid
|
4969 |
+
vm._uid = uid$3++;
|
4970 |
+
|
4971 |
+
var startTag, endTag;
|
4972 |
+
/* istanbul ignore if */
|
4973 |
+
if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
|
4974 |
+
startTag = "vue-perf-start:" + (vm._uid);
|
4975 |
+
endTag = "vue-perf-end:" + (vm._uid);
|
4976 |
+
mark(startTag);
|
4977 |
+
}
|
4978 |
+
|
4979 |
+
// a flag to avoid this being observed
|
4980 |
+
vm._isVue = true;
|
4981 |
+
// merge options
|
4982 |
+
if (options && options._isComponent) {
|
4983 |
+
// optimize internal component instantiation
|
4984 |
+
// since dynamic options merging is pretty slow, and none of the
|
4985 |
+
// internal component options needs special treatment.
|
4986 |
+
initInternalComponent(vm, options);
|
4987 |
+
} else {
|
4988 |
+
vm.$options = mergeOptions(
|
4989 |
+
resolveConstructorOptions(vm.constructor),
|
4990 |
+
options || {},
|
4991 |
+
vm
|
4992 |
+
);
|
4993 |
+
}
|
4994 |
+
/* istanbul ignore else */
|
4995 |
+
if (process.env.NODE_ENV !== 'production') {
|
4996 |
+
initProxy(vm);
|
4997 |
+
} else {
|
4998 |
+
vm._renderProxy = vm;
|
4999 |
+
}
|
5000 |
+
// expose real self
|
5001 |
+
vm._self = vm;
|
5002 |
+
initLifecycle(vm);
|
5003 |
+
initEvents(vm);
|
5004 |
+
initRender(vm);
|
5005 |
+
callHook(vm, 'beforeCreate');
|
5006 |
+
initInjections(vm); // resolve injections before data/props
|
5007 |
+
initState(vm);
|
5008 |
+
initProvide(vm); // resolve provide after data/props
|
5009 |
+
callHook(vm, 'created');
|
5010 |
+
|
5011 |
+
/* istanbul ignore if */
|
5012 |
+
if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
|
5013 |
+
vm._name = formatComponentName(vm, false);
|
5014 |
+
mark(endTag);
|
5015 |
+
measure(("vue " + (vm._name) + " init"), startTag, endTag);
|
5016 |
+
}
|
5017 |
+
|
5018 |
+
if (vm.$options.el) {
|
5019 |
+
vm.$mount(vm.$options.el);
|
5020 |
+
}
|
5021 |
+
};
|
5022 |
+
}
|
5023 |
+
|
5024 |
+
function initInternalComponent (vm, options) {
|
5025 |
+
var opts = vm.$options = Object.create(vm.constructor.options);
|
5026 |
+
// doing this because it's faster than dynamic enumeration.
|
5027 |
+
var parentVnode = options._parentVnode;
|
5028 |
+
opts.parent = options.parent;
|
5029 |
+
opts._parentVnode = parentVnode;
|
5030 |
+
opts._parentElm = options._parentElm;
|
5031 |
+
opts._refElm = options._refElm;
|
5032 |
+
|
5033 |
+
var vnodeComponentOptions = parentVnode.componentOptions;
|
5034 |
+
opts.propsData = vnodeComponentOptions.propsData;
|
5035 |
+
opts._parentListeners = vnodeComponentOptions.listeners;
|
5036 |
+
opts._renderChildren = vnodeComponentOptions.children;
|
5037 |
+
opts._componentTag = vnodeComponentOptions.tag;
|
5038 |
+
|
5039 |
+
if (options.render) {
|
5040 |
+
opts.render = options.render;
|
5041 |
+
opts.staticRenderFns = options.staticRenderFns;
|
5042 |
+
}
|
5043 |
+
}
|
5044 |
+
|
5045 |
+
function resolveConstructorOptions (Ctor) {
|
5046 |
+
var options = Ctor.options;
|
5047 |
+
if (Ctor.super) {
|
5048 |
+
var superOptions = resolveConstructorOptions(Ctor.super);
|
5049 |
+
var cachedSuperOptions = Ctor.superOptions;
|
5050 |
+
if (superOptions !== cachedSuperOptions) {
|
5051 |
+
// super option changed,
|
5052 |
+
// need to resolve new options.
|
5053 |
+
Ctor.superOptions = superOptions;
|
5054 |
+
// check if there are any late-modified/attached options (#4976)
|
5055 |
+
var modifiedOptions = resolveModifiedOptions(Ctor);
|
5056 |
+
// update base extend options
|
5057 |
+
if (modifiedOptions) {
|
5058 |
+
extend(Ctor.extendOptions, modifiedOptions);
|
5059 |
+
}
|
5060 |
+
options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
|
5061 |
+
if (options.name) {
|
5062 |
+
options.components[options.name] = Ctor;
|
5063 |
+
}
|
5064 |
+
}
|
5065 |
+
}
|
5066 |
+
return options
|
5067 |
+
}
|
5068 |
+
|
5069 |
+
function resolveModifiedOptions (Ctor) {
|
5070 |
+
var modified;
|
5071 |
+
var latest = Ctor.options;
|
5072 |
+
var extended = Ctor.extendOptions;
|
5073 |
+
var sealed = Ctor.sealedOptions;
|
5074 |
+
for (var key in latest) {
|
5075 |
+
if (latest[key] !== sealed[key]) {
|
5076 |
+
if (!modified) { modified = {}; }
|
5077 |
+
modified[key] = dedupe(latest[key], extended[key], sealed[key]);
|
5078 |
+
}
|
5079 |
+
}
|
5080 |
+
return modified
|
5081 |
+
}
|
5082 |
+
|
5083 |
+
function dedupe (latest, extended, sealed) {
|
5084 |
+
// compare latest and sealed to ensure lifecycle hooks won't be duplicated
|
5085 |
+
// between merges
|
5086 |
+
if (Array.isArray(latest)) {
|
5087 |
+
var res = [];
|
5088 |
+
sealed = Array.isArray(sealed) ? sealed : [sealed];
|
5089 |
+
extended = Array.isArray(extended) ? extended : [extended];
|
5090 |
+
for (var i = 0; i < latest.length; i++) {
|
5091 |
+
// push original options and not sealed options to exclude duplicated options
|
5092 |
+
if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {
|
5093 |
+
res.push(latest[i]);
|
5094 |
+
}
|
5095 |
+
}
|
5096 |
+
return res
|
5097 |
+
} else {
|
5098 |
+
return latest
|
5099 |
+
}
|
5100 |
+
}
|
5101 |
+
|
5102 |
+
function Vue (options) {
|
5103 |
+
if (process.env.NODE_ENV !== 'production' &&
|
5104 |
+
!(this instanceof Vue)
|
5105 |
+
) {
|
5106 |
+
warn('Vue is a constructor and should be called with the `new` keyword');
|
5107 |
+
}
|
5108 |
+
this._init(options);
|
5109 |
+
}
|
5110 |
+
|
5111 |
+
initMixin(Vue);
|
5112 |
+
stateMixin(Vue);
|
5113 |
+
eventsMixin(Vue);
|
5114 |
+
lifecycleMixin(Vue);
|
5115 |
+
renderMixin(Vue);
|
5116 |
+
|
5117 |
+
/* */
|
5118 |
+
|
5119 |
+
function initUse (Vue) {
|
5120 |
+
Vue.use = function (plugin) {
|
5121 |
+
var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
|
5122 |
+
if (installedPlugins.indexOf(plugin) > -1) {
|
5123 |
+
return this
|
5124 |
+
}
|
5125 |
+
|
5126 |
+
// additional parameters
|
5127 |
+
var args = toArray(arguments, 1);
|
5128 |
+
args.unshift(this);
|
5129 |
+
if (typeof plugin.install === 'function') {
|
5130 |
+
plugin.install.apply(plugin, args);
|
5131 |
+
} else if (typeof plugin === 'function') {
|
5132 |
+
plugin.apply(null, args);
|
5133 |
+
}
|
5134 |
+
installedPlugins.push(plugin);
|
5135 |
+
return this
|
5136 |
+
};
|
5137 |
+
}
|
5138 |
+
|
5139 |
+
/* */
|
5140 |
+
|
5141 |
+
function initMixin$1 (Vue) {
|
5142 |
+
Vue.mixin = function (mixin) {
|
5143 |
+
this.options = mergeOptions(this.options, mixin);
|
5144 |
+
return this
|
5145 |
+
};
|
5146 |
+
}
|
5147 |
+
|
5148 |
+
/* */
|
5149 |
+
|
5150 |
+
function initExtend (Vue) {
|
5151 |
+
/**
|
5152 |
+
* Each instance constructor, including Vue, has a unique
|
5153 |
+
* cid. This enables us to create wrapped "child
|
5154 |
+
* constructors" for prototypal inheritance and cache them.
|
5155 |
+
*/
|
5156 |
+
Vue.cid = 0;
|
5157 |
+
var cid = 1;
|
5158 |
+
|
5159 |
+
/**
|
5160 |
+
* Class inheritance
|
5161 |
+
*/
|
5162 |
+
Vue.extend = function (extendOptions) {
|
5163 |
+
extendOptions = extendOptions || {};
|
5164 |
+
var Super = this;
|
5165 |
+
var SuperId = Super.cid;
|
5166 |
+
var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
|
5167 |
+
if (cachedCtors[SuperId]) {
|
5168 |
+
return cachedCtors[SuperId]
|
5169 |
+
}
|
5170 |
+
|
5171 |
+
var name = extendOptions.name || Super.options.name;
|
5172 |
+
if (process.env.NODE_ENV !== 'production' && name) {
|
5173 |
+
validateComponentName(name);
|
5174 |
+
}
|
5175 |
+
|
5176 |
+
var Sub = function VueComponent (options) {
|
5177 |
+
this._init(options);
|
5178 |
+
};
|
5179 |
+
Sub.prototype = Object.create(Super.prototype);
|
5180 |
+
Sub.prototype.constructor = Sub;
|
5181 |
+
Sub.cid = cid++;
|
5182 |
+
Sub.options = mergeOptions(
|
5183 |
+
Super.options,
|
5184 |
+
extendOptions
|
5185 |
+
);
|
5186 |
+
Sub['super'] = Super;
|
5187 |
+
|
5188 |
+
// For props and computed properties, we define the proxy getters on
|
5189 |
+
// the Vue instances at extension time, on the extended prototype. This
|
5190 |
+
// avoids Object.defineProperty calls for each instance created.
|
5191 |
+
if (Sub.options.props) {
|
5192 |
+
initProps$1(Sub);
|
5193 |
+
}
|
5194 |
+
if (Sub.options.computed) {
|
5195 |
+
initComputed$1(Sub);
|
5196 |
+
}
|
5197 |
+
|
5198 |
+
// allow further extension/mixin/plugin usage
|
5199 |
+
Sub.extend = Super.extend;
|
5200 |
+
Sub.mixin = Super.mixin;
|
5201 |
+
Sub.use = Super.use;
|
5202 |
+
|
5203 |
+
// create asset registers, so extended classes
|
5204 |
+
// can have their private assets too.
|
5205 |
+
ASSET_TYPES.forEach(function (type) {
|
5206 |
+
Sub[type] = Super[type];
|
5207 |
+
});
|
5208 |
+
// enable recursive self-lookup
|
5209 |
+
if (name) {
|
5210 |
+
Sub.options.components[name] = Sub;
|
5211 |
+
}
|
5212 |
+
|
5213 |
+
// keep a reference to the super options at extension time.
|
5214 |
+
// later at instantiation we can check if Super's options have
|
5215 |
+
// been updated.
|
5216 |
+
Sub.superOptions = Super.options;
|
5217 |
+
Sub.extendOptions = extendOptions;
|
5218 |
+
Sub.sealedOptions = extend({}, Sub.options);
|
5219 |
+
|
5220 |
+
// cache constructor
|
5221 |
+
cachedCtors[SuperId] = Sub;
|
5222 |
+
return Sub
|
5223 |
+
};
|
5224 |
+
}
|
5225 |
+
|
5226 |
+
function initProps$1 (Comp) {
|
5227 |
+
var props = Comp.options.props;
|
5228 |
+
for (var key in props) {
|
5229 |
+
proxy(Comp.prototype, "_props", key);
|
5230 |
+
}
|
5231 |
+
}
|
5232 |
+
|
5233 |
+
function initComputed$1 (Comp) {
|
5234 |
+
var computed = Comp.options.computed;
|
5235 |
+
for (var key in computed) {
|
5236 |
+
defineComputed(Comp.prototype, key, computed[key]);
|
5237 |
+
}
|
5238 |
+
}
|
5239 |
+
|
5240 |
+
/* */
|
5241 |
+
|
5242 |
+
function initAssetRegisters (Vue) {
|
5243 |
+
/**
|
5244 |
+
* Create asset registration methods.
|
5245 |
+
*/
|
5246 |
+
ASSET_TYPES.forEach(function (type) {
|
5247 |
+
Vue[type] = function (
|
5248 |
+
id,
|
5249 |
+
definition
|
5250 |
+
) {
|
5251 |
+
if (!definition) {
|
5252 |
+
return this.options[type + 's'][id]
|
5253 |
+
} else {
|
5254 |
+
/* istanbul ignore if */
|
5255 |
+
if (process.env.NODE_ENV !== 'production' && type === 'component') {
|
5256 |
+
validateComponentName(id);
|
5257 |
+
}
|
5258 |
+
if (type === 'component' && isPlainObject(definition)) {
|
5259 |
+
definition.name = definition.name || id;
|
5260 |
+
definition = this.options._base.extend(definition);
|
5261 |
+
}
|
5262 |
+
if (type === 'directive' && typeof definition === 'function') {
|
5263 |
+
definition = { bind: definition, update: definition };
|
5264 |
+
}
|
5265 |
+
this.options[type + 's'][id] = definition;
|
5266 |
+
return definition
|
5267 |
+
}
|
5268 |
+
};
|
5269 |
+
});
|
5270 |
+
}
|
5271 |
+
|
5272 |
+
/* */
|
5273 |
+
|
5274 |
+
function getComponentName (opts) {
|
5275 |
+
return opts && (opts.Ctor.options.name || opts.tag)
|
5276 |
+
}
|
5277 |
+
|
5278 |
+
function matches (pattern, name) {
|
5279 |
+
if (Array.isArray(pattern)) {
|
5280 |
+
return pattern.indexOf(name) > -1
|
5281 |
+
} else if (typeof pattern === 'string') {
|
5282 |
+
return pattern.split(',').indexOf(name) > -1
|
5283 |
+
} else if (isRegExp(pattern)) {
|
5284 |
+
return pattern.test(name)
|
5285 |
+
}
|
5286 |
+
/* istanbul ignore next */
|
5287 |
+
return false
|
5288 |
+
}
|
5289 |
+
|
5290 |
+
function pruneCache (keepAliveInstance, filter) {
|
5291 |
+
var cache = keepAliveInstance.cache;
|
5292 |
+
var keys = keepAliveInstance.keys;
|
5293 |
+
var _vnode = keepAliveInstance._vnode;
|
5294 |
+
for (var key in cache) {
|
5295 |
+
var cachedNode = cache[key];
|
5296 |
+
if (cachedNode) {
|
5297 |
+
var name = getComponentName(cachedNode.componentOptions);
|
5298 |
+
if (name && !filter(name)) {
|
5299 |
+
pruneCacheEntry(cache, key, keys, _vnode);
|
5300 |
+
}
|
5301 |
+
}
|
5302 |
+
}
|
5303 |
+
}
|
5304 |
+
|
5305 |
+
function pruneCacheEntry (
|
5306 |
+
cache,
|
5307 |
+
key,
|
5308 |
+
keys,
|
5309 |
+
current
|
5310 |
+
) {
|
5311 |
+
var cached$$1 = cache[key];
|
5312 |
+
if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
|
5313 |
+
cached$$1.componentInstance.$destroy();
|
5314 |
+
}
|
5315 |
+
cache[key] = null;
|
5316 |
+
remove(keys, key);
|
5317 |
+
}
|
5318 |
+
|
5319 |
+
var patternTypes = [String, RegExp, Array];
|
5320 |
+
|
5321 |
+
var KeepAlive = {
|
5322 |
+
name: 'keep-alive',
|
5323 |
+
abstract: true,
|
5324 |
+
|
5325 |
+
props: {
|
5326 |
+
include: patternTypes,
|
5327 |
+
exclude: patternTypes,
|
5328 |
+
max: [String, Number]
|
5329 |
+
},
|
5330 |
+
|
5331 |
+
created: function created () {
|
5332 |
+
this.cache = Object.create(null);
|
5333 |
+
this.keys = [];
|
5334 |
+
},
|
5335 |
+
|
5336 |
+
destroyed: function destroyed () {
|
5337 |
+
var this$1 = this;
|
5338 |
+
|
5339 |
+
for (var key in this$1.cache) {
|
5340 |
+
pruneCacheEntry(this$1.cache, key, this$1.keys);
|
5341 |
+
}
|
5342 |
+
},
|
5343 |
+
|
5344 |
+
mounted: function mounted () {
|
5345 |
+
var this$1 = this;
|
5346 |
+
|
5347 |
+
this.$watch('include', function (val) {
|
5348 |
+
pruneCache(this$1, function (name) { return matches(val, name); });
|
5349 |
+
});
|
5350 |
+
this.$watch('exclude', function (val) {
|
5351 |
+
pruneCache(this$1, function (name) { return !matches(val, name); });
|
5352 |
+
});
|
5353 |
+
},
|
5354 |
+
|
5355 |
+
render: function render () {
|
5356 |
+
var slot = this.$slots.default;
|
5357 |
+
var vnode = getFirstComponentChild(slot);
|
5358 |
+
var componentOptions = vnode && vnode.componentOptions;
|
5359 |
+
if (componentOptions) {
|
5360 |
+
// check pattern
|
5361 |
+
var name = getComponentName(componentOptions);
|
5362 |
+
var ref = this;
|
5363 |
+
var include = ref.include;
|
5364 |
+
var exclude = ref.exclude;
|
5365 |
+
if (
|
5366 |
+
// not included
|
5367 |
+
(include && (!name || !matches(include, name))) ||
|
5368 |
+
// excluded
|
5369 |
+
(exclude && name && matches(exclude, name))
|
5370 |
+
) {
|
5371 |
+
return vnode
|
5372 |
+
}
|
5373 |
+
|
5374 |
+
var ref$1 = this;
|
5375 |
+
var cache = ref$1.cache;
|
5376 |
+
var keys = ref$1.keys;
|
5377 |
+
var key = vnode.key == null
|
5378 |
+
// same constructor may get registered as different local components
|
5379 |
+
// so cid alone is not enough (#3269)
|
5380 |
+
? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
|
5381 |
+
: vnode.key;
|
5382 |
+
if (cache[key]) {
|
5383 |
+
vnode.componentInstance = cache[key].componentInstance;
|
5384 |
+
// make current key freshest
|
5385 |
+
remove(keys, key);
|
5386 |
+
keys.push(key);
|
5387 |
+
} else {
|
5388 |
+
cache[key] = vnode;
|
5389 |
+
keys.push(key);
|
5390 |
+
// prune oldest entry
|
5391 |
+
if (this.max && keys.length > parseInt(this.max)) {
|
5392 |
+
pruneCacheEntry(cache, keys[0], keys, this._vnode);
|
5393 |
+
}
|
5394 |
+
}
|
5395 |
+
|
5396 |
+
vnode.data.keepAlive = true;
|
5397 |
+
}
|
5398 |
+
return vnode || (slot && slot[0])
|
5399 |
+
}
|
5400 |
+
}
|
5401 |
+
|
5402 |
+
var builtInComponents = {
|
5403 |
+
KeepAlive: KeepAlive
|
5404 |
+
}
|
5405 |
+
|
5406 |
+
/* */
|
5407 |
+
|
5408 |
+
function initGlobalAPI (Vue) {
|
5409 |
+
// config
|
5410 |
+
var configDef = {};
|
5411 |
+
configDef.get = function () { return config; };
|
5412 |
+
if (process.env.NODE_ENV !== 'production') {
|
5413 |
+
configDef.set = function () {
|
5414 |
+
warn(
|
5415 |
+
'Do not replace the Vue.config object, set individual fields instead.'
|
5416 |
+
);
|
5417 |
+
};
|
5418 |
+
}
|
5419 |
+
Object.defineProperty(Vue, 'config', configDef);
|
5420 |
+
|
5421 |
+
// exposed util methods.
|
5422 |
+
// NOTE: these are not considered part of the public API - avoid relying on
|
5423 |
+
// them unless you are aware of the risk.
|
5424 |
+
Vue.util = {
|
5425 |
+
warn: warn,
|
5426 |
+
extend: extend,
|
5427 |
+
mergeOptions: mergeOptions,
|
5428 |
+
defineReactive: defineReactive
|
5429 |
+
};
|
5430 |
+
|
5431 |
+
Vue.set = set;
|
5432 |
+
Vue.delete = del;
|
5433 |
+
Vue.nextTick = nextTick;
|
5434 |
+
|
5435 |
+
Vue.options = Object.create(null);
|
5436 |
+
ASSET_TYPES.forEach(function (type) {
|
5437 |
+
Vue.options[type + 's'] = Object.create(null);
|
5438 |
+
});
|
5439 |
+
|
5440 |
+
// this is used to identify the "base" constructor to extend all plain-object
|
5441 |
+
// components with in Weex's multi-instance scenarios.
|
5442 |
+
Vue.options._base = Vue;
|
5443 |
+
|
5444 |
+
extend(Vue.options.components, builtInComponents);
|
5445 |
+
|
5446 |
+
initUse(Vue);
|
5447 |
+
initMixin$1(Vue);
|
5448 |
+
initExtend(Vue);
|
5449 |
+
initAssetRegisters(Vue);
|
5450 |
+
}
|
5451 |
+
|
5452 |
+
initGlobalAPI(Vue);
|
5453 |
+
|
5454 |
+
Object.defineProperty(Vue.prototype, '$isServer', {
|
5455 |
+
get: isServerRendering
|
5456 |
+
});
|
5457 |
+
|
5458 |
+
Object.defineProperty(Vue.prototype, '$ssrContext', {
|
5459 |
+
get: function get () {
|
5460 |
+
/* istanbul ignore next */
|
5461 |
+
return this.$vnode && this.$vnode.ssrContext
|
5462 |
+
}
|
5463 |
+
});
|
5464 |
+
|
5465 |
+
// expose FunctionalRenderContext for ssr runtime helper installation
|
5466 |
+
Object.defineProperty(Vue, 'FunctionalRenderContext', {
|
5467 |
+
value: FunctionalRenderContext
|
5468 |
+
});
|
5469 |
+
|
5470 |
+
Vue.version = '2.5.17';
|
5471 |
+
|
5472 |
+
/* */
|
5473 |
+
|
5474 |
+
// these are reserved for web because they are directly compiled away
|
5475 |
+
// during template compilation
|
5476 |
+
var isReservedAttr = makeMap('style,class');
|
5477 |
+
|
5478 |
+
// attributes that should be using props for binding
|
5479 |
+
var acceptValue = makeMap('input,textarea,option,select,progress');
|
5480 |
+
var mustUseProp = function (tag, type, attr) {
|
5481 |
+
return (
|
5482 |
+
(attr === 'value' && acceptValue(tag)) && type !== 'button' ||
|
5483 |
+
(attr === 'selected' && tag === 'option') ||
|
5484 |
+
(attr === 'checked' && tag === 'input') ||
|
5485 |
+
(attr === 'muted' && tag === 'video')
|
5486 |
+
)
|
5487 |
+
};
|
5488 |
+
|
5489 |
+
var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
|
5490 |
+
|
5491 |
+
var isBooleanAttr = makeMap(
|
5492 |
+
'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
|
5493 |
+
'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
|
5494 |
+
'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
|
5495 |
+
'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
|
5496 |
+
'required,reversed,scoped,seamless,selected,sortable,translate,' +
|
5497 |
+
'truespeed,typemustmatch,visible'
|
5498 |
+
);
|
5499 |
+
|
5500 |
+
var xlinkNS = 'http://www.w3.org/1999/xlink';
|
5501 |
+
|
5502 |
+
var isXlink = function (name) {
|
5503 |
+
return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
|
5504 |
+
};
|
5505 |
+
|
5506 |
+
var getXlinkProp = function (name) {
|
5507 |
+
return isXlink(name) ? name.slice(6, name.length) : ''
|
5508 |
+
};
|
5509 |
+
|
5510 |
+
var isFalsyAttrValue = function (val) {
|
5511 |
+
return val == null || val === false
|
5512 |
+
};
|
5513 |
+
|
5514 |
+
/* */
|
5515 |
+
|
5516 |
+
function genClassForVnode (vnode) {
|
5517 |
+
var data = vnode.data;
|
5518 |
+
var parentNode = vnode;
|
5519 |
+
var childNode = vnode;
|
5520 |
+
while (isDef(childNode.componentInstance)) {
|
5521 |
+
childNode = childNode.componentInstance._vnode;
|
5522 |
+
if (childNode && childNode.data) {
|
5523 |
+
data = mergeClassData(childNode.data, data);
|
5524 |
+
}
|
5525 |
+
}
|
5526 |
+
while (isDef(parentNode = parentNode.parent)) {
|
5527 |
+
if (parentNode && parentNode.data) {
|
5528 |
+
data = mergeClassData(data, parentNode.data);
|
5529 |
+
}
|
5530 |
+
}
|
5531 |
+
return renderClass(data.staticClass, data.class)
|
5532 |
+
}
|
5533 |
+
|
5534 |
+
function mergeClassData (child, parent) {
|
5535 |
+
return {
|
5536 |
+
staticClass: concat(child.staticClass, parent.staticClass),
|
5537 |
+
class: isDef(child.class)
|
5538 |
+
? [child.class, parent.class]
|
5539 |
+
: parent.class
|
5540 |
+
}
|
5541 |
+
}
|
5542 |
+
|
5543 |
+
function renderClass (
|
5544 |
+
staticClass,
|
5545 |
+
dynamicClass
|
5546 |
+
) {
|
5547 |
+
if (isDef(staticClass) || isDef(dynamicClass)) {
|
5548 |
+
return concat(staticClass, stringifyClass(dynamicClass))
|
5549 |
+
}
|
5550 |
+
/* istanbul ignore next */
|
5551 |
+
return ''
|
5552 |
+
}
|
5553 |
+
|
5554 |
+
function concat (a, b) {
|
5555 |
+
return a ? b ? (a + ' ' + b) : a : (b || '')
|
5556 |
+
}
|
5557 |
+
|
5558 |
+
function stringifyClass (value) {
|
5559 |
+
if (Array.isArray(value)) {
|
5560 |
+
return stringifyArray(value)
|
5561 |
+
}
|
5562 |
+
if (isObject(value)) {
|
5563 |
+
return stringifyObject(value)
|
5564 |
+
}
|
5565 |
+
if (typeof value === 'string') {
|
5566 |
+
return value
|
5567 |
+
}
|
5568 |
+
/* istanbul ignore next */
|
5569 |
+
return ''
|
5570 |
+
}
|
5571 |
+
|
5572 |
+
function stringifyArray (value) {
|
5573 |
+
var res = '';
|
5574 |
+
var stringified;
|
5575 |
+
for (var i = 0, l = value.length; i < l; i++) {
|
5576 |
+
if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
|
5577 |
+
if (res) { res += ' '; }
|
5578 |
+
res += stringified;
|
5579 |
+
}
|
5580 |
+
}
|
5581 |
+
return res
|
5582 |
+
}
|
5583 |
+
|
5584 |
+
function stringifyObject (value) {
|
5585 |
+
var res = '';
|
5586 |
+
for (var key in value) {
|
5587 |
+
if (value[key]) {
|
5588 |
+
if (res) { res += ' '; }
|
5589 |
+
res += key;
|
5590 |
+
}
|
5591 |
+
}
|
5592 |
+
return res
|
5593 |
+
}
|
5594 |
+
|
5595 |
+
/* */
|
5596 |
+
|
5597 |
+
var namespaceMap = {
|
5598 |
+
svg: 'http://www.w3.org/2000/svg',
|
5599 |
+
math: 'http://www.w3.org/1998/Math/MathML'
|
5600 |
+
};
|
5601 |
+
|
5602 |
+
var isHTMLTag = makeMap(
|
5603 |
+
'html,body,base,head,link,meta,style,title,' +
|
5604 |
+
'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
|
5605 |
+
'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
|
5606 |
+
'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
|
5607 |
+
's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
|
5608 |
+
'embed,object,param,source,canvas,script,noscript,del,ins,' +
|
5609 |
+
'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
|
5610 |
+
'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
|
5611 |
+
'output,progress,select,textarea,' +
|
5612 |
+
'details,dialog,menu,menuitem,summary,' +
|
5613 |
+
'content,element,shadow,template,blockquote,iframe,tfoot'
|
5614 |
+
);
|
5615 |
+
|
5616 |
+
// this map is intentionally selective, only covering SVG elements that may
|
5617 |
+
// contain child elements.
|
5618 |
+
var isSVG = makeMap(
|
5619 |
+
'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
|
5620 |
+
'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
|
5621 |
+
'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
|
5622 |
+
true
|
5623 |
+
);
|
5624 |
+
|
5625 |
+
var isPreTag = function (tag) { return tag === 'pre'; };
|
5626 |
+
|
5627 |
+
var isReservedTag = function (tag) {
|
5628 |
+
return isHTMLTag(tag) || isSVG(tag)
|
5629 |
+
};
|
5630 |
+
|
5631 |
+
function getTagNamespace (tag) {
|
5632 |
+
if (isSVG(tag)) {
|
5633 |
+
return 'svg'
|
5634 |
+
}
|
5635 |
+
// basic support for MathML
|
5636 |
+
// note it doesn't support other MathML elements being component roots
|
5637 |
+
if (tag === 'math') {
|
5638 |
+
return 'math'
|
5639 |
+
}
|
5640 |
+
}
|
5641 |
+
|
5642 |
+
var unknownElementCache = Object.create(null);
|
5643 |
+
function isUnknownElement (tag) {
|
5644 |
+
/* istanbul ignore if */
|
5645 |
+
if (!inBrowser) {
|
5646 |
+
return true
|
5647 |
+
}
|
5648 |
+
if (isReservedTag(tag)) {
|
5649 |
+
return false
|
5650 |
+
}
|
5651 |
+
tag = tag.toLowerCase();
|
5652 |
+
/* istanbul ignore if */
|
5653 |
+
if (unknownElementCache[tag] != null) {
|
5654 |
+
return unknownElementCache[tag]
|
5655 |
+
}
|
5656 |
+
var el = document.createElement(tag);
|
5657 |
+
if (tag.indexOf('-') > -1) {
|
5658 |
+
// http://stackoverflow.com/a/28210364/1070244
|
5659 |
+
return (unknownElementCache[tag] = (
|
5660 |
+
el.constructor === window.HTMLUnknownElement ||
|
5661 |
+
el.constructor === window.HTMLElement
|
5662 |
+
))
|
5663 |
+
} else {
|
5664 |
+
return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
|
5665 |
+
}
|
5666 |
+
}
|
5667 |
+
|
5668 |
+
var isTextInputType = makeMap('text,number,password,search,email,tel,url');
|
5669 |
+
|
5670 |
+
/* */
|
5671 |
+
|
5672 |
+
/**
|
5673 |
+
* Query an element selector if it's not an element already.
|
5674 |
+
*/
|
5675 |
+
function query (el) {
|
5676 |
+
if (typeof el === 'string') {
|
5677 |
+
var selected = document.querySelector(el);
|
5678 |
+
if (!selected) {
|
5679 |
+
process.env.NODE_ENV !== 'production' && warn(
|
5680 |
+
'Cannot find element: ' + el
|
5681 |
+
);
|
5682 |
+
return document.createElement('div')
|
5683 |
+
}
|
5684 |
+
return selected
|
5685 |
+
} else {
|
5686 |
+
return el
|
5687 |
+
}
|
5688 |
+
}
|
5689 |
+
|
5690 |
+
/* */
|
5691 |
+
|
5692 |
+
function createElement$1 (tagName, vnode) {
|
5693 |
+
var elm = document.createElement(tagName);
|
5694 |
+
if (tagName !== 'select') {
|
5695 |
+
return elm
|
5696 |
+
}
|
5697 |
+
// false or null will remove the attribute but undefined will not
|
5698 |
+
if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
|
5699 |
+
elm.setAttribute('multiple', 'multiple');
|
5700 |
+
}
|
5701 |
+
return elm
|
5702 |
+
}
|
5703 |
+
|
5704 |
+
function createElementNS (namespace, tagName) {
|
5705 |
+
return document.createElementNS(namespaceMap[namespace], tagName)
|
5706 |
+
}
|
5707 |
+
|
5708 |
+
function createTextNode (text) {
|
5709 |
+
return document.createTextNode(text)
|
5710 |
+
}
|
5711 |
+
|
5712 |
+
function createComment (text) {
|
5713 |
+
return document.createComment(text)
|
5714 |
+
}
|
5715 |
+
|
5716 |
+
function insertBefore (parentNode, newNode, referenceNode) {
|
5717 |
+
parentNode.insertBefore(newNode, referenceNode);
|
5718 |
+
}
|
5719 |
+
|
5720 |
+
function removeChild (node, child) {
|
5721 |
+
node.removeChild(child);
|
5722 |
+
}
|
5723 |
+
|
5724 |
+
function appendChild (node, child) {
|
5725 |
+
node.appendChild(child);
|
5726 |
+
}
|
5727 |
+
|
5728 |
+
function parentNode (node) {
|
5729 |
+
return node.parentNode
|
5730 |
+
}
|
5731 |
+
|
5732 |
+
function nextSibling (node) {
|
5733 |
+
return node.nextSibling
|
5734 |
+
}
|
5735 |
+
|
5736 |
+
function tagName (node) {
|
5737 |
+
return node.tagName
|
5738 |
+
}
|
5739 |
+
|
5740 |
+
function setTextContent (node, text) {
|
5741 |
+
node.textContent = text;
|
5742 |
+
}
|
5743 |
+
|
5744 |
+
function setStyleScope (node, scopeId) {
|
5745 |
+
node.setAttribute(scopeId, '');
|
5746 |
+
}
|
5747 |
+
|
5748 |
+
|
5749 |
+
var nodeOps = Object.freeze({
|
5750 |
+
createElement: createElement$1,
|
5751 |
+
createElementNS: createElementNS,
|
5752 |
+
createTextNode: createTextNode,
|
5753 |
+
createComment: createComment,
|
5754 |
+
insertBefore: insertBefore,
|
5755 |
+
removeChild: removeChild,
|
5756 |
+
appendChild: appendChild,
|
5757 |
+
parentNode: parentNode,
|
5758 |
+
nextSibling: nextSibling,
|
5759 |
+
tagName: tagName,
|
5760 |
+
setTextContent: setTextContent,
|
5761 |
+
setStyleScope: setStyleScope
|
5762 |
+
});
|
5763 |
+
|
5764 |
+
/* */
|
5765 |
+
|
5766 |
+
var ref = {
|
5767 |
+
create: function create (_, vnode) {
|
5768 |
+
registerRef(vnode);
|
5769 |
+
},
|
5770 |
+
update: function update (oldVnode, vnode) {
|
5771 |
+
if (oldVnode.data.ref !== vnode.data.ref) {
|
5772 |
+
registerRef(oldVnode, true);
|
5773 |
+
registerRef(vnode);
|
5774 |
+
}
|
5775 |
+
},
|
5776 |
+
destroy: function destroy (vnode) {
|
5777 |
+
registerRef(vnode, true);
|
5778 |
+
}
|
5779 |
+
}
|
5780 |
+
|
5781 |
+
function registerRef (vnode, isRemoval) {
|
5782 |
+
var key = vnode.data.ref;
|
5783 |
+
if (!isDef(key)) { return }
|
5784 |
+
|
5785 |
+
var vm = vnode.context;
|
5786 |
+
var ref = vnode.componentInstance || vnode.elm;
|
5787 |
+
var refs = vm.$refs;
|
5788 |
+
if (isRemoval) {
|
5789 |
+
if (Array.isArray(refs[key])) {
|
5790 |
+
remove(refs[key], ref);
|
5791 |
+
} else if (refs[key] === ref) {
|
5792 |
+
refs[key] = undefined;
|
5793 |
+
}
|
5794 |
+
} else {
|
5795 |
+
if (vnode.data.refInFor) {
|
5796 |
+
if (!Array.isArray(refs[key])) {
|
5797 |
+
refs[key] = [ref];
|
5798 |
+
} else if (refs[key].indexOf(ref) < 0) {
|
5799 |
+
// $flow-disable-line
|
5800 |
+
refs[key].push(ref);
|
5801 |
+
}
|
5802 |
+
} else {
|
5803 |
+
refs[key] = ref;
|
5804 |
+
}
|
5805 |
+
}
|
5806 |
+
}
|
5807 |
+
|
5808 |
+
/**
|
5809 |
+
* Virtual DOM patching algorithm based on Snabbdom by
|
5810 |
+
* Simon Friis Vindum (@paldepind)
|
5811 |
+
* Licensed under the MIT License
|
5812 |
+
* https://github.com/paldepind/snabbdom/blob/master/LICENSE
|
5813 |
+
*
|
5814 |
+
* modified by Evan You (@yyx990803)
|
5815 |
+
*
|
5816 |
+
* Not type-checking this because this file is perf-critical and the cost
|
5817 |
+
* of making flow understand it is not worth it.
|
5818 |
+
*/
|
5819 |
+
|
5820 |
+
var emptyNode = new VNode('', {}, []);
|
5821 |
+
|
5822 |
+
var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
|
5823 |
+
|
5824 |
+
function sameVnode (a, b) {
|
5825 |
+
return (
|
5826 |
+
a.key === b.key && (
|
5827 |
+
(
|
5828 |
+
a.tag === b.tag &&
|
5829 |
+
a.isComment === b.isComment &&
|
5830 |
+
isDef(a.data) === isDef(b.data) &&
|
5831 |
+
sameInputType(a, b)
|
5832 |
+
) || (
|
5833 |
+
isTrue(a.isAsyncPlaceholder) &&
|
5834 |
+
a.asyncFactory === b.asyncFactory &&
|
5835 |
+
isUndef(b.asyncFactory.error)
|
5836 |
+
)
|
5837 |
+
)
|
5838 |
+
)
|
5839 |
+
}
|
5840 |
+
|
5841 |
+
function sameInputType (a, b) {
|
5842 |
+
if (a.tag !== 'input') { return true }
|
5843 |
+
var i;
|
5844 |
+
var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
|
5845 |
+
var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
|
5846 |
+
return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)
|
5847 |
+
}
|
5848 |
+
|
5849 |
+
function createKeyToOldIdx (children, beginIdx, endIdx) {
|
5850 |
+
var i, key;
|
5851 |
+
var map = {};
|
5852 |
+
for (i = beginIdx; i <= endIdx; ++i) {
|
5853 |
+
key = children[i].key;
|
5854 |
+
if (isDef(key)) { map[key] = i; }
|
5855 |
+
}
|
5856 |
+
return map
|
5857 |
+
}
|
5858 |
+
|
5859 |
+
function createPatchFunction (backend) {
|
5860 |
+
var i, j;
|
5861 |
+
var cbs = {};
|
5862 |
+
|
5863 |
+
var modules = backend.modules;
|
5864 |
+
var nodeOps = backend.nodeOps;
|
5865 |
+
|
5866 |
+
for (i = 0; i < hooks.length; ++i) {
|
5867 |
+
cbs[hooks[i]] = [];
|
5868 |
+
for (j = 0; j < modules.length; ++j) {
|
5869 |
+
if (isDef(modules[j][hooks[i]])) {
|
5870 |
+
cbs[hooks[i]].push(modules[j][hooks[i]]);
|
5871 |
+
}
|
5872 |
+
}
|
5873 |
+
}
|
5874 |
+
|
5875 |
+
function emptyNodeAt (elm) {
|
5876 |
+
return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
|
5877 |
+
}
|
5878 |
+
|
5879 |
+
function createRmCb (childElm, listeners) {
|
5880 |
+
function remove () {
|
5881 |
+
if (--remove.listeners === 0) {
|
5882 |
+
removeNode(childElm);
|
5883 |
+
}
|
5884 |
+
}
|
5885 |
+
remove.listeners = listeners;
|
5886 |
+
return remove
|
5887 |
+
}
|
5888 |
+
|
5889 |
+
function removeNode (el) {
|
5890 |
+
var parent = nodeOps.parentNode(el);
|
5891 |
+
// element may have already been removed due to v-html / v-text
|
5892 |
+
if (isDef(parent)) {
|
5893 |
+
nodeOps.removeChild(parent, el);
|
5894 |
+
}
|
5895 |
+
}
|
5896 |
+
|
5897 |
+
function isUnknownElement$$1 (vnode, inVPre) {
|
5898 |
+
return (
|
5899 |
+
!inVPre &&
|
5900 |
+
!vnode.ns &&
|
5901 |
+
!(
|
5902 |
+
config.ignoredElements.length &&
|
5903 |
+
config.ignoredElements.some(function (ignore) {
|
5904 |
+
return isRegExp(ignore)
|
5905 |
+
? ignore.test(vnode.tag)
|
5906 |
+
: ignore === vnode.tag
|
5907 |
+
})
|
5908 |
+
) &&
|
5909 |
+
config.isUnknownElement(vnode.tag)
|
5910 |
+
)
|
5911 |
+
}
|
5912 |
+
|
5913 |
+
var creatingElmInVPre = 0;
|
5914 |
+
|
5915 |
+
function createElm (
|
5916 |
+
vnode,
|
5917 |
+
insertedVnodeQueue,
|
5918 |
+
parentElm,
|
5919 |
+
refElm,
|
5920 |
+
nested,
|
5921 |
+
ownerArray,
|
5922 |
+
index
|
5923 |
+
) {
|
5924 |
+
if (isDef(vnode.elm) && isDef(ownerArray)) {
|
5925 |
+
// This vnode was used in a previous render!
|
5926 |
+
// now it's used as a new node, overwriting its elm would cause
|
5927 |
+
// potential patch errors down the road when it's used as an insertion
|
5928 |
+
// reference node. Instead, we clone the node on-demand before creating
|
5929 |
+
// associated DOM element for it.
|
5930 |
+
vnode = ownerArray[index] = cloneVNode(vnode);
|
5931 |
+
}
|
5932 |
+
|
5933 |
+
vnode.isRootInsert = !nested; // for transition enter check
|
5934 |
+
if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
|
5935 |
+
return
|
5936 |
+
}
|
5937 |
+
|
5938 |
+
var data = vnode.data;
|
5939 |
+
var children = vnode.children;
|
5940 |
+
var tag = vnode.tag;
|
5941 |
+
if (isDef(tag)) {
|
5942 |
+
if (process.env.NODE_ENV !== 'production') {
|
5943 |
+
if (data && data.pre) {
|
5944 |
+
creatingElmInVPre++;
|
5945 |
+
}
|
5946 |
+
if (isUnknownElement$$1(vnode, creatingElmInVPre)) {
|
5947 |
+
warn(
|
5948 |
+
'Unknown custom element: <' + tag + '> - did you ' +
|
5949 |
+
'register the component correctly? For recursive components, ' +
|
5950 |
+
'make sure to provide the "name" option.',
|
5951 |
+
vnode.context
|
5952 |
+
);
|
5953 |
+
}
|
5954 |
+
}
|
5955 |
+
|
5956 |
+
vnode.elm = vnode.ns
|
5957 |
+
? nodeOps.createElementNS(vnode.ns, tag)
|
5958 |
+
: nodeOps.createElement(tag, vnode);
|
5959 |
+
setScope(vnode);
|
5960 |
+
|
5961 |
+
/* istanbul ignore if */
|
5962 |
+
{
|
5963 |
+
createChildren(vnode, children, insertedVnodeQueue);
|
5964 |
+
if (isDef(data)) {
|
5965 |
+
invokeCreateHooks(vnode, insertedVnodeQueue);
|
5966 |
+
}
|
5967 |
+
insert(parentElm, vnode.elm, refElm);
|
5968 |
+
}
|
5969 |
+
|
5970 |
+
if (process.env.NODE_ENV !== 'production' && data && data.pre) {
|
5971 |
+
creatingElmInVPre--;
|
5972 |
+
}
|
5973 |
+
} else if (isTrue(vnode.isComment)) {
|
5974 |
+
vnode.elm = nodeOps.createComment(vnode.text);
|
5975 |
+
insert(parentElm, vnode.elm, refElm);
|
5976 |
+
} else {
|
5977 |
+
vnode.elm = nodeOps.createTextNode(vnode.text);
|
5978 |
+
insert(parentElm, vnode.elm, refElm);
|
5979 |
+
}
|
5980 |
+
}
|
5981 |
+
|
5982 |
+
function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
|
5983 |
+
var i = vnode.data;
|
5984 |
+
if (isDef(i)) {
|
5985 |
+
var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
|
5986 |
+
if (isDef(i = i.hook) && isDef(i = i.init)) {
|
5987 |
+
i(vnode, false /* hydrating */, parentElm, refElm);
|
5988 |
+
}
|
5989 |
+
// after calling the init hook, if the vnode is a child component
|
5990 |
+
// it should've created a child instance and mounted it. the child
|
5991 |
+
// component also has set the placeholder vnode's elm.
|
5992 |
+
// in that case we can just return the element and be done.
|
5993 |
+
if (isDef(vnode.componentInstance)) {
|
5994 |
+
initComponent(vnode, insertedVnodeQueue);
|
5995 |
+
if (isTrue(isReactivated)) {
|
5996 |
+
reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
|
5997 |
+
}
|
5998 |
+
return true
|
5999 |
+
}
|
6000 |
+
}
|
6001 |
+
}
|
6002 |
+
|
6003 |
+
function initComponent (vnode, insertedVnodeQueue) {
|
6004 |
+
if (isDef(vnode.data.pendingInsert)) {
|
6005 |
+
insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
|
6006 |
+
vnode.data.pendingInsert = null;
|
6007 |
+
}
|
6008 |
+
vnode.elm = vnode.componentInstance.$el;
|
6009 |
+
if (isPatchable(vnode)) {
|
6010 |
+
invokeCreateHooks(vnode, insertedVnodeQueue);
|
6011 |
+
setScope(vnode);
|
6012 |
+
} else {
|
6013 |
+
// empty component root.
|
6014 |
+
// skip all element-related modules except for ref (#3455)
|
6015 |
+
registerRef(vnode);
|
6016 |
+
// make sure to invoke the insert hook
|
6017 |
+
insertedVnodeQueue.push(vnode);
|
6018 |
+
}
|
6019 |
+
}
|
6020 |
+
|
6021 |
+
function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
|
6022 |
+
var i;
|
6023 |
+
// hack for #4339: a reactivated component with inner transition
|
6024 |
+
// does not trigger because the inner node's created hooks are not called
|
6025 |
+
// again. It's not ideal to involve module-specific logic in here but
|
6026 |
+
// there doesn't seem to be a better way to do it.
|
6027 |
+
var innerNode = vnode;
|
6028 |
+
while (innerNode.componentInstance) {
|
6029 |
+
innerNode = innerNode.componentInstance._vnode;
|
6030 |
+
if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
|
6031 |
+
for (i = 0; i < cbs.activate.length; ++i) {
|
6032 |
+
cbs.activate[i](emptyNode, innerNode);
|
6033 |
+
}
|
6034 |
+
insertedVnodeQueue.push(innerNode);
|
6035 |
+
break
|
6036 |
+
}
|
6037 |
+
}
|
6038 |
+
// unlike a newly created component,
|
6039 |
+
// a reactivated keep-alive component doesn't insert itself
|
6040 |
+
insert(parentElm, vnode.elm, refElm);
|
6041 |
+
}
|
6042 |
+
|
6043 |
+
function insert (parent, elm, ref$$1) {
|
6044 |
+
if (isDef(parent)) {
|
6045 |
+
if (isDef(ref$$1)) {
|
6046 |
+
if (ref$$1.parentNode === parent) {
|
6047 |
+
nodeOps.insertBefore(parent, elm, ref$$1);
|
6048 |
+
}
|
6049 |
+
} else {
|
6050 |
+
nodeOps.appendChild(parent, elm);
|
6051 |
+
}
|
6052 |
+
}
|
6053 |
+
}
|
6054 |
+
|
6055 |
+
function createChildren (vnode, children, insertedVnodeQueue) {
|
6056 |
+
if (Array.isArray(children)) {
|
6057 |
+
if (process.env.NODE_ENV !== 'production') {
|
6058 |
+
checkDuplicateKeys(children);
|
6059 |
+
}
|
6060 |
+
for (var i = 0; i < children.length; ++i) {
|
6061 |
+
createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
|
6062 |
+
}
|
6063 |
+
} else if (isPrimitive(vnode.text)) {
|
6064 |
+
nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
|
6065 |
+
}
|
6066 |
+
}
|
6067 |
+
|
6068 |
+
function isPatchable (vnode) {
|
6069 |
+
while (vnode.componentInstance) {
|
6070 |
+
vnode = vnode.componentInstance._vnode;
|
6071 |
+
}
|
6072 |
+
return isDef(vnode.tag)
|
6073 |
+
}
|
6074 |
+
|
6075 |
+
function invokeCreateHooks (vnode, insertedVnodeQueue) {
|
6076 |
+
for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
|
6077 |
+
cbs.create[i$1](emptyNode, vnode);
|
6078 |
+
}
|
6079 |
+
i = vnode.data.hook; // Reuse variable
|
6080 |
+
if (isDef(i)) {
|
6081 |
+
if (isDef(i.create)) { i.create(emptyNode, vnode); }
|
6082 |
+
if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }
|
6083 |
+
}
|
6084 |
+
}
|
6085 |
+
|
6086 |
+
// set scope id attribute for scoped CSS.
|
6087 |
+
// this is implemented as a special case to avoid the overhead
|
6088 |
+
// of going through the normal attribute patching process.
|
6089 |
+
function setScope (vnode) {
|
6090 |
+
var i;
|
6091 |
+
if (isDef(i = vnode.fnScopeId)) {
|
6092 |
+
nodeOps.setStyleScope(vnode.elm, i);
|
6093 |
+
} else {
|
6094 |
+
var ancestor = vnode;
|
6095 |
+
while (ancestor) {
|
6096 |
+
if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
|
6097 |
+
nodeOps.setStyleScope(vnode.elm, i);
|
6098 |
+
}
|
6099 |
+
ancestor = ancestor.parent;
|
6100 |
+
}
|
6101 |
+
}
|
6102 |
+
// for slot content they should also get the scopeId from the host instance.
|
6103 |
+
if (isDef(i = activeInstance) &&
|
6104 |
+
i !== vnode.context &&
|
6105 |
+
i !== vnode.fnContext &&
|
6106 |
+
isDef(i = i.$options._scopeId)
|
6107 |
+
) {
|
6108 |
+
nodeOps.setStyleScope(vnode.elm, i);
|
6109 |
+
}
|
6110 |
+
}
|
6111 |
+
|
6112 |
+
function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
|
6113 |
+
for (; startIdx <= endIdx; ++startIdx) {
|
6114 |
+
createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
|
6115 |
+
}
|
6116 |
+
}
|
6117 |
+
|
6118 |
+
function invokeDestroyHook (vnode) {
|
6119 |
+
var i, j;
|
6120 |
+
var data = vnode.data;
|
6121 |
+
if (isDef(data)) {
|
6122 |
+
if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
|
6123 |
+
for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
|
6124 |
+
}
|
6125 |
+
if (isDef(i = vnode.children)) {
|
6126 |
+
for (j = 0; j < vnode.children.length; ++j) {
|
6127 |
+
invokeDestroyHook(vnode.children[j]);
|
6128 |
+
}
|
6129 |
+
}
|
6130 |
+
}
|
6131 |
+
|
6132 |
+
function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
|
6133 |
+
for (; startIdx <= endIdx; ++startIdx) {
|
6134 |
+
var ch = vnodes[startIdx];
|
6135 |
+
if (isDef(ch)) {
|
6136 |
+
if (isDef(ch.tag)) {
|
6137 |
+
removeAndInvokeRemoveHook(ch);
|
6138 |
+
invokeDestroyHook(ch);
|
6139 |
+
} else { // Text node
|
6140 |
+
removeNode(ch.elm);
|
6141 |
+
}
|
6142 |
+
}
|
6143 |
+
}
|
6144 |
+
}
|
6145 |
+
|
6146 |
+
function removeAndInvokeRemoveHook (vnode, rm) {
|
6147 |
+
if (isDef(rm) || isDef(vnode.data)) {
|
6148 |
+
var i;
|
6149 |
+
var listeners = cbs.remove.length + 1;
|
6150 |
+
if (isDef(rm)) {
|
6151 |
+
// we have a recursively passed down rm callback
|
6152 |
+
// increase the listeners count
|
6153 |
+
rm.listeners += listeners;
|
6154 |
+
} else {
|
6155 |
+
// directly removing
|
6156 |
+
rm = createRmCb(vnode.elm, listeners);
|
6157 |
+
}
|
6158 |
+
// recursively invoke hooks on child component root node
|
6159 |
+
if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
|
6160 |
+
removeAndInvokeRemoveHook(i, rm);
|
6161 |
+
}
|
6162 |
+
for (i = 0; i < cbs.remove.length; ++i) {
|
6163 |
+
cbs.remove[i](vnode, rm);
|
6164 |
+
}
|
6165 |
+
if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
|
6166 |
+
i(vnode, rm);
|
6167 |
+
} else {
|
6168 |
+
rm();
|
6169 |
+
}
|
6170 |
+
} else {
|
6171 |
+
removeNode(vnode.elm);
|
6172 |
+
}
|
6173 |
+
}
|
6174 |
+
|
6175 |
+
function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
|
6176 |
+
var oldStartIdx = 0;
|
6177 |
+
var newStartIdx = 0;
|
6178 |
+
var oldEndIdx = oldCh.length - 1;
|
6179 |
+
var oldStartVnode = oldCh[0];
|
6180 |
+
var oldEndVnode = oldCh[oldEndIdx];
|
6181 |
+
var newEndIdx = newCh.length - 1;
|
6182 |
+
var newStartVnode = newCh[0];
|
6183 |
+
var newEndVnode = newCh[newEndIdx];
|
6184 |
+
var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
|
6185 |
+
|
6186 |
+
// removeOnly is a special flag used only by <transition-group>
|
6187 |
+
// to ensure removed elements stay in correct relative positions
|
6188 |
+
// during leaving transitions
|
6189 |
+
var canMove = !removeOnly;
|
6190 |
+
|
6191 |
+
if (process.env.NODE_ENV !== 'production') {
|
6192 |
+
checkDuplicateKeys(newCh);
|
6193 |
+
}
|
6194 |
+
|
6195 |
+
while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
|
6196 |
+
if (isUndef(oldStartVnode)) {
|
6197 |
+
oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
|
6198 |
+
} else if (isUndef(oldEndVnode)) {
|
6199 |
+
oldEndVnode = oldCh[--oldEndIdx];
|
6200 |
+
} else if (sameVnode(oldStartVnode, newStartVnode)) {
|
6201 |
+
patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
|
6202 |
+
oldStartVnode = oldCh[++oldStartIdx];
|
6203 |
+
newStartVnode = newCh[++newStartIdx];
|
6204 |
+
} else if (sameVnode(oldEndVnode, newEndVnode)) {
|
6205 |
+
patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
|
6206 |
+
oldEndVnode = oldCh[--oldEndIdx];
|
6207 |
+
newEndVnode = newCh[--newEndIdx];
|
6208 |
+
} else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
|
6209 |
+
patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
|
6210 |
+
canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
|
6211 |
+
oldStartVnode = oldCh[++oldStartIdx];
|
6212 |
+
newEndVnode = newCh[--newEndIdx];
|
6213 |
+
} else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
|
6214 |
+
patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
|
6215 |
+
canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
|
6216 |
+
oldEndVnode = oldCh[--oldEndIdx];
|
6217 |
+
newStartVnode = newCh[++newStartIdx];
|
6218 |
+
} else {
|
6219 |
+
if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
|
6220 |
+
idxInOld = isDef(newStartVnode.key)
|
6221 |
+
? oldKeyToIdx[newStartVnode.key]
|
6222 |
+
: findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
|
6223 |
+
if (isUndef(idxInOld)) { // New element
|
6224 |
+
createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
|
6225 |
+
} else {
|
6226 |
+
vnodeToMove = oldCh[idxInOld];
|
6227 |
+
if (sameVnode(vnodeToMove, newStartVnode)) {
|
6228 |
+
patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);
|
6229 |
+
oldCh[idxInOld] = undefined;
|
6230 |
+
canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
|
6231 |
+
} else {
|
6232 |
+
// same key but different element. treat as new element
|
6233 |
+
createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
|
6234 |
+
}
|
6235 |
+
}
|
6236 |
+
newStartVnode = newCh[++newStartIdx];
|
6237 |
+
}
|
6238 |
+
}
|
6239 |
+
if (oldStartIdx > oldEndIdx) {
|
6240 |
+
refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
|
6241 |
+
addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
|
6242 |
+
} else if (newStartIdx > newEndIdx) {
|
6243 |
+
removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
|
6244 |
+
}
|
6245 |
+
}
|
6246 |
+
|
6247 |
+
function checkDuplicateKeys (children) {
|
6248 |
+
var seenKeys = {};
|
6249 |
+
for (var i = 0; i < children.length; i++) {
|
6250 |
+
var vnode = children[i];
|
6251 |
+
var key = vnode.key;
|
6252 |
+
if (isDef(key)) {
|
6253 |
+
if (seenKeys[key]) {
|
6254 |
+
warn(
|
6255 |
+
("Duplicate keys detected: '" + key + "'. This may cause an update error."),
|
6256 |
+
vnode.context
|
6257 |
+
);
|
6258 |
+
} else {
|
6259 |
+
seenKeys[key] = true;
|
6260 |
+
}
|
6261 |
+
}
|
6262 |
+
}
|
6263 |
+
}
|
6264 |
+
|
6265 |
+
function findIdxInOld (node, oldCh, start, end) {
|
6266 |
+
for (var i = start; i < end; i++) {
|
6267 |
+
var c = oldCh[i];
|
6268 |
+
if (isDef(c) && sameVnode(node, c)) { return i }
|
6269 |
+
}
|
6270 |
+
}
|
6271 |
+
|
6272 |
+
function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
|
6273 |
+
if (oldVnode === vnode) {
|
6274 |
+
return
|
6275 |
+
}
|
6276 |
+
|
6277 |
+
var elm = vnode.elm = oldVnode.elm;
|
6278 |
+
|
6279 |
+
if (isTrue(oldVnode.isAsyncPlaceholder)) {
|
6280 |
+
if (isDef(vnode.asyncFactory.resolved)) {
|
6281 |
+
hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
|
6282 |
+
} else {
|
6283 |
+
vnode.isAsyncPlaceholder = true;
|
6284 |
+
}
|
6285 |
+
return
|
6286 |
+
}
|
6287 |
+
|
6288 |
+
// reuse element for static trees.
|
6289 |
+
// note we only do this if the vnode is cloned -
|
6290 |
+
// if the new node is not cloned it means the render functions have been
|
6291 |
+
// reset by the hot-reload-api and we need to do a proper re-render.
|
6292 |
+
if (isTrue(vnode.isStatic) &&
|
6293 |
+
isTrue(oldVnode.isStatic) &&
|
6294 |
+
vnode.key === oldVnode.key &&
|
6295 |
+
(isTrue(vnode.isCloned) || isTrue(vnode.isOnce))
|
6296 |
+
) {
|
6297 |
+
vnode.componentInstance = oldVnode.componentInstance;
|
6298 |
+
return
|
6299 |
+
}
|
6300 |
+
|
6301 |
+
var i;
|
6302 |
+
var data = vnode.data;
|
6303 |
+
if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
|
6304 |
+
i(oldVnode, vnode);
|
6305 |
+
}
|
6306 |
+
|
6307 |
+
var oldCh = oldVnode.children;
|
6308 |
+
var ch = vnode.children;
|
6309 |
+
if (isDef(data) && isPatchable(vnode)) {
|
6310 |
+
for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
|
6311 |
+
if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
|
6312 |
+
}
|
6313 |
+
if (isUndef(vnode.text)) {
|
6314 |
+
if (isDef(oldCh) && isDef(ch)) {
|
6315 |
+
if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
|
6316 |
+
} else if (isDef(ch)) {
|
6317 |
+
if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
|
6318 |
+
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
|
6319 |
+
} else if (isDef(oldCh)) {
|
6320 |
+
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
|
6321 |
+
} else if (isDef(oldVnode.text)) {
|
6322 |
+
nodeOps.setTextContent(elm, '');
|
6323 |
+
}
|
6324 |
+
} else if (oldVnode.text !== vnode.text) {
|
6325 |
+
nodeOps.setTextContent(elm, vnode.text);
|
6326 |
+
}
|
6327 |
+
if (isDef(data)) {
|
6328 |
+
if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
|
6329 |
+
}
|
6330 |
+
}
|
6331 |
+
|
6332 |
+
function invokeInsertHook (vnode, queue, initial) {
|
6333 |
+
// delay insert hooks for component root nodes, invoke them after the
|
6334 |
+
// element is really inserted
|
6335 |
+
if (isTrue(initial) && isDef(vnode.parent)) {
|
6336 |
+
vnode.parent.data.pendingInsert = queue;
|
6337 |
+
} else {
|
6338 |
+
for (var i = 0; i < queue.length; ++i) {
|
6339 |
+
queue[i].data.hook.insert(queue[i]);
|
6340 |
+
}
|
6341 |
+
}
|
6342 |
+
}
|
6343 |
+
|
6344 |
+
var hydrationBailed = false;
|
6345 |
+
// list of modules that can skip create hook during hydration because they
|
6346 |
+
// are already rendered on the client or has no need for initialization
|
6347 |
+
// Note: style is excluded because it relies on initial clone for future
|
6348 |
+
// deep updates (#7063).
|
6349 |
+
var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
|
6350 |
+
|
6351 |
+
// Note: this is a browser-only function so we can assume elms are DOM nodes.
|
6352 |
+
function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {
|
6353 |
+
var i;
|
6354 |
+
var tag = vnode.tag;
|
6355 |
+
var data = vnode.data;
|
6356 |
+
var children = vnode.children;
|
6357 |
+
inVPre = inVPre || (data && data.pre);
|
6358 |
+
vnode.elm = elm;
|
6359 |
+
|
6360 |
+
if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
|
6361 |
+
vnode.isAsyncPlaceholder = true;
|
6362 |
+
return true
|
6363 |
+
}
|
6364 |
+
// assert node match
|
6365 |
+
if (process.env.NODE_ENV !== 'production') {
|
6366 |
+
if (!assertNodeMatch(elm, vnode, inVPre)) {
|
6367 |
+
return false
|
6368 |
+
}
|
6369 |
+
}
|
6370 |
+
if (isDef(data)) {
|
6371 |
+
if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
|
6372 |
+
if (isDef(i = vnode.componentInstance)) {
|
6373 |
+
// child component. it should have hydrated its own tree.
|
6374 |
+
initComponent(vnode, insertedVnodeQueue);
|
6375 |
+
return true
|
6376 |
+
}
|
6377 |
+
}
|
6378 |
+
if (isDef(tag)) {
|
6379 |
+
if (isDef(children)) {
|
6380 |
+
// empty element, allow client to pick up and populate children
|
6381 |
+
if (!elm.hasChildNodes()) {
|
6382 |
+
createChildren(vnode, children, insertedVnodeQueue);
|
6383 |
+
} else {
|
6384 |
+
// v-html and domProps: innerHTML
|
6385 |
+
if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
|
6386 |
+
if (i !== elm.innerHTML) {
|
6387 |
+
/* istanbul ignore if */
|
6388 |
+
if (process.env.NODE_ENV !== 'production' &&
|
6389 |
+
typeof console !== 'undefined' &&
|
6390 |
+
!hydrationBailed
|
6391 |
+
) {
|
6392 |
+
hydrationBailed = true;
|
6393 |
+
console.warn('Parent: ', elm);
|
6394 |
+
console.warn('server innerHTML: ', i);
|
6395 |
+
console.warn('client innerHTML: ', elm.innerHTML);
|
6396 |
+
}
|
6397 |
+
return false
|
6398 |
+
}
|
6399 |
+
} else {
|
6400 |
+
// iterate and compare children lists
|
6401 |
+
var childrenMatch = true;
|
6402 |
+
var childNode = elm.firstChild;
|
6403 |
+
for (var i$1 = 0; i$1 < children.length; i$1++) {
|
6404 |
+
if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
|
6405 |
+
childrenMatch = false;
|
6406 |
+
break
|
6407 |
+
}
|
6408 |
+
childNode = childNode.nextSibling;
|
6409 |
+
}
|
6410 |
+
// if childNode is not null, it means the actual childNodes list is
|
6411 |
+
// longer than the virtual children list.
|
6412 |
+
if (!childrenMatch || childNode) {
|
6413 |
+
/* istanbul ignore if */
|
6414 |
+
if (process.env.NODE_ENV !== 'production' &&
|
6415 |
+
typeof console !== 'undefined' &&
|
6416 |
+
!hydrationBailed
|
6417 |
+
) {
|
6418 |
+
hydrationBailed = true;
|
6419 |
+
console.warn('Parent: ', elm);
|
6420 |
+
console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
|
6421 |
+
}
|
6422 |
+
return false
|
6423 |
+
}
|
6424 |
+
}
|
6425 |
+
}
|
6426 |
+
}
|
6427 |
+
if (isDef(data)) {
|
6428 |
+
var fullInvoke = false;
|
6429 |
+
for (var key in data) {
|
6430 |
+
if (!isRenderedModule(key)) {
|
6431 |
+
fullInvoke = true;
|
6432 |
+
invokeCreateHooks(vnode, insertedVnodeQueue);
|
6433 |
+
break
|
6434 |
+
}
|
6435 |
+
}
|
6436 |
+
if (!fullInvoke && data['class']) {
|
6437 |
+
// ensure collecting deps for deep class bindings for future updates
|
6438 |
+
traverse(data['class']);
|
6439 |
+
}
|
6440 |
+
}
|
6441 |
+
} else if (elm.data !== vnode.text) {
|
6442 |
+
elm.data = vnode.text;
|
6443 |
+
}
|
6444 |
+
return true
|
6445 |
+
}
|
6446 |
+
|
6447 |
+
function assertNodeMatch (node, vnode, inVPre) {
|
6448 |
+
if (isDef(vnode.tag)) {
|
6449 |
+
return vnode.tag.indexOf('vue-component') === 0 || (
|
6450 |
+
!isUnknownElement$$1(vnode, inVPre) &&
|
6451 |
+
vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
|
6452 |
+
)
|
6453 |
+
} else {
|
6454 |
+
return node.nodeType === (vnode.isComment ? 8 : 3)
|
6455 |
+
}
|
6456 |
+
}
|
6457 |
+
|
6458 |
+
return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
|
6459 |
+
if (isUndef(vnode)) {
|
6460 |
+
if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }
|
6461 |
+
return
|
6462 |
+
}
|
6463 |
+
|
6464 |
+
var isInitialPatch = false;
|
6465 |
+
var insertedVnodeQueue = [];
|
6466 |
+
|
6467 |
+
if (isUndef(oldVnode)) {
|
6468 |
+
// empty mount (likely as component), create new root element
|
6469 |
+
isInitialPatch = true;
|
6470 |
+
createElm(vnode, insertedVnodeQueue, parentElm, refElm);
|
6471 |
+
} else {
|
6472 |
+
var isRealElement = isDef(oldVnode.nodeType);
|
6473 |
+
if (!isRealElement && sameVnode(oldVnode, vnode)) {
|
6474 |
+
// patch existing root node
|
6475 |
+
patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
|
6476 |
+
} else {
|
6477 |
+
if (isRealElement) {
|
6478 |
+
// mounting to a real element
|
6479 |
+
// check if this is server-rendered content and if we can perform
|
6480 |
+
// a successful hydration.
|
6481 |
+
if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
|
6482 |
+
oldVnode.removeAttribute(SSR_ATTR);
|
6483 |
+
hydrating = true;
|
6484 |
+
}
|
6485 |
+
if (isTrue(hydrating)) {
|
6486 |
+
if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
|
6487 |
+
invokeInsertHook(vnode, insertedVnodeQueue, true);
|
6488 |
+
return oldVnode
|
6489 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
6490 |
+
warn(
|
6491 |
+
'The client-side rendered virtual DOM tree is not matching ' +
|
6492 |
+
'server-rendered content. This is likely caused by incorrect ' +
|
6493 |
+
'HTML markup, for example nesting block-level elements inside ' +
|
6494 |
+
'<p>, or missing <tbody>. Bailing hydration and performing ' +
|
6495 |
+
'full client-side render.'
|
6496 |
+
);
|
6497 |
+
}
|
6498 |
+
}
|
6499 |
+
// either not server-rendered, or hydration failed.
|
6500 |
+
// create an empty node and replace it
|
6501 |
+
oldVnode = emptyNodeAt(oldVnode);
|
6502 |
+
}
|
6503 |
+
|
6504 |
+
// replacing existing element
|
6505 |
+
var oldElm = oldVnode.elm;
|
6506 |
+
var parentElm$1 = nodeOps.parentNode(oldElm);
|
6507 |
+
|
6508 |
+
// create new node
|
6509 |
+
createElm(
|
6510 |
+
vnode,
|
6511 |
+
insertedVnodeQueue,
|
6512 |
+
// extremely rare edge case: do not insert if old element is in a
|
6513 |
+
// leaving transition. Only happens when combining transition +
|
6514 |
+
// keep-alive + HOCs. (#4590)
|
6515 |
+
oldElm._leaveCb ? null : parentElm$1,
|
6516 |
+
nodeOps.nextSibling(oldElm)
|
6517 |
+
);
|
6518 |
+
|
6519 |
+
// update parent placeholder node element, recursively
|
6520 |
+
if (isDef(vnode.parent)) {
|
6521 |
+
var ancestor = vnode.parent;
|
6522 |
+
var patchable = isPatchable(vnode);
|
6523 |
+
while (ancestor) {
|
6524 |
+
for (var i = 0; i < cbs.destroy.length; ++i) {
|
6525 |
+
cbs.destroy[i](ancestor);
|
6526 |
+
}
|
6527 |
+
ancestor.elm = vnode.elm;
|
6528 |
+
if (patchable) {
|
6529 |
+
for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
|
6530 |
+
cbs.create[i$1](emptyNode, ancestor);
|
6531 |
+
}
|
6532 |
+
// #6513
|
6533 |
+
// invoke insert hooks that may have been merged by create hooks.
|
6534 |
+
// e.g. for directives that uses the "inserted" hook.
|
6535 |
+
var insert = ancestor.data.hook.insert;
|
6536 |
+
if (insert.merged) {
|
6537 |
+
// start at index 1 to avoid re-invoking component mounted hook
|
6538 |
+
for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {
|
6539 |
+
insert.fns[i$2]();
|
6540 |
+
}
|
6541 |
+
}
|
6542 |
+
} else {
|
6543 |
+
registerRef(ancestor);
|
6544 |
+
}
|
6545 |
+
ancestor = ancestor.parent;
|
6546 |
+
}
|
6547 |
+
}
|
6548 |
+
|
6549 |
+
// destroy old node
|
6550 |
+
if (isDef(parentElm$1)) {
|
6551 |
+
removeVnodes(parentElm$1, [oldVnode], 0, 0);
|
6552 |
+
} else if (isDef(oldVnode.tag)) {
|
6553 |
+
invokeDestroyHook(oldVnode);
|
6554 |
+
}
|
6555 |
+
}
|
6556 |
+
}
|
6557 |
+
|
6558 |
+
invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
|
6559 |
+
return vnode.elm
|
6560 |
+
}
|
6561 |
+
}
|
6562 |
+
|
6563 |
+
/* */
|
6564 |
+
|
6565 |
+
var directives = {
|
6566 |
+
create: updateDirectives,
|
6567 |
+
update: updateDirectives,
|
6568 |
+
destroy: function unbindDirectives (vnode) {
|
6569 |
+
updateDirectives(vnode, emptyNode);
|
6570 |
+
}
|
6571 |
+
}
|
6572 |
+
|
6573 |
+
function updateDirectives (oldVnode, vnode) {
|
6574 |
+
if (oldVnode.data.directives || vnode.data.directives) {
|
6575 |
+
_update(oldVnode, vnode);
|
6576 |
+
}
|
6577 |
+
}
|
6578 |
+
|
6579 |
+
function _update (oldVnode, vnode) {
|
6580 |
+
var isCreate = oldVnode === emptyNode;
|
6581 |
+
var isDestroy = vnode === emptyNode;
|
6582 |
+
var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
|
6583 |
+
var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
|
6584 |
+
|
6585 |
+
var dirsWithInsert = [];
|
6586 |
+
var dirsWithPostpatch = [];
|
6587 |
+
|
6588 |
+
var key, oldDir, dir;
|
6589 |
+
for (key in newDirs) {
|
6590 |
+
oldDir = oldDirs[key];
|
6591 |
+
dir = newDirs[key];
|
6592 |
+
if (!oldDir) {
|
6593 |
+
// new directive, bind
|
6594 |
+
callHook$1(dir, 'bind', vnode, oldVnode);
|
6595 |
+
if (dir.def && dir.def.inserted) {
|
6596 |
+
dirsWithInsert.push(dir);
|
6597 |
+
}
|
6598 |
+
} else {
|
6599 |
+
// existing directive, update
|
6600 |
+
dir.oldValue = oldDir.value;
|
6601 |
+
callHook$1(dir, 'update', vnode, oldVnode);
|
6602 |
+
if (dir.def && dir.def.componentUpdated) {
|
6603 |
+
dirsWithPostpatch.push(dir);
|
6604 |
+
}
|
6605 |
+
}
|
6606 |
+
}
|
6607 |
+
|
6608 |
+
if (dirsWithInsert.length) {
|
6609 |
+
var callInsert = function () {
|
6610 |
+
for (var i = 0; i < dirsWithInsert.length; i++) {
|
6611 |
+
callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
|
6612 |
+
}
|
6613 |
+
};
|
6614 |
+
if (isCreate) {
|
6615 |
+
mergeVNodeHook(vnode, 'insert', callInsert);
|
6616 |
+
} else {
|
6617 |
+
callInsert();
|
6618 |
+
}
|
6619 |
+
}
|
6620 |
+
|
6621 |
+
if (dirsWithPostpatch.length) {
|
6622 |
+
mergeVNodeHook(vnode, 'postpatch', function () {
|
6623 |
+
for (var i = 0; i < dirsWithPostpatch.length; i++) {
|
6624 |
+
callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
|
6625 |
+
}
|
6626 |
+
});
|
6627 |
+
}
|
6628 |
+
|
6629 |
+
if (!isCreate) {
|
6630 |
+
for (key in oldDirs) {
|
6631 |
+
if (!newDirs[key]) {
|
6632 |
+
// no longer present, unbind
|
6633 |
+
callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
|
6634 |
+
}
|
6635 |
+
}
|
6636 |
+
}
|
6637 |
+
}
|
6638 |
+
|
6639 |
+
var emptyModifiers = Object.create(null);
|
6640 |
+
|
6641 |
+
function normalizeDirectives$1 (
|
6642 |
+
dirs,
|
6643 |
+
vm
|
6644 |
+
) {
|
6645 |
+
var res = Object.create(null);
|
6646 |
+
if (!dirs) {
|
6647 |
+
// $flow-disable-line
|
6648 |
+
return res
|
6649 |
+
}
|
6650 |
+
var i, dir;
|
6651 |
+
for (i = 0; i < dirs.length; i++) {
|
6652 |
+
dir = dirs[i];
|
6653 |
+
if (!dir.modifiers) {
|
6654 |
+
// $flow-disable-line
|
6655 |
+
dir.modifiers = emptyModifiers;
|
6656 |
+
}
|
6657 |
+
res[getRawDirName(dir)] = dir;
|
6658 |
+
dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
|
6659 |
+
}
|
6660 |
+
// $flow-disable-line
|
6661 |
+
return res
|
6662 |
+
}
|
6663 |
+
|
6664 |
+
function getRawDirName (dir) {
|
6665 |
+
return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
|
6666 |
+
}
|
6667 |
+
|
6668 |
+
function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
|
6669 |
+
var fn = dir.def && dir.def[hook];
|
6670 |
+
if (fn) {
|
6671 |
+
try {
|
6672 |
+
fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
|
6673 |
+
} catch (e) {
|
6674 |
+
handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook"));
|
6675 |
+
}
|
6676 |
+
}
|
6677 |
+
}
|
6678 |
+
|
6679 |
+
var baseModules = [
|
6680 |
+
ref,
|
6681 |
+
directives
|
6682 |
+
]
|
6683 |
+
|
6684 |
+
/* */
|
6685 |
+
|
6686 |
+
function updateAttrs (oldVnode, vnode) {
|
6687 |
+
var opts = vnode.componentOptions;
|
6688 |
+
if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
|
6689 |
+
return
|
6690 |
+
}
|
6691 |
+
if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
|
6692 |
+
return
|
6693 |
+
}
|
6694 |
+
var key, cur, old;
|
6695 |
+
var elm = vnode.elm;
|
6696 |
+
var oldAttrs = oldVnode.data.attrs || {};
|
6697 |
+
var attrs = vnode.data.attrs || {};
|
6698 |
+
// clone observed objects, as the user probably wants to mutate it
|
6699 |
+
if (isDef(attrs.__ob__)) {
|
6700 |
+
attrs = vnode.data.attrs = extend({}, attrs);
|
6701 |
+
}
|
6702 |
+
|
6703 |
+
for (key in attrs) {
|
6704 |
+
cur = attrs[key];
|
6705 |
+
old = oldAttrs[key];
|
6706 |
+
if (old !== cur) {
|
6707 |
+
setAttr(elm, key, cur);
|
6708 |
+
}
|
6709 |
+
}
|
6710 |
+
// #4391: in IE9, setting type can reset value for input[type=radio]
|
6711 |
+
// #6666: IE/Edge forces progress value down to 1 before setting a max
|
6712 |
+
/* istanbul ignore if */
|
6713 |
+
if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
|
6714 |
+
setAttr(elm, 'value', attrs.value);
|
6715 |
+
}
|
6716 |
+
for (key in oldAttrs) {
|
6717 |
+
if (isUndef(attrs[key])) {
|
6718 |
+
if (isXlink(key)) {
|
6719 |
+
elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
|
6720 |
+
} else if (!isEnumeratedAttr(key)) {
|
6721 |
+
elm.removeAttribute(key);
|
6722 |
+
}
|
6723 |
+
}
|
6724 |
+
}
|
6725 |
+
}
|
6726 |
+
|
6727 |
+
function setAttr (el, key, value) {
|
6728 |
+
if (el.tagName.indexOf('-') > -1) {
|
6729 |
+
baseSetAttr(el, key, value);
|
6730 |
+
} else if (isBooleanAttr(key)) {
|
6731 |
+
// set attribute for blank value
|
6732 |
+
// e.g. <option disabled>Select one</option>
|
6733 |
+
if (isFalsyAttrValue(value)) {
|
6734 |
+
el.removeAttribute(key);
|
6735 |
+
} else {
|
6736 |
+
// technically allowfullscreen is a boolean attribute for <iframe>,
|
6737 |
+
// but Flash expects a value of "true" when used on <embed> tag
|
6738 |
+
value = key === 'allowfullscreen' && el.tagName === 'EMBED'
|
6739 |
+
? 'true'
|
6740 |
+
: key;
|
6741 |
+
el.setAttribute(key, value);
|
6742 |
+
}
|
6743 |
+
} else if (isEnumeratedAttr(key)) {
|
6744 |
+
el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
|
6745 |
+
} else if (isXlink(key)) {
|
6746 |
+
if (isFalsyAttrValue(value)) {
|
6747 |
+
el.removeAttributeNS(xlinkNS, getXlinkProp(key));
|
6748 |
+
} else {
|
6749 |
+
el.setAttributeNS(xlinkNS, key, value);
|
6750 |
+
}
|
6751 |
+
} else {
|
6752 |
+
baseSetAttr(el, key, value);
|
6753 |
+
}
|
6754 |
+
}
|
6755 |
+
|
6756 |
+
function baseSetAttr (el, key, value) {
|
6757 |
+
if (isFalsyAttrValue(value)) {
|
6758 |
+
el.removeAttribute(key);
|
6759 |
+
} else {
|
6760 |
+
// #7138: IE10 & 11 fires input event when setting placeholder on
|
6761 |
+
// <textarea>... block the first input event and remove the blocker
|
6762 |
+
// immediately.
|
6763 |
+
/* istanbul ignore if */
|
6764 |
+
if (
|
6765 |
+
isIE && !isIE9 &&
|
6766 |
+
el.tagName === 'TEXTAREA' &&
|
6767 |
+
key === 'placeholder' && !el.__ieph
|
6768 |
+
) {
|
6769 |
+
var blocker = function (e) {
|
6770 |
+
e.stopImmediatePropagation();
|
6771 |
+
el.removeEventListener('input', blocker);
|
6772 |
+
};
|
6773 |
+
el.addEventListener('input', blocker);
|
6774 |
+
// $flow-disable-line
|
6775 |
+
el.__ieph = true; /* IE placeholder patched */
|
6776 |
+
}
|
6777 |
+
el.setAttribute(key, value);
|
6778 |
+
}
|
6779 |
+
}
|
6780 |
+
|
6781 |
+
var attrs = {
|
6782 |
+
create: updateAttrs,
|
6783 |
+
update: updateAttrs
|
6784 |
+
}
|
6785 |
+
|
6786 |
+
/* */
|
6787 |
+
|
6788 |
+
function updateClass (oldVnode, vnode) {
|
6789 |
+
var el = vnode.elm;
|
6790 |
+
var data = vnode.data;
|
6791 |
+
var oldData = oldVnode.data;
|
6792 |
+
if (
|
6793 |
+
isUndef(data.staticClass) &&
|
6794 |
+
isUndef(data.class) && (
|
6795 |
+
isUndef(oldData) || (
|
6796 |
+
isUndef(oldData.staticClass) &&
|
6797 |
+
isUndef(oldData.class)
|
6798 |
+
)
|
6799 |
+
)
|
6800 |
+
) {
|
6801 |
+
return
|
6802 |
+
}
|
6803 |
+
|
6804 |
+
var cls = genClassForVnode(vnode);
|
6805 |
+
|
6806 |
+
// handle transition classes
|
6807 |
+
var transitionClass = el._transitionClasses;
|
6808 |
+
if (isDef(transitionClass)) {
|
6809 |
+
cls = concat(cls, stringifyClass(transitionClass));
|
6810 |
+
}
|
6811 |
+
|
6812 |
+
// set the class
|
6813 |
+
if (cls !== el._prevClass) {
|
6814 |
+
el.setAttribute('class', cls);
|
6815 |
+
el._prevClass = cls;
|
6816 |
+
}
|
6817 |
+
}
|
6818 |
+
|
6819 |
+
var klass = {
|
6820 |
+
create: updateClass,
|
6821 |
+
update: updateClass
|
6822 |
+
}
|
6823 |
+
|
6824 |
+
/* */
|
6825 |
+
|
6826 |
+
var validDivisionCharRE = /[\w).+\-_$\]]/;
|
6827 |
+
|
6828 |
+
function parseFilters (exp) {
|
6829 |
+
var inSingle = false;
|
6830 |
+
var inDouble = false;
|
6831 |
+
var inTemplateString = false;
|
6832 |
+
var inRegex = false;
|
6833 |
+
var curly = 0;
|
6834 |
+
var square = 0;
|
6835 |
+
var paren = 0;
|
6836 |
+
var lastFilterIndex = 0;
|
6837 |
+
var c, prev, i, expression, filters;
|
6838 |
+
|
6839 |
+
for (i = 0; i < exp.length; i++) {
|
6840 |
+
prev = c;
|
6841 |
+
c = exp.charCodeAt(i);
|
6842 |
+
if (inSingle) {
|
6843 |
+
if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
|
6844 |
+
} else if (inDouble) {
|
6845 |
+
if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
|
6846 |
+
} else if (inTemplateString) {
|
6847 |
+
if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
|
6848 |
+
} else if (inRegex) {
|
6849 |
+
if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
|
6850 |
+
} else if (
|
6851 |
+
c === 0x7C && // pipe
|
6852 |
+
exp.charCodeAt(i + 1) !== 0x7C &&
|
6853 |
+
exp.charCodeAt(i - 1) !== 0x7C &&
|
6854 |
+
!curly && !square && !paren
|
6855 |
+
) {
|
6856 |
+
if (expression === undefined) {
|
6857 |
+
// first filter, end of expression
|
6858 |
+
lastFilterIndex = i + 1;
|
6859 |
+
expression = exp.slice(0, i).trim();
|
6860 |
+
} else {
|
6861 |
+
pushFilter();
|
6862 |
+
}
|
6863 |
+
} else {
|
6864 |
+
switch (c) {
|
6865 |
+
case 0x22: inDouble = true; break // "
|
6866 |
+
case 0x27: inSingle = true; break // '
|
6867 |
+
case 0x60: inTemplateString = true; break // `
|
6868 |
+
case 0x28: paren++; break // (
|
6869 |
+
case 0x29: paren--; break // )
|
6870 |
+
case 0x5B: square++; break // [
|
6871 |
+
case 0x5D: square--; break // ]
|
6872 |
+
case 0x7B: curly++; break // {
|
6873 |
+
case 0x7D: curly--; break // }
|
6874 |
+
}
|
6875 |
+
if (c === 0x2f) { // /
|
6876 |
+
var j = i - 1;
|
6877 |
+
var p = (void 0);
|
6878 |
+
// find first non-whitespace prev char
|
6879 |
+
for (; j >= 0; j--) {
|
6880 |
+
p = exp.charAt(j);
|
6881 |
+
if (p !== ' ') { break }
|
6882 |
+
}
|
6883 |
+
if (!p || !validDivisionCharRE.test(p)) {
|
6884 |
+
inRegex = true;
|
6885 |
+
}
|
6886 |
+
}
|
6887 |
+
}
|
6888 |
+
}
|
6889 |
+
|
6890 |
+
if (expression === undefined) {
|
6891 |
+
expression = exp.slice(0, i).trim();
|
6892 |
+
} else if (lastFilterIndex !== 0) {
|
6893 |
+
pushFilter();
|
6894 |
+
}
|
6895 |
+
|
6896 |
+
function pushFilter () {
|
6897 |
+
(filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
|
6898 |
+
lastFilterIndex = i + 1;
|
6899 |
+
}
|
6900 |
+
|
6901 |
+
if (filters) {
|
6902 |
+
for (i = 0; i < filters.length; i++) {
|
6903 |
+
expression = wrapFilter(expression, filters[i]);
|
6904 |
+
}
|
6905 |
+
}
|
6906 |
+
|
6907 |
+
return expression
|
6908 |
+
}
|
6909 |
+
|
6910 |
+
function wrapFilter (exp, filter) {
|
6911 |
+
var i = filter.indexOf('(');
|
6912 |
+
if (i < 0) {
|
6913 |
+
// _f: resolveFilter
|
6914 |
+
return ("_f(\"" + filter + "\")(" + exp + ")")
|
6915 |
+
} else {
|
6916 |
+
var name = filter.slice(0, i);
|
6917 |
+
var args = filter.slice(i + 1);
|
6918 |
+
return ("_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args))
|
6919 |
+
}
|
6920 |
+
}
|
6921 |
+
|
6922 |
+
/* */
|
6923 |
+
|
6924 |
+
function baseWarn (msg) {
|
6925 |
+
console.error(("[Vue compiler]: " + msg));
|
6926 |
+
}
|
6927 |
+
|
6928 |
+
function pluckModuleFunction (
|
6929 |
+
modules,
|
6930 |
+
key
|
6931 |
+
) {
|
6932 |
+
return modules
|
6933 |
+
? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })
|
6934 |
+
: []
|
6935 |
+
}
|
6936 |
+
|
6937 |
+
function addProp (el, name, value) {
|
6938 |
+
(el.props || (el.props = [])).push({ name: name, value: value });
|
6939 |
+
el.plain = false;
|
6940 |
+
}
|
6941 |
+
|
6942 |
+
function addAttr (el, name, value) {
|
6943 |
+
(el.attrs || (el.attrs = [])).push({ name: name, value: value });
|
6944 |
+
el.plain = false;
|
6945 |
+
}
|
6946 |
+
|
6947 |
+
// add a raw attr (use this in preTransforms)
|
6948 |
+
function addRawAttr (el, name, value) {
|
6949 |
+
el.attrsMap[name] = value;
|
6950 |
+
el.attrsList.push({ name: name, value: value });
|
6951 |
+
}
|
6952 |
+
|
6953 |
+
function addDirective (
|
6954 |
+
el,
|
6955 |
+
name,
|
6956 |
+
rawName,
|
6957 |
+
value,
|
6958 |
+
arg,
|
6959 |
+
modifiers
|
6960 |
+
) {
|
6961 |
+
(el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });
|
6962 |
+
el.plain = false;
|
6963 |
+
}
|
6964 |
+
|
6965 |
+
function addHandler (
|
6966 |
+
el,
|
6967 |
+
name,
|
6968 |
+
value,
|
6969 |
+
modifiers,
|
6970 |
+
important,
|
6971 |
+
warn
|
6972 |
+
) {
|
6973 |
+
modifiers = modifiers || emptyObject;
|
6974 |
+
// warn prevent and passive modifier
|
6975 |
+
/* istanbul ignore if */
|
6976 |
+
if (
|
6977 |
+
process.env.NODE_ENV !== 'production' && warn &&
|
6978 |
+
modifiers.prevent && modifiers.passive
|
6979 |
+
) {
|
6980 |
+
warn(
|
6981 |
+
'passive and prevent can\'t be used together. ' +
|
6982 |
+
'Passive handler can\'t prevent default event.'
|
6983 |
+
);
|
6984 |
+
}
|
6985 |
+
|
6986 |
+
// check capture modifier
|
6987 |
+
if (modifiers.capture) {
|
6988 |
+
delete modifiers.capture;
|
6989 |
+
name = '!' + name; // mark the event as captured
|
6990 |
+
}
|
6991 |
+
if (modifiers.once) {
|
6992 |
+
delete modifiers.once;
|
6993 |
+
name = '~' + name; // mark the event as once
|
6994 |
+
}
|
6995 |
+
/* istanbul ignore if */
|
6996 |
+
if (modifiers.passive) {
|
6997 |
+
delete modifiers.passive;
|
6998 |
+
name = '&' + name; // mark the event as passive
|
6999 |
+
}
|
7000 |
+
|
7001 |
+
// normalize click.right and click.middle since they don't actually fire
|
7002 |
+
// this is technically browser-specific, but at least for now browsers are
|
7003 |
+
// the only target envs that have right/middle clicks.
|
7004 |
+
if (name === 'click') {
|
7005 |
+
if (modifiers.right) {
|
7006 |
+
name = 'contextmenu';
|
7007 |
+
delete modifiers.right;
|
7008 |
+
} else if (modifiers.middle) {
|
7009 |
+
name = 'mouseup';
|
7010 |
+
}
|
7011 |
+
}
|
7012 |
+
|
7013 |
+
var events;
|
7014 |
+
if (modifiers.native) {
|
7015 |
+
delete modifiers.native;
|
7016 |
+
events = el.nativeEvents || (el.nativeEvents = {});
|
7017 |
+
} else {
|
7018 |
+
events = el.events || (el.events = {});
|
7019 |
+
}
|
7020 |
+
|
7021 |
+
var newHandler = {
|
7022 |
+
value: value.trim()
|
7023 |
+
};
|
7024 |
+
if (modifiers !== emptyObject) {
|
7025 |
+
newHandler.modifiers = modifiers;
|
7026 |
+
}
|
7027 |
+
|
7028 |
+
var handlers = events[name];
|
7029 |
+
/* istanbul ignore if */
|
7030 |
+
if (Array.isArray(handlers)) {
|
7031 |
+
important ? handlers.unshift(newHandler) : handlers.push(newHandler);
|
7032 |
+
} else if (handlers) {
|
7033 |
+
events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
|
7034 |
+
} else {
|
7035 |
+
events[name] = newHandler;
|
7036 |
+
}
|
7037 |
+
|
7038 |
+
el.plain = false;
|
7039 |
+
}
|
7040 |
+
|
7041 |
+
function getBindingAttr (
|
7042 |
+
el,
|
7043 |
+
name,
|
7044 |
+
getStatic
|
7045 |
+
) {
|
7046 |
+
var dynamicValue =
|
7047 |
+
getAndRemoveAttr(el, ':' + name) ||
|
7048 |
+
getAndRemoveAttr(el, 'v-bind:' + name);
|
7049 |
+
if (dynamicValue != null) {
|
7050 |
+
return parseFilters(dynamicValue)
|
7051 |
+
} else if (getStatic !== false) {
|
7052 |
+
var staticValue = getAndRemoveAttr(el, name);
|
7053 |
+
if (staticValue != null) {
|
7054 |
+
return JSON.stringify(staticValue)
|
7055 |
+
}
|
7056 |
+
}
|
7057 |
+
}
|
7058 |
+
|
7059 |
+
// note: this only removes the attr from the Array (attrsList) so that it
|
7060 |
+
// doesn't get processed by processAttrs.
|
7061 |
+
// By default it does NOT remove it from the map (attrsMap) because the map is
|
7062 |
+
// needed during codegen.
|
7063 |
+
function getAndRemoveAttr (
|
7064 |
+
el,
|
7065 |
+
name,
|
7066 |
+
removeFromMap
|
7067 |
+
) {
|
7068 |
+
var val;
|
7069 |
+
if ((val = el.attrsMap[name]) != null) {
|
7070 |
+
var list = el.attrsList;
|
7071 |
+
for (var i = 0, l = list.length; i < l; i++) {
|
7072 |
+
if (list[i].name === name) {
|
7073 |
+
list.splice(i, 1);
|
7074 |
+
break
|
7075 |
+
}
|
7076 |
+
}
|
7077 |
+
}
|
7078 |
+
if (removeFromMap) {
|
7079 |
+
delete el.attrsMap[name];
|
7080 |
+
}
|
7081 |
+
return val
|
7082 |
+
}
|
7083 |
+
|
7084 |
+
/* */
|
7085 |
+
|
7086 |
+
/**
|
7087 |
+
* Cross-platform code generation for component v-model
|
7088 |
+
*/
|
7089 |
+
function genComponentModel (
|
7090 |
+
el,
|
7091 |
+
value,
|
7092 |
+
modifiers
|
7093 |
+
) {
|
7094 |
+
var ref = modifiers || {};
|
7095 |
+
var number = ref.number;
|
7096 |
+
var trim = ref.trim;
|
7097 |
+
|
7098 |
+
var baseValueExpression = '$$v';
|
7099 |
+
var valueExpression = baseValueExpression;
|
7100 |
+
if (trim) {
|
7101 |
+
valueExpression =
|
7102 |
+
"(typeof " + baseValueExpression + " === 'string'" +
|
7103 |
+
"? " + baseValueExpression + ".trim()" +
|
7104 |
+
": " + baseValueExpression + ")";
|
7105 |
+
}
|
7106 |
+
if (number) {
|
7107 |
+
valueExpression = "_n(" + valueExpression + ")";
|
7108 |
+
}
|
7109 |
+
var assignment = genAssignmentCode(value, valueExpression);
|
7110 |
+
|
7111 |
+
el.model = {
|
7112 |
+
value: ("(" + value + ")"),
|
7113 |
+
expression: ("\"" + value + "\""),
|
7114 |
+
callback: ("function (" + baseValueExpression + ") {" + assignment + "}")
|
7115 |
+
};
|
7116 |
+
}
|
7117 |
+
|
7118 |
+
/**
|
7119 |
+
* Cross-platform codegen helper for generating v-model value assignment code.
|
7120 |
+
*/
|
7121 |
+
function genAssignmentCode (
|
7122 |
+
value,
|
7123 |
+
assignment
|
7124 |
+
) {
|
7125 |
+
var res = parseModel(value);
|
7126 |
+
if (res.key === null) {
|
7127 |
+
return (value + "=" + assignment)
|
7128 |
+
} else {
|
7129 |
+
return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")")
|
7130 |
+
}
|
7131 |
+
}
|
7132 |
+
|
7133 |
+
/**
|
7134 |
+
* Parse a v-model expression into a base path and a final key segment.
|
7135 |
+
* Handles both dot-path and possible square brackets.
|
7136 |
+
*
|
7137 |
+
* Possible cases:
|
7138 |
+
*
|
7139 |
+
* - test
|
7140 |
+
* - test[key]
|
7141 |
+
* - test[test1[key]]
|
7142 |
+
* - test["a"][key]
|
7143 |
+
* - xxx.test[a[a].test1[key]]
|
7144 |
+
* - test.xxx.a["asa"][test1[key]]
|
7145 |
+
*
|
7146 |
+
*/
|
7147 |
+
|
7148 |
+
var len;
|
7149 |
+
var str;
|
7150 |
+
var chr;
|
7151 |
+
var index$1;
|
7152 |
+
var expressionPos;
|
7153 |
+
var expressionEndPos;
|
7154 |
+
|
7155 |
+
|
7156 |
+
|
7157 |
+
function parseModel (val) {
|
7158 |
+
// Fix https://github.com/vuejs/vue/pull/7730
|
7159 |
+
// allow v-model="obj.val " (trailing whitespace)
|
7160 |
+
val = val.trim();
|
7161 |
+
len = val.length;
|
7162 |
+
|
7163 |
+
if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
|
7164 |
+
index$1 = val.lastIndexOf('.');
|
7165 |
+
if (index$1 > -1) {
|
7166 |
+
return {
|
7167 |
+
exp: val.slice(0, index$1),
|
7168 |
+
key: '"' + val.slice(index$1 + 1) + '"'
|
7169 |
+
}
|
7170 |
+
} else {
|
7171 |
+
return {
|
7172 |
+
exp: val,
|
7173 |
+
key: null
|
7174 |
+
}
|
7175 |
+
}
|
7176 |
+
}
|
7177 |
+
|
7178 |
+
str = val;
|
7179 |
+
index$1 = expressionPos = expressionEndPos = 0;
|
7180 |
+
|
7181 |
+
while (!eof()) {
|
7182 |
+
chr = next();
|
7183 |
+
/* istanbul ignore if */
|
7184 |
+
if (isStringStart(chr)) {
|
7185 |
+
parseString(chr);
|
7186 |
+
} else if (chr === 0x5B) {
|
7187 |
+
parseBracket(chr);
|
7188 |
+
}
|
7189 |
+
}
|
7190 |
+
|
7191 |
+
return {
|
7192 |
+
exp: val.slice(0, expressionPos),
|
7193 |
+
key: val.slice(expressionPos + 1, expressionEndPos)
|
7194 |
+
}
|
7195 |
+
}
|
7196 |
+
|
7197 |
+
function next () {
|
7198 |
+
return str.charCodeAt(++index$1)
|
7199 |
+
}
|
7200 |
+
|
7201 |
+
function eof () {
|
7202 |
+
return index$1 >= len
|
7203 |
+
}
|
7204 |
+
|
7205 |
+
function isStringStart (chr) {
|
7206 |
+
return chr === 0x22 || chr === 0x27
|
7207 |
+
}
|
7208 |
+
|
7209 |
+
function parseBracket (chr) {
|
7210 |
+
var inBracket = 1;
|
7211 |
+
expressionPos = index$1;
|
7212 |
+
while (!eof()) {
|
7213 |
+
chr = next();
|
7214 |
+
if (isStringStart(chr)) {
|
7215 |
+
parseString(chr);
|
7216 |
+
continue
|
7217 |
+
}
|
7218 |
+
if (chr === 0x5B) { inBracket++; }
|
7219 |
+
if (chr === 0x5D) { inBracket--; }
|
7220 |
+
if (inBracket === 0) {
|
7221 |
+
expressionEndPos = index$1;
|
7222 |
+
break
|
7223 |
+
}
|
7224 |
+
}
|
7225 |
+
}
|
7226 |
+
|
7227 |
+
function parseString (chr) {
|
7228 |
+
var stringQuote = chr;
|
7229 |
+
while (!eof()) {
|
7230 |
+
chr = next();
|
7231 |
+
if (chr === stringQuote) {
|
7232 |
+
break
|
7233 |
+
}
|
7234 |
+
}
|
7235 |
+
}
|
7236 |
+
|
7237 |
+
/* */
|
7238 |
+
|
7239 |
+
var warn$1;
|
7240 |
+
|
7241 |
+
// in some cases, the event used has to be determined at runtime
|
7242 |
+
// so we used some reserved tokens during compile.
|
7243 |
+
var RANGE_TOKEN = '__r';
|
7244 |
+
var CHECKBOX_RADIO_TOKEN = '__c';
|
7245 |
+
|
7246 |
+
function model (
|
7247 |
+
el,
|
7248 |
+
dir,
|
7249 |
+
_warn
|
7250 |
+
) {
|
7251 |
+
warn$1 = _warn;
|
7252 |
+
var value = dir.value;
|
7253 |
+
var modifiers = dir.modifiers;
|
7254 |
+
var tag = el.tag;
|
7255 |
+
var type = el.attrsMap.type;
|
7256 |
+
|
7257 |
+
if (process.env.NODE_ENV !== 'production') {
|
7258 |
+
// inputs with type="file" are read only and setting the input's
|
7259 |
+
// value will throw an error.
|
7260 |
+
if (tag === 'input' && type === 'file') {
|
7261 |
+
warn$1(
|
7262 |
+
"<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" +
|
7263 |
+
"File inputs are read only. Use a v-on:change listener instead."
|
7264 |
+
);
|
7265 |
+
}
|
7266 |
+
}
|
7267 |
+
|
7268 |
+
if (el.component) {
|
7269 |
+
genComponentModel(el, value, modifiers);
|
7270 |
+
// component v-model doesn't need extra runtime
|
7271 |
+
return false
|
7272 |
+
} else if (tag === 'select') {
|
7273 |
+
genSelect(el, value, modifiers);
|
7274 |
+
} else if (tag === 'input' && type === 'checkbox') {
|
7275 |
+
genCheckboxModel(el, value, modifiers);
|
7276 |
+
} else if (tag === 'input' && type === 'radio') {
|
7277 |
+
genRadioModel(el, value, modifiers);
|
7278 |
+
} else if (tag === 'input' || tag === 'textarea') {
|
7279 |
+
genDefaultModel(el, value, modifiers);
|
7280 |
+
} else if (!config.isReservedTag(tag)) {
|
7281 |
+
genComponentModel(el, value, modifiers);
|
7282 |
+
// component v-model doesn't need extra runtime
|
7283 |
+
return false
|
7284 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
7285 |
+
warn$1(
|
7286 |
+
"<" + (el.tag) + " v-model=\"" + value + "\">: " +
|
7287 |
+
"v-model is not supported on this element type. " +
|
7288 |
+
'If you are working with contenteditable, it\'s recommended to ' +
|
7289 |
+
'wrap a library dedicated for that purpose inside a custom component.'
|
7290 |
+
);
|
7291 |
+
}
|
7292 |
+
|
7293 |
+
// ensure runtime directive metadata
|
7294 |
+
return true
|
7295 |
+
}
|
7296 |
+
|
7297 |
+
function genCheckboxModel (
|
7298 |
+
el,
|
7299 |
+
value,
|
7300 |
+
modifiers
|
7301 |
+
) {
|
7302 |
+
var number = modifiers && modifiers.number;
|
7303 |
+
var valueBinding = getBindingAttr(el, 'value') || 'null';
|
7304 |
+
var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
|
7305 |
+
var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
|
7306 |
+
addProp(el, 'checked',
|
7307 |
+
"Array.isArray(" + value + ")" +
|
7308 |
+
"?_i(" + value + "," + valueBinding + ")>-1" + (
|
7309 |
+
trueValueBinding === 'true'
|
7310 |
+
? (":(" + value + ")")
|
7311 |
+
: (":_q(" + value + "," + trueValueBinding + ")")
|
7312 |
+
)
|
7313 |
+
);
|
7314 |
+
addHandler(el, 'change',
|
7315 |
+
"var $$a=" + value + "," +
|
7316 |
+
'$$el=$event.target,' +
|
7317 |
+
"$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" +
|
7318 |
+
'if(Array.isArray($$a)){' +
|
7319 |
+
"var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," +
|
7320 |
+
'$$i=_i($$a,$$v);' +
|
7321 |
+
"if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" +
|
7322 |
+
"else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" +
|
7323 |
+
"}else{" + (genAssignmentCode(value, '$$c')) + "}",
|
7324 |
+
null, true
|
7325 |
+
);
|
7326 |
+
}
|
7327 |
+
|
7328 |
+
function genRadioModel (
|
7329 |
+
el,
|
7330 |
+
value,
|
7331 |
+
modifiers
|
7332 |
+
) {
|
7333 |
+
var number = modifiers && modifiers.number;
|
7334 |
+
var valueBinding = getBindingAttr(el, 'value') || 'null';
|
7335 |
+
valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding;
|
7336 |
+
addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")"));
|
7337 |
+
addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
|
7338 |
+
}
|
7339 |
+
|
7340 |
+
function genSelect (
|
7341 |
+
el,
|
7342 |
+
value,
|
7343 |
+
modifiers
|
7344 |
+
) {
|
7345 |
+
var number = modifiers && modifiers.number;
|
7346 |
+
var selectedVal = "Array.prototype.filter" +
|
7347 |
+
".call($event.target.options,function(o){return o.selected})" +
|
7348 |
+
".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
|
7349 |
+
"return " + (number ? '_n(val)' : 'val') + "})";
|
7350 |
+
|
7351 |
+
var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
|
7352 |
+
var code = "var $$selectedVal = " + selectedVal + ";";
|
7353 |
+
code = code + " " + (genAssignmentCode(value, assignment));
|
7354 |
+
addHandler(el, 'change', code, null, true);
|
7355 |
+
}
|
7356 |
+
|
7357 |
+
function genDefaultModel (
|
7358 |
+
el,
|
7359 |
+
value,
|
7360 |
+
modifiers
|
7361 |
+
) {
|
7362 |
+
var type = el.attrsMap.type;
|
7363 |
+
|
7364 |
+
// warn if v-bind:value conflicts with v-model
|
7365 |
+
// except for inputs with v-bind:type
|
7366 |
+
if (process.env.NODE_ENV !== 'production') {
|
7367 |
+
var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
|
7368 |
+
var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
|
7369 |
+
if (value$1 && !typeBinding) {
|
7370 |
+
var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
|
7371 |
+
warn$1(
|
7372 |
+
binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " +
|
7373 |
+
'because the latter already expands to a value binding internally'
|
7374 |
+
);
|
7375 |
+
}
|
7376 |
+
}
|
7377 |
+
|
7378 |
+
var ref = modifiers || {};
|
7379 |
+
var lazy = ref.lazy;
|
7380 |
+
var number = ref.number;
|
7381 |
+
var trim = ref.trim;
|
7382 |
+
var needCompositionGuard = !lazy && type !== 'range';
|
7383 |
+
var event = lazy
|
7384 |
+
? 'change'
|
7385 |
+
: type === 'range'
|
7386 |
+
? RANGE_TOKEN
|
7387 |
+
: 'input';
|
7388 |
+
|
7389 |
+
var valueExpression = '$event.target.value';
|
7390 |
+
if (trim) {
|
7391 |
+
valueExpression = "$event.target.value.trim()";
|
7392 |
+
}
|
7393 |
+
if (number) {
|
7394 |
+
valueExpression = "_n(" + valueExpression + ")";
|
7395 |
+
}
|
7396 |
+
|
7397 |
+
var code = genAssignmentCode(value, valueExpression);
|
7398 |
+
if (needCompositionGuard) {
|
7399 |
+
code = "if($event.target.composing)return;" + code;
|
7400 |
+
}
|
7401 |
+
|
7402 |
+
addProp(el, 'value', ("(" + value + ")"));
|
7403 |
+
addHandler(el, event, code, null, true);
|
7404 |
+
if (trim || number) {
|
7405 |
+
addHandler(el, 'blur', '$forceUpdate()');
|
7406 |
+
}
|
7407 |
+
}
|
7408 |
+
|
7409 |
+
/* */
|
7410 |
+
|
7411 |
+
// normalize v-model event tokens that can only be determined at runtime.
|
7412 |
+
// it's important to place the event as the first in the array because
|
7413 |
+
// the whole point is ensuring the v-model callback gets called before
|
7414 |
+
// user-attached handlers.
|
7415 |
+
function normalizeEvents (on) {
|
7416 |
+
/* istanbul ignore if */
|
7417 |
+
if (isDef(on[RANGE_TOKEN])) {
|
7418 |
+
// IE input[type=range] only supports `change` event
|
7419 |
+
var event = isIE ? 'change' : 'input';
|
7420 |
+
on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
|
7421 |
+
delete on[RANGE_TOKEN];
|
7422 |
+
}
|
7423 |
+
// This was originally intended to fix #4521 but no longer necessary
|
7424 |
+
// after 2.5. Keeping it for backwards compat with generated code from < 2.4
|
7425 |
+
/* istanbul ignore if */
|
7426 |
+
if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
|
7427 |
+
on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
|
7428 |
+
delete on[CHECKBOX_RADIO_TOKEN];
|
7429 |
+
}
|
7430 |
+
}
|
7431 |
+
|
7432 |
+
var target$1;
|
7433 |
+
|
7434 |
+
function createOnceHandler (handler, event, capture) {
|
7435 |
+
var _target = target$1; // save current target element in closure
|
7436 |
+
return function onceHandler () {
|
7437 |
+
var res = handler.apply(null, arguments);
|
7438 |
+
if (res !== null) {
|
7439 |
+
remove$2(event, onceHandler, capture, _target);
|
7440 |
+
}
|
7441 |
+
}
|
7442 |
+
}
|
7443 |
+
|
7444 |
+
function add$1 (
|
7445 |
+
event,
|
7446 |
+
handler,
|
7447 |
+
once$$1,
|
7448 |
+
capture,
|
7449 |
+
passive
|
7450 |
+
) {
|
7451 |
+
handler = withMacroTask(handler);
|
7452 |
+
if (once$$1) { handler = createOnceHandler(handler, event, capture); }
|
7453 |
+
target$1.addEventListener(
|
7454 |
+
event,
|
7455 |
+
handler,
|
7456 |
+
supportsPassive
|
7457 |
+
? { capture: capture, passive: passive }
|
7458 |
+
: capture
|
7459 |
+
);
|
7460 |
+
}
|
7461 |
+
|
7462 |
+
function remove$2 (
|
7463 |
+
event,
|
7464 |
+
handler,
|
7465 |
+
capture,
|
7466 |
+
_target
|
7467 |
+
) {
|
7468 |
+
(_target || target$1).removeEventListener(
|
7469 |
+
event,
|
7470 |
+
handler._withTask || handler,
|
7471 |
+
capture
|
7472 |
+
);
|
7473 |
+
}
|
7474 |
+
|
7475 |
+
function updateDOMListeners (oldVnode, vnode) {
|
7476 |
+
if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
|
7477 |
+
return
|
7478 |
+
}
|
7479 |
+
var on = vnode.data.on || {};
|
7480 |
+
var oldOn = oldVnode.data.on || {};
|
7481 |
+
target$1 = vnode.elm;
|
7482 |
+
normalizeEvents(on);
|
7483 |
+
updateListeners(on, oldOn, add$1, remove$2, vnode.context);
|
7484 |
+
target$1 = undefined;
|
7485 |
+
}
|
7486 |
+
|
7487 |
+
var events = {
|
7488 |
+
create: updateDOMListeners,
|
7489 |
+
update: updateDOMListeners
|
7490 |
+
}
|
7491 |
+
|
7492 |
+
/* */
|
7493 |
+
|
7494 |
+
function updateDOMProps (oldVnode, vnode) {
|
7495 |
+
if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
|
7496 |
+
return
|
7497 |
+
}
|
7498 |
+
var key, cur;
|
7499 |
+
var elm = vnode.elm;
|
7500 |
+
var oldProps = oldVnode.data.domProps || {};
|
7501 |
+
var props = vnode.data.domProps || {};
|
7502 |
+
// clone observed objects, as the user probably wants to mutate it
|
7503 |
+
if (isDef(props.__ob__)) {
|
7504 |
+
props = vnode.data.domProps = extend({}, props);
|
7505 |
+
}
|
7506 |
+
|
7507 |
+
for (key in oldProps) {
|
7508 |
+
if (isUndef(props[key])) {
|
7509 |
+
elm[key] = '';
|
7510 |
+
}
|
7511 |
+
}
|
7512 |
+
for (key in props) {
|
7513 |
+
cur = props[key];
|
7514 |
+
// ignore children if the node has textContent or innerHTML,
|
7515 |
+
// as these will throw away existing DOM nodes and cause removal errors
|
7516 |
+
// on subsequent patches (#3360)
|
7517 |
+
if (key === 'textContent' || key === 'innerHTML') {
|
7518 |
+
if (vnode.children) { vnode.children.length = 0; }
|
7519 |
+
if (cur === oldProps[key]) { continue }
|
7520 |
+
// #6601 work around Chrome version <= 55 bug where single textNode
|
7521 |
+
// replaced by innerHTML/textContent retains its parentNode property
|
7522 |
+
if (elm.childNodes.length === 1) {
|
7523 |
+
elm.removeChild(elm.childNodes[0]);
|
7524 |
+
}
|
7525 |
+
}
|
7526 |
+
|
7527 |
+
if (key === 'value') {
|
7528 |
+
// store value as _value as well since
|
7529 |
+
// non-string values will be stringified
|
7530 |
+
elm._value = cur;
|
7531 |
+
// avoid resetting cursor position when value is the same
|
7532 |
+
var strCur = isUndef(cur) ? '' : String(cur);
|
7533 |
+
if (shouldUpdateValue(elm, strCur)) {
|
7534 |
+
elm.value = strCur;
|
7535 |
+
}
|
7536 |
+
} else {
|
7537 |
+
elm[key] = cur;
|
7538 |
+
}
|
7539 |
+
}
|
7540 |
+
}
|
7541 |
+
|
7542 |
+
// check platforms/web/util/attrs.js acceptValue
|
7543 |
+
|
7544 |
+
|
7545 |
+
function shouldUpdateValue (elm, checkVal) {
|
7546 |
+
return (!elm.composing && (
|
7547 |
+
elm.tagName === 'OPTION' ||
|
7548 |
+
isNotInFocusAndDirty(elm, checkVal) ||
|
7549 |
+
isDirtyWithModifiers(elm, checkVal)
|
7550 |
+
))
|
7551 |
+
}
|
7552 |
+
|
7553 |
+
function isNotInFocusAndDirty (elm, checkVal) {
|
7554 |
+
// return true when textbox (.number and .trim) loses focus and its value is
|
7555 |
+
// not equal to the updated value
|
7556 |
+
var notInFocus = true;
|
7557 |
+
// #6157
|
7558 |
+
// work around IE bug when accessing document.activeElement in an iframe
|
7559 |
+
try { notInFocus = document.activeElement !== elm; } catch (e) {}
|
7560 |
+
return notInFocus && elm.value !== checkVal
|
7561 |
+
}
|
7562 |
+
|
7563 |
+
function isDirtyWithModifiers (elm, newVal) {
|
7564 |
+
var value = elm.value;
|
7565 |
+
var modifiers = elm._vModifiers; // injected by v-model runtime
|
7566 |
+
if (isDef(modifiers)) {
|
7567 |
+
if (modifiers.lazy) {
|
7568 |
+
// inputs with lazy should only be updated when not in focus
|
7569 |
+
return false
|
7570 |
+
}
|
7571 |
+
if (modifiers.number) {
|
7572 |
+
return toNumber(value) !== toNumber(newVal)
|
7573 |
+
}
|
7574 |
+
if (modifiers.trim) {
|
7575 |
+
return value.trim() !== newVal.trim()
|
7576 |
+
}
|
7577 |
+
}
|
7578 |
+
return value !== newVal
|
7579 |
+
}
|
7580 |
+
|
7581 |
+
var domProps = {
|
7582 |
+
create: updateDOMProps,
|
7583 |
+
update: updateDOMProps
|
7584 |
+
}
|
7585 |
+
|
7586 |
+
/* */
|
7587 |
+
|
7588 |
+
var parseStyleText = cached(function (cssText) {
|
7589 |
+
var res = {};
|
7590 |
+
var listDelimiter = /;(?![^(]*\))/g;
|
7591 |
+
var propertyDelimiter = /:(.+)/;
|
7592 |
+
cssText.split(listDelimiter).forEach(function (item) {
|
7593 |
+
if (item) {
|
7594 |
+
var tmp = item.split(propertyDelimiter);
|
7595 |
+
tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
|
7596 |
+
}
|
7597 |
+
});
|
7598 |
+
return res
|
7599 |
+
});
|
7600 |
+
|
7601 |
+
// merge static and dynamic style data on the same vnode
|
7602 |
+
function normalizeStyleData (data) {
|
7603 |
+
var style = normalizeStyleBinding(data.style);
|
7604 |
+
// static style is pre-processed into an object during compilation
|
7605 |
+
// and is always a fresh object, so it's safe to merge into it
|
7606 |
+
return data.staticStyle
|
7607 |
+
? extend(data.staticStyle, style)
|
7608 |
+
: style
|
7609 |
+
}
|
7610 |
+
|
7611 |
+
// normalize possible array / string values into Object
|
7612 |
+
function normalizeStyleBinding (bindingStyle) {
|
7613 |
+
if (Array.isArray(bindingStyle)) {
|
7614 |
+
return toObject(bindingStyle)
|
7615 |
+
}
|
7616 |
+
if (typeof bindingStyle === 'string') {
|
7617 |
+
return parseStyleText(bindingStyle)
|
7618 |
+
}
|
7619 |
+
return bindingStyle
|
7620 |
+
}
|
7621 |
+
|
7622 |
+
/**
|
7623 |
+
* parent component style should be after child's
|
7624 |
+
* so that parent component's style could override it
|
7625 |
+
*/
|
7626 |
+
function getStyle (vnode, checkChild) {
|
7627 |
+
var res = {};
|
7628 |
+
var styleData;
|
7629 |
+
|
7630 |
+
if (checkChild) {
|
7631 |
+
var childNode = vnode;
|
7632 |
+
while (childNode.componentInstance) {
|
7633 |
+
childNode = childNode.componentInstance._vnode;
|
7634 |
+
if (
|
7635 |
+
childNode && childNode.data &&
|
7636 |
+
(styleData = normalizeStyleData(childNode.data))
|
7637 |
+
) {
|
7638 |
+
extend(res, styleData);
|
7639 |
+
}
|
7640 |
+
}
|
7641 |
+
}
|
7642 |
+
|
7643 |
+
if ((styleData = normalizeStyleData(vnode.data))) {
|
7644 |
+
extend(res, styleData);
|
7645 |
+
}
|
7646 |
+
|
7647 |
+
var parentNode = vnode;
|
7648 |
+
while ((parentNode = parentNode.parent)) {
|
7649 |
+
if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
|
7650 |
+
extend(res, styleData);
|
7651 |
+
}
|
7652 |
+
}
|
7653 |
+
return res
|
7654 |
+
}
|
7655 |
+
|
7656 |
+
/* */
|
7657 |
+
|
7658 |
+
var cssVarRE = /^--/;
|
7659 |
+
var importantRE = /\s*!important$/;
|
7660 |
+
var setProp = function (el, name, val) {
|
7661 |
+
/* istanbul ignore if */
|
7662 |
+
if (cssVarRE.test(name)) {
|
7663 |
+
el.style.setProperty(name, val);
|
7664 |
+
} else if (importantRE.test(val)) {
|
7665 |
+
el.style.setProperty(name, val.replace(importantRE, ''), 'important');
|
7666 |
+
} else {
|
7667 |
+
var normalizedName = normalize(name);
|
7668 |
+
if (Array.isArray(val)) {
|
7669 |
+
// Support values array created by autoprefixer, e.g.
|
7670 |
+
// {display: ["-webkit-box", "-ms-flexbox", "flex"]}
|
7671 |
+
// Set them one by one, and the browser will only set those it can recognize
|
7672 |
+
for (var i = 0, len = val.length; i < len; i++) {
|
7673 |
+
el.style[normalizedName] = val[i];
|
7674 |
+
}
|
7675 |
+
} else {
|
7676 |
+
el.style[normalizedName] = val;
|
7677 |
+
}
|
7678 |
+
}
|
7679 |
+
};
|
7680 |
+
|
7681 |
+
var vendorNames = ['Webkit', 'Moz', 'ms'];
|
7682 |
+
|
7683 |
+
var emptyStyle;
|
7684 |
+
var normalize = cached(function (prop) {
|
7685 |
+
emptyStyle = emptyStyle || document.createElement('div').style;
|
7686 |
+
prop = camelize(prop);
|
7687 |
+
if (prop !== 'filter' && (prop in emptyStyle)) {
|
7688 |
+
return prop
|
7689 |
+
}
|
7690 |
+
var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
|
7691 |
+
for (var i = 0; i < vendorNames.length; i++) {
|
7692 |
+
var name = vendorNames[i] + capName;
|
7693 |
+
if (name in emptyStyle) {
|
7694 |
+
return name
|
7695 |
+
}
|
7696 |
+
}
|
7697 |
+
});
|
7698 |
+
|
7699 |
+
function updateStyle (oldVnode, vnode) {
|
7700 |
+
var data = vnode.data;
|
7701 |
+
var oldData = oldVnode.data;
|
7702 |
+
|
7703 |
+
if (isUndef(data.staticStyle) && isUndef(data.style) &&
|
7704 |
+
isUndef(oldData.staticStyle) && isUndef(oldData.style)
|
7705 |
+
) {
|
7706 |
+
return
|
7707 |
+
}
|
7708 |
+
|
7709 |
+
var cur, name;
|
7710 |
+
var el = vnode.elm;
|
7711 |
+
var oldStaticStyle = oldData.staticStyle;
|
7712 |
+
var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
|
7713 |
+
|
7714 |
+
// if static style exists, stylebinding already merged into it when doing normalizeStyleData
|
7715 |
+
var oldStyle = oldStaticStyle || oldStyleBinding;
|
7716 |
+
|
7717 |
+
var style = normalizeStyleBinding(vnode.data.style) || {};
|
7718 |
+
|
7719 |
+
// store normalized style under a different key for next diff
|
7720 |
+
// make sure to clone it if it's reactive, since the user likely wants
|
7721 |
+
// to mutate it.
|
7722 |
+
vnode.data.normalizedStyle = isDef(style.__ob__)
|
7723 |
+
? extend({}, style)
|
7724 |
+
: style;
|
7725 |
+
|
7726 |
+
var newStyle = getStyle(vnode, true);
|
7727 |
+
|
7728 |
+
for (name in oldStyle) {
|
7729 |
+
if (isUndef(newStyle[name])) {
|
7730 |
+
setProp(el, name, '');
|
7731 |
+
}
|
7732 |
+
}
|
7733 |
+
for (name in newStyle) {
|
7734 |
+
cur = newStyle[name];
|
7735 |
+
if (cur !== oldStyle[name]) {
|
7736 |
+
// ie9 setting to null has no effect, must use empty string
|
7737 |
+
setProp(el, name, cur == null ? '' : cur);
|
7738 |
+
}
|
7739 |
+
}
|
7740 |
+
}
|
7741 |
+
|
7742 |
+
var style = {
|
7743 |
+
create: updateStyle,
|
7744 |
+
update: updateStyle
|
7745 |
+
}
|
7746 |
+
|
7747 |
+
/* */
|
7748 |
+
|
7749 |
+
/**
|
7750 |
+
* Add class with compatibility for SVG since classList is not supported on
|
7751 |
+
* SVG elements in IE
|
7752 |
+
*/
|
7753 |
+
function addClass (el, cls) {
|
7754 |
+
/* istanbul ignore if */
|
7755 |
+
if (!cls || !(cls = cls.trim())) {
|
7756 |
+
return
|
7757 |
+
}
|
7758 |
+
|
7759 |
+
/* istanbul ignore else */
|
7760 |
+
if (el.classList) {
|
7761 |
+
if (cls.indexOf(' ') > -1) {
|
7762 |
+
cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
|
7763 |
+
} else {
|
7764 |
+
el.classList.add(cls);
|
7765 |
+
}
|
7766 |
+
} else {
|
7767 |
+
var cur = " " + (el.getAttribute('class') || '') + " ";
|
7768 |
+
if (cur.indexOf(' ' + cls + ' ') < 0) {
|
7769 |
+
el.setAttribute('class', (cur + cls).trim());
|
7770 |
+
}
|
7771 |
+
}
|
7772 |
+
}
|
7773 |
+
|
7774 |
+
/**
|
7775 |
+
* Remove class with compatibility for SVG since classList is not supported on
|
7776 |
+
* SVG elements in IE
|
7777 |
+
*/
|
7778 |
+
function removeClass (el, cls) {
|
7779 |
+
/* istanbul ignore if */
|
7780 |
+
if (!cls || !(cls = cls.trim())) {
|
7781 |
+
return
|
7782 |
+
}
|
7783 |
+
|
7784 |
+
/* istanbul ignore else */
|
7785 |
+
if (el.classList) {
|
7786 |
+
if (cls.indexOf(' ') > -1) {
|
7787 |
+
cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
|
7788 |
+
} else {
|
7789 |
+
el.classList.remove(cls);
|
7790 |
+
}
|
7791 |
+
if (!el.classList.length) {
|
7792 |
+
el.removeAttribute('class');
|
7793 |
+
}
|
7794 |
+
} else {
|
7795 |
+
var cur = " " + (el.getAttribute('class') || '') + " ";
|
7796 |
+
var tar = ' ' + cls + ' ';
|
7797 |
+
while (cur.indexOf(tar) >= 0) {
|
7798 |
+
cur = cur.replace(tar, ' ');
|
7799 |
+
}
|
7800 |
+
cur = cur.trim();
|
7801 |
+
if (cur) {
|
7802 |
+
el.setAttribute('class', cur);
|
7803 |
+
} else {
|
7804 |
+
el.removeAttribute('class');
|
7805 |
+
}
|
7806 |
+
}
|
7807 |
+
}
|
7808 |
+
|
7809 |
+
/* */
|
7810 |
+
|
7811 |
+
function resolveTransition (def) {
|
7812 |
+
if (!def) {
|
7813 |
+
return
|
7814 |
+
}
|
7815 |
+
/* istanbul ignore else */
|
7816 |
+
if (typeof def === 'object') {
|
7817 |
+
var res = {};
|
7818 |
+
if (def.css !== false) {
|
7819 |
+
extend(res, autoCssTransition(def.name || 'v'));
|
7820 |
+
}
|
7821 |
+
extend(res, def);
|
7822 |
+
return res
|
7823 |
+
} else if (typeof def === 'string') {
|
7824 |
+
return autoCssTransition(def)
|
7825 |
+
}
|
7826 |
+
}
|
7827 |
+
|
7828 |
+
var autoCssTransition = cached(function (name) {
|
7829 |
+
return {
|
7830 |
+
enterClass: (name + "-enter"),
|
7831 |
+
enterToClass: (name + "-enter-to"),
|
7832 |
+
enterActiveClass: (name + "-enter-active"),
|
7833 |
+
leaveClass: (name + "-leave"),
|
7834 |
+
leaveToClass: (name + "-leave-to"),
|
7835 |
+
leaveActiveClass: (name + "-leave-active")
|
7836 |
+
}
|
7837 |
+
});
|
7838 |
+
|
7839 |
+
var hasTransition = inBrowser && !isIE9;
|
7840 |
+
var TRANSITION = 'transition';
|
7841 |
+
var ANIMATION = 'animation';
|
7842 |
+
|
7843 |
+
// Transition property/event sniffing
|
7844 |
+
var transitionProp = 'transition';
|
7845 |
+
var transitionEndEvent = 'transitionend';
|
7846 |
+
var animationProp = 'animation';
|
7847 |
+
var animationEndEvent = 'animationend';
|
7848 |
+
if (hasTransition) {
|
7849 |
+
/* istanbul ignore if */
|
7850 |
+
if (window.ontransitionend === undefined &&
|
7851 |
+
window.onwebkittransitionend !== undefined
|
7852 |
+
) {
|
7853 |
+
transitionProp = 'WebkitTransition';
|
7854 |
+
transitionEndEvent = 'webkitTransitionEnd';
|
7855 |
+
}
|
7856 |
+
if (window.onanimationend === undefined &&
|
7857 |
+
window.onwebkitanimationend !== undefined
|
7858 |
+
) {
|
7859 |
+
animationProp = 'WebkitAnimation';
|
7860 |
+
animationEndEvent = 'webkitAnimationEnd';
|
7861 |
+
}
|
7862 |
+
}
|
7863 |
+
|
7864 |
+
// binding to window is necessary to make hot reload work in IE in strict mode
|
7865 |
+
var raf = inBrowser
|
7866 |
+
? window.requestAnimationFrame
|
7867 |
+
? window.requestAnimationFrame.bind(window)
|
7868 |
+
: setTimeout
|
7869 |
+
: /* istanbul ignore next */ function (fn) { return fn(); };
|
7870 |
+
|
7871 |
+
function nextFrame (fn) {
|
7872 |
+
raf(function () {
|
7873 |
+
raf(fn);
|
7874 |
+
});
|
7875 |
+
}
|
7876 |
+
|
7877 |
+
function addTransitionClass (el, cls) {
|
7878 |
+
var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
|
7879 |
+
if (transitionClasses.indexOf(cls) < 0) {
|
7880 |
+
transitionClasses.push(cls);
|
7881 |
+
addClass(el, cls);
|
7882 |
+
}
|
7883 |
+
}
|
7884 |
+
|
7885 |
+
function removeTransitionClass (el, cls) {
|
7886 |
+
if (el._transitionClasses) {
|
7887 |
+
remove(el._transitionClasses, cls);
|
7888 |
+
}
|
7889 |
+
removeClass(el, cls);
|
7890 |
+
}
|
7891 |
+
|
7892 |
+
function whenTransitionEnds (
|
7893 |
+
el,
|
7894 |
+
expectedType,
|
7895 |
+
cb
|
7896 |
+
) {
|
7897 |
+
var ref = getTransitionInfo(el, expectedType);
|
7898 |
+
var type = ref.type;
|
7899 |
+
var timeout = ref.timeout;
|
7900 |
+
var propCount = ref.propCount;
|
7901 |
+
if (!type) { return cb() }
|
7902 |
+
var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
|
7903 |
+
var ended = 0;
|
7904 |
+
var end = function () {
|
7905 |
+
el.removeEventListener(event, onEnd);
|
7906 |
+
cb();
|
7907 |
+
};
|
7908 |
+
var onEnd = function (e) {
|
7909 |
+
if (e.target === el) {
|
7910 |
+
if (++ended >= propCount) {
|
7911 |
+
end();
|
7912 |
+
}
|
7913 |
+
}
|
7914 |
+
};
|
7915 |
+
setTimeout(function () {
|
7916 |
+
if (ended < propCount) {
|
7917 |
+
end();
|
7918 |
+
}
|
7919 |
+
}, timeout + 1);
|
7920 |
+
el.addEventListener(event, onEnd);
|
7921 |
+
}
|
7922 |
+
|
7923 |
+
var transformRE = /\b(transform|all)(,|$)/;
|
7924 |
+
|
7925 |
+
function getTransitionInfo (el, expectedType) {
|
7926 |
+
var styles = window.getComputedStyle(el);
|
7927 |
+
var transitionDelays = styles[transitionProp + 'Delay'].split(', ');
|
7928 |
+
var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
|
7929 |
+
var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
|
7930 |
+
var animationDelays = styles[animationProp + 'Delay'].split(', ');
|
7931 |
+
var animationDurations = styles[animationProp + 'Duration'].split(', ');
|
7932 |
+
var animationTimeout = getTimeout(animationDelays, animationDurations);
|
7933 |
+
|
7934 |
+
var type;
|
7935 |
+
var timeout = 0;
|
7936 |
+
var propCount = 0;
|
7937 |
+
/* istanbul ignore if */
|
7938 |
+
if (expectedType === TRANSITION) {
|
7939 |
+
if (transitionTimeout > 0) {
|
7940 |
+
type = TRANSITION;
|
7941 |
+
timeout = transitionTimeout;
|
7942 |
+
propCount = transitionDurations.length;
|
7943 |
+
}
|
7944 |
+
} else if (expectedType === ANIMATION) {
|
7945 |
+
if (animationTimeout > 0) {
|
7946 |
+
type = ANIMATION;
|
7947 |
+
timeout = animationTimeout;
|
7948 |
+
propCount = animationDurations.length;
|
7949 |
+
}
|
7950 |
+
} else {
|
7951 |
+
timeout = Math.max(transitionTimeout, animationTimeout);
|
7952 |
+
type = timeout > 0
|
7953 |
+
? transitionTimeout > animationTimeout
|
7954 |
+
? TRANSITION
|
7955 |
+
: ANIMATION
|
7956 |
+
: null;
|
7957 |
+
propCount = type
|
7958 |
+
? type === TRANSITION
|
7959 |
+
? transitionDurations.length
|
7960 |
+
: animationDurations.length
|
7961 |
+
: 0;
|
7962 |
+
}
|
7963 |
+
var hasTransform =
|
7964 |
+
type === TRANSITION &&
|
7965 |
+
transformRE.test(styles[transitionProp + 'Property']);
|
7966 |
+
return {
|
7967 |
+
type: type,
|
7968 |
+
timeout: timeout,
|
7969 |
+
propCount: propCount,
|
7970 |
+
hasTransform: hasTransform
|
7971 |
+
}
|
7972 |
+
}
|
7973 |
+
|
7974 |
+
function getTimeout (delays, durations) {
|
7975 |
+
/* istanbul ignore next */
|
7976 |
+
while (delays.length < durations.length) {
|
7977 |
+
delays = delays.concat(delays);
|
7978 |
+
}
|
7979 |
+
|
7980 |
+
return Math.max.apply(null, durations.map(function (d, i) {
|
7981 |
+
return toMs(d) + toMs(delays[i])
|
7982 |
+
}))
|
7983 |
+
}
|
7984 |
+
|
7985 |
+
function toMs (s) {
|
7986 |
+
return Number(s.slice(0, -1)) * 1000
|
7987 |
+
}
|
7988 |
+
|
7989 |
+
/* */
|
7990 |
+
|
7991 |
+
function enter (vnode, toggleDisplay) {
|
7992 |
+
var el = vnode.elm;
|
7993 |
+
|
7994 |
+
// call leave callback now
|
7995 |
+
if (isDef(el._leaveCb)) {
|
7996 |
+
el._leaveCb.cancelled = true;
|
7997 |
+
el._leaveCb();
|
7998 |
+
}
|
7999 |
+
|
8000 |
+
var data = resolveTransition(vnode.data.transition);
|
8001 |
+
if (isUndef(data)) {
|
8002 |
+
return
|
8003 |
+
}
|
8004 |
+
|
8005 |
+
/* istanbul ignore if */
|
8006 |
+
if (isDef(el._enterCb) || el.nodeType !== 1) {
|
8007 |
+
return
|
8008 |
+
}
|
8009 |
+
|
8010 |
+
var css = data.css;
|
8011 |
+
var type = data.type;
|
8012 |
+
var enterClass = data.enterClass;
|
8013 |
+
var enterToClass = data.enterToClass;
|
8014 |
+
var enterActiveClass = data.enterActiveClass;
|
8015 |
+
var appearClass = data.appearClass;
|
8016 |
+
var appearToClass = data.appearToClass;
|
8017 |
+
var appearActiveClass = data.appearActiveClass;
|
8018 |
+
var beforeEnter = data.beforeEnter;
|
8019 |
+
var enter = data.enter;
|
8020 |
+
var afterEnter = data.afterEnter;
|
8021 |
+
var enterCancelled = data.enterCancelled;
|
8022 |
+
var beforeAppear = data.beforeAppear;
|
8023 |
+
var appear = data.appear;
|
8024 |
+
var afterAppear = data.afterAppear;
|
8025 |
+
var appearCancelled = data.appearCancelled;
|
8026 |
+
var duration = data.duration;
|
8027 |
+
|
8028 |
+
// activeInstance will always be the <transition> component managing this
|
8029 |
+
// transition. One edge case to check is when the <transition> is placed
|
8030 |
+
// as the root node of a child component. In that case we need to check
|
8031 |
+
// <transition>'s parent for appear check.
|
8032 |
+
var context = activeInstance;
|
8033 |
+
var transitionNode = activeInstance.$vnode;
|
8034 |
+
while (transitionNode && transitionNode.parent) {
|
8035 |
+
transitionNode = transitionNode.parent;
|
8036 |
+
context = transitionNode.context;
|
8037 |
+
}
|
8038 |
+
|
8039 |
+
var isAppear = !context._isMounted || !vnode.isRootInsert;
|
8040 |
+
|
8041 |
+
if (isAppear && !appear && appear !== '') {
|
8042 |
+
return
|
8043 |
+
}
|
8044 |
+
|
8045 |
+
var startClass = isAppear && appearClass
|
8046 |
+
? appearClass
|
8047 |
+
: enterClass;
|
8048 |
+
var activeClass = isAppear && appearActiveClass
|
8049 |
+
? appearActiveClass
|
8050 |
+
: enterActiveClass;
|
8051 |
+
var toClass = isAppear && appearToClass
|
8052 |
+
? appearToClass
|
8053 |
+
: enterToClass;
|
8054 |
+
|
8055 |
+
var beforeEnterHook = isAppear
|
8056 |
+
? (beforeAppear || beforeEnter)
|
8057 |
+
: beforeEnter;
|
8058 |
+
var enterHook = isAppear
|
8059 |
+
? (typeof appear === 'function' ? appear : enter)
|
8060 |
+
: enter;
|
8061 |
+
var afterEnterHook = isAppear
|
8062 |
+
? (afterAppear || afterEnter)
|
8063 |
+
: afterEnter;
|
8064 |
+
var enterCancelledHook = isAppear
|
8065 |
+
? (appearCancelled || enterCancelled)
|
8066 |
+
: enterCancelled;
|
8067 |
+
|
8068 |
+
var explicitEnterDuration = toNumber(
|
8069 |
+
isObject(duration)
|
8070 |
+
? duration.enter
|
8071 |
+
: duration
|
8072 |
+
);
|
8073 |
+
|
8074 |
+
if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {
|
8075 |
+
checkDuration(explicitEnterDuration, 'enter', vnode);
|
8076 |
+
}
|
8077 |
+
|
8078 |
+
var expectsCSS = css !== false && !isIE9;
|
8079 |
+
var userWantsControl = getHookArgumentsLength(enterHook);
|
8080 |
+
|
8081 |
+
var cb = el._enterCb = once(function () {
|
8082 |
+
if (expectsCSS) {
|
8083 |
+
removeTransitionClass(el, toClass);
|
8084 |
+
removeTransitionClass(el, activeClass);
|
8085 |
+
}
|
8086 |
+
if (cb.cancelled) {
|
8087 |
+
if (expectsCSS) {
|
8088 |
+
removeTransitionClass(el, startClass);
|
8089 |
+
}
|
8090 |
+
enterCancelledHook && enterCancelledHook(el);
|
8091 |
+
} else {
|
8092 |
+
afterEnterHook && afterEnterHook(el);
|
8093 |
+
}
|
8094 |
+
el._enterCb = null;
|
8095 |
+
});
|
8096 |
+
|
8097 |
+
if (!vnode.data.show) {
|
8098 |
+
// remove pending leave element on enter by injecting an insert hook
|
8099 |
+
mergeVNodeHook(vnode, 'insert', function () {
|
8100 |
+
var parent = el.parentNode;
|
8101 |
+
var pendingNode = parent && parent._pending && parent._pending[vnode.key];
|
8102 |
+
if (pendingNode &&
|
8103 |
+
pendingNode.tag === vnode.tag &&
|
8104 |
+
pendingNode.elm._leaveCb
|
8105 |
+
) {
|
8106 |
+
pendingNode.elm._leaveCb();
|
8107 |
+
}
|
8108 |
+
enterHook && enterHook(el, cb);
|
8109 |
+
});
|
8110 |
+
}
|
8111 |
+
|
8112 |
+
// start enter transition
|
8113 |
+
beforeEnterHook && beforeEnterHook(el);
|
8114 |
+
if (expectsCSS) {
|
8115 |
+
addTransitionClass(el, startClass);
|
8116 |
+
addTransitionClass(el, activeClass);
|
8117 |
+
nextFrame(function () {
|
8118 |
+
removeTransitionClass(el, startClass);
|
8119 |
+
if (!cb.cancelled) {
|
8120 |
+
addTransitionClass(el, toClass);
|
8121 |
+
if (!userWantsControl) {
|
8122 |
+
if (isValidDuration(explicitEnterDuration)) {
|
8123 |
+
setTimeout(cb, explicitEnterDuration);
|
8124 |
+
} else {
|
8125 |
+
whenTransitionEnds(el, type, cb);
|
8126 |
+
}
|
8127 |
+
}
|
8128 |
+
}
|
8129 |
+
});
|
8130 |
+
}
|
8131 |
+
|
8132 |
+
if (vnode.data.show) {
|
8133 |
+
toggleDisplay && toggleDisplay();
|
8134 |
+
enterHook && enterHook(el, cb);
|
8135 |
+
}
|
8136 |
+
|
8137 |
+
if (!expectsCSS && !userWantsControl) {
|
8138 |
+
cb();
|
8139 |
+
}
|
8140 |
+
}
|
8141 |
+
|
8142 |
+
function leave (vnode, rm) {
|
8143 |
+
var el = vnode.elm;
|
8144 |
+
|
8145 |
+
// call enter callback now
|
8146 |
+
if (isDef(el._enterCb)) {
|
8147 |
+
el._enterCb.cancelled = true;
|
8148 |
+
el._enterCb();
|
8149 |
+
}
|
8150 |
+
|
8151 |
+
var data = resolveTransition(vnode.data.transition);
|
8152 |
+
if (isUndef(data) || el.nodeType !== 1) {
|
8153 |
+
return rm()
|
8154 |
+
}
|
8155 |
+
|
8156 |
+
/* istanbul ignore if */
|
8157 |
+
if (isDef(el._leaveCb)) {
|
8158 |
+
return
|
8159 |
+
}
|
8160 |
+
|
8161 |
+
var css = data.css;
|
8162 |
+
var type = data.type;
|
8163 |
+
var leaveClass = data.leaveClass;
|
8164 |
+
var leaveToClass = data.leaveToClass;
|
8165 |
+
var leaveActiveClass = data.leaveActiveClass;
|
8166 |
+
var beforeLeave = data.beforeLeave;
|
8167 |
+
var leave = data.leave;
|
8168 |
+
var afterLeave = data.afterLeave;
|
8169 |
+
var leaveCancelled = data.leaveCancelled;
|
8170 |
+
var delayLeave = data.delayLeave;
|
8171 |
+
var duration = data.duration;
|
8172 |
+
|
8173 |
+
var expectsCSS = css !== false && !isIE9;
|
8174 |
+
var userWantsControl = getHookArgumentsLength(leave);
|
8175 |
+
|
8176 |
+
var explicitLeaveDuration = toNumber(
|
8177 |
+
isObject(duration)
|
8178 |
+
? duration.leave
|
8179 |
+
: duration
|
8180 |
+
);
|
8181 |
+
|
8182 |
+
if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {
|
8183 |
+
checkDuration(explicitLeaveDuration, 'leave', vnode);
|
8184 |
+
}
|
8185 |
+
|
8186 |
+
var cb = el._leaveCb = once(function () {
|
8187 |
+
if (el.parentNode && el.parentNode._pending) {
|
8188 |
+
el.parentNode._pending[vnode.key] = null;
|
8189 |
+
}
|
8190 |
+
if (expectsCSS) {
|
8191 |
+
removeTransitionClass(el, leaveToClass);
|
8192 |
+
removeTransitionClass(el, leaveActiveClass);
|
8193 |
+
}
|
8194 |
+
if (cb.cancelled) {
|
8195 |
+
if (expectsCSS) {
|
8196 |
+
removeTransitionClass(el, leaveClass);
|
8197 |
+
}
|
8198 |
+
leaveCancelled && leaveCancelled(el);
|
8199 |
+
} else {
|
8200 |
+
rm();
|
8201 |
+
afterLeave && afterLeave(el);
|
8202 |
+
}
|
8203 |
+
el._leaveCb = null;
|
8204 |
+
});
|
8205 |
+
|
8206 |
+
if (delayLeave) {
|
8207 |
+
delayLeave(performLeave);
|
8208 |
+
} else {
|
8209 |
+
performLeave();
|
8210 |
+
}
|
8211 |
+
|
8212 |
+
function performLeave () {
|
8213 |
+
// the delayed leave may have already been cancelled
|
8214 |
+
if (cb.cancelled) {
|
8215 |
+
return
|
8216 |
+
}
|
8217 |
+
// record leaving element
|
8218 |
+
if (!vnode.data.show) {
|
8219 |
+
(el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;
|
8220 |
+
}
|
8221 |
+
beforeLeave && beforeLeave(el);
|
8222 |
+
if (expectsCSS) {
|
8223 |
+
addTransitionClass(el, leaveClass);
|
8224 |
+
addTransitionClass(el, leaveActiveClass);
|
8225 |
+
nextFrame(function () {
|
8226 |
+
removeTransitionClass(el, leaveClass);
|
8227 |
+
if (!cb.cancelled) {
|
8228 |
+
addTransitionClass(el, leaveToClass);
|
8229 |
+
if (!userWantsControl) {
|
8230 |
+
if (isValidDuration(explicitLeaveDuration)) {
|
8231 |
+
setTimeout(cb, explicitLeaveDuration);
|
8232 |
+
} else {
|
8233 |
+
whenTransitionEnds(el, type, cb);
|
8234 |
+
}
|
8235 |
+
}
|
8236 |
+
}
|
8237 |
+
});
|
8238 |
+
}
|
8239 |
+
leave && leave(el, cb);
|
8240 |
+
if (!expectsCSS && !userWantsControl) {
|
8241 |
+
cb();
|
8242 |
+
}
|
8243 |
+
}
|
8244 |
+
}
|
8245 |
+
|
8246 |
+
// only used in dev mode
|
8247 |
+
function checkDuration (val, name, vnode) {
|
8248 |
+
if (typeof val !== 'number') {
|
8249 |
+
warn(
|
8250 |
+
"<transition> explicit " + name + " duration is not a valid number - " +
|
8251 |
+
"got " + (JSON.stringify(val)) + ".",
|
8252 |
+
vnode.context
|
8253 |
+
);
|
8254 |
+
} else if (isNaN(val)) {
|
8255 |
+
warn(
|
8256 |
+
"<transition> explicit " + name + " duration is NaN - " +
|
8257 |
+
'the duration expression might be incorrect.',
|
8258 |
+
vnode.context
|
8259 |
+
);
|
8260 |
+
}
|
8261 |
+
}
|
8262 |
+
|
8263 |
+
function isValidDuration (val) {
|
8264 |
+
return typeof val === 'number' && !isNaN(val)
|
8265 |
+
}
|
8266 |
+
|
8267 |
+
/**
|
8268 |
+
* Normalize a transition hook's argument length. The hook may be:
|
8269 |
+
* - a merged hook (invoker) with the original in .fns
|
8270 |
+
* - a wrapped component method (check ._length)
|
8271 |
+
* - a plain function (.length)
|
8272 |
+
*/
|
8273 |
+
function getHookArgumentsLength (fn) {
|
8274 |
+
if (isUndef(fn)) {
|
8275 |
+
return false
|
8276 |
+
}
|
8277 |
+
var invokerFns = fn.fns;
|
8278 |
+
if (isDef(invokerFns)) {
|
8279 |
+
// invoker
|
8280 |
+
return getHookArgumentsLength(
|
8281 |
+
Array.isArray(invokerFns)
|
8282 |
+
? invokerFns[0]
|
8283 |
+
: invokerFns
|
8284 |
+
)
|
8285 |
+
} else {
|
8286 |
+
return (fn._length || fn.length) > 1
|
8287 |
+
}
|
8288 |
+
}
|
8289 |
+
|
8290 |
+
function _enter (_, vnode) {
|
8291 |
+
if (vnode.data.show !== true) {
|
8292 |
+
enter(vnode);
|
8293 |
+
}
|
8294 |
+
}
|
8295 |
+
|
8296 |
+
var transition = inBrowser ? {
|
8297 |
+
create: _enter,
|
8298 |
+
activate: _enter,
|
8299 |
+
remove: function remove$$1 (vnode, rm) {
|
8300 |
+
/* istanbul ignore else */
|
8301 |
+
if (vnode.data.show !== true) {
|
8302 |
+
leave(vnode, rm);
|
8303 |
+
} else {
|
8304 |
+
rm();
|
8305 |
+
}
|
8306 |
+
}
|
8307 |
+
} : {}
|
8308 |
+
|
8309 |
+
var platformModules = [
|
8310 |
+
attrs,
|
8311 |
+
klass,
|
8312 |
+
events,
|
8313 |
+
domProps,
|
8314 |
+
style,
|
8315 |
+
transition
|
8316 |
+
]
|
8317 |
+
|
8318 |
+
/* */
|
8319 |
+
|
8320 |
+
// the directive module should be applied last, after all
|
8321 |
+
// built-in modules have been applied.
|
8322 |
+
var modules = platformModules.concat(baseModules);
|
8323 |
+
|
8324 |
+
var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
|
8325 |
+
|
8326 |
+
/**
|
8327 |
+
* Not type checking this file because flow doesn't like attaching
|
8328 |
+
* properties to Elements.
|
8329 |
+
*/
|
8330 |
+
|
8331 |
+
/* istanbul ignore if */
|
8332 |
+
if (isIE9) {
|
8333 |
+
// http://www.matts411.com/post/internet-explorer-9-oninput/
|
8334 |
+
document.addEventListener('selectionchange', function () {
|
8335 |
+
var el = document.activeElement;
|
8336 |
+
if (el && el.vmodel) {
|
8337 |
+
trigger(el, 'input');
|
8338 |
+
}
|
8339 |
+
});
|
8340 |
+
}
|
8341 |
+
|
8342 |
+
var directive = {
|
8343 |
+
inserted: function inserted (el, binding, vnode, oldVnode) {
|
8344 |
+
if (vnode.tag === 'select') {
|
8345 |
+
// #6903
|
8346 |
+
if (oldVnode.elm && !oldVnode.elm._vOptions) {
|
8347 |
+
mergeVNodeHook(vnode, 'postpatch', function () {
|
8348 |
+
directive.componentUpdated(el, binding, vnode);
|
8349 |
+
});
|
8350 |
+
} else {
|
8351 |
+
setSelected(el, binding, vnode.context);
|
8352 |
+
}
|
8353 |
+
el._vOptions = [].map.call(el.options, getValue);
|
8354 |
+
} else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
|
8355 |
+
el._vModifiers = binding.modifiers;
|
8356 |
+
if (!binding.modifiers.lazy) {
|
8357 |
+
el.addEventListener('compositionstart', onCompositionStart);
|
8358 |
+
el.addEventListener('compositionend', onCompositionEnd);
|
8359 |
+
// Safari < 10.2 & UIWebView doesn't fire compositionend when
|
8360 |
+
// switching focus before confirming composition choice
|
8361 |
+
// this also fixes the issue where some browsers e.g. iOS Chrome
|
8362 |
+
// fires "change" instead of "input" on autocomplete.
|
8363 |
+
el.addEventListener('change', onCompositionEnd);
|
8364 |
+
/* istanbul ignore if */
|
8365 |
+
if (isIE9) {
|
8366 |
+
el.vmodel = true;
|
8367 |
+
}
|
8368 |
+
}
|
8369 |
+
}
|
8370 |
+
},
|
8371 |
+
|
8372 |
+
componentUpdated: function componentUpdated (el, binding, vnode) {
|
8373 |
+
if (vnode.tag === 'select') {
|
8374 |
+
setSelected(el, binding, vnode.context);
|
8375 |
+
// in case the options rendered by v-for have changed,
|
8376 |
+
// it's possible that the value is out-of-sync with the rendered options.
|
8377 |
+
// detect such cases and filter out values that no longer has a matching
|
8378 |
+
// option in the DOM.
|
8379 |
+
var prevOptions = el._vOptions;
|
8380 |
+
var curOptions = el._vOptions = [].map.call(el.options, getValue);
|
8381 |
+
if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {
|
8382 |
+
// trigger change event if
|
8383 |
+
// no matching option found for at least one value
|
8384 |
+
var needReset = el.multiple
|
8385 |
+
? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })
|
8386 |
+
: binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);
|
8387 |
+
if (needReset) {
|
8388 |
+
trigger(el, 'change');
|
8389 |
+
}
|
8390 |
+
}
|
8391 |
+
}
|
8392 |
+
}
|
8393 |
+
};
|
8394 |
+
|
8395 |
+
function setSelected (el, binding, vm) {
|
8396 |
+
actuallySetSelected(el, binding, vm);
|
8397 |
+
/* istanbul ignore if */
|
8398 |
+
if (isIE || isEdge) {
|
8399 |
+
setTimeout(function () {
|
8400 |
+
actuallySetSelected(el, binding, vm);
|
8401 |
+
}, 0);
|
8402 |
+
}
|
8403 |
+
}
|
8404 |
+
|
8405 |
+
function actuallySetSelected (el, binding, vm) {
|
8406 |
+
var value = binding.value;
|
8407 |
+
var isMultiple = el.multiple;
|
8408 |
+
if (isMultiple && !Array.isArray(value)) {
|
8409 |
+
process.env.NODE_ENV !== 'production' && warn(
|
8410 |
+
"<select multiple v-model=\"" + (binding.expression) + "\"> " +
|
8411 |
+
"expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
|
8412 |
+
vm
|
8413 |
+
);
|
8414 |
+
return
|
8415 |
+
}
|
8416 |
+
var selected, option;
|
8417 |
+
for (var i = 0, l = el.options.length; i < l; i++) {
|
8418 |
+
option = el.options[i];
|
8419 |
+
if (isMultiple) {
|
8420 |
+
selected = looseIndexOf(value, getValue(option)) > -1;
|
8421 |
+
if (option.selected !== selected) {
|
8422 |
+
option.selected = selected;
|
8423 |
+
}
|
8424 |
+
} else {
|
8425 |
+
if (looseEqual(getValue(option), value)) {
|
8426 |
+
if (el.selectedIndex !== i) {
|
8427 |
+
el.selectedIndex = i;
|
8428 |
+
}
|
8429 |
+
return
|
8430 |
+
}
|
8431 |
+
}
|
8432 |
+
}
|
8433 |
+
if (!isMultiple) {
|
8434 |
+
el.selectedIndex = -1;
|
8435 |
+
}
|
8436 |
+
}
|
8437 |
+
|
8438 |
+
function hasNoMatchingOption (value, options) {
|
8439 |
+
return options.every(function (o) { return !looseEqual(o, value); })
|
8440 |
+
}
|
8441 |
+
|
8442 |
+
function getValue (option) {
|
8443 |
+
return '_value' in option
|
8444 |
+
? option._value
|
8445 |
+
: option.value
|
8446 |
+
}
|
8447 |
+
|
8448 |
+
function onCompositionStart (e) {
|
8449 |
+
e.target.composing = true;
|
8450 |
+
}
|
8451 |
+
|
8452 |
+
function onCompositionEnd (e) {
|
8453 |
+
// prevent triggering an input event for no reason
|
8454 |
+
if (!e.target.composing) { return }
|
8455 |
+
e.target.composing = false;
|
8456 |
+
trigger(e.target, 'input');
|
8457 |
+
}
|
8458 |
+
|
8459 |
+
function trigger (el, type) {
|
8460 |
+
var e = document.createEvent('HTMLEvents');
|
8461 |
+
e.initEvent(type, true, true);
|
8462 |
+
el.dispatchEvent(e);
|
8463 |
+
}
|
8464 |
+
|
8465 |
+
/* */
|
8466 |
+
|
8467 |
+
// recursively search for possible transition defined inside the component root
|
8468 |
+
function locateNode (vnode) {
|
8469 |
+
return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
|
8470 |
+
? locateNode(vnode.componentInstance._vnode)
|
8471 |
+
: vnode
|
8472 |
+
}
|
8473 |
+
|
8474 |
+
var show = {
|
8475 |
+
bind: function bind (el, ref, vnode) {
|
8476 |
+
var value = ref.value;
|
8477 |
+
|
8478 |
+
vnode = locateNode(vnode);
|
8479 |
+
var transition$$1 = vnode.data && vnode.data.transition;
|
8480 |
+
var originalDisplay = el.__vOriginalDisplay =
|
8481 |
+
el.style.display === 'none' ? '' : el.style.display;
|
8482 |
+
if (value && transition$$1) {
|
8483 |
+
vnode.data.show = true;
|
8484 |
+
enter(vnode, function () {
|
8485 |
+
el.style.display = originalDisplay;
|
8486 |
+
});
|
8487 |
+
} else {
|
8488 |
+
el.style.display = value ? originalDisplay : 'none';
|
8489 |
+
}
|
8490 |
+
},
|
8491 |
+
|
8492 |
+
update: function update (el, ref, vnode) {
|
8493 |
+
var value = ref.value;
|
8494 |
+
var oldValue = ref.oldValue;
|
8495 |
+
|
8496 |
+
/* istanbul ignore if */
|
8497 |
+
if (!value === !oldValue) { return }
|
8498 |
+
vnode = locateNode(vnode);
|
8499 |
+
var transition$$1 = vnode.data && vnode.data.transition;
|
8500 |
+
if (transition$$1) {
|
8501 |
+
vnode.data.show = true;
|
8502 |
+
if (value) {
|
8503 |
+
enter(vnode, function () {
|
8504 |
+
el.style.display = el.__vOriginalDisplay;
|
8505 |
+
});
|
8506 |
+
} else {
|
8507 |
+
leave(vnode, function () {
|
8508 |
+
el.style.display = 'none';
|
8509 |
+
});
|
8510 |
+
}
|
8511 |
+
} else {
|
8512 |
+
el.style.display = value ? el.__vOriginalDisplay : 'none';
|
8513 |
+
}
|
8514 |
+
},
|
8515 |
+
|
8516 |
+
unbind: function unbind (
|
8517 |
+
el,
|
8518 |
+
binding,
|
8519 |
+
vnode,
|
8520 |
+
oldVnode,
|
8521 |
+
isDestroy
|
8522 |
+
) {
|
8523 |
+
if (!isDestroy) {
|
8524 |
+
el.style.display = el.__vOriginalDisplay;
|
8525 |
+
}
|
8526 |
+
}
|
8527 |
+
}
|
8528 |
+
|
8529 |
+
var platformDirectives = {
|
8530 |
+
model: directive,
|
8531 |
+
show: show
|
8532 |
+
}
|
8533 |
+
|
8534 |
+
/* */
|
8535 |
+
|
8536 |
+
// Provides transition support for a single element/component.
|
8537 |
+
// supports transition mode (out-in / in-out)
|
8538 |
+
|
8539 |
+
var transitionProps = {
|
8540 |
+
name: String,
|
8541 |
+
appear: Boolean,
|
8542 |
+
css: Boolean,
|
8543 |
+
mode: String,
|
8544 |
+
type: String,
|
8545 |
+
enterClass: String,
|
8546 |
+
leaveClass: String,
|
8547 |
+
enterToClass: String,
|
8548 |
+
leaveToClass: String,
|
8549 |
+
enterActiveClass: String,
|
8550 |
+
leaveActiveClass: String,
|
8551 |
+
appearClass: String,
|
8552 |
+
appearActiveClass: String,
|
8553 |
+
appearToClass: String,
|
8554 |
+
duration: [Number, String, Object]
|
8555 |
+
};
|
8556 |
+
|
8557 |
+
// in case the child is also an abstract component, e.g. <keep-alive>
|
8558 |
+
// we want to recursively retrieve the real component to be rendered
|
8559 |
+
function getRealChild (vnode) {
|
8560 |
+
var compOptions = vnode && vnode.componentOptions;
|
8561 |
+
if (compOptions && compOptions.Ctor.options.abstract) {
|
8562 |
+
return getRealChild(getFirstComponentChild(compOptions.children))
|
8563 |
+
} else {
|
8564 |
+
return vnode
|
8565 |
+
}
|
8566 |
+
}
|
8567 |
+
|
8568 |
+
function extractTransitionData (comp) {
|
8569 |
+
var data = {};
|
8570 |
+
var options = comp.$options;
|
8571 |
+
// props
|
8572 |
+
for (var key in options.propsData) {
|
8573 |
+
data[key] = comp[key];
|
8574 |
+
}
|
8575 |
+
// events.
|
8576 |
+
// extract listeners and pass them directly to the transition methods
|
8577 |
+
var listeners = options._parentListeners;
|
8578 |
+
for (var key$1 in listeners) {
|
8579 |
+
data[camelize(key$1)] = listeners[key$1];
|
8580 |
+
}
|
8581 |
+
return data
|
8582 |
+
}
|
8583 |
+
|
8584 |
+
function placeholder (h, rawChild) {
|
8585 |
+
if (/\d-keep-alive$/.test(rawChild.tag)) {
|
8586 |
+
return h('keep-alive', {
|
8587 |
+
props: rawChild.componentOptions.propsData
|
8588 |
+
})
|
8589 |
+
}
|
8590 |
+
}
|
8591 |
+
|
8592 |
+
function hasParentTransition (vnode) {
|
8593 |
+
while ((vnode = vnode.parent)) {
|
8594 |
+
if (vnode.data.transition) {
|
8595 |
+
return true
|
8596 |
+
}
|
8597 |
+
}
|
8598 |
+
}
|
8599 |
+
|
8600 |
+
function isSameChild (child, oldChild) {
|
8601 |
+
return oldChild.key === child.key && oldChild.tag === child.tag
|
8602 |
+
}
|
8603 |
+
|
8604 |
+
var Transition = {
|
8605 |
+
name: 'transition',
|
8606 |
+
props: transitionProps,
|
8607 |
+
abstract: true,
|
8608 |
+
|
8609 |
+
render: function render (h) {
|
8610 |
+
var this$1 = this;
|
8611 |
+
|
8612 |
+
var children = this.$slots.default;
|
8613 |
+
if (!children) {
|
8614 |
+
return
|
8615 |
+
}
|
8616 |
+
|
8617 |
+
// filter out text nodes (possible whitespaces)
|
8618 |
+
children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });
|
8619 |
+
/* istanbul ignore if */
|
8620 |
+
if (!children.length) {
|
8621 |
+
return
|
8622 |
+
}
|
8623 |
+
|
8624 |
+
// warn multiple elements
|
8625 |
+
if (process.env.NODE_ENV !== 'production' && children.length > 1) {
|
8626 |
+
warn(
|
8627 |
+
'<transition> can only be used on a single element. Use ' +
|
8628 |
+
'<transition-group> for lists.',
|
8629 |
+
this.$parent
|
8630 |
+
);
|
8631 |
+
}
|
8632 |
+
|
8633 |
+
var mode = this.mode;
|
8634 |
+
|
8635 |
+
// warn invalid mode
|
8636 |
+
if (process.env.NODE_ENV !== 'production' &&
|
8637 |
+
mode && mode !== 'in-out' && mode !== 'out-in'
|
8638 |
+
) {
|
8639 |
+
warn(
|
8640 |
+
'invalid <transition> mode: ' + mode,
|
8641 |
+
this.$parent
|
8642 |
+
);
|
8643 |
+
}
|
8644 |
+
|
8645 |
+
var rawChild = children[0];
|
8646 |
+
|
8647 |
+
// if this is a component root node and the component's
|
8648 |
+
// parent container node also has transition, skip.
|
8649 |
+
if (hasParentTransition(this.$vnode)) {
|
8650 |
+
return rawChild
|
8651 |
+
}
|
8652 |
+
|
8653 |
+
// apply transition data to child
|
8654 |
+
// use getRealChild() to ignore abstract components e.g. keep-alive
|
8655 |
+
var child = getRealChild(rawChild);
|
8656 |
+
/* istanbul ignore if */
|
8657 |
+
if (!child) {
|
8658 |
+
return rawChild
|
8659 |
+
}
|
8660 |
+
|
8661 |
+
if (this._leaving) {
|
8662 |
+
return placeholder(h, rawChild)
|
8663 |
+
}
|
8664 |
+
|
8665 |
+
// ensure a key that is unique to the vnode type and to this transition
|
8666 |
+
// component instance. This key will be used to remove pending leaving nodes
|
8667 |
+
// during entering.
|
8668 |
+
var id = "__transition-" + (this._uid) + "-";
|
8669 |
+
child.key = child.key == null
|
8670 |
+
? child.isComment
|
8671 |
+
? id + 'comment'
|
8672 |
+
: id + child.tag
|
8673 |
+
: isPrimitive(child.key)
|
8674 |
+
? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)
|
8675 |
+
: child.key;
|
8676 |
+
|
8677 |
+
var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
|
8678 |
+
var oldRawChild = this._vnode;
|
8679 |
+
var oldChild = getRealChild(oldRawChild);
|
8680 |
+
|
8681 |
+
// mark v-show
|
8682 |
+
// so that the transition module can hand over the control to the directive
|
8683 |
+
if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {
|
8684 |
+
child.data.show = true;
|
8685 |
+
}
|
8686 |
+
|
8687 |
+
if (
|
8688 |
+
oldChild &&
|
8689 |
+
oldChild.data &&
|
8690 |
+
!isSameChild(child, oldChild) &&
|
8691 |
+
!isAsyncPlaceholder(oldChild) &&
|
8692 |
+
// #6687 component root is a comment node
|
8693 |
+
!(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)
|
8694 |
+
) {
|
8695 |
+
// replace old child transition data with fresh one
|
8696 |
+
// important for dynamic transitions!
|
8697 |
+
var oldData = oldChild.data.transition = extend({}, data);
|
8698 |
+
// handle transition mode
|
8699 |
+
if (mode === 'out-in') {
|
8700 |
+
// return placeholder node and queue update when leave finishes
|
8701 |
+
this._leaving = true;
|
8702 |
+
mergeVNodeHook(oldData, 'afterLeave', function () {
|
8703 |
+
this$1._leaving = false;
|
8704 |
+
this$1.$forceUpdate();
|
8705 |
+
});
|
8706 |
+
return placeholder(h, rawChild)
|
8707 |
+
} else if (mode === 'in-out') {
|
8708 |
+
if (isAsyncPlaceholder(child)) {
|
8709 |
+
return oldRawChild
|
8710 |
+
}
|
8711 |
+
var delayedLeave;
|
8712 |
+
var performLeave = function () { delayedLeave(); };
|
8713 |
+
mergeVNodeHook(data, 'afterEnter', performLeave);
|
8714 |
+
mergeVNodeHook(data, 'enterCancelled', performLeave);
|
8715 |
+
mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });
|
8716 |
+
}
|
8717 |
+
}
|
8718 |
+
|
8719 |
+
return rawChild
|
8720 |
+
}
|
8721 |
+
}
|
8722 |
+
|
8723 |
+
/* */
|
8724 |
+
|
8725 |
+
// Provides transition support for list items.
|
8726 |
+
// supports move transitions using the FLIP technique.
|
8727 |
+
|
8728 |
+
// Because the vdom's children update algorithm is "unstable" - i.e.
|
8729 |
+
// it doesn't guarantee the relative positioning of removed elements,
|
8730 |
+
// we force transition-group to update its children into two passes:
|
8731 |
+
// in the first pass, we remove all nodes that need to be removed,
|
8732 |
+
// triggering their leaving transition; in the second pass, we insert/move
|
8733 |
+
// into the final desired state. This way in the second pass removed
|
8734 |
+
// nodes will remain where they should be.
|
8735 |
+
|
8736 |
+
var props = extend({
|
8737 |
+
tag: String,
|
8738 |
+
moveClass: String
|
8739 |
+
}, transitionProps);
|
8740 |
+
|
8741 |
+
delete props.mode;
|
8742 |
+
|
8743 |
+
var TransitionGroup = {
|
8744 |
+
props: props,
|
8745 |
+
|
8746 |
+
render: function render (h) {
|
8747 |
+
var tag = this.tag || this.$vnode.data.tag || 'span';
|
8748 |
+
var map = Object.create(null);
|
8749 |
+
var prevChildren = this.prevChildren = this.children;
|
8750 |
+
var rawChildren = this.$slots.default || [];
|
8751 |
+
var children = this.children = [];
|
8752 |
+
var transitionData = extractTransitionData(this);
|
8753 |
+
|
8754 |
+
for (var i = 0; i < rawChildren.length; i++) {
|
8755 |
+
var c = rawChildren[i];
|
8756 |
+
if (c.tag) {
|
8757 |
+
if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
|
8758 |
+
children.push(c);
|
8759 |
+
map[c.key] = c
|
8760 |
+
;(c.data || (c.data = {})).transition = transitionData;
|
8761 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
8762 |
+
var opts = c.componentOptions;
|
8763 |
+
var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;
|
8764 |
+
warn(("<transition-group> children must be keyed: <" + name + ">"));
|
8765 |
+
}
|
8766 |
+
}
|
8767 |
+
}
|
8768 |
+
|
8769 |
+
if (prevChildren) {
|
8770 |
+
var kept = [];
|
8771 |
+
var removed = [];
|
8772 |
+
for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
|
8773 |
+
var c$1 = prevChildren[i$1];
|
8774 |
+
c$1.data.transition = transitionData;
|
8775 |
+
c$1.data.pos = c$1.elm.getBoundingClientRect();
|
8776 |
+
if (map[c$1.key]) {
|
8777 |
+
kept.push(c$1);
|
8778 |
+
} else {
|
8779 |
+
removed.push(c$1);
|
8780 |
+
}
|
8781 |
+
}
|
8782 |
+
this.kept = h(tag, null, kept);
|
8783 |
+
this.removed = removed;
|
8784 |
+
}
|
8785 |
+
|
8786 |
+
return h(tag, null, children)
|
8787 |
+
},
|
8788 |
+
|
8789 |
+
beforeUpdate: function beforeUpdate () {
|
8790 |
+
// force removing pass
|
8791 |
+
this.__patch__(
|
8792 |
+
this._vnode,
|
8793 |
+
this.kept,
|
8794 |
+
false, // hydrating
|
8795 |
+
true // removeOnly (!important, avoids unnecessary moves)
|
8796 |
+
);
|
8797 |
+
this._vnode = this.kept;
|
8798 |
+
},
|
8799 |
+
|
8800 |
+
updated: function updated () {
|
8801 |
+
var children = this.prevChildren;
|
8802 |
+
var moveClass = this.moveClass || ((this.name || 'v') + '-move');
|
8803 |
+
if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
|
8804 |
+
return
|
8805 |
+
}
|
8806 |
+
|
8807 |
+
// we divide the work into three loops to avoid mixing DOM reads and writes
|
8808 |
+
// in each iteration - which helps prevent layout thrashing.
|
8809 |
+
children.forEach(callPendingCbs);
|
8810 |
+
children.forEach(recordPosition);
|
8811 |
+
children.forEach(applyTranslation);
|
8812 |
+
|
8813 |
+
// force reflow to put everything in position
|
8814 |
+
// assign to this to avoid being removed in tree-shaking
|
8815 |
+
// $flow-disable-line
|
8816 |
+
this._reflow = document.body.offsetHeight;
|
8817 |
+
|
8818 |
+
children.forEach(function (c) {
|
8819 |
+
if (c.data.moved) {
|
8820 |
+
var el = c.elm;
|
8821 |
+
var s = el.style;
|
8822 |
+
addTransitionClass(el, moveClass);
|
8823 |
+
s.transform = s.WebkitTransform = s.transitionDuration = '';
|
8824 |
+
el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
|
8825 |
+
if (!e || /transform$/.test(e.propertyName)) {
|
8826 |
+
el.removeEventListener(transitionEndEvent, cb);
|
8827 |
+
el._moveCb = null;
|
8828 |
+
removeTransitionClass(el, moveClass);
|
8829 |
+
}
|
8830 |
+
});
|
8831 |
+
}
|
8832 |
+
});
|
8833 |
+
},
|
8834 |
+
|
8835 |
+
methods: {
|
8836 |
+
hasMove: function hasMove (el, moveClass) {
|
8837 |
+
/* istanbul ignore if */
|
8838 |
+
if (!hasTransition) {
|
8839 |
+
return false
|
8840 |
+
}
|
8841 |
+
/* istanbul ignore if */
|
8842 |
+
if (this._hasMove) {
|
8843 |
+
return this._hasMove
|
8844 |
+
}
|
8845 |
+
// Detect whether an element with the move class applied has
|
8846 |
+
// CSS transitions. Since the element may be inside an entering
|
8847 |
+
// transition at this very moment, we make a clone of it and remove
|
8848 |
+
// all other transition classes applied to ensure only the move class
|
8849 |
+
// is applied.
|
8850 |
+
var clone = el.cloneNode();
|
8851 |
+
if (el._transitionClasses) {
|
8852 |
+
el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });
|
8853 |
+
}
|
8854 |
+
addClass(clone, moveClass);
|
8855 |
+
clone.style.display = 'none';
|
8856 |
+
this.$el.appendChild(clone);
|
8857 |
+
var info = getTransitionInfo(clone);
|
8858 |
+
this.$el.removeChild(clone);
|
8859 |
+
return (this._hasMove = info.hasTransform)
|
8860 |
+
}
|
8861 |
+
}
|
8862 |
+
}
|
8863 |
+
|
8864 |
+
function callPendingCbs (c) {
|
8865 |
+
/* istanbul ignore if */
|
8866 |
+
if (c.elm._moveCb) {
|
8867 |
+
c.elm._moveCb();
|
8868 |
+
}
|
8869 |
+
/* istanbul ignore if */
|
8870 |
+
if (c.elm._enterCb) {
|
8871 |
+
c.elm._enterCb();
|
8872 |
+
}
|
8873 |
+
}
|
8874 |
+
|
8875 |
+
function recordPosition (c) {
|
8876 |
+
c.data.newPos = c.elm.getBoundingClientRect();
|
8877 |
+
}
|
8878 |
+
|
8879 |
+
function applyTranslation (c) {
|
8880 |
+
var oldPos = c.data.pos;
|
8881 |
+
var newPos = c.data.newPos;
|
8882 |
+
var dx = oldPos.left - newPos.left;
|
8883 |
+
var dy = oldPos.top - newPos.top;
|
8884 |
+
if (dx || dy) {
|
8885 |
+
c.data.moved = true;
|
8886 |
+
var s = c.elm.style;
|
8887 |
+
s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
|
8888 |
+
s.transitionDuration = '0s';
|
8889 |
+
}
|
8890 |
+
}
|
8891 |
+
|
8892 |
+
var platformComponents = {
|
8893 |
+
Transition: Transition,
|
8894 |
+
TransitionGroup: TransitionGroup
|
8895 |
+
}
|
8896 |
+
|
8897 |
+
/* */
|
8898 |
+
|
8899 |
+
// install platform specific utils
|
8900 |
+
Vue.config.mustUseProp = mustUseProp;
|
8901 |
+
Vue.config.isReservedTag = isReservedTag;
|
8902 |
+
Vue.config.isReservedAttr = isReservedAttr;
|
8903 |
+
Vue.config.getTagNamespace = getTagNamespace;
|
8904 |
+
Vue.config.isUnknownElement = isUnknownElement;
|
8905 |
+
|
8906 |
+
// install platform runtime directives & components
|
8907 |
+
extend(Vue.options.directives, platformDirectives);
|
8908 |
+
extend(Vue.options.components, platformComponents);
|
8909 |
+
|
8910 |
+
// install platform patch function
|
8911 |
+
Vue.prototype.__patch__ = inBrowser ? patch : noop;
|
8912 |
+
|
8913 |
+
// public mount method
|
8914 |
+
Vue.prototype.$mount = function (
|
8915 |
+
el,
|
8916 |
+
hydrating
|
8917 |
+
) {
|
8918 |
+
el = el && inBrowser ? query(el) : undefined;
|
8919 |
+
return mountComponent(this, el, hydrating)
|
8920 |
+
};
|
8921 |
+
|
8922 |
+
// devtools global hook
|
8923 |
+
/* istanbul ignore next */
|
8924 |
+
if (inBrowser) {
|
8925 |
+
setTimeout(function () {
|
8926 |
+
if (config.devtools) {
|
8927 |
+
if (devtools) {
|
8928 |
+
devtools.emit('init', Vue);
|
8929 |
+
} else if (
|
8930 |
+
process.env.NODE_ENV !== 'production' &&
|
8931 |
+
process.env.NODE_ENV !== 'test' &&
|
8932 |
+
isChrome
|
8933 |
+
) {
|
8934 |
+
console[console.info ? 'info' : 'log'](
|
8935 |
+
'Download the Vue Devtools extension for a better development experience:\n' +
|
8936 |
+
'https://github.com/vuejs/vue-devtools'
|
8937 |
+
);
|
8938 |
+
}
|
8939 |
+
}
|
8940 |
+
if (process.env.NODE_ENV !== 'production' &&
|
8941 |
+
process.env.NODE_ENV !== 'test' &&
|
8942 |
+
config.productionTip !== false &&
|
8943 |
+
typeof console !== 'undefined'
|
8944 |
+
) {
|
8945 |
+
console[console.info ? 'info' : 'log'](
|
8946 |
+
"You are running Vue in development mode.\n" +
|
8947 |
+
"Make sure to turn on production mode when deploying for production.\n" +
|
8948 |
+
"See more tips at https://vuejs.org/guide/deployment.html"
|
8949 |
+
);
|
8950 |
+
}
|
8951 |
+
}, 0);
|
8952 |
+
}
|
8953 |
+
|
8954 |
+
/* */
|
8955 |
+
|
8956 |
+
var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g;
|
8957 |
+
var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
|
8958 |
+
|
8959 |
+
var buildRegex = cached(function (delimiters) {
|
8960 |
+
var open = delimiters[0].replace(regexEscapeRE, '\\$&');
|
8961 |
+
var close = delimiters[1].replace(regexEscapeRE, '\\$&');
|
8962 |
+
return new RegExp(open + '((?:.|\\n)+?)' + close, 'g')
|
8963 |
+
});
|
8964 |
+
|
8965 |
+
|
8966 |
+
|
8967 |
+
function parseText (
|
8968 |
+
text,
|
8969 |
+
delimiters
|
8970 |
+
) {
|
8971 |
+
var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
|
8972 |
+
if (!tagRE.test(text)) {
|
8973 |
+
return
|
8974 |
+
}
|
8975 |
+
var tokens = [];
|
8976 |
+
var rawTokens = [];
|
8977 |
+
var lastIndex = tagRE.lastIndex = 0;
|
8978 |
+
var match, index, tokenValue;
|
8979 |
+
while ((match = tagRE.exec(text))) {
|
8980 |
+
index = match.index;
|
8981 |
+
// push text token
|
8982 |
+
if (index > lastIndex) {
|
8983 |
+
rawTokens.push(tokenValue = text.slice(lastIndex, index));
|
8984 |
+
tokens.push(JSON.stringify(tokenValue));
|
8985 |
+
}
|
8986 |
+
// tag token
|
8987 |
+
var exp = parseFilters(match[1].trim());
|
8988 |
+
tokens.push(("_s(" + exp + ")"));
|
8989 |
+
rawTokens.push({ '@binding': exp });
|
8990 |
+
lastIndex = index + match[0].length;
|
8991 |
+
}
|
8992 |
+
if (lastIndex < text.length) {
|
8993 |
+
rawTokens.push(tokenValue = text.slice(lastIndex));
|
8994 |
+
tokens.push(JSON.stringify(tokenValue));
|
8995 |
+
}
|
8996 |
+
return {
|
8997 |
+
expression: tokens.join('+'),
|
8998 |
+
tokens: rawTokens
|
8999 |
+
}
|
9000 |
+
}
|
9001 |
+
|
9002 |
+
/* */
|
9003 |
+
|
9004 |
+
function transformNode (el, options) {
|
9005 |
+
var warn = options.warn || baseWarn;
|
9006 |
+
var staticClass = getAndRemoveAttr(el, 'class');
|
9007 |
+
if (process.env.NODE_ENV !== 'production' && staticClass) {
|
9008 |
+
var res = parseText(staticClass, options.delimiters);
|
9009 |
+
if (res) {
|
9010 |
+
warn(
|
9011 |
+
"class=\"" + staticClass + "\": " +
|
9012 |
+
'Interpolation inside attributes has been removed. ' +
|
9013 |
+
'Use v-bind or the colon shorthand instead. For example, ' +
|
9014 |
+
'instead of <div class="{{ val }}">, use <div :class="val">.'
|
9015 |
+
);
|
9016 |
+
}
|
9017 |
+
}
|
9018 |
+
if (staticClass) {
|
9019 |
+
el.staticClass = JSON.stringify(staticClass);
|
9020 |
+
}
|
9021 |
+
var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
|
9022 |
+
if (classBinding) {
|
9023 |
+
el.classBinding = classBinding;
|
9024 |
+
}
|
9025 |
+
}
|
9026 |
+
|
9027 |
+
function genData (el) {
|
9028 |
+
var data = '';
|
9029 |
+
if (el.staticClass) {
|
9030 |
+
data += "staticClass:" + (el.staticClass) + ",";
|
9031 |
+
}
|
9032 |
+
if (el.classBinding) {
|
9033 |
+
data += "class:" + (el.classBinding) + ",";
|
9034 |
+
}
|
9035 |
+
return data
|
9036 |
+
}
|
9037 |
+
|
9038 |
+
var klass$1 = {
|
9039 |
+
staticKeys: ['staticClass'],
|
9040 |
+
transformNode: transformNode,
|
9041 |
+
genData: genData
|
9042 |
+
}
|
9043 |
+
|
9044 |
+
/* */
|
9045 |
+
|
9046 |
+
function transformNode$1 (el, options) {
|
9047 |
+
var warn = options.warn || baseWarn;
|
9048 |
+
var staticStyle = getAndRemoveAttr(el, 'style');
|
9049 |
+
if (staticStyle) {
|
9050 |
+
/* istanbul ignore if */
|
9051 |
+
if (process.env.NODE_ENV !== 'production') {
|
9052 |
+
var res = parseText(staticStyle, options.delimiters);
|
9053 |
+
if (res) {
|
9054 |
+
warn(
|
9055 |
+
"style=\"" + staticStyle + "\": " +
|
9056 |
+
'Interpolation inside attributes has been removed. ' +
|
9057 |
+
'Use v-bind or the colon shorthand instead. For example, ' +
|
9058 |
+
'instead of <div style="{{ val }}">, use <div :style="val">.'
|
9059 |
+
);
|
9060 |
+
}
|
9061 |
+
}
|
9062 |
+
el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
|
9063 |
+
}
|
9064 |
+
|
9065 |
+
var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
|
9066 |
+
if (styleBinding) {
|
9067 |
+
el.styleBinding = styleBinding;
|
9068 |
+
}
|
9069 |
+
}
|
9070 |
+
|
9071 |
+
function genData$1 (el) {
|
9072 |
+
var data = '';
|
9073 |
+
if (el.staticStyle) {
|
9074 |
+
data += "staticStyle:" + (el.staticStyle) + ",";
|
9075 |
+
}
|
9076 |
+
if (el.styleBinding) {
|
9077 |
+
data += "style:(" + (el.styleBinding) + "),";
|
9078 |
+
}
|
9079 |
+
return data
|
9080 |
+
}
|
9081 |
+
|
9082 |
+
var style$1 = {
|
9083 |
+
staticKeys: ['staticStyle'],
|
9084 |
+
transformNode: transformNode$1,
|
9085 |
+
genData: genData$1
|
9086 |
+
}
|
9087 |
+
|
9088 |
+
/* */
|
9089 |
+
|
9090 |
+
var decoder;
|
9091 |
+
|
9092 |
+
var he = {
|
9093 |
+
decode: function decode (html) {
|
9094 |
+
decoder = decoder || document.createElement('div');
|
9095 |
+
decoder.innerHTML = html;
|
9096 |
+
return decoder.textContent
|
9097 |
+
}
|
9098 |
+
}
|
9099 |
+
|
9100 |
+
/* */
|
9101 |
+
|
9102 |
+
var isUnaryTag = makeMap(
|
9103 |
+
'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
|
9104 |
+
'link,meta,param,source,track,wbr'
|
9105 |
+
);
|
9106 |
+
|
9107 |
+
// Elements that you can, intentionally, leave open
|
9108 |
+
// (and which close themselves)
|
9109 |
+
var canBeLeftOpenTag = makeMap(
|
9110 |
+
'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'
|
9111 |
+
);
|
9112 |
+
|
9113 |
+
// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
|
9114 |
+
// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
|
9115 |
+
var isNonPhrasingTag = makeMap(
|
9116 |
+
'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
|
9117 |
+
'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
|
9118 |
+
'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
|
9119 |
+
'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
|
9120 |
+
'title,tr,track'
|
9121 |
+
);
|
9122 |
+
|
9123 |
+
/**
|
9124 |
+
* Not type-checking this file because it's mostly vendor code.
|
9125 |
+
*/
|
9126 |
+
|
9127 |
+
/*!
|
9128 |
+
* HTML Parser By John Resig (ejohn.org)
|
9129 |
+
* Modified by Juriy "kangax" Zaytsev
|
9130 |
+
* Original code by Erik Arvidsson, Mozilla Public License
|
9131 |
+
* http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
|
9132 |
+
*/
|
9133 |
+
|
9134 |
+
// Regular Expressions for parsing tags and attributes
|
9135 |
+
var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
|
9136 |
+
// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
|
9137 |
+
// but for Vue templates we can enforce a simple charset
|
9138 |
+
var ncname = '[a-zA-Z_][\\w\\-\\.]*';
|
9139 |
+
var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
|
9140 |
+
var startTagOpen = new RegExp(("^<" + qnameCapture));
|
9141 |
+
var startTagClose = /^\s*(\/?)>/;
|
9142 |
+
var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>"));
|
9143 |
+
var doctype = /^<!DOCTYPE [^>]+>/i;
|
9144 |
+
// #7298: escape - to avoid being pased as HTML comment when inlined in page
|
9145 |
+
var comment = /^<!\--/;
|
9146 |
+
var conditionalComment = /^<!\[/;
|
9147 |
+
|
9148 |
+
var IS_REGEX_CAPTURING_BROKEN = false;
|
9149 |
+
'x'.replace(/x(.)?/g, function (m, g) {
|
9150 |
+
IS_REGEX_CAPTURING_BROKEN = g === '';
|
9151 |
+
});
|
9152 |
+
|
9153 |
+
// Special Elements (can contain anything)
|
9154 |
+
var isPlainTextElement = makeMap('script,style,textarea', true);
|
9155 |
+
var reCache = {};
|
9156 |
+
|
9157 |
+
var decodingMap = {
|
9158 |
+
'<': '<',
|
9159 |
+
'>': '>',
|
9160 |
+
'"': '"',
|
9161 |
+
'&': '&',
|
9162 |
+
' ': '\n',
|
9163 |
+
'	': '\t'
|
9164 |
+
};
|
9165 |
+
var encodedAttr = /&(?:lt|gt|quot|amp);/g;
|
9166 |
+
var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g;
|
9167 |
+
|
9168 |
+
// #5992
|
9169 |
+
var isIgnoreNewlineTag = makeMap('pre,textarea', true);
|
9170 |
+
var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; };
|
9171 |
+
|
9172 |
+
function decodeAttr (value, shouldDecodeNewlines) {
|
9173 |
+
var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
|
9174 |
+
return value.replace(re, function (match) { return decodingMap[match]; })
|
9175 |
+
}
|
9176 |
+
|
9177 |
+
function parseHTML (html, options) {
|
9178 |
+
var stack = [];
|
9179 |
+
var expectHTML = options.expectHTML;
|
9180 |
+
var isUnaryTag$$1 = options.isUnaryTag || no;
|
9181 |
+
var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;
|
9182 |
+
var index = 0;
|
9183 |
+
var last, lastTag;
|
9184 |
+
while (html) {
|
9185 |
+
last = html;
|
9186 |
+
// Make sure we're not in a plaintext content element like script/style
|
9187 |
+
if (!lastTag || !isPlainTextElement(lastTag)) {
|
9188 |
+
var textEnd = html.indexOf('<');
|
9189 |
+
if (textEnd === 0) {
|
9190 |
+
// Comment:
|
9191 |
+
if (comment.test(html)) {
|
9192 |
+
var commentEnd = html.indexOf('-->');
|
9193 |
+
|
9194 |
+
if (commentEnd >= 0) {
|
9195 |
+
if (options.shouldKeepComment) {
|
9196 |
+
options.comment(html.substring(4, commentEnd));
|
9197 |
+
}
|
9198 |
+
advance(commentEnd + 3);
|
9199 |
+
continue
|
9200 |
+
}
|
9201 |
+
}
|
9202 |
+
|
9203 |
+
// http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
|
9204 |
+
if (conditionalComment.test(html)) {
|
9205 |
+
var conditionalEnd = html.indexOf(']>');
|
9206 |
+
|
9207 |
+
if (conditionalEnd >= 0) {
|
9208 |
+
advance(conditionalEnd + 2);
|
9209 |
+
continue
|
9210 |
+
}
|
9211 |
+
}
|
9212 |
+
|
9213 |
+
// Doctype:
|
9214 |
+
var doctypeMatch = html.match(doctype);
|
9215 |
+
if (doctypeMatch) {
|
9216 |
+
advance(doctypeMatch[0].length);
|
9217 |
+
continue
|
9218 |
+
}
|
9219 |
+
|
9220 |
+
// End tag:
|
9221 |
+
var endTagMatch = html.match(endTag);
|
9222 |
+
if (endTagMatch) {
|
9223 |
+
var curIndex = index;
|
9224 |
+
advance(endTagMatch[0].length);
|
9225 |
+
parseEndTag(endTagMatch[1], curIndex, index);
|
9226 |
+
continue
|
9227 |
+
}
|
9228 |
+
|
9229 |
+
// Start tag:
|
9230 |
+
var startTagMatch = parseStartTag();
|
9231 |
+
if (startTagMatch) {
|
9232 |
+
handleStartTag(startTagMatch);
|
9233 |
+
if (shouldIgnoreFirstNewline(lastTag, html)) {
|
9234 |
+
advance(1);
|
9235 |
+
}
|
9236 |
+
continue
|
9237 |
+
}
|
9238 |
+
}
|
9239 |
+
|
9240 |
+
var text = (void 0), rest = (void 0), next = (void 0);
|
9241 |
+
if (textEnd >= 0) {
|
9242 |
+
rest = html.slice(textEnd);
|
9243 |
+
while (
|
9244 |
+
!endTag.test(rest) &&
|
9245 |
+
!startTagOpen.test(rest) &&
|
9246 |
+
!comment.test(rest) &&
|
9247 |
+
!conditionalComment.test(rest)
|
9248 |
+
) {
|
9249 |
+
// < in plain text, be forgiving and treat it as text
|
9250 |
+
next = rest.indexOf('<', 1);
|
9251 |
+
if (next < 0) { break }
|
9252 |
+
textEnd += next;
|
9253 |
+
rest = html.slice(textEnd);
|
9254 |
+
}
|
9255 |
+
text = html.substring(0, textEnd);
|
9256 |
+
advance(textEnd);
|
9257 |
+
}
|
9258 |
+
|
9259 |
+
if (textEnd < 0) {
|
9260 |
+
text = html;
|
9261 |
+
html = '';
|
9262 |
+
}
|
9263 |
+
|
9264 |
+
if (options.chars && text) {
|
9265 |
+
options.chars(text);
|
9266 |
+
}
|
9267 |
+
} else {
|
9268 |
+
var endTagLength = 0;
|
9269 |
+
var stackedTag = lastTag.toLowerCase();
|
9270 |
+
var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));
|
9271 |
+
var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {
|
9272 |
+
endTagLength = endTag.length;
|
9273 |
+
if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {
|
9274 |
+
text = text
|
9275 |
+
.replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
|
9276 |
+
.replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
|
9277 |
+
}
|
9278 |
+
if (shouldIgnoreFirstNewline(stackedTag, text)) {
|
9279 |
+
text = text.slice(1);
|
9280 |
+
}
|
9281 |
+
if (options.chars) {
|
9282 |
+
options.chars(text);
|
9283 |
+
}
|
9284 |
+
return ''
|
9285 |
+
});
|
9286 |
+
index += html.length - rest$1.length;
|
9287 |
+
html = rest$1;
|
9288 |
+
parseEndTag(stackedTag, index - endTagLength, index);
|
9289 |
+
}
|
9290 |
+
|
9291 |
+
if (html === last) {
|
9292 |
+
options.chars && options.chars(html);
|
9293 |
+
if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {
|
9294 |
+
options.warn(("Mal-formatted tag at end of template: \"" + html + "\""));
|
9295 |
+
}
|
9296 |
+
break
|
9297 |
+
}
|
9298 |
+
}
|
9299 |
+
|
9300 |
+
// Clean up any remaining tags
|
9301 |
+
parseEndTag();
|
9302 |
+
|
9303 |
+
function advance (n) {
|
9304 |
+
index += n;
|
9305 |
+
html = html.substring(n);
|
9306 |
+
}
|
9307 |
+
|
9308 |
+
function parseStartTag () {
|
9309 |
+
var start = html.match(startTagOpen);
|
9310 |
+
if (start) {
|
9311 |
+
var match = {
|
9312 |
+
tagName: start[1],
|
9313 |
+
attrs: [],
|
9314 |
+
start: index
|
9315 |
+
};
|
9316 |
+
advance(start[0].length);
|
9317 |
+
var end, attr;
|
9318 |
+
while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
|
9319 |
+
advance(attr[0].length);
|
9320 |
+
match.attrs.push(attr);
|
9321 |
+
}
|
9322 |
+
if (end) {
|
9323 |
+
match.unarySlash = end[1];
|
9324 |
+
advance(end[0].length);
|
9325 |
+
match.end = index;
|
9326 |
+
return match
|
9327 |
+
}
|
9328 |
+
}
|
9329 |
+
}
|
9330 |
+
|
9331 |
+
function handleStartTag (match) {
|
9332 |
+
var tagName = match.tagName;
|
9333 |
+
var unarySlash = match.unarySlash;
|
9334 |
+
|
9335 |
+
if (expectHTML) {
|
9336 |
+
if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
|
9337 |
+
parseEndTag(lastTag);
|
9338 |
+
}
|
9339 |
+
if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {
|
9340 |
+
parseEndTag(tagName);
|
9341 |
+
}
|
9342 |
+
}
|
9343 |
+
|
9344 |
+
var unary = isUnaryTag$$1(tagName) || !!unarySlash;
|
9345 |
+
|
9346 |
+
var l = match.attrs.length;
|
9347 |
+
var attrs = new Array(l);
|
9348 |
+
for (var i = 0; i < l; i++) {
|
9349 |
+
var args = match.attrs[i];
|
9350 |
+
// hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778
|
9351 |
+
if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('""') === -1) {
|
9352 |
+
if (args[3] === '') { delete args[3]; }
|
9353 |
+
if (args[4] === '') { delete args[4]; }
|
9354 |
+
if (args[5] === '') { delete args[5]; }
|
9355 |
+
}
|
9356 |
+
var value = args[3] || args[4] || args[5] || '';
|
9357 |
+
var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
|
9358 |
+
? options.shouldDecodeNewlinesForHref
|
9359 |
+
: options.shouldDecodeNewlines;
|
9360 |
+
attrs[i] = {
|
9361 |
+
name: args[1],
|
9362 |
+
value: decodeAttr(value, shouldDecodeNewlines)
|
9363 |
+
};
|
9364 |
+
}
|
9365 |
+
|
9366 |
+
if (!unary) {
|
9367 |
+
stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });
|
9368 |
+
lastTag = tagName;
|
9369 |
+
}
|
9370 |
+
|
9371 |
+
if (options.start) {
|
9372 |
+
options.start(tagName, attrs, unary, match.start, match.end);
|
9373 |
+
}
|
9374 |
+
}
|
9375 |
+
|
9376 |
+
function parseEndTag (tagName, start, end) {
|
9377 |
+
var pos, lowerCasedTagName;
|
9378 |
+
if (start == null) { start = index; }
|
9379 |
+
if (end == null) { end = index; }
|
9380 |
+
|
9381 |
+
if (tagName) {
|
9382 |
+
lowerCasedTagName = tagName.toLowerCase();
|
9383 |
+
}
|
9384 |
+
|
9385 |
+
// Find the closest opened tag of the same type
|
9386 |
+
if (tagName) {
|
9387 |
+
for (pos = stack.length - 1; pos >= 0; pos--) {
|
9388 |
+
if (stack[pos].lowerCasedTag === lowerCasedTagName) {
|
9389 |
+
break
|
9390 |
+
}
|
9391 |
+
}
|
9392 |
+
} else {
|
9393 |
+
// If no tag name is provided, clean shop
|
9394 |
+
pos = 0;
|
9395 |
+
}
|
9396 |
+
|
9397 |
+
if (pos >= 0) {
|
9398 |
+
// Close all the open elements, up the stack
|
9399 |
+
for (var i = stack.length - 1; i >= pos; i--) {
|
9400 |
+
if (process.env.NODE_ENV !== 'production' &&
|
9401 |
+
(i > pos || !tagName) &&
|
9402 |
+
options.warn
|
9403 |
+
) {
|
9404 |
+
options.warn(
|
9405 |
+
("tag <" + (stack[i].tag) + "> has no matching end tag.")
|
9406 |
+
);
|
9407 |
+
}
|
9408 |
+
if (options.end) {
|
9409 |
+
options.end(stack[i].tag, start, end);
|
9410 |
+
}
|
9411 |
+
}
|
9412 |
+
|
9413 |
+
// Remove the open elements from the stack
|
9414 |
+
stack.length = pos;
|
9415 |
+
lastTag = pos && stack[pos - 1].tag;
|
9416 |
+
} else if (lowerCasedTagName === 'br') {
|
9417 |
+
if (options.start) {
|
9418 |
+
options.start(tagName, [], true, start, end);
|
9419 |
+
}
|
9420 |
+
} else if (lowerCasedTagName === 'p') {
|
9421 |
+
if (options.start) {
|
9422 |
+
options.start(tagName, [], false, start, end);
|
9423 |
+
}
|
9424 |
+
if (options.end) {
|
9425 |
+
options.end(tagName, start, end);
|
9426 |
+
}
|
9427 |
+
}
|
9428 |
+
}
|
9429 |
+
}
|
9430 |
+
|
9431 |
+
/* */
|
9432 |
+
|
9433 |
+
var onRE = /^@|^v-on:/;
|
9434 |
+
var dirRE = /^v-|^@|^:/;
|
9435 |
+
var forAliasRE = /([^]*?)\s+(?:in|of)\s+([^]*)/;
|
9436 |
+
var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
|
9437 |
+
var stripParensRE = /^\(|\)$/g;
|
9438 |
+
|
9439 |
+
var argRE = /:(.*)$/;
|
9440 |
+
var bindRE = /^:|^v-bind:/;
|
9441 |
+
var modifierRE = /\.[^.]+/g;
|
9442 |
+
|
9443 |
+
var decodeHTMLCached = cached(he.decode);
|
9444 |
+
|
9445 |
+
// configurable state
|
9446 |
+
var warn$2;
|
9447 |
+
var delimiters;
|
9448 |
+
var transforms;
|
9449 |
+
var preTransforms;
|
9450 |
+
var postTransforms;
|
9451 |
+
var platformIsPreTag;
|
9452 |
+
var platformMustUseProp;
|
9453 |
+
var platformGetTagNamespace;
|
9454 |
+
|
9455 |
+
|
9456 |
+
|
9457 |
+
function createASTElement (
|
9458 |
+
tag,
|
9459 |
+
attrs,
|
9460 |
+
parent
|
9461 |
+
) {
|
9462 |
+
return {
|
9463 |
+
type: 1,
|
9464 |
+
tag: tag,
|
9465 |
+
attrsList: attrs,
|
9466 |
+
attrsMap: makeAttrsMap(attrs),
|
9467 |
+
parent: parent,
|
9468 |
+
children: []
|
9469 |
+
}
|
9470 |
+
}
|
9471 |
+
|
9472 |
+
/**
|
9473 |
+
* Convert HTML string to AST.
|
9474 |
+
*/
|
9475 |
+
function parse (
|
9476 |
+
template,
|
9477 |
+
options
|
9478 |
+
) {
|
9479 |
+
warn$2 = options.warn || baseWarn;
|
9480 |
+
|
9481 |
+
platformIsPreTag = options.isPreTag || no;
|
9482 |
+
platformMustUseProp = options.mustUseProp || no;
|
9483 |
+
platformGetTagNamespace = options.getTagNamespace || no;
|
9484 |
+
|
9485 |
+
transforms = pluckModuleFunction(options.modules, 'transformNode');
|
9486 |
+
preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
|
9487 |
+
postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
|
9488 |
+
|
9489 |
+
delimiters = options.delimiters;
|
9490 |
+
|
9491 |
+
var stack = [];
|
9492 |
+
var preserveWhitespace = options.preserveWhitespace !== false;
|
9493 |
+
var root;
|
9494 |
+
var currentParent;
|
9495 |
+
var inVPre = false;
|
9496 |
+
var inPre = false;
|
9497 |
+
var warned = false;
|
9498 |
+
|
9499 |
+
function warnOnce (msg) {
|
9500 |
+
if (!warned) {
|
9501 |
+
warned = true;
|
9502 |
+
warn$2(msg);
|
9503 |
+
}
|
9504 |
+
}
|
9505 |
+
|
9506 |
+
function closeElement (element) {
|
9507 |
+
// check pre state
|
9508 |
+
if (element.pre) {
|
9509 |
+
inVPre = false;
|
9510 |
+
}
|
9511 |
+
if (platformIsPreTag(element.tag)) {
|
9512 |
+
inPre = false;
|
9513 |
+
}
|
9514 |
+
// apply post-transforms
|
9515 |
+
for (var i = 0; i < postTransforms.length; i++) {
|
9516 |
+
postTransforms[i](element, options);
|
9517 |
+
}
|
9518 |
+
}
|
9519 |
+
|
9520 |
+
parseHTML(template, {
|
9521 |
+
warn: warn$2,
|
9522 |
+
expectHTML: options.expectHTML,
|
9523 |
+
isUnaryTag: options.isUnaryTag,
|
9524 |
+
canBeLeftOpenTag: options.canBeLeftOpenTag,
|
9525 |
+
shouldDecodeNewlines: options.shouldDecodeNewlines,
|
9526 |
+
shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
|
9527 |
+
shouldKeepComment: options.comments,
|
9528 |
+
start: function start (tag, attrs, unary) {
|
9529 |
+
// check namespace.
|
9530 |
+
// inherit parent ns if there is one
|
9531 |
+
var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
|
9532 |
+
|
9533 |
+
// handle IE svg bug
|
9534 |
+
/* istanbul ignore if */
|
9535 |
+
if (isIE && ns === 'svg') {
|
9536 |
+
attrs = guardIESVGBug(attrs);
|
9537 |
+
}
|
9538 |
+
|
9539 |
+
var element = createASTElement(tag, attrs, currentParent);
|
9540 |
+
if (ns) {
|
9541 |
+
element.ns = ns;
|
9542 |
+
}
|
9543 |
+
|
9544 |
+
if (isForbiddenTag(element) && !isServerRendering()) {
|
9545 |
+
element.forbidden = true;
|
9546 |
+
process.env.NODE_ENV !== 'production' && warn$2(
|
9547 |
+
'Templates should only be responsible for mapping the state to the ' +
|
9548 |
+
'UI. Avoid placing tags with side-effects in your templates, such as ' +
|
9549 |
+
"<" + tag + ">" + ', as they will not be parsed.'
|
9550 |
+
);
|
9551 |
+
}
|
9552 |
+
|
9553 |
+
// apply pre-transforms
|
9554 |
+
for (var i = 0; i < preTransforms.length; i++) {
|
9555 |
+
element = preTransforms[i](element, options) || element;
|
9556 |
+
}
|
9557 |
+
|
9558 |
+
if (!inVPre) {
|
9559 |
+
processPre(element);
|
9560 |
+
if (element.pre) {
|
9561 |
+
inVPre = true;
|
9562 |
+
}
|
9563 |
+
}
|
9564 |
+
if (platformIsPreTag(element.tag)) {
|
9565 |
+
inPre = true;
|
9566 |
+
}
|
9567 |
+
if (inVPre) {
|
9568 |
+
processRawAttrs(element);
|
9569 |
+
} else if (!element.processed) {
|
9570 |
+
// structural directives
|
9571 |
+
processFor(element);
|
9572 |
+
processIf(element);
|
9573 |
+
processOnce(element);
|
9574 |
+
// element-scope stuff
|
9575 |
+
processElement(element, options);
|
9576 |
+
}
|
9577 |
+
|
9578 |
+
function checkRootConstraints (el) {
|
9579 |
+
if (process.env.NODE_ENV !== 'production') {
|
9580 |
+
if (el.tag === 'slot' || el.tag === 'template') {
|
9581 |
+
warnOnce(
|
9582 |
+
"Cannot use <" + (el.tag) + "> as component root element because it may " +
|
9583 |
+
'contain multiple nodes.'
|
9584 |
+
);
|
9585 |
+
}
|
9586 |
+
if (el.attrsMap.hasOwnProperty('v-for')) {
|
9587 |
+
warnOnce(
|
9588 |
+
'Cannot use v-for on stateful component root element because ' +
|
9589 |
+
'it renders multiple elements.'
|
9590 |
+
);
|
9591 |
+
}
|
9592 |
+
}
|
9593 |
+
}
|
9594 |
+
|
9595 |
+
// tree management
|
9596 |
+
if (!root) {
|
9597 |
+
root = element;
|
9598 |
+
checkRootConstraints(root);
|
9599 |
+
} else if (!stack.length) {
|
9600 |
+
// allow root elements with v-if, v-else-if and v-else
|
9601 |
+
if (root.if && (element.elseif || element.else)) {
|
9602 |
+
checkRootConstraints(element);
|
9603 |
+
addIfCondition(root, {
|
9604 |
+
exp: element.elseif,
|
9605 |
+
block: element
|
9606 |
+
});
|
9607 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
9608 |
+
warnOnce(
|
9609 |
+
"Component template should contain exactly one root element. " +
|
9610 |
+
"If you are using v-if on multiple elements, " +
|
9611 |
+
"use v-else-if to chain them instead."
|
9612 |
+
);
|
9613 |
+
}
|
9614 |
+
}
|
9615 |
+
if (currentParent && !element.forbidden) {
|
9616 |
+
if (element.elseif || element.else) {
|
9617 |
+
processIfConditions(element, currentParent);
|
9618 |
+
} else if (element.slotScope) { // scoped slot
|
9619 |
+
currentParent.plain = false;
|
9620 |
+
var name = element.slotTarget || '"default"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
|
9621 |
+
} else {
|
9622 |
+
currentParent.children.push(element);
|
9623 |
+
element.parent = currentParent;
|
9624 |
+
}
|
9625 |
+
}
|
9626 |
+
if (!unary) {
|
9627 |
+
currentParent = element;
|
9628 |
+
stack.push(element);
|
9629 |
+
} else {
|
9630 |
+
closeElement(element);
|
9631 |
+
}
|
9632 |
+
},
|
9633 |
+
|
9634 |
+
end: function end () {
|
9635 |
+
// remove trailing whitespace
|
9636 |
+
var element = stack[stack.length - 1];
|
9637 |
+
var lastNode = element.children[element.children.length - 1];
|
9638 |
+
if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {
|
9639 |
+
element.children.pop();
|
9640 |
+
}
|
9641 |
+
// pop stack
|
9642 |
+
stack.length -= 1;
|
9643 |
+
currentParent = stack[stack.length - 1];
|
9644 |
+
closeElement(element);
|
9645 |
+
},
|
9646 |
+
|
9647 |
+
chars: function chars (text) {
|
9648 |
+
if (!currentParent) {
|
9649 |
+
if (process.env.NODE_ENV !== 'production') {
|
9650 |
+
if (text === template) {
|
9651 |
+
warnOnce(
|
9652 |
+
'Component template requires a root element, rather than just text.'
|
9653 |
+
);
|
9654 |
+
} else if ((text = text.trim())) {
|
9655 |
+
warnOnce(
|
9656 |
+
("text \"" + text + "\" outside root element will be ignored.")
|
9657 |
+
);
|
9658 |
+
}
|
9659 |
+
}
|
9660 |
+
return
|
9661 |
+
}
|
9662 |
+
// IE textarea placeholder bug
|
9663 |
+
/* istanbul ignore if */
|
9664 |
+
if (isIE &&
|
9665 |
+
currentParent.tag === 'textarea' &&
|
9666 |
+
currentParent.attrsMap.placeholder === text
|
9667 |
+
) {
|
9668 |
+
return
|
9669 |
+
}
|
9670 |
+
var children = currentParent.children;
|
9671 |
+
text = inPre || text.trim()
|
9672 |
+
? isTextTag(currentParent) ? text : decodeHTMLCached(text)
|
9673 |
+
// only preserve whitespace if its not right after a starting tag
|
9674 |
+
: preserveWhitespace && children.length ? ' ' : '';
|
9675 |
+
if (text) {
|
9676 |
+
var res;
|
9677 |
+
if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
|
9678 |
+
children.push({
|
9679 |
+
type: 2,
|
9680 |
+
expression: res.expression,
|
9681 |
+
tokens: res.tokens,
|
9682 |
+
text: text
|
9683 |
+
});
|
9684 |
+
} else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {
|
9685 |
+
children.push({
|
9686 |
+
type: 3,
|
9687 |
+
text: text
|
9688 |
+
});
|
9689 |
+
}
|
9690 |
+
}
|
9691 |
+
},
|
9692 |
+
comment: function comment (text) {
|
9693 |
+
currentParent.children.push({
|
9694 |
+
type: 3,
|
9695 |
+
text: text,
|
9696 |
+
isComment: true
|
9697 |
+
});
|
9698 |
+
}
|
9699 |
+
});
|
9700 |
+
return root
|
9701 |
+
}
|
9702 |
+
|
9703 |
+
function processPre (el) {
|
9704 |
+
if (getAndRemoveAttr(el, 'v-pre') != null) {
|
9705 |
+
el.pre = true;
|
9706 |
+
}
|
9707 |
+
}
|
9708 |
+
|
9709 |
+
function processRawAttrs (el) {
|
9710 |
+
var l = el.attrsList.length;
|
9711 |
+
if (l) {
|
9712 |
+
var attrs = el.attrs = new Array(l);
|
9713 |
+
for (var i = 0; i < l; i++) {
|
9714 |
+
attrs[i] = {
|
9715 |
+
name: el.attrsList[i].name,
|
9716 |
+
value: JSON.stringify(el.attrsList[i].value)
|
9717 |
+
};
|
9718 |
+
}
|
9719 |
+
} else if (!el.pre) {
|
9720 |
+
// non root node in pre blocks with no attributes
|
9721 |
+
el.plain = true;
|
9722 |
+
}
|
9723 |
+
}
|
9724 |
+
|
9725 |
+
function processElement (element, options) {
|
9726 |
+
processKey(element);
|
9727 |
+
|
9728 |
+
// determine whether this is a plain element after
|
9729 |
+
// removing structural attributes
|
9730 |
+
element.plain = !element.key && !element.attrsList.length;
|
9731 |
+
|
9732 |
+
processRef(element);
|
9733 |
+
processSlot(element);
|
9734 |
+
processComponent(element);
|
9735 |
+
for (var i = 0; i < transforms.length; i++) {
|
9736 |
+
element = transforms[i](element, options) || element;
|
9737 |
+
}
|
9738 |
+
processAttrs(element);
|
9739 |
+
}
|
9740 |
+
|
9741 |
+
function processKey (el) {
|
9742 |
+
var exp = getBindingAttr(el, 'key');
|
9743 |
+
if (exp) {
|
9744 |
+
if (process.env.NODE_ENV !== 'production' && el.tag === 'template') {
|
9745 |
+
warn$2("<template> cannot be keyed. Place the key on real elements instead.");
|
9746 |
+
}
|
9747 |
+
el.key = exp;
|
9748 |
+
}
|
9749 |
+
}
|
9750 |
+
|
9751 |
+
function processRef (el) {
|
9752 |
+
var ref = getBindingAttr(el, 'ref');
|
9753 |
+
if (ref) {
|
9754 |
+
el.ref = ref;
|
9755 |
+
el.refInFor = checkInFor(el);
|
9756 |
+
}
|
9757 |
+
}
|
9758 |
+
|
9759 |
+
function processFor (el) {
|
9760 |
+
var exp;
|
9761 |
+
if ((exp = getAndRemoveAttr(el, 'v-for'))) {
|
9762 |
+
var res = parseFor(exp);
|
9763 |
+
if (res) {
|
9764 |
+
extend(el, res);
|
9765 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
9766 |
+
warn$2(
|
9767 |
+
("Invalid v-for expression: " + exp)
|
9768 |
+
);
|
9769 |
+
}
|
9770 |
+
}
|
9771 |
+
}
|
9772 |
+
|
9773 |
+
|
9774 |
+
|
9775 |
+
function parseFor (exp) {
|
9776 |
+
var inMatch = exp.match(forAliasRE);
|
9777 |
+
if (!inMatch) { return }
|
9778 |
+
var res = {};
|
9779 |
+
res.for = inMatch[2].trim();
|
9780 |
+
var alias = inMatch[1].trim().replace(stripParensRE, '');
|
9781 |
+
var iteratorMatch = alias.match(forIteratorRE);
|
9782 |
+
if (iteratorMatch) {
|
9783 |
+
res.alias = alias.replace(forIteratorRE, '');
|
9784 |
+
res.iterator1 = iteratorMatch[1].trim();
|
9785 |
+
if (iteratorMatch[2]) {
|
9786 |
+
res.iterator2 = iteratorMatch[2].trim();
|
9787 |
+
}
|
9788 |
+
} else {
|
9789 |
+
res.alias = alias;
|
9790 |
+
}
|
9791 |
+
return res
|
9792 |
+
}
|
9793 |
+
|
9794 |
+
function processIf (el) {
|
9795 |
+
var exp = getAndRemoveAttr(el, 'v-if');
|
9796 |
+
if (exp) {
|
9797 |
+
el.if = exp;
|
9798 |
+
addIfCondition(el, {
|
9799 |
+
exp: exp,
|
9800 |
+
block: el
|
9801 |
+
});
|
9802 |
+
} else {
|
9803 |
+
if (getAndRemoveAttr(el, 'v-else') != null) {
|
9804 |
+
el.else = true;
|
9805 |
+
}
|
9806 |
+
var elseif = getAndRemoveAttr(el, 'v-else-if');
|
9807 |
+
if (elseif) {
|
9808 |
+
el.elseif = elseif;
|
9809 |
+
}
|
9810 |
+
}
|
9811 |
+
}
|
9812 |
+
|
9813 |
+
function processIfConditions (el, parent) {
|
9814 |
+
var prev = findPrevElement(parent.children);
|
9815 |
+
if (prev && prev.if) {
|
9816 |
+
addIfCondition(prev, {
|
9817 |
+
exp: el.elseif,
|
9818 |
+
block: el
|
9819 |
+
});
|
9820 |
+
} else if (process.env.NODE_ENV !== 'production') {
|
9821 |
+
warn$2(
|
9822 |
+
"v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " +
|
9823 |
+
"used on element <" + (el.tag) + "> without corresponding v-if."
|
9824 |
+
);
|
9825 |
+
}
|
9826 |
+
}
|
9827 |
+
|
9828 |
+
function findPrevElement (children) {
|
9829 |
+
var i = children.length;
|
9830 |
+
while (i--) {
|
9831 |
+
if (children[i].type === 1) {
|
9832 |
+
return children[i]
|
9833 |
+
} else {
|
9834 |
+
if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {
|
9835 |
+
warn$2(
|
9836 |
+
"text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " +
|
9837 |
+
"will be ignored."
|
9838 |
+
);
|
9839 |
+
}
|
9840 |
+
children.pop();
|
9841 |
+
}
|
9842 |
+
}
|
9843 |
+
}
|
9844 |
+
|
9845 |
+
function addIfCondition (el, condition) {
|
9846 |
+
if (!el.ifConditions) {
|
9847 |
+
el.ifConditions = [];
|
9848 |
+
}
|
9849 |
+
el.ifConditions.push(condition);
|
9850 |
+
}
|
9851 |
+
|
9852 |
+
function processOnce (el) {
|
9853 |
+
var once$$1 = getAndRemoveAttr(el, 'v-once');
|
9854 |
+
if (once$$1 != null) {
|
9855 |
+
el.once = true;
|
9856 |
+
}
|
9857 |
+
}
|
9858 |
+
|
9859 |
+
function processSlot (el) {
|
9860 |
+
if (el.tag === 'slot') {
|
9861 |
+
el.slotName = getBindingAttr(el, 'name');
|
9862 |
+
if (process.env.NODE_ENV !== 'production' && el.key) {
|
9863 |
+
warn$2(
|
9864 |
+
"`key` does not work on <slot> because slots are abstract outlets " +
|
9865 |
+
"and can possibly expand into multiple elements. " +
|
9866 |
+
"Use the key on a wrapping element instead."
|
9867 |
+
);
|
9868 |
+
}
|
9869 |
+
} else {
|
9870 |
+
var slotScope;
|
9871 |
+
if (el.tag === 'template') {
|
9872 |
+
slotScope = getAndRemoveAttr(el, 'scope');
|
9873 |
+
/* istanbul ignore if */
|
9874 |
+
if (process.env.NODE_ENV !== 'production' && slotScope) {
|
9875 |
+
warn$2(
|
9876 |
+
"the \"scope\" attribute for scoped slots have been deprecated and " +
|
9877 |
+
"replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
|
9878 |
+
"can also be used on plain elements in addition to <template> to " +
|
9879 |
+
"denote scoped slots.",
|
9880 |
+
true
|
9881 |
+
);
|
9882 |
+
}
|
9883 |
+
el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
|
9884 |
+
} else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
|
9885 |
+
/* istanbul ignore if */
|
9886 |
+
if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {
|
9887 |
+
warn$2(
|
9888 |
+
"Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " +
|
9889 |
+
"(v-for takes higher priority). Use a wrapper <template> for the " +
|
9890 |
+
"scoped slot to make it clearer.",
|
9891 |
+
true
|
9892 |
+
);
|
9893 |
+
}
|
9894 |
+
el.slotScope = slotScope;
|
9895 |
+
}
|
9896 |
+
var slotTarget = getBindingAttr(el, 'slot');
|
9897 |
+
if (slotTarget) {
|
9898 |
+
el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
|
9899 |
+
// preserve slot as an attribute for native shadow DOM compat
|
9900 |
+
// only for non-scoped slots.
|
9901 |
+
if (el.tag !== 'template' && !el.slotScope) {
|
9902 |
+
addAttr(el, 'slot', slotTarget);
|
9903 |
+
}
|
9904 |
+
}
|
9905 |
+
}
|
9906 |
+
}
|
9907 |
+
|
9908 |
+
function processComponent (el) {
|
9909 |
+
var binding;
|
9910 |
+
if ((binding = getBindingAttr(el, 'is'))) {
|
9911 |
+
el.component = binding;
|
9912 |
+
}
|
9913 |
+
if (getAndRemoveAttr(el, 'inline-template') != null) {
|
9914 |
+
el.inlineTemplate = true;
|
9915 |
+
}
|
9916 |
+
}
|
9917 |
+
|
9918 |
+
function processAttrs (el) {
|
9919 |
+
var list = el.attrsList;
|
9920 |
+
var i, l, name, rawName, value, modifiers, isProp;
|
9921 |
+
for (i = 0, l = list.length; i < l; i++) {
|
9922 |
+
name = rawName = list[i].name;
|
9923 |
+
value = list[i].value;
|
9924 |
+
if (dirRE.test(name)) {
|
9925 |
+
// mark element as dynamic
|
9926 |
+
el.hasBindings = true;
|
9927 |
+
// modifiers
|
9928 |
+
modifiers = parseModifiers(name);
|
9929 |
+
if (modifiers) {
|
9930 |
+
name = name.replace(modifierRE, '');
|
9931 |
+
}
|
9932 |
+
if (bindRE.test(name)) { // v-bind
|
9933 |
+
name = name.replace(bindRE, '');
|
9934 |
+
value = parseFilters(value);
|
9935 |
+
isProp = false;
|
9936 |
+
if (modifiers) {
|
9937 |
+
if (modifiers.prop) {
|
9938 |
+
isProp = true;
|
9939 |
+
name = camelize(name);
|
9940 |
+
if (name === 'innerHtml') { name = 'innerHTML'; }
|
9941 |
+
}
|
9942 |
+
if (modifiers.camel) {
|
9943 |
+
name = camelize(name);
|
9944 |
+
}
|
9945 |
+
if (modifiers.sync) {
|
9946 |
+
addHandler(
|
9947 |
+
el,
|
9948 |
+
("update:" + (camelize(name))),
|
9949 |
+
genAssignmentCode(value, "$event")
|
9950 |
+
);
|
9951 |
+
}
|
9952 |
+
}
|
9953 |
+
if (isProp || (
|
9954 |
+
!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)
|
9955 |
+
)) {
|
9956 |
+
addProp(el, name, value);
|
9957 |
+
} else {
|
9958 |
+
addAttr(el, name, value);
|
9959 |
+
}
|
9960 |
+
} else if (onRE.test(name)) { // v-on
|
9961 |
+
name = name.replace(onRE, '');
|
9962 |
+
addHandler(el, name, value, modifiers, false, warn$2);
|
9963 |
+
} else { // normal directives
|
9964 |
+
name = name.replace(dirRE, '');
|
9965 |
+
// parse arg
|
9966 |
+
var argMatch = name.match(argRE);
|
9967 |
+
var arg = argMatch && argMatch[1];
|
9968 |
+
if (arg) {
|
9969 |
+
name = name.slice(0, -(arg.length + 1));
|
9970 |
+
}
|
9971 |
+
addDirective(el, name, rawName, value, arg, modifiers);
|
9972 |
+
if (process.env.NODE_ENV !== 'production' && name === 'model') {
|
9973 |
+
checkForAliasModel(el, value);
|
9974 |
+
}
|
9975 |
+
}
|
9976 |
+
} else {
|
9977 |
+
// literal attribute
|
9978 |
+
if (process.env.NODE_ENV !== 'production') {
|
9979 |
+
var res = parseText(value, delimiters);
|
9980 |
+
if (res) {
|
9981 |
+
warn$2(
|
9982 |
+
name + "=\"" + value + "\": " +
|
9983 |
+
'Interpolation inside attributes has been removed. ' +
|
9984 |
+
'Use v-bind or the colon shorthand instead. For example, ' +
|
9985 |
+
'instead of <div id="{{ val }}">, use <div :id="val">.'
|
9986 |
+
);
|
9987 |
+
}
|
9988 |
+
}
|
9989 |
+
addAttr(el, name, JSON.stringify(value));
|
9990 |
+
// #6887 firefox doesn't update muted state if set via attribute
|
9991 |
+
// even immediately after element creation
|
9992 |
+
if (!el.component &&
|
9993 |
+
name === 'muted' &&
|
9994 |
+
platformMustUseProp(el.tag, el.attrsMap.type, name)) {
|
9995 |
+
addProp(el, name, 'true');
|
9996 |
+
}
|
9997 |
+
}
|
9998 |
+
}
|
9999 |
+
}
|
10000 |
+
|
10001 |
+
function checkInFor (el) {
|
10002 |
+
var parent = el;
|
10003 |
+
while (parent) {
|
10004 |
+
if (parent.for !== undefined) {
|
10005 |
+
return true
|
10006 |
+
}
|
10007 |
+
parent = parent.parent;
|
10008 |
+
}
|
10009 |
+
return false
|
10010 |
+
}
|
10011 |
+
|
10012 |
+
function parseModifiers (name) {
|
10013 |
+
var match = name.match(modifierRE);
|
10014 |
+
if (match) {
|
10015 |
+
var ret = {};
|
10016 |
+
match.forEach(function (m) { ret[m.slice(1)] = true; });
|
10017 |
+
return ret
|
10018 |
+
}
|
10019 |
+
}
|
10020 |
+
|
10021 |
+
function makeAttrsMap (attrs) {
|
10022 |
+
var map = {};
|
10023 |
+
for (var i = 0, l = attrs.length; i < l; i++) {
|
10024 |
+
if (
|
10025 |
+
process.env.NODE_ENV !== 'production' &&
|
10026 |
+
map[attrs[i].name] && !isIE && !isEdge
|
10027 |
+
) {
|
10028 |
+
warn$2('duplicate attribute: ' + attrs[i].name);
|
10029 |
+
}
|
10030 |
+
map[attrs[i].name] = attrs[i].value;
|
10031 |
+
}
|
10032 |
+
return map
|
10033 |
+
}
|
10034 |
+
|
10035 |
+
// for script (e.g. type="x/template") or style, do not decode content
|
10036 |
+
function isTextTag (el) {
|
10037 |
+
return el.tag === 'script' || el.tag === 'style'
|
10038 |
+
}
|
10039 |
+
|
10040 |
+
function isForbiddenTag (el) {
|
10041 |
+
return (
|
10042 |
+
el.tag === 'style' ||
|
10043 |
+
(el.tag === 'script' && (
|
10044 |
+
!el.attrsMap.type ||
|
10045 |
+
el.attrsMap.type === 'text/javascript'
|
10046 |
+
))
|
10047 |
+
)
|
10048 |
+
}
|
10049 |
+
|
10050 |
+
var ieNSBug = /^xmlns:NS\d+/;
|
10051 |
+
var ieNSPrefix = /^NS\d+:/;
|
10052 |
+
|
10053 |
+
/* istanbul ignore next */
|
10054 |
+
function guardIESVGBug (attrs) {
|
10055 |
+
var res = [];
|
10056 |
+
for (var i = 0; i < attrs.length; i++) {
|
10057 |
+
var attr = attrs[i];
|
10058 |
+
if (!ieNSBug.test(attr.name)) {
|
10059 |
+
attr.name = attr.name.replace(ieNSPrefix, '');
|
10060 |
+
res.push(attr);
|
10061 |
+
}
|
10062 |
+
}
|
10063 |
+
return res
|
10064 |
+
}
|
10065 |
+
|
10066 |
+
function checkForAliasModel (el, value) {
|
10067 |
+
var _el = el;
|
10068 |
+
while (_el) {
|
10069 |
+
if (_el.for && _el.alias === value) {
|
10070 |
+
warn$2(
|
10071 |
+
"<" + (el.tag) + " v-model=\"" + value + "\">: " +
|
10072 |
+
"You are binding v-model directly to a v-for iteration alias. " +
|
10073 |
+
"This will not be able to modify the v-for source array because " +
|
10074 |
+
"writing to the alias is like modifying a function local variable. " +
|
10075 |
+
"Consider using an array of objects and use v-model on an object property instead."
|
10076 |
+
);
|
10077 |
+
}
|
10078 |
+
_el = _el.parent;
|
10079 |
+
}
|
10080 |
+
}
|
10081 |
+
|
10082 |
+
/* */
|
10083 |
+
|
10084 |
+
/**
|
10085 |
+
* Expand input[v-model] with dyanmic type bindings into v-if-else chains
|
10086 |
+
* Turn this:
|
10087 |
+
* <input v-model="data[type]" :type="type">
|
10088 |
+
* into this:
|
10089 |
+
* <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
|
10090 |
+
* <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
|
10091 |
+
* <input v-else :type="type" v-model="data[type]">
|
10092 |
+
*/
|
10093 |
+
|
10094 |
+
function preTransformNode (el, options) {
|
10095 |
+
if (el.tag === 'input') {
|
10096 |
+
var map = el.attrsMap;
|
10097 |
+
if (!map['v-model']) {
|
10098 |
+
return
|
10099 |
+
}
|
10100 |
+
|
10101 |
+
var typeBinding;
|
10102 |
+
if (map[':type'] || map['v-bind:type']) {
|
10103 |
+
typeBinding = getBindingAttr(el, 'type');
|
10104 |
+
}
|
10105 |
+
if (!map.type && !typeBinding && map['v-bind']) {
|
10106 |
+
typeBinding = "(" + (map['v-bind']) + ").type";
|
10107 |
+
}
|
10108 |
+
|
10109 |
+
if (typeBinding) {
|
10110 |
+
var ifCondition = getAndRemoveAttr(el, 'v-if', true);
|
10111 |
+
var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : "";
|
10112 |
+
var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
|
10113 |
+
var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
|
10114 |
+
// 1. checkbox
|
10115 |
+
var branch0 = cloneASTElement(el);
|
10116 |
+
// process for on the main node
|
10117 |
+
processFor(branch0);
|
10118 |
+
addRawAttr(branch0, 'type', 'checkbox');
|
10119 |
+
processElement(branch0, options);
|
10120 |
+
branch0.processed = true; // prevent it from double-processed
|
10121 |
+
branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
|
10122 |
+
addIfCondition(branch0, {
|
10123 |
+
exp: branch0.if,
|
10124 |
+
block: branch0
|
10125 |
+
});
|
10126 |
+
// 2. add radio else-if condition
|
10127 |
+
var branch1 = cloneASTElement(el);
|
10128 |
+
getAndRemoveAttr(branch1, 'v-for', true);
|
10129 |
+
addRawAttr(branch1, 'type', 'radio');
|
10130 |
+
processElement(branch1, options);
|
10131 |
+
addIfCondition(branch0, {
|
10132 |
+
exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
|
10133 |
+
block: branch1
|
10134 |
+
});
|
10135 |
+
// 3. other
|
10136 |
+
var branch2 = cloneASTElement(el);
|
10137 |
+
getAndRemoveAttr(branch2, 'v-for', true);
|
10138 |
+
addRawAttr(branch2, ':type', typeBinding);
|
10139 |
+
processElement(branch2, options);
|
10140 |
+
addIfCondition(branch0, {
|
10141 |
+
exp: ifCondition,
|
10142 |
+
block: branch2
|
10143 |
+
});
|
10144 |
+
|
10145 |
+
if (hasElse) {
|
10146 |
+
branch0.else = true;
|
10147 |
+
} else if (elseIfCondition) {
|
10148 |
+
branch0.elseif = elseIfCondition;
|
10149 |
+
}
|
10150 |
+
|
10151 |
+
return branch0
|
10152 |
+
}
|
10153 |
+
}
|
10154 |
+
}
|
10155 |
+
|
10156 |
+
function cloneASTElement (el) {
|
10157 |
+
return createASTElement(el.tag, el.attrsList.slice(), el.parent)
|
10158 |
+
}
|
10159 |
+
|
10160 |
+
var model$2 = {
|
10161 |
+
preTransformNode: preTransformNode
|
10162 |
+
}
|
10163 |
+
|
10164 |
+
var modules$1 = [
|
10165 |
+
klass$1,
|
10166 |
+
style$1,
|
10167 |
+
model$2
|
10168 |
+
]
|
10169 |
+
|
10170 |
+
/* */
|
10171 |
+
|
10172 |
+
function text (el, dir) {
|
10173 |
+
if (dir.value) {
|
10174 |
+
addProp(el, 'textContent', ("_s(" + (dir.value) + ")"));
|
10175 |
+
}
|
10176 |
+
}
|
10177 |
+
|
10178 |
+
/* */
|
10179 |
+
|
10180 |
+
function html (el, dir) {
|
10181 |
+
if (dir.value) {
|
10182 |
+
addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"));
|
10183 |
+
}
|
10184 |
+
}
|
10185 |
+
|
10186 |
+
var directives$1 = {
|
10187 |
+
model: model,
|
10188 |
+
text: text,
|
10189 |
+
html: html
|
10190 |
+
}
|
10191 |
+
|
10192 |
+
/* */
|
10193 |
+
|
10194 |
+
var baseOptions = {
|
10195 |
+
expectHTML: true,
|
10196 |
+
modules: modules$1,
|
10197 |
+
directives: directives$1,
|
10198 |
+
isPreTag: isPreTag,
|
10199 |
+
isUnaryTag: isUnaryTag,
|
10200 |
+
mustUseProp: mustUseProp,
|
10201 |
+
canBeLeftOpenTag: canBeLeftOpenTag,
|
10202 |
+
isReservedTag: isReservedTag,
|
10203 |
+
getTagNamespace: getTagNamespace,
|
10204 |
+
staticKeys: genStaticKeys(modules$1)
|
10205 |
+
};
|
10206 |
+
|
10207 |
+
/* */
|
10208 |
+
|
10209 |
+
var isStaticKey;
|
10210 |
+
var isPlatformReservedTag;
|
10211 |
+
|
10212 |
+
var genStaticKeysCached = cached(genStaticKeys$1);
|
10213 |
+
|
10214 |
+
/**
|
10215 |
+
* Goal of the optimizer: walk the generated template AST tree
|
10216 |
+
* and detect sub-trees that are purely static, i.e. parts of
|
10217 |
+
* the DOM that never needs to change.
|
10218 |
+
*
|
10219 |
+
* Once we detect these sub-trees, we can:
|
10220 |
+
*
|
10221 |
+
* 1. Hoist them into constants, so that we no longer need to
|
10222 |
+
* create fresh nodes for them on each re-render;
|
10223 |
+
* 2. Completely skip them in the patching process.
|
10224 |
+
*/
|
10225 |
+
function optimize (root, options) {
|
10226 |
+
if (!root) { return }
|
10227 |
+
isStaticKey = genStaticKeysCached(options.staticKeys || '');
|
10228 |
+
isPlatformReservedTag = options.isReservedTag || no;
|
10229 |
+
// first pass: mark all non-static nodes.
|
10230 |
+
markStatic$1(root);
|
10231 |
+
// second pass: mark static roots.
|
10232 |
+
markStaticRoots(root, false);
|
10233 |
+
}
|
10234 |
+
|
10235 |
+
function genStaticKeys$1 (keys) {
|
10236 |
+
return makeMap(
|
10237 |
+
'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +
|
10238 |
+
(keys ? ',' + keys : '')
|
10239 |
+
)
|
10240 |
+
}
|
10241 |
+
|
10242 |
+
function markStatic$1 (node) {
|
10243 |
+
node.static = isStatic(node);
|
10244 |
+
if (node.type === 1) {
|
10245 |
+
// do not make component slot content static. this avoids
|
10246 |
+
// 1. components not able to mutate slot nodes
|
10247 |
+
// 2. static slot content fails for hot-reloading
|
10248 |
+
if (
|
10249 |
+
!isPlatformReservedTag(node.tag) &&
|
10250 |
+
node.tag !== 'slot' &&
|
10251 |
+
node.attrsMap['inline-template'] == null
|
10252 |
+
) {
|
10253 |
+
return
|
10254 |
+
}
|
10255 |
+
for (var i = 0, l = node.children.length; i < l; i++) {
|
10256 |
+
var child = node.children[i];
|
10257 |
+
markStatic$1(child);
|
10258 |
+
if (!child.static) {
|
10259 |
+
node.static = false;
|
10260 |
+
}
|
10261 |
+
}
|
10262 |
+
if (node.ifConditions) {
|
10263 |
+
for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
|
10264 |
+
var block = node.ifConditions[i$1].block;
|
10265 |
+
markStatic$1(block);
|
10266 |
+
if (!block.static) {
|
10267 |
+
node.static = false;
|
10268 |
+
}
|
10269 |
+
}
|
10270 |
+
}
|
10271 |
+
}
|
10272 |
+
}
|
10273 |
+
|
10274 |
+
function markStaticRoots (node, isInFor) {
|
10275 |
+
if (node.type === 1) {
|
10276 |
+
if (node.static || node.once) {
|
10277 |
+
node.staticInFor = isInFor;
|
10278 |
+
}
|
10279 |
+
// For a node to qualify as a static root, it should have children that
|
10280 |
+
// are not just static text. Otherwise the cost of hoisting out will
|
10281 |
+
// outweigh the benefits and it's better off to just always render it fresh.
|
10282 |
+
if (node.static && node.children.length && !(
|
10283 |
+
node.children.length === 1 &&
|
10284 |
+
node.children[0].type === 3
|
10285 |
+
)) {
|
10286 |
+
node.staticRoot = true;
|
10287 |
+
return
|
10288 |
+
} else {
|
10289 |
+
node.staticRoot = false;
|
10290 |
+
}
|
10291 |
+
if (node.children) {
|
10292 |
+
for (var i = 0, l = node.children.length; i < l; i++) {
|
10293 |
+
markStaticRoots(node.children[i], isInFor || !!node.for);
|
10294 |
+
}
|
10295 |
+
}
|
10296 |
+
if (node.ifConditions) {
|
10297 |
+
for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
|
10298 |
+
markStaticRoots(node.ifConditions[i$1].block, isInFor);
|
10299 |
+
}
|
10300 |
+
}
|
10301 |
+
}
|
10302 |
+
}
|
10303 |
+
|
10304 |
+
function isStatic (node) {
|
10305 |
+
if (node.type === 2) { // expression
|
10306 |
+
return false
|
10307 |
+
}
|
10308 |
+
if (node.type === 3) { // text
|
10309 |
+
return true
|
10310 |
+
}
|
10311 |
+
return !!(node.pre || (
|
10312 |
+
!node.hasBindings && // no dynamic bindings
|
10313 |
+
!node.if && !node.for && // not v-if or v-for or v-else
|
10314 |
+
!isBuiltInTag(node.tag) && // not a built-in
|
10315 |
+
isPlatformReservedTag(node.tag) && // not a component
|
10316 |
+
!isDirectChildOfTemplateFor(node) &&
|
10317 |
+
Object.keys(node).every(isStaticKey)
|
10318 |
+
))
|
10319 |
+
}
|
10320 |
+
|
10321 |
+
function isDirectChildOfTemplateFor (node) {
|
10322 |
+
while (node.parent) {
|
10323 |
+
node = node.parent;
|
10324 |
+
if (node.tag !== 'template') {
|
10325 |
+
return false
|
10326 |
+
}
|
10327 |
+
if (node.for) {
|
10328 |
+
return true
|
10329 |
+
}
|
10330 |
+
}
|
10331 |
+
return false
|
10332 |
+
}
|
10333 |
+
|
10334 |
+
/* */
|
10335 |
+
|
10336 |
+
var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/;
|
10337 |
+
var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
|
10338 |
+
|
10339 |
+
// KeyboardEvent.keyCode aliases
|
10340 |
+
var keyCodes = {
|
10341 |
+
esc: 27,
|
10342 |
+
tab: 9,
|
10343 |
+
enter: 13,
|
10344 |
+
space: 32,
|
10345 |
+
up: 38,
|
10346 |
+
left: 37,
|
10347 |
+
right: 39,
|
10348 |
+
down: 40,
|
10349 |
+
'delete': [8, 46]
|
10350 |
+
};
|
10351 |
+
|
10352 |
+
// KeyboardEvent.key aliases
|
10353 |
+
var keyNames = {
|
10354 |
+
esc: 'Escape',
|
10355 |
+
tab: 'Tab',
|
10356 |
+
enter: 'Enter',
|
10357 |
+
space: ' ',
|
10358 |
+
// #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
|
10359 |
+
up: ['Up', 'ArrowUp'],
|
10360 |
+
left: ['Left', 'ArrowLeft'],
|
10361 |
+
right: ['Right', 'ArrowRight'],
|
10362 |
+
down: ['Down', 'ArrowDown'],
|
10363 |
+
'delete': ['Backspace', 'Delete']
|
10364 |
+
};
|
10365 |
+
|
10366 |
+
// #4868: modifiers that prevent the execution of the listener
|
10367 |
+
// need to explicitly return null so that we can determine whether to remove
|
10368 |
+
// the listener for .once
|
10369 |
+
var genGuard = function (condition) { return ("if(" + condition + ")return null;"); };
|
10370 |
+
|
10371 |
+
var modifierCode = {
|
10372 |
+
stop: '$event.stopPropagation();',
|
10373 |
+
prevent: '$event.preventDefault();',
|
10374 |
+
self: genGuard("$event.target !== $event.currentTarget"),
|
10375 |
+
ctrl: genGuard("!$event.ctrlKey"),
|
10376 |
+
shift: genGuard("!$event.shiftKey"),
|
10377 |
+
alt: genGuard("!$event.altKey"),
|
10378 |
+
meta: genGuard("!$event.metaKey"),
|
10379 |
+
left: genGuard("'button' in $event && $event.button !== 0"),
|
10380 |
+
middle: genGuard("'button' in $event && $event.button !== 1"),
|
10381 |
+
right: genGuard("'button' in $event && $event.button !== 2")
|
10382 |
+
};
|
10383 |
+
|
10384 |
+
function genHandlers (
|
10385 |
+
events,
|
10386 |
+
isNative,
|
10387 |
+
warn
|
10388 |
+
) {
|
10389 |
+
var res = isNative ? 'nativeOn:{' : 'on:{';
|
10390 |
+
for (var name in events) {
|
10391 |
+
res += "\"" + name + "\":" + (genHandler(name, events[name])) + ",";
|
10392 |
+
}
|
10393 |
+
return res.slice(0, -1) + '}'
|
10394 |
+
}
|
10395 |
+
|
10396 |
+
function genHandler (
|
10397 |
+
name,
|
10398 |
+
handler
|
10399 |
+
) {
|
10400 |
+
if (!handler) {
|
10401 |
+
return 'function(){}'
|
10402 |
+
}
|
10403 |
+
|
10404 |
+
if (Array.isArray(handler)) {
|
10405 |
+
return ("[" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + "]")
|
10406 |
+
}
|
10407 |
+
|
10408 |
+
var isMethodPath = simplePathRE.test(handler.value);
|
10409 |
+
var isFunctionExpression = fnExpRE.test(handler.value);
|
10410 |
+
|
10411 |
+
if (!handler.modifiers) {
|
10412 |
+
if (isMethodPath || isFunctionExpression) {
|
10413 |
+
return handler.value
|
10414 |
+
}
|
10415 |
+
/* istanbul ignore if */
|
10416 |
+
return ("function($event){" + (handler.value) + "}") // inline statement
|
10417 |
+
} else {
|
10418 |
+
var code = '';
|
10419 |
+
var genModifierCode = '';
|
10420 |
+
var keys = [];
|
10421 |
+
for (var key in handler.modifiers) {
|
10422 |
+
if (modifierCode[key]) {
|
10423 |
+
genModifierCode += modifierCode[key];
|
10424 |
+
// left/right
|
10425 |
+
if (keyCodes[key]) {
|
10426 |
+
keys.push(key);
|
10427 |
+
}
|
10428 |
+
} else if (key === 'exact') {
|
10429 |
+
var modifiers = (handler.modifiers);
|
10430 |
+
genModifierCode += genGuard(
|
10431 |
+
['ctrl', 'shift', 'alt', 'meta']
|
10432 |
+
.filter(function (keyModifier) { return !modifiers[keyModifier]; })
|
10433 |
+
.map(function (keyModifier) { return ("$event." + keyModifier + "Key"); })
|
10434 |
+
.join('||')
|
10435 |
+
);
|
10436 |
+
} else {
|
10437 |
+
keys.push(key);
|
10438 |
+
}
|
10439 |
+
}
|
10440 |
+
if (keys.length) {
|
10441 |
+
code += genKeyFilter(keys);
|
10442 |
+
}
|
10443 |
+
// Make sure modifiers like prevent and stop get executed after key filtering
|
10444 |
+
if (genModifierCode) {
|
10445 |
+
code += genModifierCode;
|
10446 |
+
}
|
10447 |
+
var handlerCode = isMethodPath
|
10448 |
+
? ("return " + (handler.value) + "($event)")
|
10449 |
+
: isFunctionExpression
|
10450 |
+
? ("return (" + (handler.value) + ")($event)")
|
10451 |
+
: handler.value;
|
10452 |
+
/* istanbul ignore if */
|
10453 |
+
return ("function($event){" + code + handlerCode + "}")
|
10454 |
+
}
|
10455 |
+
}
|
10456 |
+
|
10457 |
+
function genKeyFilter (keys) {
|
10458 |
+
return ("if(!('button' in $event)&&" + (keys.map(genFilterCode).join('&&')) + ")return null;")
|
10459 |
+
}
|
10460 |
+
|
10461 |
+
function genFilterCode (key) {
|
10462 |
+
var keyVal = parseInt(key, 10);
|
10463 |
+
if (keyVal) {
|
10464 |
+
return ("$event.keyCode!==" + keyVal)
|
10465 |
+
}
|
10466 |
+
var keyCode = keyCodes[key];
|
10467 |
+
var keyName = keyNames[key];
|
10468 |
+
return (
|
10469 |
+
"_k($event.keyCode," +
|
10470 |
+
(JSON.stringify(key)) + "," +
|
10471 |
+
(JSON.stringify(keyCode)) + "," +
|
10472 |
+
"$event.key," +
|
10473 |
+
"" + (JSON.stringify(keyName)) +
|
10474 |
+
")"
|
10475 |
+
)
|
10476 |
+
}
|
10477 |
+
|
10478 |
+
/* */
|
10479 |
+
|
10480 |
+
function on (el, dir) {
|
10481 |
+
if (process.env.NODE_ENV !== 'production' && dir.modifiers) {
|
10482 |
+
warn("v-on without argument does not support modifiers.");
|
10483 |
+
}
|
10484 |
+
el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); };
|
10485 |
+
}
|
10486 |
+
|
10487 |
+
/* */
|
10488 |
+
|
10489 |
+
function bind$1 (el, dir) {
|
10490 |
+
el.wrapData = function (code) {
|
10491 |
+
return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")")
|
10492 |
+
};
|
10493 |
+
}
|
10494 |
+
|
10495 |
+
/* */
|
10496 |
+
|
10497 |
+
var baseDirectives = {
|
10498 |
+
on: on,
|
10499 |
+
bind: bind$1,
|
10500 |
+
cloak: noop
|
10501 |
+
}
|
10502 |
+
|
10503 |
+
/* */
|
10504 |
+
|
10505 |
+
var CodegenState = function CodegenState (options) {
|
10506 |
+
this.options = options;
|
10507 |
+
this.warn = options.warn || baseWarn;
|
10508 |
+
this.transforms = pluckModuleFunction(options.modules, 'transformCode');
|
10509 |
+
this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
|
10510 |
+
this.directives = extend(extend({}, baseDirectives), options.directives);
|
10511 |
+
var isReservedTag = options.isReservedTag || no;
|
10512 |
+
this.maybeComponent = function (el) { return !isReservedTag(el.tag); };
|
10513 |
+
this.onceId = 0;
|
10514 |
+
this.staticRenderFns = [];
|
10515 |
+
};
|
10516 |
+
|
10517 |
+
|
10518 |
+
|
10519 |
+
function generate (
|
10520 |
+
ast,
|
10521 |
+
options
|
10522 |
+
) {
|
10523 |
+
var state = new CodegenState(options);
|
10524 |
+
var code = ast ? genElement(ast, state) : '_c("div")';
|
10525 |
+
return {
|
10526 |
+
render: ("with(this){return " + code + "}"),
|
10527 |
+
staticRenderFns: state.staticRenderFns
|
10528 |
+
}
|
10529 |
+
}
|
10530 |
+
|
10531 |
+
function genElement (el, state) {
|
10532 |
+
if (el.staticRoot && !el.staticProcessed) {
|
10533 |
+
return genStatic(el, state)
|
10534 |
+
} else if (el.once && !el.onceProcessed) {
|
10535 |
+
return genOnce(el, state)
|
10536 |
+
} else if (el.for && !el.forProcessed) {
|
10537 |
+
return genFor(el, state)
|
10538 |
+
} else if (el.if && !el.ifProcessed) {
|
10539 |
+
return genIf(el, state)
|
10540 |
+
} else if (el.tag === 'template' && !el.slotTarget) {
|
10541 |
+
return genChildren(el, state) || 'void 0'
|
10542 |
+
} else if (el.tag === 'slot') {
|
10543 |
+
return genSlot(el, state)
|
10544 |
+
} else {
|
10545 |
+
// component or element
|
10546 |
+
var code;
|
10547 |
+
if (el.component) {
|
10548 |
+
code = genComponent(el.component, el, state);
|
10549 |
+
} else {
|
10550 |
+
var data = el.plain ? undefined : genData$2(el, state);
|
10551 |
+
|
10552 |
+
var children = el.inlineTemplate ? null : genChildren(el, state, true);
|
10553 |
+
code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
|
10554 |
+
}
|
10555 |
+
// module transforms
|
10556 |
+
for (var i = 0; i < state.transforms.length; i++) {
|
10557 |
+
code = state.transforms[i](el, code);
|
10558 |
+
}
|
10559 |
+
return code
|
10560 |
+
}
|
10561 |
+
}
|
10562 |
+
|
10563 |
+
// hoist static sub-trees out
|
10564 |
+
function genStatic (el, state) {
|
10565 |
+
el.staticProcessed = true;
|
10566 |
+
state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}"));
|
10567 |
+
return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")")
|
10568 |
+
}
|
10569 |
+
|
10570 |
+
// v-once
|
10571 |
+
function genOnce (el, state) {
|
10572 |
+
el.onceProcessed = true;
|
10573 |
+
if (el.if && !el.ifProcessed) {
|
10574 |
+
return genIf(el, state)
|
10575 |
+
} else if (el.staticInFor) {
|
10576 |
+
var key = '';
|
10577 |
+
var parent = el.parent;
|
10578 |
+
while (parent) {
|
10579 |
+
if (parent.for) {
|
10580 |
+
key = parent.key;
|
10581 |
+
break
|
10582 |
+
}
|
10583 |
+
parent = parent.parent;
|
10584 |
+
}
|
10585 |
+
if (!key) {
|
10586 |
+
process.env.NODE_ENV !== 'production' && state.warn(
|
10587 |
+
"v-once can only be used inside v-for that is keyed. "
|
10588 |
+
);
|
10589 |
+
return genElement(el, state)
|
10590 |
+
}
|
10591 |
+
return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")")
|
10592 |
+
} else {
|
10593 |
+
return genStatic(el, state)
|
10594 |
+
}
|
10595 |
+
}
|
10596 |
+
|
10597 |
+
function genIf (
|
10598 |
+
el,
|
10599 |
+
state,
|
10600 |
+
altGen,
|
10601 |
+
altEmpty
|
10602 |
+
) {
|
10603 |
+
el.ifProcessed = true; // avoid recursion
|
10604 |
+
return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
|
10605 |
+
}
|
10606 |
+
|
10607 |
+
function genIfConditions (
|
10608 |
+
conditions,
|
10609 |
+
state,
|
10610 |
+
altGen,
|
10611 |
+
altEmpty
|
10612 |
+
) {
|
10613 |
+
if (!conditions.length) {
|
10614 |
+
return altEmpty || '_e()'
|
10615 |
+
}
|
10616 |
+
|
10617 |
+
var condition = conditions.shift();
|
10618 |
+
if (condition.exp) {
|
10619 |
+
return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty)))
|
10620 |
+
} else {
|
10621 |
+
return ("" + (genTernaryExp(condition.block)))
|
10622 |
+
}
|
10623 |
+
|
10624 |
+
// v-if with v-once should generate code like (a)?_m(0):_m(1)
|
10625 |
+
function genTernaryExp (el) {
|
10626 |
+
return altGen
|
10627 |
+
? altGen(el, state)
|
10628 |
+
: el.once
|
10629 |
+
? genOnce(el, state)
|
10630 |
+
: genElement(el, state)
|
10631 |
+
}
|
10632 |
+
}
|
10633 |
+
|
10634 |
+
function genFor (
|
10635 |
+
el,
|
10636 |
+
state,
|
10637 |
+
altGen,
|
10638 |
+
altHelper
|
10639 |
+
) {
|
10640 |
+
var exp = el.for;
|
10641 |
+
var alias = el.alias;
|
10642 |
+
var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
|
10643 |
+
var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
|
10644 |
+
|
10645 |
+
if (process.env.NODE_ENV !== 'production' &&
|
10646 |
+
state.maybeComponent(el) &&
|
10647 |
+
el.tag !== 'slot' &&
|
10648 |
+
el.tag !== 'template' &&
|
10649 |
+
!el.key
|
10650 |
+
) {
|
10651 |
+
state.warn(
|
10652 |
+
"<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " +
|
10653 |
+
"v-for should have explicit keys. " +
|
10654 |
+
"See https://vuejs.org/guide/list.html#key for more info.",
|
10655 |
+
true /* tip */
|
10656 |
+
);
|
10657 |
+
}
|
10658 |
+
|
10659 |
+
el.forProcessed = true; // avoid recursion
|
10660 |
+
return (altHelper || '_l') + "((" + exp + ")," +
|
10661 |
+
"function(" + alias + iterator1 + iterator2 + "){" +
|
10662 |
+
"return " + ((altGen || genElement)(el, state)) +
|
10663 |
+
'})'
|
10664 |
+
}
|
10665 |
+
|
10666 |
+
function genData$2 (el, state) {
|
10667 |
+
var data = '{';
|
10668 |
+
|
10669 |
+
// directives first.
|
10670 |
+
// directives may mutate the el's other properties before they are generated.
|
10671 |
+
var dirs = genDirectives(el, state);
|
10672 |
+
if (dirs) { data += dirs + ','; }
|
10673 |
+
|
10674 |
+
// key
|
10675 |
+
if (el.key) {
|
10676 |
+
data += "key:" + (el.key) + ",";
|
10677 |
+
}
|
10678 |
+
// ref
|
10679 |
+
if (el.ref) {
|
10680 |
+
data += "ref:" + (el.ref) + ",";
|
10681 |
+
}
|
10682 |
+
if (el.refInFor) {
|
10683 |
+
data += "refInFor:true,";
|
10684 |
+
}
|
10685 |
+
// pre
|
10686 |
+
if (el.pre) {
|
10687 |
+
data += "pre:true,";
|
10688 |
+
}
|
10689 |
+
// record original tag name for components using "is" attribute
|
10690 |
+
if (el.component) {
|
10691 |
+
data += "tag:\"" + (el.tag) + "\",";
|
10692 |
+
}
|
10693 |
+
// module data generation functions
|
10694 |
+
for (var i = 0; i < state.dataGenFns.length; i++) {
|
10695 |
+
data += state.dataGenFns[i](el);
|
10696 |
+
}
|
10697 |
+
// attributes
|
10698 |
+
if (el.attrs) {
|
10699 |
+
data += "attrs:{" + (genProps(el.attrs)) + "},";
|
10700 |
+
}
|
10701 |
+
// DOM props
|
10702 |
+
if (el.props) {
|
10703 |
+
data += "domProps:{" + (genProps(el.props)) + "},";
|
10704 |
+
}
|
10705 |
+
// event handlers
|
10706 |
+
if (el.events) {
|
10707 |
+
data += (genHandlers(el.events, false, state.warn)) + ",";
|
10708 |
+
}
|
10709 |
+
if (el.nativeEvents) {
|
10710 |
+
data += (genHandlers(el.nativeEvents, true, state.warn)) + ",";
|
10711 |
+
}
|
10712 |
+
// slot target
|
10713 |
+
// only for non-scoped slots
|
10714 |
+
if (el.slotTarget && !el.slotScope) {
|
10715 |
+
data += "slot:" + (el.slotTarget) + ",";
|
10716 |
+
}
|
10717 |
+
// scoped slots
|
10718 |
+
if (el.scopedSlots) {
|
10719 |
+
data += (genScopedSlots(el.scopedSlots, state)) + ",";
|
10720 |
+
}
|
10721 |
+
// component v-model
|
10722 |
+
if (el.model) {
|
10723 |
+
data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},";
|
10724 |
+
}
|
10725 |
+
// inline-template
|
10726 |
+
if (el.inlineTemplate) {
|
10727 |
+
var inlineTemplate = genInlineTemplate(el, state);
|
10728 |
+
if (inlineTemplate) {
|
10729 |
+
data += inlineTemplate + ",";
|
10730 |
+
}
|
10731 |
+
}
|
10732 |
+
data = data.replace(/,$/, '') + '}';
|
10733 |
+
// v-bind data wrap
|
10734 |
+
if (el.wrapData) {
|
10735 |
+
data = el.wrapData(data);
|
10736 |
+
}
|
10737 |
+
// v-on data wrap
|
10738 |
+
if (el.wrapListeners) {
|
10739 |
+
data = el.wrapListeners(data);
|
10740 |
+
}
|
10741 |
+
return data
|
10742 |
+
}
|
10743 |
+
|
10744 |
+
function genDirectives (el, state) {
|
10745 |
+
var dirs = el.directives;
|
10746 |
+
if (!dirs) { return }
|
10747 |
+
var res = 'directives:[';
|
10748 |
+
var hasRuntime = false;
|
10749 |
+
var i, l, dir, needRuntime;
|
10750 |
+
for (i = 0, l = dirs.length; i < l; i++) {
|
10751 |
+
dir = dirs[i];
|
10752 |
+
needRuntime = true;
|
10753 |
+
var gen = state.directives[dir.name];
|
10754 |
+
if (gen) {
|
10755 |
+
// compile-time directive that manipulates AST.
|
10756 |
+
// returns true if it also needs a runtime counterpart.
|
10757 |
+
needRuntime = !!gen(el, dir, state.warn);
|
10758 |
+
}
|
10759 |
+
if (needRuntime) {
|
10760 |
+
hasRuntime = true;
|
10761 |
+
res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:\"" + (dir.arg) + "\"") : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},";
|
10762 |
+
}
|
10763 |
+
}
|
10764 |
+
if (hasRuntime) {
|
10765 |
+
return res.slice(0, -1) + ']'
|
10766 |
+
}
|
10767 |
+
}
|
10768 |
+
|
10769 |
+
function genInlineTemplate (el, state) {
|
10770 |
+
var ast = el.children[0];
|
10771 |
+
if (process.env.NODE_ENV !== 'production' && (
|
10772 |
+
el.children.length !== 1 || ast.type !== 1
|
10773 |
+
)) {
|
10774 |
+
state.warn('Inline-template components must have exactly one child element.');
|
10775 |
+
}
|
10776 |
+
if (ast.type === 1) {
|
10777 |
+
var inlineRenderFns = generate(ast, state.options);
|
10778 |
+
return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}")
|
10779 |
+
}
|
10780 |
+
}
|
10781 |
+
|
10782 |
+
function genScopedSlots (
|
10783 |
+
slots,
|
10784 |
+
state
|
10785 |
+
) {
|
10786 |
+
return ("scopedSlots:_u([" + (Object.keys(slots).map(function (key) {
|
10787 |
+
return genScopedSlot(key, slots[key], state)
|
10788 |
+
}).join(',')) + "])")
|
10789 |
+
}
|
10790 |
+
|
10791 |
+
function genScopedSlot (
|
10792 |
+
key,
|
10793 |
+
el,
|
10794 |
+
state
|
10795 |
+
) {
|
10796 |
+
if (el.for && !el.forProcessed) {
|
10797 |
+
return genForScopedSlot(key, el, state)
|
10798 |
+
}
|
10799 |
+
var fn = "function(" + (String(el.slotScope)) + "){" +
|
10800 |
+
"return " + (el.tag === 'template'
|
10801 |
+
? el.if
|
10802 |
+
? ((el.if) + "?" + (genChildren(el, state) || 'undefined') + ":undefined")
|
10803 |
+
: genChildren(el, state) || 'undefined'
|
10804 |
+
: genElement(el, state)) + "}";
|
10805 |
+
return ("{key:" + key + ",fn:" + fn + "}")
|
10806 |
+
}
|
10807 |
+
|
10808 |
+
function genForScopedSlot (
|
10809 |
+
key,
|
10810 |
+
el,
|
10811 |
+
state
|
10812 |
+
) {
|
10813 |
+
var exp = el.for;
|
10814 |
+
var alias = el.alias;
|
10815 |
+
var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
|
10816 |
+
var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
|
10817 |
+
el.forProcessed = true; // avoid recursion
|
10818 |
+
return "_l((" + exp + ")," +
|
10819 |
+
"function(" + alias + iterator1 + iterator2 + "){" +
|
10820 |
+
"return " + (genScopedSlot(key, el, state)) +
|
10821 |
+
'})'
|
10822 |
+
}
|
10823 |
+
|
10824 |
+
function genChildren (
|
10825 |
+
el,
|
10826 |
+
state,
|
10827 |
+
checkSkip,
|
10828 |
+
altGenElement,
|
10829 |
+
altGenNode
|
10830 |
+
) {
|
10831 |
+
var children = el.children;
|
10832 |
+
if (children.length) {
|
10833 |
+
var el$1 = children[0];
|
10834 |
+
// optimize single v-for
|
10835 |
+
if (children.length === 1 &&
|
10836 |
+
el$1.for &&
|
10837 |
+
el$1.tag !== 'template' &&
|
10838 |
+
el$1.tag !== 'slot'
|
10839 |
+
) {
|
10840 |
+
return (altGenElement || genElement)(el$1, state)
|
10841 |
+
}
|
10842 |
+
var normalizationType = checkSkip
|
10843 |
+
? getNormalizationType(children, state.maybeComponent)
|
10844 |
+
: 0;
|
10845 |
+
var gen = altGenNode || genNode;
|
10846 |
+
return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType ? ("," + normalizationType) : ''))
|
10847 |
+
}
|
10848 |
+
}
|
10849 |
+
|
10850 |
+
// determine the normalization needed for the children array.
|
10851 |
+
// 0: no normalization needed
|
10852 |
+
// 1: simple normalization needed (possible 1-level deep nested array)
|
10853 |
+
// 2: full normalization needed
|
10854 |
+
function getNormalizationType (
|
10855 |
+
children,
|
10856 |
+
maybeComponent
|
10857 |
+
) {
|
10858 |
+
var res = 0;
|
10859 |
+
for (var i = 0; i < children.length; i++) {
|
10860 |
+
var el = children[i];
|
10861 |
+
if (el.type !== 1) {
|
10862 |
+
continue
|
10863 |
+
}
|
10864 |
+
if (needsNormalization(el) ||
|
10865 |
+
(el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
|
10866 |
+
res = 2;
|
10867 |
+
break
|
10868 |
+
}
|
10869 |
+
if (maybeComponent(el) ||
|
10870 |
+
(el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
|
10871 |
+
res = 1;
|
10872 |
+
}
|
10873 |
+
}
|
10874 |
+
return res
|
10875 |
+
}
|
10876 |
+
|
10877 |
+
function needsNormalization (el) {
|
10878 |
+
return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
|
10879 |
+
}
|
10880 |
+
|
10881 |
+
function genNode (node, state) {
|
10882 |
+
if (node.type === 1) {
|
10883 |
+
return genElement(node, state)
|
10884 |
+
} if (node.type === 3 && node.isComment) {
|
10885 |
+
return genComment(node)
|
10886 |
+
} else {
|
10887 |
+
return genText(node)
|
10888 |
+
}
|
10889 |
+
}
|
10890 |
+
|
10891 |
+
function genText (text) {
|
10892 |
+
return ("_v(" + (text.type === 2
|
10893 |
+
? text.expression // no need for () because already wrapped in _s()
|
10894 |
+
: transformSpecialNewlines(JSON.stringify(text.text))) + ")")
|
10895 |
+
}
|
10896 |
+
|
10897 |
+
function genComment (comment) {
|
10898 |
+
return ("_e(" + (JSON.stringify(comment.text)) + ")")
|
10899 |
+
}
|
10900 |
+
|
10901 |
+
function genSlot (el, state) {
|
10902 |
+
var slotName = el.slotName || '"default"';
|
10903 |
+
var children = genChildren(el, state);
|
10904 |
+
var res = "_t(" + slotName + (children ? ("," + children) : '');
|
10905 |
+
var attrs = el.attrs && ("{" + (el.attrs.map(function (a) { return ((camelize(a.name)) + ":" + (a.value)); }).join(',')) + "}");
|
10906 |
+
var bind$$1 = el.attrsMap['v-bind'];
|
10907 |
+
if ((attrs || bind$$1) && !children) {
|
10908 |
+
res += ",null";
|
10909 |
+
}
|
10910 |
+
if (attrs) {
|
10911 |
+
res += "," + attrs;
|
10912 |
+
}
|
10913 |
+
if (bind$$1) {
|
10914 |
+
res += (attrs ? '' : ',null') + "," + bind$$1;
|
10915 |
+
}
|
10916 |
+
return res + ')'
|
10917 |
+
}
|
10918 |
+
|
10919 |
+
// componentName is el.component, take it as argument to shun flow's pessimistic refinement
|
10920 |
+
function genComponent (
|
10921 |
+
componentName,
|
10922 |
+
el,
|
10923 |
+
state
|
10924 |
+
) {
|
10925 |
+
var children = el.inlineTemplate ? null : genChildren(el, state, true);
|
10926 |
+
return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")")
|
10927 |
+
}
|
10928 |
+
|
10929 |
+
function genProps (props) {
|
10930 |
+
var res = '';
|
10931 |
+
for (var i = 0; i < props.length; i++) {
|
10932 |
+
var prop = props[i];
|
10933 |
+
/* istanbul ignore if */
|
10934 |
+
{
|
10935 |
+
res += "\"" + (prop.name) + "\":" + (transformSpecialNewlines(prop.value)) + ",";
|
10936 |
+
}
|
10937 |
+
}
|
10938 |
+
return res.slice(0, -1)
|
10939 |
+
}
|
10940 |
+
|
10941 |
+
// #3895, #4268
|
10942 |
+
function transformSpecialNewlines (text) {
|
10943 |
+
return text
|
10944 |
+
.replace(/\u2028/g, '\\u2028')
|
10945 |
+
.replace(/\u2029/g, '\\u2029')
|
10946 |
+
}
|
10947 |
+
|
10948 |
+
/* */
|
10949 |
+
|
10950 |
+
// these keywords should not appear inside expressions, but operators like
|
10951 |
+
// typeof, instanceof and in are allowed
|
10952 |
+
var prohibitedKeywordRE = new RegExp('\\b' + (
|
10953 |
+
'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
|
10954 |
+
'super,throw,while,yield,delete,export,import,return,switch,default,' +
|
10955 |
+
'extends,finally,continue,debugger,function,arguments'
|
10956 |
+
).split(',').join('\\b|\\b') + '\\b');
|
10957 |
+
|
10958 |
+
// these unary operators should not be used as property/method names
|
10959 |
+
var unaryOperatorsRE = new RegExp('\\b' + (
|
10960 |
+
'delete,typeof,void'
|
10961 |
+
).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)');
|
10962 |
+
|
10963 |
+
// strip strings in expressions
|
10964 |
+
var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
|
10965 |
+
|
10966 |
+
// detect problematic expressions in a template
|
10967 |
+
function detectErrors (ast) {
|
10968 |
+
var errors = [];
|
10969 |
+
if (ast) {
|
10970 |
+
checkNode(ast, errors);
|
10971 |
+
}
|
10972 |
+
return errors
|
10973 |
+
}
|
10974 |
+
|
10975 |
+
function checkNode (node, errors) {
|
10976 |
+
if (node.type === 1) {
|
10977 |
+
for (var name in node.attrsMap) {
|
10978 |
+
if (dirRE.test(name)) {
|
10979 |
+
var value = node.attrsMap[name];
|
10980 |
+
if (value) {
|
10981 |
+
if (name === 'v-for') {
|
10982 |
+
checkFor(node, ("v-for=\"" + value + "\""), errors);
|
10983 |
+
} else if (onRE.test(name)) {
|
10984 |
+
checkEvent(value, (name + "=\"" + value + "\""), errors);
|
10985 |
+
} else {
|
10986 |
+
checkExpression(value, (name + "=\"" + value + "\""), errors);
|
10987 |
+
}
|
10988 |
+
}
|
10989 |
+
}
|
10990 |
+
}
|
10991 |
+
if (node.children) {
|
10992 |
+
for (var i = 0; i < node.children.length; i++) {
|
10993 |
+
checkNode(node.children[i], errors);
|
10994 |
+
}
|
10995 |
+
}
|
10996 |
+
} else if (node.type === 2) {
|
10997 |
+
checkExpression(node.expression, node.text, errors);
|
10998 |
+
}
|
10999 |
+
}
|
11000 |
+
|
11001 |
+
function checkEvent (exp, text, errors) {
|
11002 |
+
var stipped = exp.replace(stripStringRE, '');
|
11003 |
+
var keywordMatch = stipped.match(unaryOperatorsRE);
|
11004 |
+
if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {
|
11005 |
+
errors.push(
|
11006 |
+
"avoid using JavaScript unary operator as property name: " +
|
11007 |
+
"\"" + (keywordMatch[0]) + "\" in expression " + (text.trim())
|
11008 |
+
);
|
11009 |
+
}
|
11010 |
+
checkExpression(exp, text, errors);
|
11011 |
+
}
|
11012 |
+
|
11013 |
+
function checkFor (node, text, errors) {
|
11014 |
+
checkExpression(node.for || '', text, errors);
|
11015 |
+
checkIdentifier(node.alias, 'v-for alias', text, errors);
|
11016 |
+
checkIdentifier(node.iterator1, 'v-for iterator', text, errors);
|
11017 |
+
checkIdentifier(node.iterator2, 'v-for iterator', text, errors);
|
11018 |
+
}
|
11019 |
+
|
11020 |
+
function checkIdentifier (
|
11021 |
+
ident,
|
11022 |
+
type,
|
11023 |
+
text,
|
11024 |
+
errors
|
11025 |
+
) {
|
11026 |
+
if (typeof ident === 'string') {
|
11027 |
+
try {
|
11028 |
+
new Function(("var " + ident + "=_"));
|
11029 |
+
} catch (e) {
|
11030 |
+
errors.push(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())));
|
11031 |
+
}
|
11032 |
+
}
|
11033 |
+
}
|
11034 |
+
|
11035 |
+
function checkExpression (exp, text, errors) {
|
11036 |
+
try {
|
11037 |
+
new Function(("return " + exp));
|
11038 |
+
} catch (e) {
|
11039 |
+
var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);
|
11040 |
+
if (keywordMatch) {
|
11041 |
+
errors.push(
|
11042 |
+
"avoid using JavaScript keyword as property name: " +
|
11043 |
+
"\"" + (keywordMatch[0]) + "\"\n Raw expression: " + (text.trim())
|
11044 |
+
);
|
11045 |
+
} else {
|
11046 |
+
errors.push(
|
11047 |
+
"invalid expression: " + (e.message) + " in\n\n" +
|
11048 |
+
" " + exp + "\n\n" +
|
11049 |
+
" Raw expression: " + (text.trim()) + "\n"
|
11050 |
+
);
|
11051 |
+
}
|
11052 |
+
}
|
11053 |
+
}
|
11054 |
+
|
11055 |
+
/* */
|
11056 |
+
|
11057 |
+
function createFunction (code, errors) {
|
11058 |
+
try {
|
11059 |
+
return new Function(code)
|
11060 |
+
} catch (err) {
|
11061 |
+
errors.push({ err: err, code: code });
|
11062 |
+
return noop
|
11063 |
+
}
|
11064 |
+
}
|
11065 |
+
|
11066 |
+
function createCompileToFunctionFn (compile) {
|
11067 |
+
var cache = Object.create(null);
|
11068 |
+
|
11069 |
+
return function compileToFunctions (
|
11070 |
+
template,
|
11071 |
+
options,
|
11072 |
+
vm
|
11073 |
+
) {
|
11074 |
+
options = extend({}, options);
|
11075 |
+
var warn$$1 = options.warn || warn;
|
11076 |
+
delete options.warn;
|
11077 |
+
|
11078 |
+
/* istanbul ignore if */
|
11079 |
+
if (process.env.NODE_ENV !== 'production') {
|
11080 |
+
// detect possible CSP restriction
|
11081 |
+
try {
|
11082 |
+
new Function('return 1');
|
11083 |
+
} catch (e) {
|
11084 |
+
if (e.toString().match(/unsafe-eval|CSP/)) {
|
11085 |
+
warn$$1(
|
11086 |
+
'It seems you are using the standalone build of Vue.js in an ' +
|
11087 |
+
'environment with Content Security Policy that prohibits unsafe-eval. ' +
|
11088 |
+
'The template compiler cannot work in this environment. Consider ' +
|
11089 |
+
'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
|
11090 |
+
'templates into render functions.'
|
11091 |
+
);
|
11092 |
+
}
|
11093 |
+
}
|
11094 |
+
}
|
11095 |
+
|
11096 |
+
// check cache
|
11097 |
+
var key = options.delimiters
|
11098 |
+
? String(options.delimiters) + template
|
11099 |
+
: template;
|
11100 |
+
if (cache[key]) {
|
11101 |
+
return cache[key]
|
11102 |
+
}
|
11103 |
+
|
11104 |
+
// compile
|
11105 |
+
var compiled = compile(template, options);
|
11106 |
+
|
11107 |
+
// check compilation errors/tips
|
11108 |
+
if (process.env.NODE_ENV !== 'production') {
|
11109 |
+
if (compiled.errors && compiled.errors.length) {
|
11110 |
+
warn$$1(
|
11111 |
+
"Error compiling template:\n\n" + template + "\n\n" +
|
11112 |
+
compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n',
|
11113 |
+
vm
|
11114 |
+
);
|
11115 |
+
}
|
11116 |
+
if (compiled.tips && compiled.tips.length) {
|
11117 |
+
compiled.tips.forEach(function (msg) { return tip(msg, vm); });
|
11118 |
+
}
|
11119 |
+
}
|
11120 |
+
|
11121 |
+
// turn code into functions
|
11122 |
+
var res = {};
|
11123 |
+
var fnGenErrors = [];
|
11124 |
+
res.render = createFunction(compiled.render, fnGenErrors);
|
11125 |
+
res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
|
11126 |
+
return createFunction(code, fnGenErrors)
|
11127 |
+
});
|
11128 |
+
|
11129 |
+
// check function generation errors.
|
11130 |
+
// this should only happen if there is a bug in the compiler itself.
|
11131 |
+
// mostly for codegen development use
|
11132 |
+
/* istanbul ignore if */
|
11133 |
+
if (process.env.NODE_ENV !== 'production') {
|
11134 |
+
if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
|
11135 |
+
warn$$1(
|
11136 |
+
"Failed to generate render function:\n\n" +
|
11137 |
+
fnGenErrors.map(function (ref) {
|
11138 |
+
var err = ref.err;
|
11139 |
+
var code = ref.code;
|
11140 |
+
|
11141 |
+
return ((err.toString()) + " in\n\n" + code + "\n");
|
11142 |
+
}).join('\n'),
|
11143 |
+
vm
|
11144 |
+
);
|
11145 |
+
}
|
11146 |
+
}
|
11147 |
+
|
11148 |
+
return (cache[key] = res)
|
11149 |
+
}
|
11150 |
+
}
|
11151 |
+
|
11152 |
+
/* */
|
11153 |
+
|
11154 |
+
function createCompilerCreator (baseCompile) {
|
11155 |
+
return function createCompiler (baseOptions) {
|
11156 |
+
function compile (
|
11157 |
+
template,
|
11158 |
+
options
|
11159 |
+
) {
|
11160 |
+
var finalOptions = Object.create(baseOptions);
|
11161 |
+
var errors = [];
|
11162 |
+
var tips = [];
|
11163 |
+
finalOptions.warn = function (msg, tip) {
|
11164 |
+
(tip ? tips : errors).push(msg);
|
11165 |
+
};
|
11166 |
+
|
11167 |
+
if (options) {
|
11168 |
+
// merge custom modules
|
11169 |
+
if (options.modules) {
|
11170 |
+
finalOptions.modules =
|
11171 |
+
(baseOptions.modules || []).concat(options.modules);
|
11172 |
+
}
|
11173 |
+
// merge custom directives
|
11174 |
+
if (options.directives) {
|
11175 |
+
finalOptions.directives = extend(
|
11176 |
+
Object.create(baseOptions.directives || null),
|
11177 |
+
options.directives
|
11178 |
+
);
|
11179 |
+
}
|
11180 |
+
// copy other options
|
11181 |
+
for (var key in options) {
|
11182 |
+
if (key !== 'modules' && key !== 'directives') {
|
11183 |
+
finalOptions[key] = options[key];
|
11184 |
+
}
|
11185 |
+
}
|
11186 |
+
}
|
11187 |
+
|
11188 |
+
var compiled = baseCompile(template, finalOptions);
|
11189 |
+
if (process.env.NODE_ENV !== 'production') {
|
11190 |
+
errors.push.apply(errors, detectErrors(compiled.ast));
|
11191 |
+
}
|
11192 |
+
compiled.errors = errors;
|
11193 |
+
compiled.tips = tips;
|
11194 |
+
return compiled
|
11195 |
+
}
|
11196 |
+
|
11197 |
+
return {
|
11198 |
+
compile: compile,
|
11199 |
+
compileToFunctions: createCompileToFunctionFn(compile)
|
11200 |
+
}
|
11201 |
+
}
|
11202 |
+
}
|
11203 |
+
|
11204 |
+
/* */
|
11205 |
+
|
11206 |
+
// `createCompilerCreator` allows creating compilers that use alternative
|
11207 |
+
// parser/optimizer/codegen, e.g the SSR optimizing compiler.
|
11208 |
+
// Here we just export a default compiler using the default parts.
|
11209 |
+
var createCompiler = createCompilerCreator(function baseCompile (
|
11210 |
+
template,
|
11211 |
+
options
|
11212 |
+
) {
|
11213 |
+
var ast = parse(template.trim(), options);
|
11214 |
+
if (options.optimize !== false) {
|
11215 |
+
optimize(ast, options);
|
11216 |
+
}
|
11217 |
+
var code = generate(ast, options);
|
11218 |
+
return {
|
11219 |
+
ast: ast,
|
11220 |
+
render: code.render,
|
11221 |
+
staticRenderFns: code.staticRenderFns
|
11222 |
+
}
|
11223 |
+
});
|
11224 |
+
|
11225 |
+
/* */
|
11226 |
+
|
11227 |
+
var ref$1 = createCompiler(baseOptions);
|
11228 |
+
var compileToFunctions = ref$1.compileToFunctions;
|
11229 |
+
|
11230 |
+
/* */
|
11231 |
+
|
11232 |
+
// check whether current browser encodes a char inside attribute values
|
11233 |
+
var div;
|
11234 |
+
function getShouldDecode (href) {
|
11235 |
+
div = div || document.createElement('div');
|
11236 |
+
div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
|
11237 |
+
return div.innerHTML.indexOf(' ') > 0
|
11238 |
+
}
|
11239 |
+
|
11240 |
+
// #3663: IE encodes newlines inside attribute values while other browsers don't
|
11241 |
+
var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
|
11242 |
+
// #6828: chrome encodes content in a[href]
|
11243 |
+
var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
|
11244 |
+
|
11245 |
+
/* */
|
11246 |
+
|
11247 |
+
var idToTemplate = cached(function (id) {
|
11248 |
+
var el = query(id);
|
11249 |
+
return el && el.innerHTML
|
11250 |
+
});
|
11251 |
+
|
11252 |
+
var mount = Vue.prototype.$mount;
|
11253 |
+
Vue.prototype.$mount = function (
|
11254 |
+
el,
|
11255 |
+
hydrating
|
11256 |
+
) {
|
11257 |
+
el = el && query(el);
|
11258 |
+
|
11259 |
+
/* istanbul ignore if */
|
11260 |
+
if (el === document.body || el === document.documentElement) {
|
11261 |
+
process.env.NODE_ENV !== 'production' && warn(
|
11262 |
+
"Do not mount Vue to <html> or <body> - mount to normal elements instead."
|
11263 |
+
);
|
11264 |
+
return this
|
11265 |
+
}
|
11266 |
+
|
11267 |
+
var options = this.$options;
|
11268 |
+
// resolve template/el and convert to render function
|
11269 |
+
if (!options.render) {
|
11270 |
+
var template = options.template;
|
11271 |
+
if (template) {
|
11272 |
+
if (typeof template === 'string') {
|
11273 |
+
if (template.charAt(0) === '#') {
|
11274 |
+
template = idToTemplate(template);
|
11275 |
+
/* istanbul ignore if */
|
11276 |
+
if (process.env.NODE_ENV !== 'production' && !template) {
|
11277 |
+
warn(
|
11278 |
+
("Template element not found or is empty: " + (options.template)),
|
11279 |
+
this
|
11280 |
+
);
|
11281 |
+
}
|
11282 |
+
}
|
11283 |
+
} else if (template.nodeType) {
|
11284 |
+
template = template.innerHTML;
|
11285 |
+
} else {
|
11286 |
+
if (process.env.NODE_ENV !== 'production') {
|
11287 |
+
warn('invalid template option:' + template, this);
|
11288 |
+
}
|
11289 |
+
return this
|
11290 |
+
}
|
11291 |
+
} else if (el) {
|
11292 |
+
template = getOuterHTML(el);
|
11293 |
+
}
|
11294 |
+
if (template) {
|
11295 |
+
/* istanbul ignore if */
|
11296 |
+
if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
|
11297 |
+
mark('compile');
|
11298 |
+
}
|
11299 |
+
|
11300 |
+
var ref = compileToFunctions(template, {
|
11301 |
+
shouldDecodeNewlines: shouldDecodeNewlines,
|
11302 |
+
shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
|
11303 |
+
delimiters: options.delimiters,
|
11304 |
+
comments: options.comments
|
11305 |
+
}, this);
|
11306 |
+
var render = ref.render;
|
11307 |
+
var staticRenderFns = ref.staticRenderFns;
|
11308 |
+
options.render = render;
|
11309 |
+
options.staticRenderFns = staticRenderFns;
|
11310 |
+
|
11311 |
+
/* istanbul ignore if */
|
11312 |
+
if (process.env.NODE_ENV !== 'production' && config.performance && mark) {
|
11313 |
+
mark('compile end');
|
11314 |
+
measure(("vue " + (this._name) + " compile"), 'compile', 'compile end');
|
11315 |
+
}
|
11316 |
+
}
|
11317 |
+
}
|
11318 |
+
return mount.call(this, el, hydrating)
|
11319 |
+
};
|
11320 |
+
|
11321 |
+
/**
|
11322 |
+
* Get outerHTML of elements, taking care
|
11323 |
+
* of SVG elements in IE as well.
|
11324 |
+
*/
|
11325 |
+
function getOuterHTML (el) {
|
11326 |
+
if (el.outerHTML) {
|
11327 |
+
return el.outerHTML
|
11328 |
+
} else {
|
11329 |
+
var container = document.createElement('div');
|
11330 |
+
container.appendChild(el.cloneNode(true));
|
11331 |
+
return container.innerHTML
|
11332 |
+
}
|
11333 |
+
}
|
11334 |
+
|
11335 |
+
Vue.compile = compileToFunctions;
|
11336 |
+
|
11337 |
+
/* harmony default export */ __webpack_exports__["default"] = (Vue);
|
11338 |
+
|
11339 |
+
/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3), __webpack_require__(4), __webpack_require__(7).setImmediate))
|
11340 |
+
|
11341 |
+
/***/ }),
|
11342 |
+
/* 3 */
|
11343 |
+
/***/ (function(module, exports) {
|
11344 |
+
|
11345 |
+
// shim for using process in browser
|
11346 |
+
var process = module.exports = {};
|
11347 |
+
|
11348 |
+
// cached from whatever global is present so that test runners that stub it
|
11349 |
+
// don't break things. But we need to wrap it in a try catch in case it is
|
11350 |
+
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
11351 |
+
// function because try/catches deoptimize in certain engines.
|
11352 |
+
|
11353 |
+
var cachedSetTimeout;
|
11354 |
+
var cachedClearTimeout;
|
11355 |
+
|
11356 |
+
function defaultSetTimout() {
|
11357 |
+
throw new Error('setTimeout has not been defined');
|
11358 |
+
}
|
11359 |
+
function defaultClearTimeout () {
|
11360 |
+
throw new Error('clearTimeout has not been defined');
|
11361 |
+
}
|
11362 |
+
(function () {
|
11363 |
+
try {
|
11364 |
+
if (typeof setTimeout === 'function') {
|
11365 |
+
cachedSetTimeout = setTimeout;
|
11366 |
+
} else {
|
11367 |
+
cachedSetTimeout = defaultSetTimout;
|
11368 |
+
}
|
11369 |
+
} catch (e) {
|
11370 |
+
cachedSetTimeout = defaultSetTimout;
|
11371 |
+
}
|
11372 |
+
try {
|
11373 |
+
if (typeof clearTimeout === 'function') {
|
11374 |
+
cachedClearTimeout = clearTimeout;
|
11375 |
+
} else {
|
11376 |
+
cachedClearTimeout = defaultClearTimeout;
|
11377 |
+
}
|
11378 |
+
} catch (e) {
|
11379 |
+
cachedClearTimeout = defaultClearTimeout;
|
11380 |
+
}
|
11381 |
+
} ())
|
11382 |
+
function runTimeout(fun) {
|
11383 |
+
if (cachedSetTimeout === setTimeout) {
|
11384 |
+
//normal enviroments in sane situations
|
11385 |
+
return setTimeout(fun, 0);
|
11386 |
+
}
|
11387 |
+
// if setTimeout wasn't available but was latter defined
|
11388 |
+
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
11389 |
+
cachedSetTimeout = setTimeout;
|
11390 |
+
return setTimeout(fun, 0);
|
11391 |
+
}
|
11392 |
+
try {
|
11393 |
+
// when when somebody has screwed with setTimeout but no I.E. maddness
|
11394 |
+
return cachedSetTimeout(fun, 0);
|
11395 |
+
} catch(e){
|
11396 |
+
try {
|
11397 |
+
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
11398 |
+
return cachedSetTimeout.call(null, fun, 0);
|
11399 |
+
} catch(e){
|
11400 |
+
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
|
11401 |
+
return cachedSetTimeout.call(this, fun, 0);
|
11402 |
+
}
|
11403 |
+
}
|
11404 |
+
|
11405 |
+
|
11406 |
+
}
|
11407 |
+
function runClearTimeout(marker) {
|
11408 |
+
if (cachedClearTimeout === clearTimeout) {
|
11409 |
+
//normal enviroments in sane situations
|
11410 |
+
return clearTimeout(marker);
|
11411 |
+
}
|
11412 |
+
// if clearTimeout wasn't available but was latter defined
|
11413 |
+
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
11414 |
+
cachedClearTimeout = clearTimeout;
|
11415 |
+
return clearTimeout(marker);
|
11416 |
+
}
|
11417 |
+
try {
|
11418 |
+
// when when somebody has screwed with setTimeout but no I.E. maddness
|
11419 |
+
return cachedClearTimeout(marker);
|
11420 |
+
} catch (e){
|
11421 |
+
try {
|
11422 |
+
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
11423 |
+
return cachedClearTimeout.call(null, marker);
|
11424 |
+
} catch (e){
|
11425 |
+
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
|
11426 |
+
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
11427 |
+
return cachedClearTimeout.call(this, marker);
|
11428 |
+
}
|
11429 |
+
}
|
11430 |
+
|
11431 |
+
|
11432 |
+
|
11433 |
+
}
|
11434 |
+
var queue = [];
|
11435 |
+
var draining = false;
|
11436 |
+
var currentQueue;
|
11437 |
+
var queueIndex = -1;
|
11438 |
+
|
11439 |
+
function cleanUpNextTick() {
|
11440 |
+
if (!draining || !currentQueue) {
|
11441 |
+
return;
|
11442 |
+
}
|
11443 |
+
draining = false;
|
11444 |
+
if (currentQueue.length) {
|
11445 |
+
queue = currentQueue.concat(queue);
|
11446 |
+
} else {
|
11447 |
+
queueIndex = -1;
|
11448 |
+
}
|
11449 |
+
if (queue.length) {
|
11450 |
+
drainQueue();
|
11451 |
+
}
|
11452 |
+
}
|
11453 |
+
|
11454 |
+
function drainQueue() {
|
11455 |
+
if (draining) {
|
11456 |
+
return;
|
11457 |
+
}
|
11458 |
+
var timeout = runTimeout(cleanUpNextTick);
|
11459 |
+
draining = true;
|
11460 |
+
|
11461 |
+
var len = queue.length;
|
11462 |
+
while(len) {
|
11463 |
+
currentQueue = queue;
|
11464 |
+
queue = [];
|
11465 |
+
while (++queueIndex < len) {
|
11466 |
+
if (currentQueue) {
|
11467 |
+
currentQueue[queueIndex].run();
|
11468 |
+
}
|
11469 |
+
}
|
11470 |
+
queueIndex = -1;
|
11471 |
+
len = queue.length;
|
11472 |
+
}
|
11473 |
+
currentQueue = null;
|
11474 |
+
draining = false;
|
11475 |
+
runClearTimeout(timeout);
|
11476 |
+
}
|
11477 |
+
|
11478 |
+
process.nextTick = function (fun) {
|
11479 |
+
var args = new Array(arguments.length - 1);
|
11480 |
+
if (arguments.length > 1) {
|
11481 |
+
for (var i = 1; i < arguments.length; i++) {
|
11482 |
+
args[i - 1] = arguments[i];
|
11483 |
+
}
|
11484 |
+
}
|
11485 |
+
queue.push(new Item(fun, args));
|
11486 |
+
if (queue.length === 1 && !draining) {
|
11487 |
+
runTimeout(drainQueue);
|
11488 |
+
}
|
11489 |
+
};
|
11490 |
+
|
11491 |
+
// v8 likes predictible objects
|
11492 |
+
function Item(fun, array) {
|
11493 |
+
this.fun = fun;
|
11494 |
+
this.array = array;
|
11495 |
+
}
|
11496 |
+
Item.prototype.run = function () {
|
11497 |
+
this.fun.apply(null, this.array);
|
11498 |
+
};
|
11499 |
+
process.title = 'browser';
|
11500 |
+
process.browser = true;
|
11501 |
+
process.env = {};
|
11502 |
+
process.argv = [];
|
11503 |
+
process.version = ''; // empty string to avoid regexp issues
|
11504 |
+
process.versions = {};
|
11505 |
+
|
11506 |
+
function noop() {}
|
11507 |
+
|
11508 |
+
process.on = noop;
|
11509 |
+
process.addListener = noop;
|
11510 |
+
process.once = noop;
|
11511 |
+
process.off = noop;
|
11512 |
+
process.removeListener = noop;
|
11513 |
+
process.removeAllListeners = noop;
|
11514 |
+
process.emit = noop;
|
11515 |
+
process.prependListener = noop;
|
11516 |
+
process.prependOnceListener = noop;
|
11517 |
+
|
11518 |
+
process.listeners = function (name) { return [] }
|
11519 |
+
|
11520 |
+
process.binding = function (name) {
|
11521 |
+
throw new Error('process.binding is not supported');
|
11522 |
+
};
|
11523 |
+
|
11524 |
+
process.cwd = function () { return '/' };
|
11525 |
+
process.chdir = function (dir) {
|
11526 |
+
throw new Error('process.chdir is not supported');
|
11527 |
+
};
|
11528 |
+
process.umask = function() { return 0; };
|
11529 |
+
|
11530 |
+
|
11531 |
+
/***/ }),
|
11532 |
+
/* 4 */
|
11533 |
+
/***/ (function(module, exports) {
|
11534 |
+
|
11535 |
+
var g;
|
11536 |
+
|
11537 |
+
// This works in non-strict mode
|
11538 |
+
g = (function() {
|
11539 |
+
return this;
|
11540 |
+
})();
|
11541 |
+
|
11542 |
+
try {
|
11543 |
+
// This works if eval is allowed (see CSP)
|
11544 |
+
g = g || Function("return this")() || (1,eval)("this");
|
11545 |
+
} catch(e) {
|
11546 |
+
// This works if the window reference is available
|
11547 |
+
if(typeof window === "object")
|
11548 |
+
g = window;
|
11549 |
+
}
|
11550 |
+
|
11551 |
+
// g can still be undefined, but nothing to do about it...
|
11552 |
+
// We return undefined, instead of nothing here, so it's
|
11553 |
+
// easier to handle this case. if(!global) { ...}
|
11554 |
+
|
11555 |
+
module.exports = g;
|
11556 |
+
|
11557 |
+
|
11558 |
+
/***/ }),
|
11559 |
+
/* 5 */
|
11560 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
11561 |
+
|
11562 |
+
"use strict";
|
11563 |
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
11564 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Url", function() { return Url; });
|
11565 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Http", function() { return Http; });
|
11566 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Resource", function() { return Resource; });
|
11567 |
+
/*!
|
11568 |
+
* vue-resource v1.5.1
|
11569 |
+
* https://github.com/pagekit/vue-resource
|
11570 |
+
* Released under the MIT License.
|
11571 |
+
*/
|
11572 |
+
|
11573 |
+
/**
|
11574 |
+
* Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)
|
11575 |
+
*/
|
11576 |
+
|
11577 |
+
var RESOLVED = 0;
|
11578 |
+
var REJECTED = 1;
|
11579 |
+
var PENDING = 2;
|
11580 |
+
|
11581 |
+
function Promise$1(executor) {
|
11582 |
+
|
11583 |
+
this.state = PENDING;
|
11584 |
+
this.value = undefined;
|
11585 |
+
this.deferred = [];
|
11586 |
+
|
11587 |
+
var promise = this;
|
11588 |
+
|
11589 |
+
try {
|
11590 |
+
executor(function (x) {
|
11591 |
+
promise.resolve(x);
|
11592 |
+
}, function (r) {
|
11593 |
+
promise.reject(r);
|
11594 |
+
});
|
11595 |
+
} catch (e) {
|
11596 |
+
promise.reject(e);
|
11597 |
+
}
|
11598 |
+
}
|
11599 |
+
|
11600 |
+
Promise$1.reject = function (r) {
|
11601 |
+
return new Promise$1(function (resolve, reject) {
|
11602 |
+
reject(r);
|
11603 |
+
});
|
11604 |
+
};
|
11605 |
+
|
11606 |
+
Promise$1.resolve = function (x) {
|
11607 |
+
return new Promise$1(function (resolve, reject) {
|
11608 |
+
resolve(x);
|
11609 |
+
});
|
11610 |
+
};
|
11611 |
+
|
11612 |
+
Promise$1.all = function all(iterable) {
|
11613 |
+
return new Promise$1(function (resolve, reject) {
|
11614 |
+
var count = 0, result = [];
|
11615 |
+
|
11616 |
+
if (iterable.length === 0) {
|
11617 |
+
resolve(result);
|
11618 |
+
}
|
11619 |
+
|
11620 |
+
function resolver(i) {
|
11621 |
+
return function (x) {
|
11622 |
+
result[i] = x;
|
11623 |
+
count += 1;
|
11624 |
+
|
11625 |
+
if (count === iterable.length) {
|
11626 |
+
resolve(result);
|
11627 |
+
}
|
11628 |
+
};
|
11629 |
+
}
|
11630 |
+
|
11631 |
+
for (var i = 0; i < iterable.length; i += 1) {
|
11632 |
+
Promise$1.resolve(iterable[i]).then(resolver(i), reject);
|
11633 |
+
}
|
11634 |
+
});
|
11635 |
+
};
|
11636 |
+
|
11637 |
+
Promise$1.race = function race(iterable) {
|
11638 |
+
return new Promise$1(function (resolve, reject) {
|
11639 |
+
for (var i = 0; i < iterable.length; i += 1) {
|
11640 |
+
Promise$1.resolve(iterable[i]).then(resolve, reject);
|
11641 |
+
}
|
11642 |
+
});
|
11643 |
+
};
|
11644 |
+
|
11645 |
+
var p = Promise$1.prototype;
|
11646 |
+
|
11647 |
+
p.resolve = function resolve(x) {
|
11648 |
+
var promise = this;
|
11649 |
+
|
11650 |
+
if (promise.state === PENDING) {
|
11651 |
+
if (x === promise) {
|
11652 |
+
throw new TypeError('Promise settled with itself.');
|
11653 |
+
}
|
11654 |
+
|
11655 |
+
var called = false;
|
11656 |
+
|
11657 |
+
try {
|
11658 |
+
var then = x && x['then'];
|
11659 |
+
|
11660 |
+
if (x !== null && typeof x === 'object' && typeof then === 'function') {
|
11661 |
+
then.call(x, function (x) {
|
11662 |
+
if (!called) {
|
11663 |
+
promise.resolve(x);
|
11664 |
+
}
|
11665 |
+
called = true;
|
11666 |
+
|
11667 |
+
}, function (r) {
|
11668 |
+
if (!called) {
|
11669 |
+
promise.reject(r);
|
11670 |
+
}
|
11671 |
+
called = true;
|
11672 |
+
});
|
11673 |
+
return;
|
11674 |
+
}
|
11675 |
+
} catch (e) {
|
11676 |
+
if (!called) {
|
11677 |
+
promise.reject(e);
|
11678 |
+
}
|
11679 |
+
return;
|
11680 |
+
}
|
11681 |
+
|
11682 |
+
promise.state = RESOLVED;
|
11683 |
+
promise.value = x;
|
11684 |
+
promise.notify();
|
11685 |
+
}
|
11686 |
+
};
|
11687 |
+
|
11688 |
+
p.reject = function reject(reason) {
|
11689 |
+
var promise = this;
|
11690 |
+
|
11691 |
+
if (promise.state === PENDING) {
|
11692 |
+
if (reason === promise) {
|
11693 |
+
throw new TypeError('Promise settled with itself.');
|
11694 |
+
}
|
11695 |
+
|
11696 |
+
promise.state = REJECTED;
|
11697 |
+
promise.value = reason;
|
11698 |
+
promise.notify();
|
11699 |
+
}
|
11700 |
+
};
|
11701 |
+
|
11702 |
+
p.notify = function notify() {
|
11703 |
+
var promise = this;
|
11704 |
+
|
11705 |
+
nextTick(function () {
|
11706 |
+
if (promise.state !== PENDING) {
|
11707 |
+
while (promise.deferred.length) {
|
11708 |
+
var deferred = promise.deferred.shift(),
|
11709 |
+
onResolved = deferred[0],
|
11710 |
+
onRejected = deferred[1],
|
11711 |
+
resolve = deferred[2],
|
11712 |
+
reject = deferred[3];
|
11713 |
+
|
11714 |
+
try {
|
11715 |
+
if (promise.state === RESOLVED) {
|
11716 |
+
if (typeof onResolved === 'function') {
|
11717 |
+
resolve(onResolved.call(undefined, promise.value));
|
11718 |
+
} else {
|
11719 |
+
resolve(promise.value);
|
11720 |
+
}
|
11721 |
+
} else if (promise.state === REJECTED) {
|
11722 |
+
if (typeof onRejected === 'function') {
|
11723 |
+
resolve(onRejected.call(undefined, promise.value));
|
11724 |
+
} else {
|
11725 |
+
reject(promise.value);
|
11726 |
+
}
|
11727 |
+
}
|
11728 |
+
} catch (e) {
|
11729 |
+
reject(e);
|
11730 |
+
}
|
11731 |
+
}
|
11732 |
+
}
|
11733 |
+
});
|
11734 |
+
};
|
11735 |
+
|
11736 |
+
p.then = function then(onResolved, onRejected) {
|
11737 |
+
var promise = this;
|
11738 |
+
|
11739 |
+
return new Promise$1(function (resolve, reject) {
|
11740 |
+
promise.deferred.push([onResolved, onRejected, resolve, reject]);
|
11741 |
+
promise.notify();
|
11742 |
+
});
|
11743 |
+
};
|
11744 |
+
|
11745 |
+
p.catch = function (onRejected) {
|
11746 |
+
return this.then(undefined, onRejected);
|
11747 |
+
};
|
11748 |
+
|
11749 |
+
/**
|
11750 |
+
* Promise adapter.
|
11751 |
+
*/
|
11752 |
+
|
11753 |
+
if (typeof Promise === 'undefined') {
|
11754 |
+
window.Promise = Promise$1;
|
11755 |
+
}
|
11756 |
+
|
11757 |
+
function PromiseObj(executor, context) {
|
11758 |
+
|
11759 |
+
if (executor instanceof Promise) {
|
11760 |
+
this.promise = executor;
|
11761 |
+
} else {
|
11762 |
+
this.promise = new Promise(executor.bind(context));
|
11763 |
+
}
|
11764 |
+
|
11765 |
+
this.context = context;
|
11766 |
+
}
|
11767 |
+
|
11768 |
+
PromiseObj.all = function (iterable, context) {
|
11769 |
+
return new PromiseObj(Promise.all(iterable), context);
|
11770 |
+
};
|
11771 |
+
|
11772 |
+
PromiseObj.resolve = function (value, context) {
|
11773 |
+
return new PromiseObj(Promise.resolve(value), context);
|
11774 |
+
};
|
11775 |
+
|
11776 |
+
PromiseObj.reject = function (reason, context) {
|
11777 |
+
return new PromiseObj(Promise.reject(reason), context);
|
11778 |
+
};
|
11779 |
+
|
11780 |
+
PromiseObj.race = function (iterable, context) {
|
11781 |
+
return new PromiseObj(Promise.race(iterable), context);
|
11782 |
+
};
|
11783 |
+
|
11784 |
+
var p$1 = PromiseObj.prototype;
|
11785 |
+
|
11786 |
+
p$1.bind = function (context) {
|
11787 |
+
this.context = context;
|
11788 |
+
return this;
|
11789 |
+
};
|
11790 |
+
|
11791 |
+
p$1.then = function (fulfilled, rejected) {
|
11792 |
+
|
11793 |
+
if (fulfilled && fulfilled.bind && this.context) {
|
11794 |
+
fulfilled = fulfilled.bind(this.context);
|
11795 |
+
}
|
11796 |
+
|
11797 |
+
if (rejected && rejected.bind && this.context) {
|
11798 |
+
rejected = rejected.bind(this.context);
|
11799 |
+
}
|
11800 |
+
|
11801 |
+
return new PromiseObj(this.promise.then(fulfilled, rejected), this.context);
|
11802 |
+
};
|
11803 |
+
|
11804 |
+
p$1.catch = function (rejected) {
|
11805 |
+
|
11806 |
+
if (rejected && rejected.bind && this.context) {
|
11807 |
+
rejected = rejected.bind(this.context);
|
11808 |
+
}
|
11809 |
+
|
11810 |
+
return new PromiseObj(this.promise.catch(rejected), this.context);
|
11811 |
+
};
|
11812 |
+
|
11813 |
+
p$1.finally = function (callback) {
|
11814 |
+
|
11815 |
+
return this.then(function (value) {
|
11816 |
+
callback.call(this);
|
11817 |
+
return value;
|
11818 |
+
}, function (reason) {
|
11819 |
+
callback.call(this);
|
11820 |
+
return Promise.reject(reason);
|
11821 |
+
}
|
11822 |
+
);
|
11823 |
+
};
|
11824 |
+
|
11825 |
+
/**
|
11826 |
+
* Utility functions.
|
11827 |
+
*/
|
11828 |
+
|
11829 |
+
var ref = {};
|
11830 |
+
var hasOwnProperty = ref.hasOwnProperty;
|
11831 |
+
var ref$1 = [];
|
11832 |
+
var slice = ref$1.slice;
|
11833 |
+
var debug = false, ntick;
|
11834 |
+
|
11835 |
+
var inBrowser = typeof window !== 'undefined';
|
11836 |
+
|
11837 |
+
function Util (ref) {
|
11838 |
+
var config = ref.config;
|
11839 |
+
var nextTick = ref.nextTick;
|
11840 |
+
|
11841 |
+
ntick = nextTick;
|
11842 |
+
debug = config.debug || !config.silent;
|
11843 |
+
}
|
11844 |
+
|
11845 |
+
function warn(msg) {
|
11846 |
+
if (typeof console !== 'undefined' && debug) {
|
11847 |
+
console.warn('[VueResource warn]: ' + msg);
|
11848 |
+
}
|
11849 |
+
}
|
11850 |
+
|
11851 |
+
function error(msg) {
|
11852 |
+
if (typeof console !== 'undefined') {
|
11853 |
+
console.error(msg);
|
11854 |
+
}
|
11855 |
+
}
|
11856 |
+
|
11857 |
+
function nextTick(cb, ctx) {
|
11858 |
+
return ntick(cb, ctx);
|
11859 |
+
}
|
11860 |
+
|
11861 |
+
function trim(str) {
|
11862 |
+
return str ? str.replace(/^\s*|\s*$/g, '') : '';
|
11863 |
+
}
|
11864 |
+
|
11865 |
+
function trimEnd(str, chars) {
|
11866 |
+
|
11867 |
+
if (str && chars === undefined) {
|
11868 |
+
return str.replace(/\s+$/, '');
|
11869 |
+
}
|
11870 |
+
|
11871 |
+
if (!str || !chars) {
|
11872 |
+
return str;
|
11873 |
+
}
|
11874 |
+
|
11875 |
+
return str.replace(new RegExp(("[" + chars + "]+$")), '');
|
11876 |
+
}
|
11877 |
+
|
11878 |
+
function toLower(str) {
|
11879 |
+
return str ? str.toLowerCase() : '';
|
11880 |
+
}
|
11881 |
+
|
11882 |
+
function toUpper(str) {
|
11883 |
+
return str ? str.toUpperCase() : '';
|
11884 |
+
}
|
11885 |
+
|
11886 |
+
var isArray = Array.isArray;
|
11887 |
+
|
11888 |
+
function isString(val) {
|
11889 |
+
return typeof val === 'string';
|
11890 |
+
}
|
11891 |
+
|
11892 |
+
function isFunction(val) {
|
11893 |
+
return typeof val === 'function';
|
11894 |
+
}
|
11895 |
+
|
11896 |
+
function isObject(obj) {
|
11897 |
+
return obj !== null && typeof obj === 'object';
|
11898 |
+
}
|
11899 |
+
|
11900 |
+
function isPlainObject(obj) {
|
11901 |
+
return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;
|
11902 |
+
}
|
11903 |
+
|
11904 |
+
function isBlob(obj) {
|
11905 |
+
return typeof Blob !== 'undefined' && obj instanceof Blob;
|
11906 |
+
}
|
11907 |
+
|
11908 |
+
function isFormData(obj) {
|
11909 |
+
return typeof FormData !== 'undefined' && obj instanceof FormData;
|
11910 |
+
}
|
11911 |
+
|
11912 |
+
function when(value, fulfilled, rejected) {
|
11913 |
+
|
11914 |
+
var promise = PromiseObj.resolve(value);
|
11915 |
+
|
11916 |
+
if (arguments.length < 2) {
|
11917 |
+
return promise;
|
11918 |
+
}
|
11919 |
+
|
11920 |
+
return promise.then(fulfilled, rejected);
|
11921 |
+
}
|
11922 |
+
|
11923 |
+
function options(fn, obj, opts) {
|
11924 |
+
|
11925 |
+
opts = opts || {};
|
11926 |
+
|
11927 |
+
if (isFunction(opts)) {
|
11928 |
+
opts = opts.call(obj);
|
11929 |
+
}
|
11930 |
+
|
11931 |
+
return merge(fn.bind({$vm: obj, $options: opts}), fn, {$options: opts});
|
11932 |
+
}
|
11933 |
+
|
11934 |
+
function each(obj, iterator) {
|
11935 |
+
|
11936 |
+
var i, key;
|
11937 |
+
|
11938 |
+
if (isArray(obj)) {
|
11939 |
+
for (i = 0; i < obj.length; i++) {
|
11940 |
+
iterator.call(obj[i], obj[i], i);
|
11941 |
+
}
|
11942 |
+
} else if (isObject(obj)) {
|
11943 |
+
for (key in obj) {
|
11944 |
+
if (hasOwnProperty.call(obj, key)) {
|
11945 |
+
iterator.call(obj[key], obj[key], key);
|
11946 |
+
}
|
11947 |
+
}
|
11948 |
+
}
|
11949 |
+
|
11950 |
+
return obj;
|
11951 |
+
}
|
11952 |
+
|
11953 |
+
var assign = Object.assign || _assign;
|
11954 |
+
|
11955 |
+
function merge(target) {
|
11956 |
+
|
11957 |
+
var args = slice.call(arguments, 1);
|
11958 |
+
|
11959 |
+
args.forEach(function (source) {
|
11960 |
+
_merge(target, source, true);
|
11961 |
+
});
|
11962 |
+
|
11963 |
+
return target;
|
11964 |
+
}
|
11965 |
+
|
11966 |
+
function defaults(target) {
|
11967 |
+
|
11968 |
+
var args = slice.call(arguments, 1);
|
11969 |
+
|
11970 |
+
args.forEach(function (source) {
|
11971 |
+
|
11972 |
+
for (var key in source) {
|
11973 |
+
if (target[key] === undefined) {
|
11974 |
+
target[key] = source[key];
|
11975 |
+
}
|
11976 |
+
}
|
11977 |
+
|
11978 |
+
});
|
11979 |
+
|
11980 |
+
return target;
|
11981 |
+
}
|
11982 |
+
|
11983 |
+
function _assign(target) {
|
11984 |
+
|
11985 |
+
var args = slice.call(arguments, 1);
|
11986 |
+
|
11987 |
+
args.forEach(function (source) {
|
11988 |
+
_merge(target, source);
|
11989 |
+
});
|
11990 |
+
|
11991 |
+
return target;
|
11992 |
+
}
|
11993 |
+
|
11994 |
+
function _merge(target, source, deep) {
|
11995 |
+
for (var key in source) {
|
11996 |
+
if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
|
11997 |
+
if (isPlainObject(source[key]) && !isPlainObject(target[key])) {
|
11998 |
+
target[key] = {};
|
11999 |
+
}
|
12000 |
+
if (isArray(source[key]) && !isArray(target[key])) {
|
12001 |
+
target[key] = [];
|
12002 |
+
}
|
12003 |
+
_merge(target[key], source[key], deep);
|
12004 |
+
} else if (source[key] !== undefined) {
|
12005 |
+
target[key] = source[key];
|
12006 |
+
}
|
12007 |
+
}
|
12008 |
+
}
|
12009 |
+
|
12010 |
+
/**
|
12011 |
+
* Root Prefix Transform.
|
12012 |
+
*/
|
12013 |
+
|
12014 |
+
function root (options$$1, next) {
|
12015 |
+
|
12016 |
+
var url = next(options$$1);
|
12017 |
+
|
12018 |
+
if (isString(options$$1.root) && !/^(https?:)?\//.test(url)) {
|
12019 |
+
url = trimEnd(options$$1.root, '/') + '/' + url;
|
12020 |
+
}
|
12021 |
+
|
12022 |
+
return url;
|
12023 |
+
}
|
12024 |
+
|
12025 |
+
/**
|
12026 |
+
* Query Parameter Transform.
|
12027 |
+
*/
|
12028 |
+
|
12029 |
+
function query (options$$1, next) {
|
12030 |
+
|
12031 |
+
var urlParams = Object.keys(Url.options.params), query = {}, url = next(options$$1);
|
12032 |
+
|
12033 |
+
each(options$$1.params, function (value, key) {
|
12034 |
+
if (urlParams.indexOf(key) === -1) {
|
12035 |
+
query[key] = value;
|
12036 |
+
}
|
12037 |
+
});
|
12038 |
+
|
12039 |
+
query = Url.params(query);
|
12040 |
+
|
12041 |
+
if (query) {
|
12042 |
+
url += (url.indexOf('?') == -1 ? '?' : '&') + query;
|
12043 |
+
}
|
12044 |
+
|
12045 |
+
return url;
|
12046 |
+
}
|
12047 |
+
|
12048 |
+
/**
|
12049 |
+
* URL Template v2.0.6 (https://github.com/bramstein/url-template)
|
12050 |
+
*/
|
12051 |
+
|
12052 |
+
function expand(url, params, variables) {
|
12053 |
+
|
12054 |
+
var tmpl = parse(url), expanded = tmpl.expand(params);
|
12055 |
+
|
12056 |
+
if (variables) {
|
12057 |
+
variables.push.apply(variables, tmpl.vars);
|
12058 |
+
}
|
12059 |
+
|
12060 |
+
return expanded;
|
12061 |
+
}
|
12062 |
+
|
12063 |
+
function parse(template) {
|
12064 |
+
|
12065 |
+
var operators = ['+', '#', '.', '/', ';', '?', '&'], variables = [];
|
12066 |
+
|
12067 |
+
return {
|
12068 |
+
vars: variables,
|
12069 |
+
expand: function expand(context) {
|
12070 |
+
return template.replace(/\{([^{}]+)\}|([^{}]+)/g, function (_, expression, literal) {
|
12071 |
+
if (expression) {
|
12072 |
+
|
12073 |
+
var operator = null, values = [];
|
12074 |
+
|
12075 |
+
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
12076 |
+
operator = expression.charAt(0);
|
12077 |
+
expression = expression.substr(1);
|
12078 |
+
}
|
12079 |
+
|
12080 |
+
expression.split(/,/g).forEach(function (variable) {
|
12081 |
+
var tmp = /([^:*]*)(?::(\d+)|(\*))?/.exec(variable);
|
12082 |
+
values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
12083 |
+
variables.push(tmp[1]);
|
12084 |
+
});
|
12085 |
+
|
12086 |
+
if (operator && operator !== '+') {
|
12087 |
+
|
12088 |
+
var separator = ',';
|
12089 |
+
|
12090 |
+
if (operator === '?') {
|
12091 |
+
separator = '&';
|
12092 |
+
} else if (operator !== '#') {
|
12093 |
+
separator = operator;
|
12094 |
+
}
|
12095 |
+
|
12096 |
+
return (values.length !== 0 ? operator : '') + values.join(separator);
|
12097 |
+
} else {
|
12098 |
+
return values.join(',');
|
12099 |
+
}
|
12100 |
+
|
12101 |
+
} else {
|
12102 |
+
return encodeReserved(literal);
|
12103 |
+
}
|
12104 |
+
});
|
12105 |
+
}
|
12106 |
+
};
|
12107 |
+
}
|
12108 |
+
|
12109 |
+
function getValues(context, operator, key, modifier) {
|
12110 |
+
|
12111 |
+
var value = context[key], result = [];
|
12112 |
+
|
12113 |
+
if (isDefined(value) && value !== '') {
|
12114 |
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
12115 |
+
value = value.toString();
|
12116 |
+
|
12117 |
+
if (modifier && modifier !== '*') {
|
12118 |
+
value = value.substring(0, parseInt(modifier, 10));
|
12119 |
+
}
|
12120 |
+
|
12121 |
+
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));
|
12122 |
+
} else {
|
12123 |
+
if (modifier === '*') {
|
12124 |
+
if (Array.isArray(value)) {
|
12125 |
+
value.filter(isDefined).forEach(function (value) {
|
12126 |
+
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));
|
12127 |
+
});
|
12128 |
+
} else {
|
12129 |
+
Object.keys(value).forEach(function (k) {
|
12130 |
+
if (isDefined(value[k])) {
|
12131 |
+
result.push(encodeValue(operator, value[k], k));
|
12132 |
+
}
|
12133 |
+
});
|
12134 |
+
}
|
12135 |
+
} else {
|
12136 |
+
var tmp = [];
|
12137 |
+
|
12138 |
+
if (Array.isArray(value)) {
|
12139 |
+
value.filter(isDefined).forEach(function (value) {
|
12140 |
+
tmp.push(encodeValue(operator, value));
|
12141 |
+
});
|
12142 |
+
} else {
|
12143 |
+
Object.keys(value).forEach(function (k) {
|
12144 |
+
if (isDefined(value[k])) {
|
12145 |
+
tmp.push(encodeURIComponent(k));
|
12146 |
+
tmp.push(encodeValue(operator, value[k].toString()));
|
12147 |
+
}
|
12148 |
+
});
|
12149 |
+
}
|
12150 |
+
|
12151 |
+
if (isKeyOperator(operator)) {
|
12152 |
+
result.push(encodeURIComponent(key) + '=' + tmp.join(','));
|
12153 |
+
} else if (tmp.length !== 0) {
|
12154 |
+
result.push(tmp.join(','));
|
12155 |
+
}
|
12156 |
+
}
|
12157 |
+
}
|
12158 |
+
} else {
|
12159 |
+
if (operator === ';') {
|
12160 |
+
result.push(encodeURIComponent(key));
|
12161 |
+
} else if (value === '' && (operator === '&' || operator === '?')) {
|
12162 |
+
result.push(encodeURIComponent(key) + '=');
|
12163 |
+
} else if (value === '') {
|
12164 |
+
result.push('');
|
12165 |
+
}
|
12166 |
+
}
|
12167 |
+
|
12168 |
+
return result;
|
12169 |
+
}
|
12170 |
+
|
12171 |
+
function isDefined(value) {
|
12172 |
+
return value !== undefined && value !== null;
|
12173 |
+
}
|
12174 |
+
|
12175 |
+
function isKeyOperator(operator) {
|
12176 |
+
return operator === ';' || operator === '&' || operator === '?';
|
12177 |
+
}
|
12178 |
+
|
12179 |
+
function encodeValue(operator, value, key) {
|
12180 |
+
|
12181 |
+
value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeURIComponent(value);
|
12182 |
+
|
12183 |
+
if (key) {
|
12184 |
+
return encodeURIComponent(key) + '=' + value;
|
12185 |
+
} else {
|
12186 |
+
return value;
|
12187 |
+
}
|
12188 |
+
}
|
12189 |
+
|
12190 |
+
function encodeReserved(str) {
|
12191 |
+
return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
|
12192 |
+
if (!/%[0-9A-Fa-f]/.test(part)) {
|
12193 |
+
part = encodeURI(part);
|
12194 |
+
}
|
12195 |
+
return part;
|
12196 |
+
}).join('');
|
12197 |
+
}
|
12198 |
+
|
12199 |
+
/**
|
12200 |
+
* URL Template (RFC 6570) Transform.
|
12201 |
+
*/
|
12202 |
+
|
12203 |
+
function template (options) {
|
12204 |
+
|
12205 |
+
var variables = [], url = expand(options.url, options.params, variables);
|
12206 |
+
|
12207 |
+
variables.forEach(function (key) {
|
12208 |
+
delete options.params[key];
|
12209 |
+
});
|
12210 |
+
|
12211 |
+
return url;
|
12212 |
+
}
|
12213 |
+
|
12214 |
+
/**
|
12215 |
+
* Service for URL templating.
|
12216 |
+
*/
|
12217 |
+
|
12218 |
+
function Url(url, params) {
|
12219 |
+
|
12220 |
+
var self = this || {}, options$$1 = url, transform;
|
12221 |
+
|
12222 |
+
if (isString(url)) {
|
12223 |
+
options$$1 = {url: url, params: params};
|
12224 |
+
}
|
12225 |
+
|
12226 |
+
options$$1 = merge({}, Url.options, self.$options, options$$1);
|
12227 |
+
|
12228 |
+
Url.transforms.forEach(function (handler) {
|
12229 |
+
|
12230 |
+
if (isString(handler)) {
|
12231 |
+
handler = Url.transform[handler];
|
12232 |
+
}
|
12233 |
+
|
12234 |
+
if (isFunction(handler)) {
|
12235 |
+
transform = factory(handler, transform, self.$vm);
|
12236 |
+
}
|
12237 |
+
|
12238 |
+
});
|
12239 |
+
|
12240 |
+
return transform(options$$1);
|
12241 |
+
}
|
12242 |
+
|
12243 |
+
/**
|
12244 |
+
* Url options.
|
12245 |
+
*/
|
12246 |
+
|
12247 |
+
Url.options = {
|
12248 |
+
url: '',
|
12249 |
+
root: null,
|
12250 |
+
params: {}
|
12251 |
+
};
|
12252 |
+
|
12253 |
+
/**
|
12254 |
+
* Url transforms.
|
12255 |
+
*/
|
12256 |
+
|
12257 |
+
Url.transform = {template: template, query: query, root: root};
|
12258 |
+
Url.transforms = ['template', 'query', 'root'];
|
12259 |
+
|
12260 |
+
/**
|
12261 |
+
* Encodes a Url parameter string.
|
12262 |
+
*
|
12263 |
+
* @param {Object} obj
|
12264 |
+
*/
|
12265 |
+
|
12266 |
+
Url.params = function (obj) {
|
12267 |
+
|
12268 |
+
var params = [], escape = encodeURIComponent;
|
12269 |
+
|
12270 |
+
params.add = function (key, value) {
|
12271 |
+
|
12272 |
+
if (isFunction(value)) {
|
12273 |
+
value = value();
|
12274 |
+
}
|
12275 |
+
|
12276 |
+
if (value === null) {
|
12277 |
+
value = '';
|
12278 |
+
}
|
12279 |
+
|
12280 |
+
this.push(escape(key) + '=' + escape(value));
|
12281 |
+
};
|
12282 |
+
|
12283 |
+
serialize(params, obj);
|
12284 |
+
|
12285 |
+
return params.join('&').replace(/%20/g, '+');
|
12286 |
+
};
|
12287 |
+
|
12288 |
+
/**
|
12289 |
+
* Parse a URL and return its components.
|
12290 |
+
*
|
12291 |
+
* @param {String} url
|
12292 |
+
*/
|
12293 |
+
|
12294 |
+
Url.parse = function (url) {
|
12295 |
+
|
12296 |
+
var el = document.createElement('a');
|
12297 |
+
|
12298 |
+
if (document.documentMode) {
|
12299 |
+
el.href = url;
|
12300 |
+
url = el.href;
|
12301 |
+
}
|
12302 |
+
|
12303 |
+
el.href = url;
|
12304 |
+
|
12305 |
+
return {
|
12306 |
+
href: el.href,
|
12307 |
+
protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',
|
12308 |
+
port: el.port,
|
12309 |
+
host: el.host,
|
12310 |
+
hostname: el.hostname,
|
12311 |
+
pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,
|
12312 |
+
search: el.search ? el.search.replace(/^\?/, '') : '',
|
12313 |
+
hash: el.hash ? el.hash.replace(/^#/, '') : ''
|
12314 |
+
};
|
12315 |
+
};
|
12316 |
+
|
12317 |
+
function factory(handler, next, vm) {
|
12318 |
+
return function (options$$1) {
|
12319 |
+
return handler.call(vm, options$$1, next);
|
12320 |
+
};
|
12321 |
+
}
|
12322 |
+
|
12323 |
+
function serialize(params, obj, scope) {
|
12324 |
+
|
12325 |
+
var array = isArray(obj), plain = isPlainObject(obj), hash;
|
12326 |
+
|
12327 |
+
each(obj, function (value, key) {
|
12328 |
+
|
12329 |
+
hash = isObject(value) || isArray(value);
|
12330 |
+
|
12331 |
+
if (scope) {
|
12332 |
+
key = scope + '[' + (plain || hash ? key : '') + ']';
|
12333 |
+
}
|
12334 |
+
|
12335 |
+
if (!scope && array) {
|
12336 |
+
params.add(value.name, value.value);
|
12337 |
+
} else if (hash) {
|
12338 |
+
serialize(params, value, key);
|
12339 |
+
} else {
|
12340 |
+
params.add(key, value);
|
12341 |
+
}
|
12342 |
+
});
|
12343 |
+
}
|
12344 |
+
|
12345 |
+
/**
|
12346 |
+
* XDomain client (Internet Explorer).
|
12347 |
+
*/
|
12348 |
+
|
12349 |
+
function xdrClient (request) {
|
12350 |
+
return new PromiseObj(function (resolve) {
|
12351 |
+
|
12352 |
+
var xdr = new XDomainRequest(), handler = function (ref) {
|
12353 |
+
var type = ref.type;
|
12354 |
+
|
12355 |
+
|
12356 |
+
var status = 0;
|
12357 |
+
|
12358 |
+
if (type === 'load') {
|
12359 |
+
status = 200;
|
12360 |
+
} else if (type === 'error') {
|
12361 |
+
status = 500;
|
12362 |
+
}
|
12363 |
+
|
12364 |
+
resolve(request.respondWith(xdr.responseText, {status: status}));
|
12365 |
+
};
|
12366 |
+
|
12367 |
+
request.abort = function () { return xdr.abort(); };
|
12368 |
+
|
12369 |
+
xdr.open(request.method, request.getUrl());
|
12370 |
+
|
12371 |
+
if (request.timeout) {
|
12372 |
+
xdr.timeout = request.timeout;
|
12373 |
+
}
|
12374 |
+
|
12375 |
+
xdr.onload = handler;
|
12376 |
+
xdr.onabort = handler;
|
12377 |
+
xdr.onerror = handler;
|
12378 |
+
xdr.ontimeout = handler;
|
12379 |
+
xdr.onprogress = function () {};
|
12380 |
+
xdr.send(request.getBody());
|
12381 |
+
});
|
12382 |
+
}
|
12383 |
+
|
12384 |
+
/**
|
12385 |
+
* CORS Interceptor.
|
12386 |
+
*/
|
12387 |
+
|
12388 |
+
var SUPPORTS_CORS = inBrowser && 'withCredentials' in new XMLHttpRequest();
|
12389 |
+
|
12390 |
+
function cors (request) {
|
12391 |
+
|
12392 |
+
if (inBrowser) {
|
12393 |
+
|
12394 |
+
var orgUrl = Url.parse(location.href);
|
12395 |
+
var reqUrl = Url.parse(request.getUrl());
|
12396 |
+
|
12397 |
+
if (reqUrl.protocol !== orgUrl.protocol || reqUrl.host !== orgUrl.host) {
|
12398 |
+
|
12399 |
+
request.crossOrigin = true;
|
12400 |
+
request.emulateHTTP = false;
|
12401 |
+
|
12402 |
+
if (!SUPPORTS_CORS) {
|
12403 |
+
request.client = xdrClient;
|
12404 |
+
}
|
12405 |
+
}
|
12406 |
+
}
|
12407 |
+
|
12408 |
+
}
|
12409 |
+
|
12410 |
+
/**
|
12411 |
+
* Form data Interceptor.
|
12412 |
+
*/
|
12413 |
+
|
12414 |
+
function form (request) {
|
12415 |
+
|
12416 |
+
if (isFormData(request.body)) {
|
12417 |
+
request.headers.delete('Content-Type');
|
12418 |
+
} else if (isObject(request.body) && request.emulateJSON) {
|
12419 |
+
request.body = Url.params(request.body);
|
12420 |
+
request.headers.set('Content-Type', 'application/x-www-form-urlencoded');
|
12421 |
+
}
|
12422 |
+
|
12423 |
+
}
|
12424 |
+
|
12425 |
+
/**
|
12426 |
+
* JSON Interceptor.
|
12427 |
+
*/
|
12428 |
+
|
12429 |
+
function json (request) {
|
12430 |
+
|
12431 |
+
var type = request.headers.get('Content-Type') || '';
|
12432 |
+
|
12433 |
+
if (isObject(request.body) && type.indexOf('application/json') === 0) {
|
12434 |
+
request.body = JSON.stringify(request.body);
|
12435 |
+
}
|
12436 |
+
|
12437 |
+
return function (response) {
|
12438 |
+
|
12439 |
+
return response.bodyText ? when(response.text(), function (text) {
|
12440 |
+
|
12441 |
+
var type = response.headers.get('Content-Type') || '';
|
12442 |
+
|
12443 |
+
if (type.indexOf('application/json') === 0 || isJson(text)) {
|
12444 |
+
|
12445 |
+
try {
|
12446 |
+
response.body = JSON.parse(text);
|
12447 |
+
} catch (e) {
|
12448 |
+
response.body = null;
|
12449 |
+
}
|
12450 |
+
|
12451 |
+
} else {
|
12452 |
+
response.body = text;
|
12453 |
+
}
|
12454 |
+
|
12455 |
+
return response;
|
12456 |
+
|
12457 |
+
}) : response;
|
12458 |
+
|
12459 |
+
};
|
12460 |
+
}
|
12461 |
+
|
12462 |
+
function isJson(str) {
|
12463 |
+
|
12464 |
+
var start = str.match(/^\s*(\[|\{)/);
|
12465 |
+
var end = {'[': /]\s*$/, '{': /}\s*$/};
|
12466 |
+
|
12467 |
+
return start && end[start[1]].test(str);
|
12468 |
+
}
|
12469 |
+
|
12470 |
+
/**
|
12471 |
+
* JSONP client (Browser).
|
12472 |
+
*/
|
12473 |
+
|
12474 |
+
function jsonpClient (request) {
|
12475 |
+
return new PromiseObj(function (resolve) {
|
12476 |
+
|
12477 |
+
var name = request.jsonp || 'callback', callback = request.jsonpCallback || '_jsonp' + Math.random().toString(36).substr(2), body = null, handler, script;
|
12478 |
+
|
12479 |
+
handler = function (ref) {
|
12480 |
+
var type = ref.type;
|
12481 |
+
|
12482 |
+
|
12483 |
+
var status = 0;
|
12484 |
+
|
12485 |
+
if (type === 'load' && body !== null) {
|
12486 |
+
status = 200;
|
12487 |
+
} else if (type === 'error') {
|
12488 |
+
status = 500;
|
12489 |
+
}
|
12490 |
+
|
12491 |
+
if (status && window[callback]) {
|
12492 |
+
delete window[callback];
|
12493 |
+
document.body.removeChild(script);
|
12494 |
+
}
|
12495 |
+
|
12496 |
+
resolve(request.respondWith(body, {status: status}));
|
12497 |
+
};
|
12498 |
+
|
12499 |
+
window[callback] = function (result) {
|
12500 |
+
body = JSON.stringify(result);
|
12501 |
+
};
|
12502 |
+
|
12503 |
+
request.abort = function () {
|
12504 |
+
handler({type: 'abort'});
|
12505 |
+
};
|
12506 |
+
|
12507 |
+
request.params[name] = callback;
|
12508 |
+
|
12509 |
+
if (request.timeout) {
|
12510 |
+
setTimeout(request.abort, request.timeout);
|
12511 |
+
}
|
12512 |
+
|
12513 |
+
script = document.createElement('script');
|
12514 |
+
script.src = request.getUrl();
|
12515 |
+
script.type = 'text/javascript';
|
12516 |
+
script.async = true;
|
12517 |
+
script.onload = handler;
|
12518 |
+
script.onerror = handler;
|
12519 |
+
|
12520 |
+
document.body.appendChild(script);
|
12521 |
+
});
|
12522 |
+
}
|
12523 |
+
|
12524 |
+
/**
|
12525 |
+
* JSONP Interceptor.
|
12526 |
+
*/
|
12527 |
+
|
12528 |
+
function jsonp (request) {
|
12529 |
+
|
12530 |
+
if (request.method == 'JSONP') {
|
12531 |
+
request.client = jsonpClient;
|
12532 |
+
}
|
12533 |
+
|
12534 |
+
}
|
12535 |
+
|
12536 |
+
/**
|
12537 |
+
* Before Interceptor.
|
12538 |
+
*/
|
12539 |
+
|
12540 |
+
function before (request) {
|
12541 |
+
|
12542 |
+
if (isFunction(request.before)) {
|
12543 |
+
request.before.call(this, request);
|
12544 |
+
}
|
12545 |
+
|
12546 |
+
}
|
12547 |
+
|
12548 |
+
/**
|
12549 |
+
* HTTP method override Interceptor.
|
12550 |
+
*/
|
12551 |
+
|
12552 |
+
function method (request) {
|
12553 |
+
|
12554 |
+
if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {
|
12555 |
+
request.headers.set('X-HTTP-Method-Override', request.method);
|
12556 |
+
request.method = 'POST';
|
12557 |
+
}
|
12558 |
+
|
12559 |
+
}
|
12560 |
+
|
12561 |
+
/**
|
12562 |
+
* Header Interceptor.
|
12563 |
+
*/
|
12564 |
+
|
12565 |
+
function header (request) {
|
12566 |
+
|
12567 |
+
var headers = assign({}, Http.headers.common,
|
12568 |
+
!request.crossOrigin ? Http.headers.custom : {},
|
12569 |
+
Http.headers[toLower(request.method)]
|
12570 |
+
);
|
12571 |
+
|
12572 |
+
each(headers, function (value, name) {
|
12573 |
+
if (!request.headers.has(name)) {
|
12574 |
+
request.headers.set(name, value);
|
12575 |
+
}
|
12576 |
+
});
|
12577 |
+
|
12578 |
+
}
|
12579 |
+
|
12580 |
+
/**
|
12581 |
+
* XMLHttp client (Browser).
|
12582 |
+
*/
|
12583 |
+
|
12584 |
+
function xhrClient (request) {
|
12585 |
+
return new PromiseObj(function (resolve) {
|
12586 |
+
|
12587 |
+
var xhr = new XMLHttpRequest(), handler = function (event) {
|
12588 |
+
|
12589 |
+
var response = request.respondWith(
|
12590 |
+
'response' in xhr ? xhr.response : xhr.responseText, {
|
12591 |
+
status: xhr.status === 1223 ? 204 : xhr.status, // IE9 status bug
|
12592 |
+
statusText: xhr.status === 1223 ? 'No Content' : trim(xhr.statusText)
|
12593 |
+
});
|
12594 |
+
|
12595 |
+
each(trim(xhr.getAllResponseHeaders()).split('\n'), function (row) {
|
12596 |
+
response.headers.append(row.slice(0, row.indexOf(':')), row.slice(row.indexOf(':') + 1));
|
12597 |
+
});
|
12598 |
+
|
12599 |
+
resolve(response);
|
12600 |
+
};
|
12601 |
+
|
12602 |
+
request.abort = function () { return xhr.abort(); };
|
12603 |
+
|
12604 |
+
xhr.open(request.method, request.getUrl(), true);
|
12605 |
+
|
12606 |
+
if (request.timeout) {
|
12607 |
+
xhr.timeout = request.timeout;
|
12608 |
+
}
|
12609 |
+
|
12610 |
+
if (request.responseType && 'responseType' in xhr) {
|
12611 |
+
xhr.responseType = request.responseType;
|
12612 |
+
}
|
12613 |
+
|
12614 |
+
if (request.withCredentials || request.credentials) {
|
12615 |
+
xhr.withCredentials = true;
|
12616 |
+
}
|
12617 |
+
|
12618 |
+
if (!request.crossOrigin) {
|
12619 |
+
request.headers.set('X-Requested-With', 'XMLHttpRequest');
|
12620 |
+
}
|
12621 |
+
|
12622 |
+
// deprecated use downloadProgress
|
12623 |
+
if (isFunction(request.progress) && request.method === 'GET') {
|
12624 |
+
xhr.addEventListener('progress', request.progress);
|
12625 |
+
}
|
12626 |
+
|
12627 |
+
if (isFunction(request.downloadProgress)) {
|
12628 |
+
xhr.addEventListener('progress', request.downloadProgress);
|
12629 |
+
}
|
12630 |
+
|
12631 |
+
// deprecated use uploadProgress
|
12632 |
+
if (isFunction(request.progress) && /^(POST|PUT)$/i.test(request.method)) {
|
12633 |
+
xhr.upload.addEventListener('progress', request.progress);
|
12634 |
+
}
|
12635 |
+
|
12636 |
+
if (isFunction(request.uploadProgress) && xhr.upload) {
|
12637 |
+
xhr.upload.addEventListener('progress', request.uploadProgress);
|
12638 |
+
}
|
12639 |
+
|
12640 |
+
request.headers.forEach(function (value, name) {
|
12641 |
+
xhr.setRequestHeader(name, value);
|
12642 |
+
});
|
12643 |
+
|
12644 |
+
xhr.onload = handler;
|
12645 |
+
xhr.onabort = handler;
|
12646 |
+
xhr.onerror = handler;
|
12647 |
+
xhr.ontimeout = handler;
|
12648 |
+
xhr.send(request.getBody());
|
12649 |
+
});
|
12650 |
+
}
|
12651 |
+
|
12652 |
+
/**
|
12653 |
+
* Http client (Node).
|
12654 |
+
*/
|
12655 |
+
|
12656 |
+
function nodeClient (request) {
|
12657 |
+
|
12658 |
+
var client = __webpack_require__(39);
|
12659 |
+
|
12660 |
+
return new PromiseObj(function (resolve) {
|
12661 |
+
|
12662 |
+
var url = request.getUrl();
|
12663 |
+
var body = request.getBody();
|
12664 |
+
var method = request.method;
|
12665 |
+
var headers = {}, handler;
|
12666 |
+
|
12667 |
+
request.headers.forEach(function (value, name) {
|
12668 |
+
headers[name] = value;
|
12669 |
+
});
|
12670 |
+
|
12671 |
+
client(url, {body: body, method: method, headers: headers}).then(handler = function (resp) {
|
12672 |
+
|
12673 |
+
var response = request.respondWith(resp.body, {
|
12674 |
+
status: resp.statusCode,
|
12675 |
+
statusText: trim(resp.statusMessage)
|
12676 |
+
});
|
12677 |
+
|
12678 |
+
each(resp.headers, function (value, name) {
|
12679 |
+
response.headers.set(name, value);
|
12680 |
+
});
|
12681 |
+
|
12682 |
+
resolve(response);
|
12683 |
+
|
12684 |
+
}, function (error$$1) { return handler(error$$1.response); });
|
12685 |
+
});
|
12686 |
+
}
|
12687 |
+
|
12688 |
+
/**
|
12689 |
+
* Base client.
|
12690 |
+
*/
|
12691 |
+
|
12692 |
+
function Client (context) {
|
12693 |
+
|
12694 |
+
var reqHandlers = [sendRequest], resHandlers = [];
|
12695 |
+
|
12696 |
+
if (!isObject(context)) {
|
12697 |
+
context = null;
|
12698 |
+
}
|
12699 |
+
|
12700 |
+
function Client(request) {
|
12701 |
+
while (reqHandlers.length) {
|
12702 |
+
|
12703 |
+
var handler = reqHandlers.pop();
|
12704 |
+
|
12705 |
+
if (isFunction(handler)) {
|
12706 |
+
|
12707 |
+
var response = (void 0), next = (void 0);
|
12708 |
+
|
12709 |
+
response = handler.call(context, request, function (val) { return next = val; }) || next;
|
12710 |
+
|
12711 |
+
if (isObject(response)) {
|
12712 |
+
return new PromiseObj(function (resolve, reject) {
|
12713 |
+
|
12714 |
+
resHandlers.forEach(function (handler) {
|
12715 |
+
response = when(response, function (response) {
|
12716 |
+
return handler.call(context, response) || response;
|
12717 |
+
}, reject);
|
12718 |
+
});
|
12719 |
+
|
12720 |
+
when(response, resolve, reject);
|
12721 |
+
|
12722 |
+
}, context);
|
12723 |
+
}
|
12724 |
+
|
12725 |
+
if (isFunction(response)) {
|
12726 |
+
resHandlers.unshift(response);
|
12727 |
+
}
|
12728 |
+
|
12729 |
+
} else {
|
12730 |
+
warn(("Invalid interceptor of type " + (typeof handler) + ", must be a function"));
|
12731 |
+
}
|
12732 |
+
}
|
12733 |
+
}
|
12734 |
+
|
12735 |
+
Client.use = function (handler) {
|
12736 |
+
reqHandlers.push(handler);
|
12737 |
+
};
|
12738 |
+
|
12739 |
+
return Client;
|
12740 |
+
}
|
12741 |
+
|
12742 |
+
function sendRequest(request) {
|
12743 |
+
|
12744 |
+
var client = request.client || (inBrowser ? xhrClient : nodeClient);
|
12745 |
+
|
12746 |
+
return client(request);
|
12747 |
+
}
|
12748 |
+
|
12749 |
+
/**
|
12750 |
+
* HTTP Headers.
|
12751 |
+
*/
|
12752 |
+
|
12753 |
+
var Headers = function Headers(headers) {
|
12754 |
+
var this$1 = this;
|
12755 |
+
|
12756 |
+
|
12757 |
+
this.map = {};
|
12758 |
+
|
12759 |
+
each(headers, function (value, name) { return this$1.append(name, value); });
|
12760 |
+
};
|
12761 |
+
|
12762 |
+
Headers.prototype.has = function has (name) {
|
12763 |
+
return getName(this.map, name) !== null;
|
12764 |
+
};
|
12765 |
+
|
12766 |
+
Headers.prototype.get = function get (name) {
|
12767 |
+
|
12768 |
+
var list = this.map[getName(this.map, name)];
|
12769 |
+
|
12770 |
+
return list ? list.join() : null;
|
12771 |
+
};
|
12772 |
+
|
12773 |
+
Headers.prototype.getAll = function getAll (name) {
|
12774 |
+
return this.map[getName(this.map, name)] || [];
|
12775 |
+
};
|
12776 |
+
|
12777 |
+
Headers.prototype.set = function set (name, value) {
|
12778 |
+
this.map[normalizeName(getName(this.map, name) || name)] = [trim(value)];
|
12779 |
+
};
|
12780 |
+
|
12781 |
+
Headers.prototype.append = function append (name, value) {
|
12782 |
+
|
12783 |
+
var list = this.map[getName(this.map, name)];
|
12784 |
+
|
12785 |
+
if (list) {
|
12786 |
+
list.push(trim(value));
|
12787 |
+
} else {
|
12788 |
+
this.set(name, value);
|
12789 |
+
}
|
12790 |
+
};
|
12791 |
+
|
12792 |
+
Headers.prototype.delete = function delete$1 (name) {
|
12793 |
+
delete this.map[getName(this.map, name)];
|
12794 |
+
};
|
12795 |
+
|
12796 |
+
Headers.prototype.deleteAll = function deleteAll () {
|
12797 |
+
this.map = {};
|
12798 |
+
};
|
12799 |
+
|
12800 |
+
Headers.prototype.forEach = function forEach (callback, thisArg) {
|
12801 |
+
var this$1 = this;
|
12802 |
+
|
12803 |
+
each(this.map, function (list, name) {
|
12804 |
+
each(list, function (value) { return callback.call(thisArg, value, name, this$1); });
|
12805 |
+
});
|
12806 |
+
};
|
12807 |
+
|
12808 |
+
function getName(map, name) {
|
12809 |
+
return Object.keys(map).reduce(function (prev, curr) {
|
12810 |
+
return toLower(name) === toLower(curr) ? curr : prev;
|
12811 |
+
}, null);
|
12812 |
+
}
|
12813 |
+
|
12814 |
+
function normalizeName(name) {
|
12815 |
+
|
12816 |
+
if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) {
|
12817 |
+
throw new TypeError('Invalid character in header field name');
|
12818 |
+
}
|
12819 |
+
|
12820 |
+
return trim(name);
|
12821 |
+
}
|
12822 |
+
|
12823 |
+
/**
|
12824 |
+
* HTTP Response.
|
12825 |
+
*/
|
12826 |
+
|
12827 |
+
var Response = function Response(body, ref) {
|
12828 |
+
var url = ref.url;
|
12829 |
+
var headers = ref.headers;
|
12830 |
+
var status = ref.status;
|
12831 |
+
var statusText = ref.statusText;
|
12832 |
+
|
12833 |
+
|
12834 |
+
this.url = url;
|
12835 |
+
this.ok = status >= 200 && status < 300;
|
12836 |
+
this.status = status || 0;
|
12837 |
+
this.statusText = statusText || '';
|
12838 |
+
this.headers = new Headers(headers);
|
12839 |
+
this.body = body;
|
12840 |
+
|
12841 |
+
if (isString(body)) {
|
12842 |
+
|
12843 |
+
this.bodyText = body;
|
12844 |
+
|
12845 |
+
} else if (isBlob(body)) {
|
12846 |
+
|
12847 |
+
this.bodyBlob = body;
|
12848 |
+
|
12849 |
+
if (isBlobText(body)) {
|
12850 |
+
this.bodyText = blobText(body);
|
12851 |
+
}
|
12852 |
+
}
|
12853 |
+
};
|
12854 |
+
|
12855 |
+
Response.prototype.blob = function blob () {
|
12856 |
+
return when(this.bodyBlob);
|
12857 |
+
};
|
12858 |
+
|
12859 |
+
Response.prototype.text = function text () {
|
12860 |
+
return when(this.bodyText);
|
12861 |
+
};
|
12862 |
+
|
12863 |
+
Response.prototype.json = function json () {
|
12864 |
+
return when(this.text(), function (text) { return JSON.parse(text); });
|
12865 |
+
};
|
12866 |
+
|
12867 |
+
Object.defineProperty(Response.prototype, 'data', {
|
12868 |
+
|
12869 |
+
get: function get() {
|
12870 |
+
return this.body;
|
12871 |
+
},
|
12872 |
+
|
12873 |
+
set: function set(body) {
|
12874 |
+
this.body = body;
|
12875 |
+
}
|
12876 |
+
|
12877 |
+
});
|
12878 |
+
|
12879 |
+
function blobText(body) {
|
12880 |
+
return new PromiseObj(function (resolve) {
|
12881 |
+
|
12882 |
+
var reader = new FileReader();
|
12883 |
+
|
12884 |
+
reader.readAsText(body);
|
12885 |
+
reader.onload = function () {
|
12886 |
+
resolve(reader.result);
|
12887 |
+
};
|
12888 |
+
|
12889 |
+
});
|
12890 |
+
}
|
12891 |
+
|
12892 |
+
function isBlobText(body) {
|
12893 |
+
return body.type.indexOf('text') === 0 || body.type.indexOf('json') !== -1;
|
12894 |
+
}
|
12895 |
+
|
12896 |
+
/**
|
12897 |
+
* HTTP Request.
|
12898 |
+
*/
|
12899 |
+
|
12900 |
+
var Request = function Request(options$$1) {
|
12901 |
+
|
12902 |
+
this.body = null;
|
12903 |
+
this.params = {};
|
12904 |
+
|
12905 |
+
assign(this, options$$1, {
|
12906 |
+
method: toUpper(options$$1.method || 'GET')
|
12907 |
+
});
|
12908 |
+
|
12909 |
+
if (!(this.headers instanceof Headers)) {
|
12910 |
+
this.headers = new Headers(this.headers);
|
12911 |
+
}
|
12912 |
+
};
|
12913 |
+
|
12914 |
+
Request.prototype.getUrl = function getUrl () {
|
12915 |
+
return Url(this);
|
12916 |
+
};
|
12917 |
+
|
12918 |
+
Request.prototype.getBody = function getBody () {
|
12919 |
+
return this.body;
|
12920 |
+
};
|
12921 |
+
|
12922 |
+
Request.prototype.respondWith = function respondWith (body, options$$1) {
|
12923 |
+
return new Response(body, assign(options$$1 || {}, {url: this.getUrl()}));
|
12924 |
+
};
|
12925 |
+
|
12926 |
+
/**
|
12927 |
+
* Service for sending network requests.
|
12928 |
+
*/
|
12929 |
+
|
12930 |
+
var COMMON_HEADERS = {'Accept': 'application/json, text/plain, */*'};
|
12931 |
+
var JSON_CONTENT_TYPE = {'Content-Type': 'application/json;charset=utf-8'};
|
12932 |
+
|
12933 |
+
function Http(options$$1) {
|
12934 |
+
|
12935 |
+
var self = this || {}, client = Client(self.$vm);
|
12936 |
+
|
12937 |
+
defaults(options$$1 || {}, self.$options, Http.options);
|
12938 |
+
|
12939 |
+
Http.interceptors.forEach(function (handler) {
|
12940 |
+
|
12941 |
+
if (isString(handler)) {
|
12942 |
+
handler = Http.interceptor[handler];
|
12943 |
+
}
|
12944 |
+
|
12945 |
+
if (isFunction(handler)) {
|
12946 |
+
client.use(handler);
|
12947 |
+
}
|
12948 |
+
|
12949 |
+
});
|
12950 |
+
|
12951 |
+
return client(new Request(options$$1)).then(function (response) {
|
12952 |
+
|
12953 |
+
return response.ok ? response : PromiseObj.reject(response);
|
12954 |
+
|
12955 |
+
}, function (response) {
|
12956 |
+
|
12957 |
+
if (response instanceof Error) {
|
12958 |
+
error(response);
|
12959 |
+
}
|
12960 |
+
|
12961 |
+
return PromiseObj.reject(response);
|
12962 |
+
});
|
12963 |
+
}
|
12964 |
+
|
12965 |
+
Http.options = {};
|
12966 |
+
|
12967 |
+
Http.headers = {
|
12968 |
+
put: JSON_CONTENT_TYPE,
|
12969 |
+
post: JSON_CONTENT_TYPE,
|
12970 |
+
patch: JSON_CONTENT_TYPE,
|
12971 |
+
delete: JSON_CONTENT_TYPE,
|
12972 |
+
common: COMMON_HEADERS,
|
12973 |
+
custom: {}
|
12974 |
+
};
|
12975 |
+
|
12976 |
+
Http.interceptor = {before: before, method: method, jsonp: jsonp, json: json, form: form, header: header, cors: cors};
|
12977 |
+
Http.interceptors = ['before', 'method', 'jsonp', 'json', 'form', 'header', 'cors'];
|
12978 |
+
|
12979 |
+
['get', 'delete', 'head', 'jsonp'].forEach(function (method$$1) {
|
12980 |
+
|
12981 |
+
Http[method$$1] = function (url, options$$1) {
|
12982 |
+
return this(assign(options$$1 || {}, {url: url, method: method$$1}));
|
12983 |
+
};
|
12984 |
+
|
12985 |
+
});
|
12986 |
+
|
12987 |
+
['post', 'put', 'patch'].forEach(function (method$$1) {
|
12988 |
+
|
12989 |
+
Http[method$$1] = function (url, body, options$$1) {
|
12990 |
+
return this(assign(options$$1 || {}, {url: url, method: method$$1, body: body}));
|
12991 |
+
};
|
12992 |
+
|
12993 |
+
});
|
12994 |
+
|
12995 |
+
/**
|
12996 |
+
* Service for interacting with RESTful services.
|
12997 |
+
*/
|
12998 |
+
|
12999 |
+
function Resource(url, params, actions, options$$1) {
|
13000 |
+
|
13001 |
+
var self = this || {}, resource = {};
|
13002 |
+
|
13003 |
+
actions = assign({},
|
13004 |
+
Resource.actions,
|
13005 |
+
actions
|
13006 |
+
);
|
13007 |
+
|
13008 |
+
each(actions, function (action, name) {
|
13009 |
+
|
13010 |
+
action = merge({url: url, params: assign({}, params)}, options$$1, action);
|
13011 |
+
|
13012 |
+
resource[name] = function () {
|
13013 |
+
return (self.$http || Http)(opts(action, arguments));
|
13014 |
+
};
|
13015 |
+
});
|
13016 |
+
|
13017 |
+
return resource;
|
13018 |
+
}
|
13019 |
+
|
13020 |
+
function opts(action, args) {
|
13021 |
+
|
13022 |
+
var options$$1 = assign({}, action), params = {}, body;
|
13023 |
+
|
13024 |
+
switch (args.length) {
|
13025 |
+
|
13026 |
+
case 2:
|
13027 |
+
|
13028 |
+
params = args[0];
|
13029 |
+
body = args[1];
|
13030 |
+
|
13031 |
+
break;
|
13032 |
+
|
13033 |
+
case 1:
|
13034 |
+
|
13035 |
+
if (/^(POST|PUT|PATCH)$/i.test(options$$1.method)) {
|
13036 |
+
body = args[0];
|
13037 |
+
} else {
|
13038 |
+
params = args[0];
|
13039 |
+
}
|
13040 |
+
|
13041 |
+
break;
|
13042 |
+
|
13043 |
+
case 0:
|
13044 |
+
|
13045 |
+
break;
|
13046 |
+
|
13047 |
+
default:
|
13048 |
+
|
13049 |
+
throw 'Expected up to 2 arguments [params, body], got ' + args.length + ' arguments';
|
13050 |
+
}
|
13051 |
+
|
13052 |
+
options$$1.body = body;
|
13053 |
+
options$$1.params = assign({}, options$$1.params, params);
|
13054 |
+
|
13055 |
+
return options$$1;
|
13056 |
+
}
|
13057 |
+
|
13058 |
+
Resource.actions = {
|
13059 |
+
|
13060 |
+
get: {method: 'GET'},
|
13061 |
+
save: {method: 'POST'},
|
13062 |
+
query: {method: 'GET'},
|
13063 |
+
update: {method: 'PUT'},
|
13064 |
+
remove: {method: 'DELETE'},
|
13065 |
+
delete: {method: 'DELETE'}
|
13066 |
+
|
13067 |
+
};
|
13068 |
+
|
13069 |
+
/**
|
13070 |
+
* Install plugin.
|
13071 |
+
*/
|
13072 |
+
|
13073 |
+
function plugin(Vue) {
|
13074 |
+
|
13075 |
+
if (plugin.installed) {
|
13076 |
+
return;
|
13077 |
+
}
|
13078 |
+
|
13079 |
+
Util(Vue);
|
13080 |
+
|
13081 |
+
Vue.url = Url;
|
13082 |
+
Vue.http = Http;
|
13083 |
+
Vue.resource = Resource;
|
13084 |
+
Vue.Promise = PromiseObj;
|
13085 |
+
|
13086 |
+
Object.defineProperties(Vue.prototype, {
|
13087 |
+
|
13088 |
+
$url: {
|
13089 |
+
get: function get() {
|
13090 |
+
return options(Vue.url, this, this.$options.url);
|
13091 |
+
}
|
13092 |
+
},
|
13093 |
+
|
13094 |
+
$http: {
|
13095 |
+
get: function get() {
|
13096 |
+
return options(Vue.http, this, this.$options.http);
|
13097 |
+
}
|
13098 |
+
},
|
13099 |
+
|
13100 |
+
$resource: {
|
13101 |
+
get: function get() {
|
13102 |
+
return Vue.resource.bind(this);
|
13103 |
+
}
|
13104 |
+
},
|
13105 |
+
|
13106 |
+
$promise: {
|
13107 |
+
get: function get() {
|
13108 |
+
var this$1 = this;
|
13109 |
+
|
13110 |
+
return function (executor) { return new Vue.Promise(executor, this$1); };
|
13111 |
+
}
|
13112 |
+
}
|
13113 |
+
|
13114 |
+
});
|
13115 |
+
}
|
13116 |
+
|
13117 |
+
if (typeof window !== 'undefined' && window.Vue) {
|
13118 |
+
window.Vue.use(plugin);
|
13119 |
+
}
|
13120 |
+
|
13121 |
+
/* harmony default export */ __webpack_exports__["default"] = (plugin);
|
13122 |
+
|
13123 |
+
|
13124 |
+
|
13125 |
+
/***/ }),
|
13126 |
+
/* 6 */
|
13127 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13128 |
+
|
13129 |
+
"use strict";
|
13130 |
+
|
13131 |
+
|
13132 |
+
var _vue = __webpack_require__(2);
|
13133 |
+
|
13134 |
+
var _vue2 = _interopRequireDefault(_vue);
|
13135 |
+
|
13136 |
+
var _main = __webpack_require__(9);
|
13137 |
+
|
13138 |
+
var _main2 = _interopRequireDefault(_main);
|
13139 |
+
|
13140 |
+
var _store = __webpack_require__(37);
|
13141 |
+
|
13142 |
+
var _store2 = _interopRequireDefault(_store);
|
13143 |
+
|
13144 |
+
var _vueJsToggleButton = __webpack_require__(42);
|
13145 |
+
|
13146 |
+
var _vueJsToggleButton2 = _interopRequireDefault(_vueJsToggleButton);
|
13147 |
+
|
13148 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13149 |
+
|
13150 |
+
/*jshint esversion: 6 */
|
13151 |
+
_vue2.default.use(_vueJsToggleButton2.default);
|
13152 |
+
|
13153 |
+
window.onload = function () {
|
13154 |
+
new _vue2.default({
|
13155 |
+
el: '#optimole-app',
|
13156 |
+
store: _store2.default,
|
13157 |
+
components: {
|
13158 |
+
App: _main2.default
|
13159 |
+
}
|
13160 |
+
});
|
13161 |
+
};
|
13162 |
+
|
13163 |
+
/***/ }),
|
13164 |
+
/* 7 */
|
13165 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13166 |
+
|
13167 |
+
/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
|
13168 |
+
(typeof self !== "undefined" && self) ||
|
13169 |
+
window;
|
13170 |
+
var apply = Function.prototype.apply;
|
13171 |
+
|
13172 |
+
// DOM APIs, for completeness
|
13173 |
+
|
13174 |
+
exports.setTimeout = function() {
|
13175 |
+
return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
|
13176 |
+
};
|
13177 |
+
exports.setInterval = function() {
|
13178 |
+
return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
|
13179 |
+
};
|
13180 |
+
exports.clearTimeout =
|
13181 |
+
exports.clearInterval = function(timeout) {
|
13182 |
+
if (timeout) {
|
13183 |
+
timeout.close();
|
13184 |
+
}
|
13185 |
+
};
|
13186 |
+
|
13187 |
+
function Timeout(id, clearFn) {
|
13188 |
+
this._id = id;
|
13189 |
+
this._clearFn = clearFn;
|
13190 |
+
}
|
13191 |
+
Timeout.prototype.unref = Timeout.prototype.ref = function() {};
|
13192 |
+
Timeout.prototype.close = function() {
|
13193 |
+
this._clearFn.call(scope, this._id);
|
13194 |
+
};
|
13195 |
+
|
13196 |
+
// Does not start the time, just sets up the members needed.
|
13197 |
+
exports.enroll = function(item, msecs) {
|
13198 |
+
clearTimeout(item._idleTimeoutId);
|
13199 |
+
item._idleTimeout = msecs;
|
13200 |
+
};
|
13201 |
+
|
13202 |
+
exports.unenroll = function(item) {
|
13203 |
+
clearTimeout(item._idleTimeoutId);
|
13204 |
+
item._idleTimeout = -1;
|
13205 |
+
};
|
13206 |
+
|
13207 |
+
exports._unrefActive = exports.active = function(item) {
|
13208 |
+
clearTimeout(item._idleTimeoutId);
|
13209 |
+
|
13210 |
+
var msecs = item._idleTimeout;
|
13211 |
+
if (msecs >= 0) {
|
13212 |
+
item._idleTimeoutId = setTimeout(function onTimeout() {
|
13213 |
+
if (item._onTimeout)
|
13214 |
+
item._onTimeout();
|
13215 |
+
}, msecs);
|
13216 |
+
}
|
13217 |
+
};
|
13218 |
+
|
13219 |
+
// setimmediate attaches itself to the global object
|
13220 |
+
__webpack_require__(8);
|
13221 |
+
// On some exotic environments, it's not clear which object `setimmediate` was
|
13222 |
+
// able to install onto. Search each possibility in the same order as the
|
13223 |
+
// `setimmediate` library.
|
13224 |
+
exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
|
13225 |
+
(typeof global !== "undefined" && global.setImmediate) ||
|
13226 |
+
(this && this.setImmediate);
|
13227 |
+
exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
|
13228 |
+
(typeof global !== "undefined" && global.clearImmediate) ||
|
13229 |
+
(this && this.clearImmediate);
|
13230 |
+
|
13231 |
+
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
|
13232 |
+
|
13233 |
+
/***/ }),
|
13234 |
+
/* 8 */
|
13235 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13236 |
+
|
13237 |
+
/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
|
13238 |
+
"use strict";
|
13239 |
+
|
13240 |
+
if (global.setImmediate) {
|
13241 |
+
return;
|
13242 |
+
}
|
13243 |
+
|
13244 |
+
var nextHandle = 1; // Spec says greater than zero
|
13245 |
+
var tasksByHandle = {};
|
13246 |
+
var currentlyRunningATask = false;
|
13247 |
+
var doc = global.document;
|
13248 |
+
var registerImmediate;
|
13249 |
+
|
13250 |
+
function setImmediate(callback) {
|
13251 |
+
// Callback can either be a function or a string
|
13252 |
+
if (typeof callback !== "function") {
|
13253 |
+
callback = new Function("" + callback);
|
13254 |
+
}
|
13255 |
+
// Copy function arguments
|
13256 |
+
var args = new Array(arguments.length - 1);
|
13257 |
+
for (var i = 0; i < args.length; i++) {
|
13258 |
+
args[i] = arguments[i + 1];
|
13259 |
+
}
|
13260 |
+
// Store and register the task
|
13261 |
+
var task = { callback: callback, args: args };
|
13262 |
+
tasksByHandle[nextHandle] = task;
|
13263 |
+
registerImmediate(nextHandle);
|
13264 |
+
return nextHandle++;
|
13265 |
+
}
|
13266 |
+
|
13267 |
+
function clearImmediate(handle) {
|
13268 |
+
delete tasksByHandle[handle];
|
13269 |
+
}
|
13270 |
+
|
13271 |
+
function run(task) {
|
13272 |
+
var callback = task.callback;
|
13273 |
+
var args = task.args;
|
13274 |
+
switch (args.length) {
|
13275 |
+
case 0:
|
13276 |
+
callback();
|
13277 |
+
break;
|
13278 |
+
case 1:
|
13279 |
+
callback(args[0]);
|
13280 |
+
break;
|
13281 |
+
case 2:
|
13282 |
+
callback(args[0], args[1]);
|
13283 |
+
break;
|
13284 |
+
case 3:
|
13285 |
+
callback(args[0], args[1], args[2]);
|
13286 |
+
break;
|
13287 |
+
default:
|
13288 |
+
callback.apply(undefined, args);
|
13289 |
+
break;
|
13290 |
+
}
|
13291 |
+
}
|
13292 |
+
|
13293 |
+
function runIfPresent(handle) {
|
13294 |
+
// From the spec: "Wait until any invocations of this algorithm started before this one have completed."
|
13295 |
+
// So if we're currently running a task, we'll need to delay this invocation.
|
13296 |
+
if (currentlyRunningATask) {
|
13297 |
+
// Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
|
13298 |
+
// "too much recursion" error.
|
13299 |
+
setTimeout(runIfPresent, 0, handle);
|
13300 |
+
} else {
|
13301 |
+
var task = tasksByHandle[handle];
|
13302 |
+
if (task) {
|
13303 |
+
currentlyRunningATask = true;
|
13304 |
+
try {
|
13305 |
+
run(task);
|
13306 |
+
} finally {
|
13307 |
+
clearImmediate(handle);
|
13308 |
+
currentlyRunningATask = false;
|
13309 |
+
}
|
13310 |
+
}
|
13311 |
+
}
|
13312 |
+
}
|
13313 |
+
|
13314 |
+
function installNextTickImplementation() {
|
13315 |
+
registerImmediate = function(handle) {
|
13316 |
+
process.nextTick(function () { runIfPresent(handle); });
|
13317 |
+
};
|
13318 |
+
}
|
13319 |
+
|
13320 |
+
function canUsePostMessage() {
|
13321 |
+
// The test against `importScripts` prevents this implementation from being installed inside a web worker,
|
13322 |
+
// where `global.postMessage` means something completely different and can't be used for this purpose.
|
13323 |
+
if (global.postMessage && !global.importScripts) {
|
13324 |
+
var postMessageIsAsynchronous = true;
|
13325 |
+
var oldOnMessage = global.onmessage;
|
13326 |
+
global.onmessage = function() {
|
13327 |
+
postMessageIsAsynchronous = false;
|
13328 |
+
};
|
13329 |
+
global.postMessage("", "*");
|
13330 |
+
global.onmessage = oldOnMessage;
|
13331 |
+
return postMessageIsAsynchronous;
|
13332 |
+
}
|
13333 |
+
}
|
13334 |
+
|
13335 |
+
function installPostMessageImplementation() {
|
13336 |
+
// Installs an event handler on `global` for the `message` event: see
|
13337 |
+
// * https://developer.mozilla.org/en/DOM/window.postMessage
|
13338 |
+
// * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
|
13339 |
+
|
13340 |
+
var messagePrefix = "setImmediate$" + Math.random() + "$";
|
13341 |
+
var onGlobalMessage = function(event) {
|
13342 |
+
if (event.source === global &&
|
13343 |
+
typeof event.data === "string" &&
|
13344 |
+
event.data.indexOf(messagePrefix) === 0) {
|
13345 |
+
runIfPresent(+event.data.slice(messagePrefix.length));
|
13346 |
+
}
|
13347 |
+
};
|
13348 |
+
|
13349 |
+
if (global.addEventListener) {
|
13350 |
+
global.addEventListener("message", onGlobalMessage, false);
|
13351 |
+
} else {
|
13352 |
+
global.attachEvent("onmessage", onGlobalMessage);
|
13353 |
+
}
|
13354 |
+
|
13355 |
+
registerImmediate = function(handle) {
|
13356 |
+
global.postMessage(messagePrefix + handle, "*");
|
13357 |
+
};
|
13358 |
+
}
|
13359 |
+
|
13360 |
+
function installMessageChannelImplementation() {
|
13361 |
+
var channel = new MessageChannel();
|
13362 |
+
channel.port1.onmessage = function(event) {
|
13363 |
+
var handle = event.data;
|
13364 |
+
runIfPresent(handle);
|
13365 |
+
};
|
13366 |
+
|
13367 |
+
registerImmediate = function(handle) {
|
13368 |
+
channel.port2.postMessage(handle);
|
13369 |
+
};
|
13370 |
+
}
|
13371 |
+
|
13372 |
+
function installReadyStateChangeImplementation() {
|
13373 |
+
var html = doc.documentElement;
|
13374 |
+
registerImmediate = function(handle) {
|
13375 |
+
// Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
|
13376 |
+
// into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
|
13377 |
+
var script = doc.createElement("script");
|
13378 |
+
script.onreadystatechange = function () {
|
13379 |
+
runIfPresent(handle);
|
13380 |
+
script.onreadystatechange = null;
|
13381 |
+
html.removeChild(script);
|
13382 |
+
script = null;
|
13383 |
+
};
|
13384 |
+
html.appendChild(script);
|
13385 |
+
};
|
13386 |
+
}
|
13387 |
+
|
13388 |
+
function installSetTimeoutImplementation() {
|
13389 |
+
registerImmediate = function(handle) {
|
13390 |
+
setTimeout(runIfPresent, 0, handle);
|
13391 |
+
};
|
13392 |
+
}
|
13393 |
+
|
13394 |
+
// If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
|
13395 |
+
var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
|
13396 |
+
attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
|
13397 |
+
|
13398 |
+
// Don't get fooled by e.g. browserify environments.
|
13399 |
+
if ({}.toString.call(global.process) === "[object process]") {
|
13400 |
+
// For Node.js before 0.9
|
13401 |
+
installNextTickImplementation();
|
13402 |
+
|
13403 |
+
} else if (canUsePostMessage()) {
|
13404 |
+
// For non-IE10 modern browsers
|
13405 |
+
installPostMessageImplementation();
|
13406 |
+
|
13407 |
+
} else if (global.MessageChannel) {
|
13408 |
+
// For web workers, where supported
|
13409 |
+
installMessageChannelImplementation();
|
13410 |
+
|
13411 |
+
} else if (doc && "onreadystatechange" in doc.createElement("script")) {
|
13412 |
+
// For IE 6–8
|
13413 |
+
installReadyStateChangeImplementation();
|
13414 |
+
|
13415 |
+
} else {
|
13416 |
+
// For older browsers
|
13417 |
+
installSetTimeoutImplementation();
|
13418 |
+
}
|
13419 |
+
|
13420 |
+
attachTo.setImmediate = setImmediate;
|
13421 |
+
attachTo.clearImmediate = clearImmediate;
|
13422 |
+
}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
|
13423 |
+
|
13424 |
+
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4), __webpack_require__(3)))
|
13425 |
+
|
13426 |
+
/***/ }),
|
13427 |
+
/* 9 */
|
13428 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13429 |
+
|
13430 |
+
var __vue_script__, __vue_template__
|
13431 |
+
__webpack_require__(10)
|
13432 |
+
__vue_script__ = __webpack_require__(12)
|
13433 |
+
__vue_template__ = __webpack_require__(36)
|
13434 |
+
module.exports = __vue_script__ || {}
|
13435 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
13436 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
13437 |
+
if (false) {(function () { module.hot.accept()
|
13438 |
+
var hotAPI = require("vue-hot-reload-api")
|
13439 |
+
hotAPI.install(require("vue"), true)
|
13440 |
+
if (!hotAPI.compatible) return
|
13441 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/main.vue"
|
13442 |
+
if (!module.hot.data) {
|
13443 |
+
hotAPI.createRecord(id, module.exports)
|
13444 |
+
} else {
|
13445 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
13446 |
+
}
|
13447 |
+
})()}
|
13448 |
+
|
13449 |
+
/***/ }),
|
13450 |
+
/* 10 */
|
13451 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13452 |
+
|
13453 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
13454 |
+
|
13455 |
+
// load the styles
|
13456 |
+
var content = __webpack_require__(11);
|
13457 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
13458 |
+
// add the styles to the DOM
|
13459 |
+
var update = __webpack_require__(1)(content, {});
|
13460 |
+
if(content.locals) module.exports = content.locals;
|
13461 |
+
// Hot Module Replacement
|
13462 |
+
if(false) {
|
13463 |
+
// When the styles change, update the <style> tags
|
13464 |
+
if(!content.locals) {
|
13465 |
+
module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-3e3bd708&file=main.vue!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./main.vue", function() {
|
13466 |
+
var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-3e3bd708&file=main.vue!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./main.vue");
|
13467 |
+
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
13468 |
+
update(newContent);
|
13469 |
+
});
|
13470 |
+
}
|
13471 |
+
// When the module is disposed, remove the <style> tags
|
13472 |
+
module.hot.dispose(function() { update(); });
|
13473 |
+
}
|
13474 |
+
|
13475 |
+
/***/ }),
|
13476 |
+
/* 11 */
|
13477 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13478 |
+
|
13479 |
+
exports = module.exports = __webpack_require__(0)();
|
13480 |
+
// imports
|
13481 |
+
|
13482 |
+
|
13483 |
+
// module
|
13484 |
+
exports.push([module.i, "#optimole-app {\n padding: 0 30px 0 20px;\n /*! bulma.io v0.7.1 | MIT License | github.com/jgthms/bulma */\n /*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */ }\n\n@keyframes spinAround {\n from {\n transform: rotate(0deg); }\n to {\n transform: rotate(359deg); } }\n #optimole-app .delete, #optimole-app .modal-close, #optimole-app .is-unselectable, #optimole-app .button, #optimole-app .file, #optimole-app .breadcrumb, #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis, #optimole-app .tabs {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n #optimole-app .select:not(.is-multiple):not(.is-loading)::after, #optimole-app .navbar-link::after {\n border: 3px solid transparent;\n border-radius: 2px;\n border-right: 0;\n border-top: 0;\n content: \" \";\n display: block;\n height: 0.625em;\n margin-top: -0.4375em;\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: rotate(-45deg);\n transform-origin: center;\n width: 0.625em; }\n #optimole-app .box:not(:last-child), #optimole-app .content:not(:last-child), #optimole-app .notification:not(:last-child), #optimole-app .progress:not(:last-child), #optimole-app .table:not(:last-child), #optimole-app .table-container:not(:last-child), #optimole-app .title:not(:last-child),\n #optimole-app .subtitle:not(:last-child), #optimole-app .block:not(:last-child), #optimole-app .highlight:not(:last-child), #optimole-app .breadcrumb:not(:last-child), #optimole-app .level:not(:last-child), #optimole-app .message:not(:last-child), #optimole-app .tabs:not(:last-child) {\n margin-bottom: 1.5rem; }\n #optimole-app .delete, #optimole-app .modal-close {\n -moz-appearance: none;\n -webkit-appearance: none;\n background-color: rgba(10, 10, 10, 0.2);\n border: none;\n border-radius: 290486px;\n cursor: pointer;\n display: inline-block;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n font-size: 0;\n height: 20px;\n max-height: 20px;\n max-width: 20px;\n min-height: 20px;\n min-width: 20px;\n outline: none;\n position: relative;\n vertical-align: top;\n width: 20px; }\n #optimole-app .delete::before, #optimole-app .modal-close::before, #optimole-app .delete::after, #optimole-app .modal-close::after {\n background-color: white;\n content: \"\";\n display: block;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\n transform-origin: center center; }\n #optimole-app .delete::before, #optimole-app .modal-close::before {\n height: 2px;\n width: 50%; }\n #optimole-app .delete::after, #optimole-app .modal-close::after {\n height: 50%;\n width: 2px; }\n #optimole-app .delete:hover, #optimole-app .modal-close:hover, #optimole-app .delete:focus, #optimole-app .modal-close:focus {\n background-color: rgba(10, 10, 10, 0.3); }\n #optimole-app .delete:active, #optimole-app .modal-close:active {\n background-color: rgba(10, 10, 10, 0.4); }\n #optimole-app .is-small.delete, #optimole-app .is-small.modal-close {\n height: 16px;\n max-height: 16px;\n max-width: 16px;\n min-height: 16px;\n min-width: 16px;\n width: 16px; }\n #optimole-app .is-medium.delete, #optimole-app .is-medium.modal-close {\n height: 24px;\n max-height: 24px;\n max-width: 24px;\n min-height: 24px;\n min-width: 24px;\n width: 24px; }\n #optimole-app .is-large.delete, #optimole-app .is-large.modal-close {\n height: 32px;\n max-height: 32px;\n max-width: 32px;\n min-height: 32px;\n min-width: 32px;\n width: 32px; }\n #optimole-app .button.is-loading::after, #optimole-app .select.is-loading::after, #optimole-app .control.is-loading::after, #optimole-app .loader {\n animation: spinAround 500ms infinite linear;\n border: 2px solid #dbdbdb;\n border-radius: 290486px;\n border-right-color: transparent;\n border-top-color: transparent;\n content: \"\";\n display: block;\n height: 1em;\n position: relative;\n width: 1em; }\n #optimole-app .is-overlay, #optimole-app .image.is-square img, #optimole-app .image.is-1by1 img, #optimole-app .image.is-5by4 img, #optimole-app .image.is-4by3 img, #optimole-app .image.is-3by2 img, #optimole-app .image.is-5by3 img, #optimole-app .image.is-16by9 img, #optimole-app .image.is-2by1 img, #optimole-app .image.is-3by1 img, #optimole-app .image.is-4by5 img, #optimole-app .image.is-3by4 img, #optimole-app .image.is-2by3 img, #optimole-app .image.is-3by5 img, #optimole-app .image.is-9by16 img, #optimole-app .image.is-1by2 img, #optimole-app .image.is-1by3 img, #optimole-app .modal, #optimole-app .modal-background, #optimole-app .hero-video {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0; }\n #optimole-app .button, #optimole-app .input,\n #optimole-app .textarea, #optimole-app .select select, #optimole-app .file-cta,\n #optimole-app .file-name, #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis {\n -moz-appearance: none;\n -webkit-appearance: none;\n -ms-flex-align: center;\n align-items: center;\n border: 1px solid transparent;\n border-radius: 4px;\n box-shadow: none;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 1rem;\n height: 2.25em;\n -ms-flex-pack: start;\n justify-content: flex-start;\n line-height: 1.5;\n padding-bottom: calc(0.375em - 1px);\n padding-left: calc(0.625em - 1px);\n padding-right: calc(0.625em - 1px);\n padding-top: calc(0.375em - 1px);\n position: relative;\n vertical-align: top; }\n #optimole-app .button:focus, #optimole-app .input:focus,\n #optimole-app .textarea:focus, #optimole-app .select select:focus, #optimole-app .file-cta:focus,\n #optimole-app .file-name:focus, #optimole-app .pagination-previous:focus,\n #optimole-app .pagination-next:focus,\n #optimole-app .pagination-link:focus,\n #optimole-app .pagination-ellipsis:focus, #optimole-app .is-focused.button, #optimole-app .is-focused.input,\n #optimole-app .is-focused.textarea, #optimole-app .select select.is-focused, #optimole-app .is-focused.file-cta,\n #optimole-app .is-focused.file-name, #optimole-app .is-focused.pagination-previous,\n #optimole-app .is-focused.pagination-next,\n #optimole-app .is-focused.pagination-link,\n #optimole-app .is-focused.pagination-ellipsis, #optimole-app .button:active, #optimole-app .input:active,\n #optimole-app .textarea:active, #optimole-app .select select:active, #optimole-app .file-cta:active,\n #optimole-app .file-name:active, #optimole-app .pagination-previous:active,\n #optimole-app .pagination-next:active,\n #optimole-app .pagination-link:active,\n #optimole-app .pagination-ellipsis:active, #optimole-app .is-active.button, #optimole-app .is-active.input,\n #optimole-app .is-active.textarea, #optimole-app .select select.is-active, #optimole-app .is-active.file-cta,\n #optimole-app .is-active.file-name, #optimole-app .is-active.pagination-previous,\n #optimole-app .is-active.pagination-next,\n #optimole-app .is-active.pagination-link,\n #optimole-app .is-active.pagination-ellipsis {\n outline: none; }\n #optimole-app .button[disabled], #optimole-app .input[disabled],\n #optimole-app .textarea[disabled], #optimole-app .select select[disabled], #optimole-app .file-cta[disabled],\n #optimole-app .file-name[disabled], #optimole-app .pagination-previous[disabled],\n #optimole-app .pagination-next[disabled],\n #optimole-app .pagination-link[disabled],\n #optimole-app .pagination-ellipsis[disabled] {\n cursor: not-allowed; }\n #optimole-app html,\n #optimole-app body,\n #optimole-app p,\n #optimole-app ol,\n #optimole-app ul,\n #optimole-app li,\n #optimole-app dl,\n #optimole-app dt,\n #optimole-app dd,\n #optimole-app blockquote,\n #optimole-app figure,\n #optimole-app fieldset,\n #optimole-app legend,\n #optimole-app textarea,\n #optimole-app pre,\n #optimole-app iframe,\n #optimole-app hr,\n #optimole-app h1,\n #optimole-app h2,\n #optimole-app h3,\n #optimole-app h4,\n #optimole-app h5,\n #optimole-app h6 {\n margin: 0;\n padding: 0; }\n #optimole-app h1,\n #optimole-app h2,\n #optimole-app h3,\n #optimole-app h4,\n #optimole-app h5,\n #optimole-app h6 {\n font-size: 100%;\n font-weight: normal; }\n #optimole-app ul {\n list-style: none; }\n #optimole-app button,\n #optimole-app input,\n #optimole-app select,\n #optimole-app textarea {\n margin: 0; }\n #optimole-app html {\n box-sizing: border-box; }\n #optimole-app *, #optimole-app *::before, #optimole-app *::after {\n box-sizing: inherit; }\n #optimole-app img,\n #optimole-app audio,\n #optimole-app video {\n height: auto;\n max-width: 100%; }\n #optimole-app iframe {\n border: 0; }\n #optimole-app table {\n border-collapse: collapse;\n border-spacing: 0; }\n #optimole-app td,\n #optimole-app th {\n padding: 0;\n text-align: left; }\n #optimole-app html {\n background-color: white;\n font-size: 16px;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n min-width: 300px;\n overflow-x: hidden;\n overflow-y: scroll;\n text-rendering: optimizeLegibility;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n text-size-adjust: 100%; }\n #optimole-app article,\n #optimole-app aside,\n #optimole-app figure,\n #optimole-app footer,\n #optimole-app header,\n #optimole-app hgroup,\n #optimole-app section {\n display: block; }\n #optimole-app body,\n #optimole-app button,\n #optimole-app input,\n #optimole-app select,\n #optimole-app textarea {\n font-family: BlinkMacSystemFont, -apple-system, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", sans-serif; }\n #optimole-app code,\n #optimole-app pre {\n -moz-osx-font-smoothing: auto;\n -webkit-font-smoothing: auto;\n font-family: monospace; }\n #optimole-app body {\n color: #4a4a4a;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5; }\n #optimole-app a {\n color: #3273dc;\n cursor: pointer;\n text-decoration: none; }\n #optimole-app a strong {\n color: currentColor; }\n #optimole-app a:hover {\n color: #363636; }\n #optimole-app code {\n background-color: whitesmoke;\n color: #ff3860;\n font-size: 0.875em;\n font-weight: normal;\n padding: 0.25em 0.5em 0.25em; }\n #optimole-app hr {\n background-color: whitesmoke;\n border: none;\n display: block;\n height: 2px;\n margin: 1.5rem 0; }\n #optimole-app img {\n height: auto;\n max-width: 100%; }\n #optimole-app input[type=\"checkbox\"],\n #optimole-app input[type=\"radio\"] {\n vertical-align: baseline; }\n #optimole-app small {\n font-size: 0.875em; }\n #optimole-app span {\n font-style: inherit;\n font-weight: inherit; }\n #optimole-app strong {\n color: #363636;\n font-weight: 700; }\n #optimole-app pre {\n -webkit-overflow-scrolling: touch;\n background-color: whitesmoke;\n color: #4a4a4a;\n font-size: 0.875em;\n overflow-x: auto;\n padding: 1.25rem 1.5rem;\n white-space: pre;\n word-wrap: normal; }\n #optimole-app pre code {\n background-color: transparent;\n color: currentColor;\n font-size: 1em;\n padding: 0; }\n #optimole-app table td,\n #optimole-app table th {\n text-align: left;\n vertical-align: top; }\n #optimole-app table th {\n color: #363636; }\n #optimole-app .is-clearfix::after {\n clear: both;\n content: \" \";\n display: table; }\n #optimole-app .is-pulled-left {\n float: left !important; }\n #optimole-app .is-pulled-right {\n float: right !important; }\n #optimole-app .is-clipped {\n overflow: hidden !important; }\n #optimole-app .is-size-1 {\n font-size: 3rem !important; }\n #optimole-app .is-size-2 {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3 {\n font-size: 2rem !important; }\n #optimole-app .is-size-4 {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5 {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6 {\n font-size: 1rem !important; }\n #optimole-app .is-size-7 {\n font-size: 0.75rem !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-size-1-mobile {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-mobile {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-mobile {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-mobile {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-mobile {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-mobile {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-mobile {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-size-1-tablet {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-tablet {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-tablet {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-tablet {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-tablet {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-tablet {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-tablet {\n font-size: 0.75rem !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-size-1-touch {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-touch {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-touch {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-touch {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-touch {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-touch {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-touch {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-size-1-desktop {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-desktop {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-desktop {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-desktop {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-desktop {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-desktop {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-desktop {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-size-1-widescreen {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-widescreen {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-widescreen {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-widescreen {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-widescreen {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-widescreen {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-widescreen {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-size-1-fullhd {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-fullhd {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-fullhd {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-fullhd {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-fullhd {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-fullhd {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-fullhd {\n font-size: 0.75rem !important; } }\n #optimole-app .has-text-centered {\n text-align: center !important; }\n #optimole-app .has-text-justified {\n text-align: justify !important; }\n #optimole-app .has-text-left {\n text-align: left !important; }\n #optimole-app .has-text-right {\n text-align: right !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-centered-mobile {\n text-align: center !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-centered-tablet {\n text-align: center !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-centered-tablet-only {\n text-align: center !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-centered-touch {\n text-align: center !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-centered-desktop {\n text-align: center !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-centered-desktop-only {\n text-align: center !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-centered-widescreen {\n text-align: center !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-centered-widescreen-only {\n text-align: center !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-centered-fullhd {\n text-align: center !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-justified-mobile {\n text-align: justify !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-justified-tablet {\n text-align: justify !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-justified-tablet-only {\n text-align: justify !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-justified-touch {\n text-align: justify !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-justified-desktop {\n text-align: justify !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-justified-desktop-only {\n text-align: justify !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-justified-widescreen {\n text-align: justify !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-justified-widescreen-only {\n text-align: justify !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-justified-fullhd {\n text-align: justify !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-left-mobile {\n text-align: left !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-left-tablet {\n text-align: left !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-left-tablet-only {\n text-align: left !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-left-touch {\n text-align: left !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-left-desktop {\n text-align: left !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-left-desktop-only {\n text-align: left !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-left-widescreen {\n text-align: left !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-left-widescreen-only {\n text-align: left !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-left-fullhd {\n text-align: left !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-right-mobile {\n text-align: right !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-right-tablet {\n text-align: right !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-right-tablet-only {\n text-align: right !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-right-touch {\n text-align: right !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-right-desktop {\n text-align: right !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-right-desktop-only {\n text-align: right !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-right-widescreen {\n text-align: right !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-right-widescreen-only {\n text-align: right !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-right-fullhd {\n text-align: right !important; } }\n #optimole-app .is-capitalized {\n text-transform: capitalize !important; }\n #optimole-app .is-lowercase {\n text-transform: lowercase !important; }\n #optimole-app .is-uppercase {\n text-transform: uppercase !important; }\n #optimole-app .is-italic {\n font-style: italic !important; }\n #optimole-app .has-text-white {\n color: white !important; }\n #optimole-app a.has-text-white:hover, #optimole-app a.has-text-white:focus {\n color: #e6e6e6 !important; }\n #optimole-app .has-background-white {\n background-color: white !important; }\n #optimole-app .has-text-black {\n color: #0a0a0a !important; }\n #optimole-app a.has-text-black:hover, #optimole-app a.has-text-black:focus {\n color: black !important; }\n #optimole-app .has-background-black {\n background-color: #0a0a0a !important; }\n #optimole-app .has-text-light {\n color: whitesmoke !important; }\n #optimole-app a.has-text-light:hover, #optimole-app a.has-text-light:focus {\n color: #dbdbdb !important; }\n #optimole-app .has-background-light {\n background-color: whitesmoke !important; }\n #optimole-app .has-text-dark {\n color: #363636 !important; }\n #optimole-app a.has-text-dark:hover, #optimole-app a.has-text-dark:focus {\n color: #1c1c1c !important; }\n #optimole-app .has-background-dark {\n background-color: #363636 !important; }\n #optimole-app .has-text-primary {\n color: #e7602a !important; }\n #optimole-app a.has-text-primary:hover, #optimole-app a.has-text-primary:focus {\n color: #c84916 !important; }\n #optimole-app .has-background-primary {\n background-color: #e7602a !important; }\n #optimole-app .has-text-link {\n color: #3273dc !important; }\n #optimole-app a.has-text-link:hover, #optimole-app a.has-text-link:focus {\n color: #205bbc !important; }\n #optimole-app .has-background-link {\n background-color: #3273dc !important; }\n #optimole-app .has-text-info {\n color: #008ec2 !important; }\n #optimole-app a.has-text-info:hover, #optimole-app a.has-text-info:focus {\n color: #00698f !important; }\n #optimole-app .has-background-info {\n background-color: #008ec2 !important; }\n #optimole-app .has-text-success {\n color: #34a85e !important; }\n #optimole-app a.has-text-success:hover, #optimole-app a.has-text-success:focus {\n color: #288148 !important; }\n #optimole-app .has-background-success {\n background-color: #34a85e !important; }\n #optimole-app .has-text-warning {\n color: #ffdd57 !important; }\n #optimole-app a.has-text-warning:hover, #optimole-app a.has-text-warning:focus {\n color: #ffd324 !important; }\n #optimole-app .has-background-warning {\n background-color: #ffdd57 !important; }\n #optimole-app .has-text-danger {\n color: #d54222 !important; }\n #optimole-app a.has-text-danger:hover, #optimole-app a.has-text-danger:focus {\n color: #a9341b !important; }\n #optimole-app .has-background-danger {\n background-color: #d54222 !important; }\n #optimole-app .has-text-black-bis {\n color: #121212 !important; }\n #optimole-app .has-background-black-bis {\n background-color: #121212 !important; }\n #optimole-app .has-text-black-ter {\n color: #242424 !important; }\n #optimole-app .has-background-black-ter {\n background-color: #242424 !important; }\n #optimole-app .has-text-grey-darker {\n color: #363636 !important; }\n #optimole-app .has-background-grey-darker {\n background-color: #363636 !important; }\n #optimole-app .has-text-grey-dark {\n color: #4a4a4a !important; }\n #optimole-app .has-background-grey-dark {\n background-color: #4a4a4a !important; }\n #optimole-app .has-text-grey {\n color: #7a7a7a !important; }\n #optimole-app .has-background-grey {\n background-color: #7a7a7a !important; }\n #optimole-app .has-text-grey-light {\n color: #b5b5b5 !important; }\n #optimole-app .has-background-grey-light {\n background-color: #b5b5b5 !important; }\n #optimole-app .has-text-grey-lighter {\n color: #dbdbdb !important; }\n #optimole-app .has-background-grey-lighter {\n background-color: #dbdbdb !important; }\n #optimole-app .has-text-white-ter {\n color: whitesmoke !important; }\n #optimole-app .has-background-white-ter {\n background-color: whitesmoke !important; }\n #optimole-app .has-text-white-bis {\n color: #fafafa !important; }\n #optimole-app .has-background-white-bis {\n background-color: #fafafa !important; }\n #optimole-app .has-text-weight-light {\n font-weight: 300 !important; }\n #optimole-app .has-text-weight-normal {\n font-weight: 400 !important; }\n #optimole-app .has-text-weight-semibold {\n font-weight: 600 !important; }\n #optimole-app .has-text-weight-bold {\n font-weight: 700 !important; }\n #optimole-app .is-block {\n display: block !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-block-mobile {\n display: block !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-block-tablet {\n display: block !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-block-tablet-only {\n display: block !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-block-touch {\n display: block !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-block-desktop {\n display: block !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-block-desktop-only {\n display: block !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-block-widescreen {\n display: block !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-block-widescreen-only {\n display: block !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-block-fullhd {\n display: block !important; } }\n #optimole-app .is-flex {\n display: -ms-flexbox !important;\n display: flex !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-flex-mobile {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-flex-tablet {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-flex-tablet-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-flex-touch {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-flex-desktop {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-flex-desktop-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-flex-widescreen {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-flex-widescreen-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-flex-fullhd {\n display: -ms-flexbox !important;\n display: flex !important; } }\n #optimole-app .is-inline {\n display: inline !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-mobile {\n display: inline !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-tablet {\n display: inline !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-tablet-only {\n display: inline !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-touch {\n display: inline !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-desktop {\n display: inline !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-desktop-only {\n display: inline !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-widescreen {\n display: inline !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-widescreen-only {\n display: inline !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-fullhd {\n display: inline !important; } }\n #optimole-app .is-inline-block {\n display: inline-block !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-block-mobile {\n display: inline-block !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-block-tablet {\n display: inline-block !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-block-tablet-only {\n display: inline-block !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-block-touch {\n display: inline-block !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-block-desktop {\n display: inline-block !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-block-desktop-only {\n display: inline-block !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-block-widescreen {\n display: inline-block !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-block-widescreen-only {\n display: inline-block !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-block-fullhd {\n display: inline-block !important; } }\n #optimole-app .is-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-flex-mobile {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-flex-tablet {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-flex-tablet-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-flex-touch {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-flex-desktop {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-flex-desktop-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-flex-widescreen {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-flex-widescreen-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-flex-fullhd {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n #optimole-app .is-hidden {\n display: none !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-hidden-mobile {\n display: none !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-hidden-tablet {\n display: none !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-hidden-tablet-only {\n display: none !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-hidden-touch {\n display: none !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-hidden-desktop {\n display: none !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-hidden-desktop-only {\n display: none !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-hidden-widescreen {\n display: none !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-hidden-widescreen-only {\n display: none !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-hidden-fullhd {\n display: none !important; } }\n #optimole-app .is-invisible {\n visibility: hidden !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-invisible-mobile {\n visibility: hidden !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-invisible-tablet {\n visibility: hidden !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-invisible-tablet-only {\n visibility: hidden !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-invisible-touch {\n visibility: hidden !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-invisible-desktop {\n visibility: hidden !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-invisible-desktop-only {\n visibility: hidden !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-invisible-widescreen {\n visibility: hidden !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-invisible-widescreen-only {\n visibility: hidden !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-invisible-fullhd {\n visibility: hidden !important; } }\n #optimole-app .is-marginless {\n margin: 0 !important; }\n #optimole-app .is-paddingless {\n padding: 0 !important; }\n #optimole-app .is-radiusless {\n border-radius: 0 !important; }\n #optimole-app .is-shadowless {\n box-shadow: none !important; }\n #optimole-app .box {\n background-color: white;\n border-radius: 6px;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n color: #4a4a4a;\n display: block;\n padding: 1.25rem; }\n #optimole-app a.box:hover, #optimole-app a.box:focus {\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #3273dc; }\n #optimole-app a.box:active {\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #3273dc; }\n #optimole-app .button {\n background-color: white;\n border-color: #dbdbdb;\n border-width: 1px;\n color: #363636;\n cursor: pointer;\n -ms-flex-pack: center;\n justify-content: center;\n padding-bottom: calc(0.375em - 1px);\n padding-left: 0.75em;\n padding-right: 0.75em;\n padding-top: calc(0.375em - 1px);\n text-align: center;\n white-space: nowrap; }\n #optimole-app .button strong {\n color: inherit; }\n #optimole-app .button .icon, #optimole-app .button .icon.is-small, #optimole-app .button .icon.is-medium, #optimole-app .button .icon.is-large {\n height: 1.5em;\n width: 1.5em; }\n #optimole-app .button .icon:first-child:not(:last-child) {\n margin-left: calc(-0.375em - 1px);\n margin-right: 0.1875em; }\n #optimole-app .button .icon:last-child:not(:first-child) {\n margin-left: 0.1875em;\n margin-right: calc(-0.375em - 1px); }\n #optimole-app .button .icon:first-child:last-child {\n margin-left: calc(-0.375em - 1px);\n margin-right: calc(-0.375em - 1px); }\n #optimole-app .button:hover, #optimole-app .button.is-hovered {\n border-color: #b5b5b5;\n color: #363636; }\n #optimole-app .button:focus, #optimole-app .button.is-focused {\n border-color: #3273dc;\n color: #363636; }\n #optimole-app .button:focus:not(:active), #optimole-app .button.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .button:active, #optimole-app .button.is-active {\n border-color: #4a4a4a;\n color: #363636; }\n #optimole-app .button.is-text {\n background-color: transparent;\n border-color: transparent;\n color: #4a4a4a;\n text-decoration: underline; }\n #optimole-app .button.is-text:hover, #optimole-app .button.is-text.is-hovered, #optimole-app .button.is-text:focus, #optimole-app .button.is-text.is-focused {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-text:active, #optimole-app .button.is-text.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .button.is-text[disabled] {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-white {\n background-color: white;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:hover, #optimole-app .button.is-white.is-hovered {\n background-color: #f9f9f9;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:focus, #optimole-app .button.is-white.is-focused {\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:focus:not(:active), #optimole-app .button.is-white.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .button.is-white:active, #optimole-app .button.is-white.is-active {\n background-color: #f2f2f2;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white[disabled] {\n background-color: white;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-white.is-inverted {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-white.is-inverted:hover {\n background-color: black; }\n #optimole-app .button.is-white.is-inverted[disabled] {\n background-color: #0a0a0a;\n border-color: transparent;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-white.is-loading::after {\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\n #optimole-app .button.is-white.is-outlined {\n background-color: transparent;\n border-color: white;\n color: white; }\n #optimole-app .button.is-white.is-outlined:hover, #optimole-app .button.is-white.is-outlined:focus {\n background-color: white;\n border-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-white.is-outlined.is-loading::after {\n border-color: transparent transparent white white !important; }\n #optimole-app .button.is-white.is-outlined[disabled] {\n background-color: transparent;\n border-color: white;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-white.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #0a0a0a;\n color: #0a0a0a; }\n #optimole-app .button.is-white.is-inverted.is-outlined:hover, #optimole-app .button.is-white.is-inverted.is-outlined:focus {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-white.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #0a0a0a;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black {\n background-color: #0a0a0a;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:hover, #optimole-app .button.is-black.is-hovered {\n background-color: #040404;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:focus, #optimole-app .button.is-black.is-focused {\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:focus:not(:active), #optimole-app .button.is-black.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .button.is-black:active, #optimole-app .button.is-black.is-active {\n background-color: black;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black[disabled] {\n background-color: #0a0a0a;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-black.is-inverted {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-black.is-inverted[disabled] {\n background-color: white;\n border-color: transparent;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-loading::after {\n border-color: transparent transparent white white !important; }\n #optimole-app .button.is-black.is-outlined {\n background-color: transparent;\n border-color: #0a0a0a;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-outlined:hover, #optimole-app .button.is-black.is-outlined:focus {\n background-color: #0a0a0a;\n border-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-black.is-outlined.is-loading::after {\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\n #optimole-app .button.is-black.is-outlined[disabled] {\n background-color: transparent;\n border-color: #0a0a0a;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted.is-outlined {\n background-color: transparent;\n border-color: white;\n color: white; }\n #optimole-app .button.is-black.is-inverted.is-outlined:hover, #optimole-app .button.is-black.is-inverted.is-outlined:focus {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: white;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-light {\n background-color: whitesmoke;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:hover, #optimole-app .button.is-light.is-hovered {\n background-color: #eeeeee;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:focus, #optimole-app .button.is-light.is-focused {\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:focus:not(:active), #optimole-app .button.is-light.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .button.is-light:active, #optimole-app .button.is-light.is-active {\n background-color: #e8e8e8;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light[disabled] {\n background-color: whitesmoke;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-light.is-inverted {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted:hover {\n background-color: #292929; }\n #optimole-app .button.is-light.is-inverted[disabled] {\n background-color: #363636;\n border-color: transparent;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-loading::after {\n border-color: transparent transparent #363636 #363636 !important; }\n #optimole-app .button.is-light.is-outlined {\n background-color: transparent;\n border-color: whitesmoke;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-outlined:hover, #optimole-app .button.is-light.is-outlined:focus {\n background-color: whitesmoke;\n border-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-light.is-outlined.is-loading::after {\n border-color: transparent transparent whitesmoke whitesmoke !important; }\n #optimole-app .button.is-light.is-outlined[disabled] {\n background-color: transparent;\n border-color: whitesmoke;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #363636;\n color: #363636; }\n #optimole-app .button.is-light.is-inverted.is-outlined:hover, #optimole-app .button.is-light.is-inverted.is-outlined:focus {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #363636;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark {\n background-color: #363636;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:hover, #optimole-app .button.is-dark.is-hovered {\n background-color: #2f2f2f;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:focus, #optimole-app .button.is-dark.is-focused {\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:focus:not(:active), #optimole-app .button.is-dark.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .button.is-dark:active, #optimole-app .button.is-dark.is-active {\n background-color: #292929;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark[disabled] {\n background-color: #363636;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-dark.is-inverted {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted:hover {\n background-color: #e8e8e8; }\n #optimole-app .button.is-dark.is-inverted[disabled] {\n background-color: whitesmoke;\n border-color: transparent;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark.is-loading::after {\n border-color: transparent transparent whitesmoke whitesmoke !important; }\n #optimole-app .button.is-dark.is-outlined {\n background-color: transparent;\n border-color: #363636;\n color: #363636; }\n #optimole-app .button.is-dark.is-outlined:hover, #optimole-app .button.is-dark.is-outlined:focus {\n background-color: #363636;\n border-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-dark.is-outlined.is-loading::after {\n border-color: transparent transparent #363636 #363636 !important; }\n #optimole-app .button.is-dark.is-outlined[disabled] {\n background-color: transparent;\n border-color: #363636;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted.is-outlined {\n background-color: transparent;\n border-color: whitesmoke;\n color: whitesmoke; }\n #optimole-app .button.is-dark.is-inverted.is-outlined:hover, #optimole-app .button.is-dark.is-inverted.is-outlined:focus {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: whitesmoke;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-primary {\n background-color: #e7602a;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:hover, #optimole-app .button.is-primary.is-hovered {\n background-color: #e6571f;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:focus, #optimole-app .button.is-primary.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:focus:not(:active), #optimole-app .button.is-primary.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .button.is-primary:active, #optimole-app .button.is-primary.is-active {\n background-color: #de5119;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary[disabled] {\n background-color: #e7602a;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-primary.is-inverted {\n background-color: #fff;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-primary.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-primary.is-outlined {\n background-color: transparent;\n border-color: #e7602a;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-outlined:hover, #optimole-app .button.is-primary.is-outlined:focus {\n background-color: #e7602a;\n border-color: #e7602a;\n color: #fff; }\n #optimole-app .button.is-primary.is-outlined.is-loading::after {\n border-color: transparent transparent #e7602a #e7602a !important; }\n #optimole-app .button.is-primary.is-outlined[disabled] {\n background-color: transparent;\n border-color: #e7602a;\n box-shadow: none;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-primary.is-inverted.is-outlined:hover, #optimole-app .button.is-primary.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-link {\n background-color: #3273dc;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:hover, #optimole-app .button.is-link.is-hovered {\n background-color: #276cda;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:focus, #optimole-app .button.is-link.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:focus:not(:active), #optimole-app .button.is-link.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .button.is-link:active, #optimole-app .button.is-link.is-active {\n background-color: #2366d1;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link[disabled] {\n background-color: #3273dc;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-link.is-inverted {\n background-color: #fff;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-link.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #3273dc; }\n #optimole-app .button.is-link.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-link.is-outlined {\n background-color: transparent;\n border-color: #3273dc;\n color: #3273dc; }\n #optimole-app .button.is-link.is-outlined:hover, #optimole-app .button.is-link.is-outlined:focus {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .button.is-link.is-outlined.is-loading::after {\n border-color: transparent transparent #3273dc #3273dc !important; }\n #optimole-app .button.is-link.is-outlined[disabled] {\n background-color: transparent;\n border-color: #3273dc;\n box-shadow: none;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-link.is-inverted.is-outlined:hover, #optimole-app .button.is-link.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-info {\n background-color: #008ec2;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:hover, #optimole-app .button.is-info.is-hovered {\n background-color: #0085b5;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:focus, #optimole-app .button.is-info.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:focus:not(:active), #optimole-app .button.is-info.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .button.is-info:active, #optimole-app .button.is-info.is-active {\n background-color: #007ba9;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info[disabled] {\n background-color: #008ec2;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-info.is-inverted {\n background-color: #fff;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-info.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #008ec2; }\n #optimole-app .button.is-info.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-info.is-outlined {\n background-color: transparent;\n border-color: #008ec2;\n color: #008ec2; }\n #optimole-app .button.is-info.is-outlined:hover, #optimole-app .button.is-info.is-outlined:focus {\n background-color: #008ec2;\n border-color: #008ec2;\n color: #fff; }\n #optimole-app .button.is-info.is-outlined.is-loading::after {\n border-color: transparent transparent #008ec2 #008ec2 !important; }\n #optimole-app .button.is-info.is-outlined[disabled] {\n background-color: transparent;\n border-color: #008ec2;\n box-shadow: none;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-info.is-inverted.is-outlined:hover, #optimole-app .button.is-info.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-success {\n background-color: #34a85e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:hover, #optimole-app .button.is-success.is-hovered {\n background-color: #319e59;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:focus, #optimole-app .button.is-success.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:focus:not(:active), #optimole-app .button.is-success.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .button.is-success:active, #optimole-app .button.is-success.is-active {\n background-color: #2e9553;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success[disabled] {\n background-color: #34a85e;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-success.is-inverted {\n background-color: #fff;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-success.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #34a85e; }\n #optimole-app .button.is-success.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-success.is-outlined {\n background-color: transparent;\n border-color: #34a85e;\n color: #34a85e; }\n #optimole-app .button.is-success.is-outlined:hover, #optimole-app .button.is-success.is-outlined:focus {\n background-color: #34a85e;\n border-color: #34a85e;\n color: #fff; }\n #optimole-app .button.is-success.is-outlined.is-loading::after {\n border-color: transparent transparent #34a85e #34a85e !important; }\n #optimole-app .button.is-success.is-outlined[disabled] {\n background-color: transparent;\n border-color: #34a85e;\n box-shadow: none;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-success.is-inverted.is-outlined:hover, #optimole-app .button.is-success.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-warning {\n background-color: #ffdd57;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:hover, #optimole-app .button.is-warning.is-hovered {\n background-color: #ffdb4a;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:focus, #optimole-app .button.is-warning.is-focused {\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:focus:not(:active), #optimole-app .button.is-warning.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .button.is-warning:active, #optimole-app .button.is-warning.is-active {\n background-color: #ffd83d;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning[disabled] {\n background-color: #ffdd57;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-warning.is-inverted {\n background-color: rgba(0, 0, 0, 0.7);\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted:hover {\n background-color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-inverted[disabled] {\n background-color: rgba(0, 0, 0, 0.7);\n border-color: transparent;\n box-shadow: none;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-loading::after {\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\n #optimole-app .button.is-warning.is-outlined {\n background-color: transparent;\n border-color: #ffdd57;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-outlined:hover, #optimole-app .button.is-warning.is-outlined:focus {\n background-color: #ffdd57;\n border-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-outlined.is-loading::after {\n border-color: transparent transparent #ffdd57 #ffdd57 !important; }\n #optimole-app .button.is-warning.is-outlined[disabled] {\n background-color: transparent;\n border-color: #ffdd57;\n box-shadow: none;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted.is-outlined {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.7);\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-inverted.is-outlined:hover, #optimole-app .button.is-warning.is-inverted.is-outlined:focus {\n background-color: rgba(0, 0, 0, 0.7);\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.7);\n box-shadow: none;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-danger {\n background-color: #d54222;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:hover, #optimole-app .button.is-danger.is-hovered {\n background-color: #ca3f20;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:focus, #optimole-app .button.is-danger.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:focus:not(:active), #optimole-app .button.is-danger.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .button.is-danger:active, #optimole-app .button.is-danger.is-active {\n background-color: #bf3b1e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger[disabled] {\n background-color: #d54222;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-danger.is-inverted {\n background-color: #fff;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-danger.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #d54222; }\n #optimole-app .button.is-danger.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-danger.is-outlined {\n background-color: transparent;\n border-color: #d54222;\n color: #d54222; }\n #optimole-app .button.is-danger.is-outlined:hover, #optimole-app .button.is-danger.is-outlined:focus {\n background-color: #d54222;\n border-color: #d54222;\n color: #fff; }\n #optimole-app .button.is-danger.is-outlined.is-loading::after {\n border-color: transparent transparent #d54222 #d54222 !important; }\n #optimole-app .button.is-danger.is-outlined[disabled] {\n background-color: transparent;\n border-color: #d54222;\n box-shadow: none;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-danger.is-inverted.is-outlined:hover, #optimole-app .button.is-danger.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .button.is-medium {\n font-size: 1.25rem; }\n #optimole-app .button.is-large {\n font-size: 1.5rem; }\n #optimole-app .button[disabled] {\n background-color: white;\n border-color: #dbdbdb;\n box-shadow: none;\n opacity: 0.5; }\n #optimole-app .button.is-fullwidth {\n display: -ms-flexbox;\n display: flex;\n width: 100%; }\n #optimole-app .button.is-loading {\n color: transparent !important;\n pointer-events: none; }\n #optimole-app .button.is-loading::after {\n position: absolute;\n left: calc(50% - (1em / 2));\n top: calc(50% - (1em / 2));\n position: absolute !important; }\n #optimole-app .button.is-static {\n background-color: whitesmoke;\n border-color: #dbdbdb;\n color: #7a7a7a;\n box-shadow: none;\n pointer-events: none; }\n #optimole-app .button.is-rounded {\n border-radius: 290486px;\n padding-left: 1em;\n padding-right: 1em; }\n #optimole-app .buttons {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .buttons .button {\n margin-bottom: 0.5rem; }\n #optimole-app .buttons .button:not(:last-child) {\n margin-right: 0.5rem; }\n #optimole-app .buttons:last-child {\n margin-bottom: -0.5rem; }\n #optimole-app .buttons:not(:last-child) {\n margin-bottom: 1rem; }\n #optimole-app .buttons.has-addons .button:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .buttons.has-addons .button:not(:last-child) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n margin-right: -1px; }\n #optimole-app .buttons.has-addons .button:last-child {\n margin-right: 0; }\n #optimole-app .buttons.has-addons .button:hover, #optimole-app .buttons.has-addons .button.is-hovered {\n z-index: 2; }\n #optimole-app .buttons.has-addons .button:focus, #optimole-app .buttons.has-addons .button.is-focused, #optimole-app .buttons.has-addons .button:active, #optimole-app .buttons.has-addons .button.is-active, #optimole-app .buttons.has-addons .button.is-selected {\n z-index: 3; }\n #optimole-app .buttons.has-addons .button:focus:hover, #optimole-app .buttons.has-addons .button.is-focused:hover, #optimole-app .buttons.has-addons .button:active:hover, #optimole-app .buttons.has-addons .button.is-active:hover, #optimole-app .buttons.has-addons .button.is-selected:hover {\n z-index: 4; }\n #optimole-app .buttons.has-addons .button.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .buttons.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .buttons.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .container {\n margin: 0 auto;\n position: relative; }\n @media screen and (min-width: 1088px) {\n #optimole-app .container {\n max-width: 960px;\n width: 960px; }\n #optimole-app .container.is-fluid {\n margin-left: 64px;\n margin-right: 64px;\n max-width: none;\n width: auto; } }\n @media screen and (max-width: 1279px) {\n #optimole-app .container.is-widescreen {\n max-width: 1152px;\n width: auto; } }\n @media screen and (max-width: 1471px) {\n #optimole-app .container.is-fullhd {\n max-width: 1344px;\n width: auto; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .container {\n max-width: 1152px;\n width: 1152px; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .container {\n max-width: 1344px;\n width: 1344px; } }\n #optimole-app .content li + li {\n margin-top: 0.25em; }\n #optimole-app .content p:not(:last-child),\n #optimole-app .content dl:not(:last-child),\n #optimole-app .content ol:not(:last-child),\n #optimole-app .content ul:not(:last-child),\n #optimole-app .content blockquote:not(:last-child),\n #optimole-app .content pre:not(:last-child),\n #optimole-app .content table:not(:last-child) {\n margin-bottom: 1em; }\n #optimole-app .content h1,\n #optimole-app .content h2,\n #optimole-app .content h3,\n #optimole-app .content h4,\n #optimole-app .content h5,\n #optimole-app .content h6 {\n color: #363636;\n font-weight: 600;\n line-height: 1.125; }\n #optimole-app .content h1 {\n font-size: 2em;\n margin-bottom: 0.5em; }\n #optimole-app .content h1:not(:first-child) {\n margin-top: 1em; }\n #optimole-app .content h2 {\n font-size: 1.75em;\n margin-bottom: 0.5714em; }\n #optimole-app .content h2:not(:first-child) {\n margin-top: 1.1428em; }\n #optimole-app .content h3 {\n font-size: 1.5em;\n margin-bottom: 0.6666em; }\n #optimole-app .content h3:not(:first-child) {\n margin-top: 1.3333em; }\n #optimole-app .content h4 {\n font-size: 1.25em;\n margin-bottom: 0.8em; }\n #optimole-app .content h5 {\n font-size: 1.125em;\n margin-bottom: 0.8888em; }\n #optimole-app .content h6 {\n font-size: 1em;\n margin-bottom: 1em; }\n #optimole-app .content blockquote {\n background-color: whitesmoke;\n border-left: 5px solid #dbdbdb;\n padding: 1.25em 1.5em; }\n #optimole-app .content ol {\n list-style: decimal outside;\n margin-left: 2em;\n margin-top: 1em; }\n #optimole-app .content ul {\n list-style: disc outside;\n margin-left: 2em;\n margin-top: 1em; }\n #optimole-app .content ul ul {\n list-style-type: circle;\n margin-top: 0.5em; }\n #optimole-app .content ul ul ul {\n list-style-type: square; }\n #optimole-app .content dd {\n margin-left: 2em; }\n #optimole-app .content figure {\n margin-left: 2em;\n margin-right: 2em;\n text-align: center; }\n #optimole-app .content figure:not(:first-child) {\n margin-top: 2em; }\n #optimole-app .content figure:not(:last-child) {\n margin-bottom: 2em; }\n #optimole-app .content figure img {\n display: inline-block; }\n #optimole-app .content figure figcaption {\n font-style: italic; }\n #optimole-app .content pre {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding: 1.25em 1.5em;\n white-space: pre;\n word-wrap: normal; }\n #optimole-app .content sup,\n #optimole-app .content sub {\n font-size: 75%; }\n #optimole-app .content table {\n width: 100%; }\n #optimole-app .content table td,\n #optimole-app .content table th {\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px;\n padding: 0.5em 0.75em;\n vertical-align: top; }\n #optimole-app .content table th {\n color: #363636;\n text-align: left; }\n #optimole-app .content table thead td,\n #optimole-app .content table thead th {\n border-width: 0 0 2px;\n color: #363636; }\n #optimole-app .content table tfoot td,\n #optimole-app .content table tfoot th {\n border-width: 2px 0 0;\n color: #363636; }\n #optimole-app .content table tbody tr:last-child td,\n #optimole-app .content table tbody tr:last-child th {\n border-bottom-width: 0; }\n #optimole-app .content.is-small {\n font-size: 0.75rem; }\n #optimole-app .content.is-medium {\n font-size: 1.25rem; }\n #optimole-app .content.is-large {\n font-size: 1.5rem; }\n #optimole-app .input,\n #optimole-app .textarea {\n background-color: white;\n border-color: #dbdbdb;\n color: #363636;\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);\n max-width: 100%;\n width: 100%; }\n #optimole-app .input::-moz-placeholder,\n #optimole-app .textarea::-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input::-webkit-input-placeholder,\n #optimole-app .textarea::-webkit-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:-moz-placeholder,\n #optimole-app .textarea:-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:-ms-input-placeholder,\n #optimole-app .textarea:-ms-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:hover, #optimole-app .input.is-hovered,\n #optimole-app .textarea:hover,\n #optimole-app .textarea.is-hovered {\n border-color: #b5b5b5; }\n #optimole-app .input:focus, #optimole-app .input.is-focused, #optimole-app .input:active, #optimole-app .input.is-active,\n #optimole-app .textarea:focus,\n #optimole-app .textarea.is-focused,\n #optimole-app .textarea:active,\n #optimole-app .textarea.is-active {\n border-color: #3273dc;\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .input[disabled],\n #optimole-app .textarea[disabled] {\n background-color: whitesmoke;\n border-color: whitesmoke;\n box-shadow: none;\n color: #7a7a7a; }\n #optimole-app .input[disabled]::-moz-placeholder,\n #optimole-app .textarea[disabled]::-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]::-webkit-input-placeholder,\n #optimole-app .textarea[disabled]::-webkit-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]:-moz-placeholder,\n #optimole-app .textarea[disabled]:-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]:-ms-input-placeholder,\n #optimole-app .textarea[disabled]:-ms-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[readonly],\n #optimole-app .textarea[readonly] {\n box-shadow: none; }\n #optimole-app .input.is-white,\n #optimole-app .textarea.is-white {\n border-color: white; }\n #optimole-app .input.is-white:focus, #optimole-app .input.is-white.is-focused, #optimole-app .input.is-white:active, #optimole-app .input.is-white.is-active,\n #optimole-app .textarea.is-white:focus,\n #optimole-app .textarea.is-white.is-focused,\n #optimole-app .textarea.is-white:active,\n #optimole-app .textarea.is-white.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .input.is-black,\n #optimole-app .textarea.is-black {\n border-color: #0a0a0a; }\n #optimole-app .input.is-black:focus, #optimole-app .input.is-black.is-focused, #optimole-app .input.is-black:active, #optimole-app .input.is-black.is-active,\n #optimole-app .textarea.is-black:focus,\n #optimole-app .textarea.is-black.is-focused,\n #optimole-app .textarea.is-black:active,\n #optimole-app .textarea.is-black.is-active {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .input.is-light,\n #optimole-app .textarea.is-light {\n border-color: whitesmoke; }\n #optimole-app .input.is-light:focus, #optimole-app .input.is-light.is-focused, #optimole-app .input.is-light:active, #optimole-app .input.is-light.is-active,\n #optimole-app .textarea.is-light:focus,\n #optimole-app .textarea.is-light.is-focused,\n #optimole-app .textarea.is-light:active,\n #optimole-app .textarea.is-light.is-active {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .input.is-dark,\n #optimole-app .textarea.is-dark {\n border-color: #363636; }\n #optimole-app .input.is-dark:focus, #optimole-app .input.is-dark.is-focused, #optimole-app .input.is-dark:active, #optimole-app .input.is-dark.is-active,\n #optimole-app .textarea.is-dark:focus,\n #optimole-app .textarea.is-dark.is-focused,\n #optimole-app .textarea.is-dark:active,\n #optimole-app .textarea.is-dark.is-active {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .input.is-primary,\n #optimole-app .textarea.is-primary {\n border-color: #e7602a; }\n #optimole-app .input.is-primary:focus, #optimole-app .input.is-primary.is-focused, #optimole-app .input.is-primary:active, #optimole-app .input.is-primary.is-active,\n #optimole-app .textarea.is-primary:focus,\n #optimole-app .textarea.is-primary.is-focused,\n #optimole-app .textarea.is-primary:active,\n #optimole-app .textarea.is-primary.is-active {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .input.is-link,\n #optimole-app .textarea.is-link {\n border-color: #3273dc; }\n #optimole-app .input.is-link:focus, #optimole-app .input.is-link.is-focused, #optimole-app .input.is-link:active, #optimole-app .input.is-link.is-active,\n #optimole-app .textarea.is-link:focus,\n #optimole-app .textarea.is-link.is-focused,\n #optimole-app .textarea.is-link:active,\n #optimole-app .textarea.is-link.is-active {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .input.is-info,\n #optimole-app .textarea.is-info {\n border-color: #008ec2; }\n #optimole-app .input.is-info:focus, #optimole-app .input.is-info.is-focused, #optimole-app .input.is-info:active, #optimole-app .input.is-info.is-active,\n #optimole-app .textarea.is-info:focus,\n #optimole-app .textarea.is-info.is-focused,\n #optimole-app .textarea.is-info:active,\n #optimole-app .textarea.is-info.is-active {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .input.is-success,\n #optimole-app .textarea.is-success {\n border-color: #34a85e; }\n #optimole-app .input.is-success:focus, #optimole-app .input.is-success.is-focused, #optimole-app .input.is-success:active, #optimole-app .input.is-success.is-active,\n #optimole-app .textarea.is-success:focus,\n #optimole-app .textarea.is-success.is-focused,\n #optimole-app .textarea.is-success:active,\n #optimole-app .textarea.is-success.is-active {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .input.is-warning,\n #optimole-app .textarea.is-warning {\n border-color: #ffdd57; }\n #optimole-app .input.is-warning:focus, #optimole-app .input.is-warning.is-focused, #optimole-app .input.is-warning:active, #optimole-app .input.is-warning.is-active,\n #optimole-app .textarea.is-warning:focus,\n #optimole-app .textarea.is-warning.is-focused,\n #optimole-app .textarea.is-warning:active,\n #optimole-app .textarea.is-warning.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .input.is-danger,\n #optimole-app .textarea.is-danger {\n border-color: #d54222; }\n #optimole-app .input.is-danger:focus, #optimole-app .input.is-danger.is-focused, #optimole-app .input.is-danger:active, #optimole-app .input.is-danger.is-active,\n #optimole-app .textarea.is-danger:focus,\n #optimole-app .textarea.is-danger.is-focused,\n #optimole-app .textarea.is-danger:active,\n #optimole-app .textarea.is-danger.is-active {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .input.is-small,\n #optimole-app .textarea.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .input.is-medium,\n #optimole-app .textarea.is-medium {\n font-size: 1.25rem; }\n #optimole-app .input.is-large,\n #optimole-app .textarea.is-large {\n font-size: 1.5rem; }\n #optimole-app .input.is-fullwidth,\n #optimole-app .textarea.is-fullwidth {\n display: block;\n width: 100%; }\n #optimole-app .input.is-inline,\n #optimole-app .textarea.is-inline {\n display: inline;\n width: auto; }\n #optimole-app .input.is-rounded {\n border-radius: 290486px;\n padding-left: 1em;\n padding-right: 1em; }\n #optimole-app .input.is-static {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none;\n padding-left: 0;\n padding-right: 0; }\n #optimole-app .textarea {\n display: block;\n max-width: 100%;\n min-width: 100%;\n padding: 0.625em;\n resize: vertical; }\n #optimole-app .textarea:not([rows]) {\n max-height: 600px;\n min-height: 120px; }\n #optimole-app .textarea[rows] {\n height: initial; }\n #optimole-app .textarea.has-fixed-size {\n resize: none; }\n #optimole-app .checkbox,\n #optimole-app .radio {\n cursor: pointer;\n display: inline-block;\n line-height: 1.25;\n position: relative; }\n #optimole-app .checkbox input,\n #optimole-app .radio input {\n cursor: pointer; }\n #optimole-app .checkbox:hover,\n #optimole-app .radio:hover {\n color: #363636; }\n #optimole-app .checkbox[disabled],\n #optimole-app .radio[disabled] {\n color: #7a7a7a;\n cursor: not-allowed; }\n #optimole-app .radio + .radio {\n margin-left: 0.5em; }\n #optimole-app .select {\n display: inline-block;\n max-width: 100%;\n position: relative;\n vertical-align: top; }\n #optimole-app .select:not(.is-multiple) {\n height: 2.25em; }\n #optimole-app .select:not(.is-multiple):not(.is-loading)::after {\n border-color: #3273dc;\n right: 1.125em;\n z-index: 4; }\n #optimole-app .select.is-rounded select {\n border-radius: 290486px;\n padding-left: 1em; }\n #optimole-app .select select {\n background-color: white;\n border-color: #dbdbdb;\n color: #363636;\n cursor: pointer;\n display: block;\n font-size: 1em;\n max-width: 100%;\n outline: none; }\n #optimole-app .select select::-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select::-webkit-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:-ms-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:hover, #optimole-app .select select.is-hovered {\n border-color: #b5b5b5; }\n #optimole-app .select select:focus, #optimole-app .select select.is-focused, #optimole-app .select select:active, #optimole-app .select select.is-active {\n border-color: #3273dc;\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .select select[disabled] {\n background-color: whitesmoke;\n border-color: whitesmoke;\n box-shadow: none;\n color: #7a7a7a; }\n #optimole-app .select select[disabled]::-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]::-webkit-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]:-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]:-ms-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select::-ms-expand {\n display: none; }\n #optimole-app .select select[disabled]:hover {\n border-color: whitesmoke; }\n #optimole-app .select select:not([multiple]) {\n padding-right: 2.5em; }\n #optimole-app .select select[multiple] {\n height: initial;\n padding: 0; }\n #optimole-app .select select[multiple] option {\n padding: 0.5em 1em; }\n #optimole-app .select:not(.is-multiple):not(.is-loading):hover::after {\n border-color: #363636; }\n #optimole-app .select.is-white:not(:hover)::after {\n border-color: white; }\n #optimole-app .select.is-white select {\n border-color: white; }\n #optimole-app .select.is-white select:hover, #optimole-app .select.is-white select.is-hovered {\n border-color: #f2f2f2; }\n #optimole-app .select.is-white select:focus, #optimole-app .select.is-white select.is-focused, #optimole-app .select.is-white select:active, #optimole-app .select.is-white select.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .select.is-black:not(:hover)::after {\n border-color: #0a0a0a; }\n #optimole-app .select.is-black select {\n border-color: #0a0a0a; }\n #optimole-app .select.is-black select:hover, #optimole-app .select.is-black select.is-hovered {\n border-color: black; }\n #optimole-app .select.is-black select:focus, #optimole-app .select.is-black select.is-focused, #optimole-app .select.is-black select:active, #optimole-app .select.is-black select.is-active {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .select.is-light:not(:hover)::after {\n border-color: whitesmoke; }\n #optimole-app .select.is-light select {\n border-color: whitesmoke; }\n #optimole-app .select.is-light select:hover, #optimole-app .select.is-light select.is-hovered {\n border-color: #e8e8e8; }\n #optimole-app .select.is-light select:focus, #optimole-app .select.is-light select.is-focused, #optimole-app .select.is-light select:active, #optimole-app .select.is-light select.is-active {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .select.is-dark:not(:hover)::after {\n border-color: #363636; }\n #optimole-app .select.is-dark select {\n border-color: #363636; }\n #optimole-app .select.is-dark select:hover, #optimole-app .select.is-dark select.is-hovered {\n border-color: #292929; }\n #optimole-app .select.is-dark select:focus, #optimole-app .select.is-dark select.is-focused, #optimole-app .select.is-dark select:active, #optimole-app .select.is-dark select.is-active {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .select.is-primary:not(:hover)::after {\n border-color: #e7602a; }\n #optimole-app .select.is-primary select {\n border-color: #e7602a; }\n #optimole-app .select.is-primary select:hover, #optimole-app .select.is-primary select.is-hovered {\n border-color: #de5119; }\n #optimole-app .select.is-primary select:focus, #optimole-app .select.is-primary select.is-focused, #optimole-app .select.is-primary select:active, #optimole-app .select.is-primary select.is-active {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .select.is-link:not(:hover)::after {\n border-color: #3273dc; }\n #optimole-app .select.is-link select {\n border-color: #3273dc; }\n #optimole-app .select.is-link select:hover, #optimole-app .select.is-link select.is-hovered {\n border-color: #2366d1; }\n #optimole-app .select.is-link select:focus, #optimole-app .select.is-link select.is-focused, #optimole-app .select.is-link select:active, #optimole-app .select.is-link select.is-active {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .select.is-info:not(:hover)::after {\n border-color: #008ec2; }\n #optimole-app .select.is-info select {\n border-color: #008ec2; }\n #optimole-app .select.is-info select:hover, #optimole-app .select.is-info select.is-hovered {\n border-color: #007ba9; }\n #optimole-app .select.is-info select:focus, #optimole-app .select.is-info select.is-focused, #optimole-app .select.is-info select:active, #optimole-app .select.is-info select.is-active {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .select.is-success:not(:hover)::after {\n border-color: #34a85e; }\n #optimole-app .select.is-success select {\n border-color: #34a85e; }\n #optimole-app .select.is-success select:hover, #optimole-app .select.is-success select.is-hovered {\n border-color: #2e9553; }\n #optimole-app .select.is-success select:focus, #optimole-app .select.is-success select.is-focused, #optimole-app .select.is-success select:active, #optimole-app .select.is-success select.is-active {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .select.is-warning:not(:hover)::after {\n border-color: #ffdd57; }\n #optimole-app .select.is-warning select {\n border-color: #ffdd57; }\n #optimole-app .select.is-warning select:hover, #optimole-app .select.is-warning select.is-hovered {\n border-color: #ffd83d; }\n #optimole-app .select.is-warning select:focus, #optimole-app .select.is-warning select.is-focused, #optimole-app .select.is-warning select:active, #optimole-app .select.is-warning select.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .select.is-danger:not(:hover)::after {\n border-color: #d54222; }\n #optimole-app .select.is-danger select {\n border-color: #d54222; }\n #optimole-app .select.is-danger select:hover, #optimole-app .select.is-danger select.is-hovered {\n border-color: #bf3b1e; }\n #optimole-app .select.is-danger select:focus, #optimole-app .select.is-danger select.is-focused, #optimole-app .select.is-danger select:active, #optimole-app .select.is-danger select.is-active {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .select.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .select.is-medium {\n font-size: 1.25rem; }\n #optimole-app .select.is-large {\n font-size: 1.5rem; }\n #optimole-app .select.is-disabled::after {\n border-color: #7a7a7a; }\n #optimole-app .select.is-fullwidth {\n width: 100%; }\n #optimole-app .select.is-fullwidth select {\n width: 100%; }\n #optimole-app .select.is-loading::after {\n margin-top: 0;\n position: absolute;\n right: 0.625em;\n top: 0.625em;\n transform: none; }\n #optimole-app .select.is-loading.is-small:after {\n font-size: 0.75rem; }\n #optimole-app .select.is-loading.is-medium:after {\n font-size: 1.25rem; }\n #optimole-app .select.is-loading.is-large:after {\n font-size: 1.5rem; }\n #optimole-app .file {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start;\n position: relative; }\n #optimole-app .file.is-white .file-cta {\n background-color: white;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-white:hover .file-cta, #optimole-app .file.is-white.is-hovered .file-cta {\n background-color: #f9f9f9;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-white:focus .file-cta, #optimole-app .file.is-white.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);\n color: #0a0a0a; }\n #optimole-app .file.is-white:active .file-cta, #optimole-app .file.is-white.is-active .file-cta {\n background-color: #f2f2f2;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-black .file-cta {\n background-color: #0a0a0a;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-black:hover .file-cta, #optimole-app .file.is-black.is-hovered .file-cta {\n background-color: #040404;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-black:focus .file-cta, #optimole-app .file.is-black.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);\n color: white; }\n #optimole-app .file.is-black:active .file-cta, #optimole-app .file.is-black.is-active .file-cta {\n background-color: black;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-light .file-cta {\n background-color: whitesmoke;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-light:hover .file-cta, #optimole-app .file.is-light.is-hovered .file-cta {\n background-color: #eeeeee;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-light:focus .file-cta, #optimole-app .file.is-light.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25);\n color: #363636; }\n #optimole-app .file.is-light:active .file-cta, #optimole-app .file.is-light.is-active .file-cta {\n background-color: #e8e8e8;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-dark .file-cta {\n background-color: #363636;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-dark:hover .file-cta, #optimole-app .file.is-dark.is-hovered .file-cta {\n background-color: #2f2f2f;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-dark:focus .file-cta, #optimole-app .file.is-dark.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25);\n color: whitesmoke; }\n #optimole-app .file.is-dark:active .file-cta, #optimole-app .file.is-dark.is-active .file-cta {\n background-color: #292929;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-primary .file-cta {\n background-color: #e7602a;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-primary:hover .file-cta, #optimole-app .file.is-primary.is-hovered .file-cta {\n background-color: #e6571f;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-primary:focus .file-cta, #optimole-app .file.is-primary.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(231, 96, 42, 0.25);\n color: #fff; }\n #optimole-app .file.is-primary:active .file-cta, #optimole-app .file.is-primary.is-active .file-cta {\n background-color: #de5119;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link .file-cta {\n background-color: #3273dc;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link:hover .file-cta, #optimole-app .file.is-link.is-hovered .file-cta {\n background-color: #276cda;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link:focus .file-cta, #optimole-app .file.is-link.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(50, 115, 220, 0.25);\n color: #fff; }\n #optimole-app .file.is-link:active .file-cta, #optimole-app .file.is-link.is-active .file-cta {\n background-color: #2366d1;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info .file-cta {\n background-color: #008ec2;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info:hover .file-cta, #optimole-app .file.is-info.is-hovered .file-cta {\n background-color: #0085b5;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info:focus .file-cta, #optimole-app .file.is-info.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(0, 142, 194, 0.25);\n color: #fff; }\n #optimole-app .file.is-info:active .file-cta, #optimole-app .file.is-info.is-active .file-cta {\n background-color: #007ba9;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success .file-cta {\n background-color: #34a85e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success:hover .file-cta, #optimole-app .file.is-success.is-hovered .file-cta {\n background-color: #319e59;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success:focus .file-cta, #optimole-app .file.is-success.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(52, 168, 94, 0.25);\n color: #fff; }\n #optimole-app .file.is-success:active .file-cta, #optimole-app .file.is-success.is-active .file-cta {\n background-color: #2e9553;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-warning .file-cta {\n background-color: #ffdd57;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:hover .file-cta, #optimole-app .file.is-warning.is-hovered .file-cta {\n background-color: #ffdb4a;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:focus .file-cta, #optimole-app .file.is-warning.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25);\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:active .file-cta, #optimole-app .file.is-warning.is-active .file-cta {\n background-color: #ffd83d;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-danger .file-cta {\n background-color: #d54222;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-danger:hover .file-cta, #optimole-app .file.is-danger.is-hovered .file-cta {\n background-color: #ca3f20;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-danger:focus .file-cta, #optimole-app .file.is-danger.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(213, 66, 34, 0.25);\n color: #fff; }\n #optimole-app .file.is-danger:active .file-cta, #optimole-app .file.is-danger.is-active .file-cta {\n background-color: #bf3b1e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-small {\n font-size: 0.75rem; }\n #optimole-app .file.is-medium {\n font-size: 1.25rem; }\n #optimole-app .file.is-medium .file-icon .fa {\n font-size: 21px; }\n #optimole-app .file.is-large {\n font-size: 1.5rem; }\n #optimole-app .file.is-large .file-icon .fa {\n font-size: 28px; }\n #optimole-app .file.has-name .file-cta {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .file.has-name .file-name {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .file.has-name.is-empty .file-cta {\n border-radius: 4px; }\n #optimole-app .file.has-name.is-empty .file-name {\n display: none; }\n #optimole-app .file.is-boxed .file-label {\n -ms-flex-direction: column;\n flex-direction: column; }\n #optimole-app .file.is-boxed .file-cta {\n -ms-flex-direction: column;\n flex-direction: column;\n height: auto;\n padding: 1em 3em; }\n #optimole-app .file.is-boxed .file-name {\n border-width: 0 1px 1px; }\n #optimole-app .file.is-boxed .file-icon {\n height: 1.5em;\n width: 1.5em; }\n #optimole-app .file.is-boxed .file-icon .fa {\n font-size: 21px; }\n #optimole-app .file.is-boxed.is-small .file-icon .fa {\n font-size: 14px; }\n #optimole-app .file.is-boxed.is-medium .file-icon .fa {\n font-size: 28px; }\n #optimole-app .file.is-boxed.is-large .file-icon .fa {\n font-size: 35px; }\n #optimole-app .file.is-boxed.has-name .file-cta {\n border-radius: 4px 4px 0 0; }\n #optimole-app .file.is-boxed.has-name .file-name {\n border-radius: 0 0 4px 4px;\n border-width: 0 1px 1px; }\n #optimole-app .file.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .file.is-fullwidth .file-label {\n width: 100%; }\n #optimole-app .file.is-fullwidth .file-name {\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: none; }\n #optimole-app .file.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .file.is-right .file-cta {\n border-radius: 0 4px 4px 0; }\n #optimole-app .file.is-right .file-name {\n border-radius: 4px 0 0 4px;\n border-width: 1px 0 1px 1px;\n -ms-flex-order: -1;\n order: -1; }\n #optimole-app .file-label {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n cursor: pointer;\n -ms-flex-pack: start;\n justify-content: flex-start;\n overflow: hidden;\n position: relative; }\n #optimole-app .file-label:hover .file-cta {\n background-color: #eeeeee;\n color: #363636; }\n #optimole-app .file-label:hover .file-name {\n border-color: #d5d5d5; }\n #optimole-app .file-label:active .file-cta {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .file-label:active .file-name {\n border-color: #cfcfcf; }\n #optimole-app .file-input {\n height: 0.01em;\n left: 0;\n outline: none;\n position: absolute;\n top: 0;\n width: 0.01em; }\n #optimole-app .file-cta,\n #optimole-app .file-name {\n border-color: #dbdbdb;\n border-radius: 4px;\n font-size: 1em;\n padding-left: 1em;\n padding-right: 1em;\n white-space: nowrap; }\n #optimole-app .file-cta {\n background-color: whitesmoke;\n color: #4a4a4a; }\n #optimole-app .file-name {\n border-color: #dbdbdb;\n border-style: solid;\n border-width: 1px 1px 1px 0;\n display: block;\n max-width: 16em;\n overflow: hidden;\n text-align: left;\n text-overflow: ellipsis; }\n #optimole-app .file-icon {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n height: 1em;\n -ms-flex-pack: center;\n justify-content: center;\n margin-right: 0.5em;\n width: 1em; }\n #optimole-app .file-icon .fa {\n font-size: 14px; }\n #optimole-app .label {\n color: #363636;\n display: block;\n font-size: 1rem;\n font-weight: 700; }\n #optimole-app .label:not(:last-child) {\n margin-bottom: 0.5em; }\n #optimole-app .label.is-small {\n font-size: 0.75rem; }\n #optimole-app .label.is-medium {\n font-size: 1.25rem; }\n #optimole-app .label.is-large {\n font-size: 1.5rem; }\n #optimole-app .help {\n display: block;\n font-size: 0.75rem;\n margin-top: 0.25rem; }\n #optimole-app .help.is-white {\n color: white; }\n #optimole-app .help.is-black {\n color: #0a0a0a; }\n #optimole-app .help.is-light {\n color: whitesmoke; }\n #optimole-app .help.is-dark {\n color: #363636; }\n #optimole-app .help.is-primary {\n color: #e7602a; }\n #optimole-app .help.is-link {\n color: #3273dc; }\n #optimole-app .help.is-info {\n color: #008ec2; }\n #optimole-app .help.is-success {\n color: #34a85e; }\n #optimole-app .help.is-warning {\n color: #ffdd57; }\n #optimole-app .help.is-danger {\n color: #d54222; }\n #optimole-app .field:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .field.has-addons {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .field.has-addons .control:not(:last-child) {\n margin-right: -1px; }\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .button,\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .input,\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .select select {\n border-radius: 0; }\n #optimole-app .field.has-addons .control:first-child .button,\n #optimole-app .field.has-addons .control:first-child .input,\n #optimole-app .field.has-addons .control:first-child .select select {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .field.has-addons .control:last-child .button,\n #optimole-app .field.has-addons .control:last-child .input,\n #optimole-app .field.has-addons .control:last-child .select select {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .field.has-addons .control .button:hover, #optimole-app .field.has-addons .control .button.is-hovered,\n #optimole-app .field.has-addons .control .input:hover,\n #optimole-app .field.has-addons .control .input.is-hovered,\n #optimole-app .field.has-addons .control .select select:hover,\n #optimole-app .field.has-addons .control .select select.is-hovered {\n z-index: 2; }\n #optimole-app .field.has-addons .control .button:focus, #optimole-app .field.has-addons .control .button.is-focused, #optimole-app .field.has-addons .control .button:active, #optimole-app .field.has-addons .control .button.is-active,\n #optimole-app .field.has-addons .control .input:focus,\n #optimole-app .field.has-addons .control .input.is-focused,\n #optimole-app .field.has-addons .control .input:active,\n #optimole-app .field.has-addons .control .input.is-active,\n #optimole-app .field.has-addons .control .select select:focus,\n #optimole-app .field.has-addons .control .select select.is-focused,\n #optimole-app .field.has-addons .control .select select:active,\n #optimole-app .field.has-addons .control .select select.is-active {\n z-index: 3; }\n #optimole-app .field.has-addons .control .button:focus:hover, #optimole-app .field.has-addons .control .button.is-focused:hover, #optimole-app .field.has-addons .control .button:active:hover, #optimole-app .field.has-addons .control .button.is-active:hover,\n #optimole-app .field.has-addons .control .input:focus:hover,\n #optimole-app .field.has-addons .control .input.is-focused:hover,\n #optimole-app .field.has-addons .control .input:active:hover,\n #optimole-app .field.has-addons .control .input.is-active:hover,\n #optimole-app .field.has-addons .control .select select:focus:hover,\n #optimole-app .field.has-addons .control .select select.is-focused:hover,\n #optimole-app .field.has-addons .control .select select:active:hover,\n #optimole-app .field.has-addons .control .select select.is-active:hover {\n z-index: 4; }\n #optimole-app .field.has-addons .control.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .field.has-addons.has-addons-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .field.has-addons.has-addons-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .field.has-addons.has-addons-fullwidth .control {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .field.is-grouped {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .field.is-grouped > .control {\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .field.is-grouped > .control:not(:last-child) {\n margin-bottom: 0;\n margin-right: 0.75rem; }\n #optimole-app .field.is-grouped > .control.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field.is-grouped.is-grouped-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .field.is-grouped.is-grouped-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .field.is-grouped.is-grouped-multiline {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .field.is-grouped.is-grouped-multiline > .control:last-child, #optimole-app .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .field.is-grouped.is-grouped-multiline:last-child {\n margin-bottom: -0.75rem; }\n #optimole-app .field.is-grouped.is-grouped-multiline:not(:last-child) {\n margin-bottom: 0; }\n @media screen and (min-width: 769px), print {\n #optimole-app .field.is-horizontal {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .field-label .label {\n font-size: inherit; }\n @media screen and (max-width: 768px) {\n #optimole-app .field-label {\n margin-bottom: 0.5rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .field-label {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-right: 1.5rem;\n text-align: right; }\n #optimole-app .field-label.is-small {\n font-size: 0.75rem;\n padding-top: 0.375em; }\n #optimole-app .field-label.is-normal {\n padding-top: 0.375em; }\n #optimole-app .field-label.is-medium {\n font-size: 1.25rem;\n padding-top: 0.375em; }\n #optimole-app .field-label.is-large {\n font-size: 1.5rem;\n padding-top: 0.375em; } }\n #optimole-app .field-body .field .field {\n margin-bottom: 0; }\n @media screen and (min-width: 769px), print {\n #optimole-app .field-body {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 5;\n flex-grow: 5;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field-body .field {\n margin-bottom: 0; }\n #optimole-app .field-body > .field {\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field-body > .field:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .field-body > .field:not(:last-child) {\n margin-right: 0.75rem; } }\n #optimole-app .control {\n font-size: 1rem;\n position: relative;\n text-align: left; }\n #optimole-app .control.has-icon .icon {\n color: #dbdbdb;\n height: 2.25em;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 2.25em;\n z-index: 4; }\n #optimole-app .control.has-icon .input:focus + .icon {\n color: #7a7a7a; }\n #optimole-app .control.has-icon .input.is-small + .icon {\n font-size: 0.75rem; }\n #optimole-app .control.has-icon .input.is-medium + .icon {\n font-size: 1.25rem; }\n #optimole-app .control.has-icon .input.is-large + .icon {\n font-size: 1.5rem; }\n #optimole-app .control.has-icon:not(.has-icon-right) .icon {\n left: 0; }\n #optimole-app .control.has-icon:not(.has-icon-right) .input {\n padding-left: 2.25em; }\n #optimole-app .control.has-icon.has-icon-right .icon {\n right: 0; }\n #optimole-app .control.has-icon.has-icon-right .input {\n padding-right: 2.25em; }\n #optimole-app .control.has-icons-left .input:focus ~ .icon,\n #optimole-app .control.has-icons-left .select:focus ~ .icon, #optimole-app .control.has-icons-right .input:focus ~ .icon,\n #optimole-app .control.has-icons-right .select:focus ~ .icon {\n color: #7a7a7a; }\n #optimole-app .control.has-icons-left .input.is-small ~ .icon,\n #optimole-app .control.has-icons-left .select.is-small ~ .icon, #optimole-app .control.has-icons-right .input.is-small ~ .icon,\n #optimole-app .control.has-icons-right .select.is-small ~ .icon {\n font-size: 0.75rem; }\n #optimole-app .control.has-icons-left .input.is-medium ~ .icon,\n #optimole-app .control.has-icons-left .select.is-medium ~ .icon, #optimole-app .control.has-icons-right .input.is-medium ~ .icon,\n #optimole-app .control.has-icons-right .select.is-medium ~ .icon {\n font-size: 1.25rem; }\n #optimole-app .control.has-icons-left .input.is-large ~ .icon,\n #optimole-app .control.has-icons-left .select.is-large ~ .icon, #optimole-app .control.has-icons-right .input.is-large ~ .icon,\n #optimole-app .control.has-icons-right .select.is-large ~ .icon {\n font-size: 1.5rem; }\n #optimole-app .control.has-icons-left .icon, #optimole-app .control.has-icons-right .icon {\n color: #dbdbdb;\n height: 2.25em;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 2.25em;\n z-index: 4; }\n #optimole-app .control.has-icons-left .input,\n #optimole-app .control.has-icons-left .select select {\n padding-left: 2.25em; }\n #optimole-app .control.has-icons-left .icon.is-left {\n left: 0; }\n #optimole-app .control.has-icons-right .input,\n #optimole-app .control.has-icons-right .select select {\n padding-right: 2.25em; }\n #optimole-app .control.has-icons-right .icon.is-right {\n right: 0; }\n #optimole-app .control.is-loading::after {\n position: absolute !important;\n right: 0.625em;\n top: 0.625em;\n z-index: 4; }\n #optimole-app .control.is-loading.is-small:after {\n font-size: 0.75rem; }\n #optimole-app .control.is-loading.is-medium:after {\n font-size: 1.25rem; }\n #optimole-app .control.is-loading.is-large:after {\n font-size: 1.5rem; }\n #optimole-app .icon {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n height: 1.5rem;\n width: 1.5rem; }\n #optimole-app .icon.is-small {\n height: 1rem;\n width: 1rem; }\n #optimole-app .icon.is-medium {\n height: 2rem;\n width: 2rem; }\n #optimole-app .icon.is-large {\n height: 3rem;\n width: 3rem; }\n #optimole-app .image {\n display: block;\n position: relative; }\n #optimole-app .image img {\n display: block;\n height: auto;\n width: 100%; }\n #optimole-app .image img.is-rounded {\n border-radius: 290486px; }\n #optimole-app .image.is-square img, #optimole-app .image.is-1by1 img, #optimole-app .image.is-5by4 img, #optimole-app .image.is-4by3 img, #optimole-app .image.is-3by2 img, #optimole-app .image.is-5by3 img, #optimole-app .image.is-16by9 img, #optimole-app .image.is-2by1 img, #optimole-app .image.is-3by1 img, #optimole-app .image.is-4by5 img, #optimole-app .image.is-3by4 img, #optimole-app .image.is-2by3 img, #optimole-app .image.is-3by5 img, #optimole-app .image.is-9by16 img, #optimole-app .image.is-1by2 img, #optimole-app .image.is-1by3 img {\n height: 100%;\n width: 100%; }\n #optimole-app .image.is-square, #optimole-app .image.is-1by1 {\n padding-top: 100%; }\n #optimole-app .image.is-5by4 {\n padding-top: 80%; }\n #optimole-app .image.is-4by3 {\n padding-top: 75%; }\n #optimole-app .image.is-3by2 {\n padding-top: 66.6666%; }\n #optimole-app .image.is-5by3 {\n padding-top: 60%; }\n #optimole-app .image.is-16by9 {\n padding-top: 56.25%; }\n #optimole-app .image.is-2by1 {\n padding-top: 50%; }\n #optimole-app .image.is-3by1 {\n padding-top: 33.3333%; }\n #optimole-app .image.is-4by5 {\n padding-top: 125%; }\n #optimole-app .image.is-3by4 {\n padding-top: 133.3333%; }\n #optimole-app .image.is-2by3 {\n padding-top: 150%; }\n #optimole-app .image.is-3by5 {\n padding-top: 166.6666%; }\n #optimole-app .image.is-9by16 {\n padding-top: 177.7777%; }\n #optimole-app .image.is-1by2 {\n padding-top: 200%; }\n #optimole-app .image.is-1by3 {\n padding-top: 300%; }\n #optimole-app .image.is-16x16 {\n height: 16px;\n width: 16px; }\n #optimole-app .image.is-24x24 {\n height: 24px;\n width: 24px; }\n #optimole-app .image.is-32x32 {\n height: 32px;\n width: 32px; }\n #optimole-app .image.is-48x48 {\n height: 48px;\n width: 48px; }\n #optimole-app .image.is-64x64 {\n height: 64px;\n width: 64px; }\n #optimole-app .image.is-96x96 {\n height: 96px;\n width: 96px; }\n #optimole-app .image.is-128x128 {\n height: 128px;\n width: 128px; }\n #optimole-app .notification {\n background-color: whitesmoke;\n border-radius: 4px;\n padding: 1.25rem 2.5rem 1.25rem 1.5rem;\n position: relative; }\n #optimole-app .notification a:not(.button) {\n color: currentColor;\n text-decoration: underline; }\n #optimole-app .notification strong {\n color: currentColor; }\n #optimole-app .notification code,\n #optimole-app .notification pre {\n background: white; }\n #optimole-app .notification pre code {\n background: transparent; }\n #optimole-app .notification > .delete {\n position: absolute;\n right: 0.5rem;\n top: 0.5rem; }\n #optimole-app .notification .title,\n #optimole-app .notification .subtitle,\n #optimole-app .notification .content {\n color: currentColor; }\n #optimole-app .notification.is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .notification.is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .notification.is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .notification.is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .notification.is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .notification.is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .notification.is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .notification.is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .notification.is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .notification.is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .progress {\n -moz-appearance: none;\n -webkit-appearance: none;\n border: none;\n border-radius: 290486px;\n display: block;\n height: 1rem;\n overflow: hidden;\n padding: 0;\n width: 100%; }\n #optimole-app .progress::-webkit-progress-bar {\n background-color: #dbdbdb; }\n #optimole-app .progress::-webkit-progress-value {\n background-color: #4a4a4a; }\n #optimole-app .progress::-moz-progress-bar {\n background-color: #4a4a4a; }\n #optimole-app .progress::-ms-fill {\n background-color: #4a4a4a;\n border: none; }\n #optimole-app .progress.is-white::-webkit-progress-value {\n background-color: white; }\n #optimole-app .progress.is-white::-moz-progress-bar {\n background-color: white; }\n #optimole-app .progress.is-white::-ms-fill {\n background-color: white; }\n #optimole-app .progress.is-black::-webkit-progress-value {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-black::-moz-progress-bar {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-black::-ms-fill {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-light::-webkit-progress-value {\n background-color: whitesmoke; }\n #optimole-app .progress.is-light::-moz-progress-bar {\n background-color: whitesmoke; }\n #optimole-app .progress.is-light::-ms-fill {\n background-color: whitesmoke; }\n #optimole-app .progress.is-dark::-webkit-progress-value {\n background-color: #363636; }\n #optimole-app .progress.is-dark::-moz-progress-bar {\n background-color: #363636; }\n #optimole-app .progress.is-dark::-ms-fill {\n background-color: #363636; }\n #optimole-app .progress.is-primary::-webkit-progress-value {\n background-color: #e7602a; }\n #optimole-app .progress.is-primary::-moz-progress-bar {\n background-color: #e7602a; }\n #optimole-app .progress.is-primary::-ms-fill {\n background-color: #e7602a; }\n #optimole-app .progress.is-link::-webkit-progress-value {\n background-color: #3273dc; }\n #optimole-app .progress.is-link::-moz-progress-bar {\n background-color: #3273dc; }\n #optimole-app .progress.is-link::-ms-fill {\n background-color: #3273dc; }\n #optimole-app .progress.is-info::-webkit-progress-value {\n background-color: #008ec2; }\n #optimole-app .progress.is-info::-moz-progress-bar {\n background-color: #008ec2; }\n #optimole-app .progress.is-info::-ms-fill {\n background-color: #008ec2; }\n #optimole-app .progress.is-success::-webkit-progress-value {\n background-color: #34a85e; }\n #optimole-app .progress.is-success::-moz-progress-bar {\n background-color: #34a85e; }\n #optimole-app .progress.is-success::-ms-fill {\n background-color: #34a85e; }\n #optimole-app .progress.is-warning::-webkit-progress-value {\n background-color: #ffdd57; }\n #optimole-app .progress.is-warning::-moz-progress-bar {\n background-color: #ffdd57; }\n #optimole-app .progress.is-warning::-ms-fill {\n background-color: #ffdd57; }\n #optimole-app .progress.is-danger::-webkit-progress-value {\n background-color: #d54222; }\n #optimole-app .progress.is-danger::-moz-progress-bar {\n background-color: #d54222; }\n #optimole-app .progress.is-danger::-ms-fill {\n background-color: #d54222; }\n #optimole-app .progress.is-small {\n height: 0.75rem; }\n #optimole-app .progress.is-medium {\n height: 1.25rem; }\n #optimole-app .progress.is-large {\n height: 1.5rem; }\n #optimole-app .table {\n background-color: white;\n color: #363636; }\n #optimole-app .table td,\n #optimole-app .table th {\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px;\n padding: 0.5em 0.75em;\n vertical-align: top; }\n #optimole-app .table td.is-white,\n #optimole-app .table th.is-white {\n background-color: white;\n border-color: white;\n color: #0a0a0a; }\n #optimole-app .table td.is-black,\n #optimole-app .table th.is-black {\n background-color: #0a0a0a;\n border-color: #0a0a0a;\n color: white; }\n #optimole-app .table td.is-light,\n #optimole-app .table th.is-light {\n background-color: whitesmoke;\n border-color: whitesmoke;\n color: #363636; }\n #optimole-app .table td.is-dark,\n #optimole-app .table th.is-dark {\n background-color: #363636;\n border-color: #363636;\n color: whitesmoke; }\n #optimole-app .table td.is-primary,\n #optimole-app .table th.is-primary {\n background-color: #e7602a;\n border-color: #e7602a;\n color: #fff; }\n #optimole-app .table td.is-link,\n #optimole-app .table th.is-link {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .table td.is-info,\n #optimole-app .table th.is-info {\n background-color: #008ec2;\n border-color: #008ec2;\n color: #fff; }\n #optimole-app .table td.is-success,\n #optimole-app .table th.is-success {\n background-color: #34a85e;\n border-color: #34a85e;\n color: #fff; }\n #optimole-app .table td.is-warning,\n #optimole-app .table th.is-warning {\n background-color: #ffdd57;\n border-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .table td.is-danger,\n #optimole-app .table th.is-danger {\n background-color: #d54222;\n border-color: #d54222;\n color: #fff; }\n #optimole-app .table td.is-narrow,\n #optimole-app .table th.is-narrow {\n white-space: nowrap;\n width: 1%; }\n #optimole-app .table td.is-selected,\n #optimole-app .table th.is-selected {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .table td.is-selected a,\n #optimole-app .table td.is-selected strong,\n #optimole-app .table th.is-selected a,\n #optimole-app .table th.is-selected strong {\n color: currentColor; }\n #optimole-app .table th {\n color: #363636;\n text-align: left; }\n #optimole-app .table tr.is-selected {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .table tr.is-selected a,\n #optimole-app .table tr.is-selected strong {\n color: currentColor; }\n #optimole-app .table tr.is-selected td,\n #optimole-app .table tr.is-selected th {\n border-color: #fff;\n color: currentColor; }\n #optimole-app .table thead td,\n #optimole-app .table thead th {\n border-width: 0 0 2px;\n color: #363636; }\n #optimole-app .table tfoot td,\n #optimole-app .table tfoot th {\n border-width: 2px 0 0;\n color: #363636; }\n #optimole-app .table tbody tr:last-child td,\n #optimole-app .table tbody tr:last-child th {\n border-bottom-width: 0; }\n #optimole-app .table.is-bordered td,\n #optimole-app .table.is-bordered th {\n border-width: 1px; }\n #optimole-app .table.is-bordered tr:last-child td,\n #optimole-app .table.is-bordered tr:last-child th {\n border-bottom-width: 1px; }\n #optimole-app .table.is-fullwidth {\n width: 100%; }\n #optimole-app .table.is-hoverable tbody tr:not(.is-selected):hover {\n background-color: #fafafa; }\n #optimole-app .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover {\n background-color: whitesmoke; }\n #optimole-app .table.is-narrow td,\n #optimole-app .table.is-narrow th {\n padding: 0.25em 0.5em; }\n #optimole-app .table.is-striped tbody tr:not(.is-selected):nth-child(even) {\n background-color: #fafafa; }\n #optimole-app .table-container {\n -webkit-overflow-scrolling: touch;\n overflow: auto;\n overflow-y: hidden;\n max-width: 100%; }\n #optimole-app .tags {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .tags .tag {\n margin-bottom: 0.5rem; }\n #optimole-app .tags .tag:not(:last-child) {\n margin-right: 0.5rem; }\n #optimole-app .tags:last-child {\n margin-bottom: -0.5rem; }\n #optimole-app .tags:not(:last-child) {\n margin-bottom: 1rem; }\n #optimole-app .tags.has-addons .tag {\n margin-right: 0; }\n #optimole-app .tags.has-addons .tag:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .tags.has-addons .tag:not(:last-child) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .tags.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .tags.is-centered .tag {\n margin-right: 0.25rem;\n margin-left: 0.25rem; }\n #optimole-app .tags.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .tags.is-right .tag:not(:first-child) {\n margin-left: 0.5rem; }\n #optimole-app .tags.is-right .tag:not(:last-child) {\n margin-right: 0; }\n #optimole-app .tag:not(body) {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n border-radius: 4px;\n color: #4a4a4a;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 0.75rem;\n height: 2em;\n -ms-flex-pack: center;\n justify-content: center;\n line-height: 1.5;\n padding-left: 0.75em;\n padding-right: 0.75em;\n white-space: nowrap; }\n #optimole-app .tag:not(body) .delete {\n margin-left: 0.25rem;\n margin-right: -0.375rem; }\n #optimole-app .tag:not(body).is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .tag:not(body).is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .tag:not(body).is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .tag:not(body).is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .tag:not(body).is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .tag:not(body).is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .tag:not(body).is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .tag:not(body).is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .tag:not(body).is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .tag:not(body).is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .tag:not(body).is-medium {\n font-size: 1rem; }\n #optimole-app .tag:not(body).is-large {\n font-size: 1.25rem; }\n #optimole-app .tag:not(body) .icon:first-child:not(:last-child) {\n margin-left: -0.375em;\n margin-right: 0.1875em; }\n #optimole-app .tag:not(body) .icon:last-child:not(:first-child) {\n margin-left: 0.1875em;\n margin-right: -0.375em; }\n #optimole-app .tag:not(body) .icon:first-child:last-child {\n margin-left: -0.375em;\n margin-right: -0.375em; }\n #optimole-app .tag:not(body).is-delete {\n margin-left: 1px;\n padding: 0;\n position: relative;\n width: 2em; }\n #optimole-app .tag:not(body).is-delete::before, #optimole-app .tag:not(body).is-delete::after {\n background-color: currentColor;\n content: \"\";\n display: block;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\n transform-origin: center center; }\n #optimole-app .tag:not(body).is-delete::before {\n height: 1px;\n width: 50%; }\n #optimole-app .tag:not(body).is-delete::after {\n height: 50%;\n width: 1px; }\n #optimole-app .tag:not(body).is-delete:hover, #optimole-app .tag:not(body).is-delete:focus {\n background-color: #e8e8e8; }\n #optimole-app .tag:not(body).is-delete:active {\n background-color: #dbdbdb; }\n #optimole-app .tag:not(body).is-rounded {\n border-radius: 290486px; }\n #optimole-app a.tag:hover {\n text-decoration: underline; }\n #optimole-app .title,\n #optimole-app .subtitle {\n word-break: break-word; }\n #optimole-app .title em,\n #optimole-app .title span,\n #optimole-app .subtitle em,\n #optimole-app .subtitle span {\n font-weight: inherit; }\n #optimole-app .title sub,\n #optimole-app .subtitle sub {\n font-size: 0.75em; }\n #optimole-app .title sup,\n #optimole-app .subtitle sup {\n font-size: 0.75em; }\n #optimole-app .title .tag,\n #optimole-app .subtitle .tag {\n vertical-align: middle; }\n #optimole-app .title {\n color: #363636;\n font-size: 2rem;\n font-weight: 600;\n line-height: 1.125; }\n #optimole-app .title strong {\n color: inherit;\n font-weight: inherit; }\n #optimole-app .title + .highlight {\n margin-top: -0.75rem; }\n #optimole-app .title:not(.is-spaced) + .subtitle {\n margin-top: -1.25rem; }\n #optimole-app .title.is-1 {\n font-size: 3rem; }\n #optimole-app .title.is-2 {\n font-size: 2.5rem; }\n #optimole-app .title.is-3 {\n font-size: 2rem; }\n #optimole-app .title.is-4 {\n font-size: 1.5rem; }\n #optimole-app .title.is-5 {\n font-size: 1.25rem; }\n #optimole-app .title.is-6 {\n font-size: 1rem; }\n #optimole-app .title.is-7 {\n font-size: 0.75rem; }\n #optimole-app .subtitle {\n color: #4a4a4a;\n font-size: 1.25rem;\n font-weight: 400;\n line-height: 1.25; }\n #optimole-app .subtitle strong {\n color: #363636;\n font-weight: 600; }\n #optimole-app .subtitle:not(.is-spaced) + .title {\n margin-top: -1.25rem; }\n #optimole-app .subtitle.is-1 {\n font-size: 3rem; }\n #optimole-app .subtitle.is-2 {\n font-size: 2.5rem; }\n #optimole-app .subtitle.is-3 {\n font-size: 2rem; }\n #optimole-app .subtitle.is-4 {\n font-size: 1.5rem; }\n #optimole-app .subtitle.is-5 {\n font-size: 1.25rem; }\n #optimole-app .subtitle.is-6 {\n font-size: 1rem; }\n #optimole-app .subtitle.is-7 {\n font-size: 0.75rem; }\n #optimole-app .heading {\n display: block;\n font-size: 11px;\n letter-spacing: 1px;\n margin-bottom: 5px;\n text-transform: uppercase; }\n #optimole-app .highlight {\n font-weight: 400;\n max-width: 100%;\n overflow: hidden;\n padding: 0; }\n #optimole-app .highlight pre {\n overflow: auto;\n max-width: 100%; }\n #optimole-app .number {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n border-radius: 290486px;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 1.25rem;\n height: 2em;\n -ms-flex-pack: center;\n justify-content: center;\n margin-right: 1.5rem;\n min-width: 2.5em;\n padding: 0.25rem 0.5rem;\n text-align: center;\n vertical-align: top; }\n #optimole-app .breadcrumb {\n font-size: 1rem;\n white-space: nowrap; }\n #optimole-app .breadcrumb a {\n -ms-flex-align: center;\n align-items: center;\n color: #3273dc;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0 0.75em; }\n #optimole-app .breadcrumb a:hover {\n color: #363636; }\n #optimole-app .breadcrumb li {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .breadcrumb li:first-child a {\n padding-left: 0; }\n #optimole-app .breadcrumb li.is-active a {\n color: #363636;\n cursor: default;\n pointer-events: none; }\n #optimole-app .breadcrumb li + li::before {\n color: #b5b5b5;\n content: \"/\"; }\n #optimole-app .breadcrumb ul,\n #optimole-app .breadcrumb ol {\n -ms-flex-align: start;\n align-items: flex-start;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .breadcrumb .icon:first-child {\n margin-right: 0.5em; }\n #optimole-app .breadcrumb .icon:last-child {\n margin-left: 0.5em; }\n #optimole-app .breadcrumb.is-centered ol,\n #optimole-app .breadcrumb.is-centered ul {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .breadcrumb.is-right ol,\n #optimole-app .breadcrumb.is-right ul {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .breadcrumb.is-small {\n font-size: 0.75rem; }\n #optimole-app .breadcrumb.is-medium {\n font-size: 1.25rem; }\n #optimole-app .breadcrumb.is-large {\n font-size: 1.5rem; }\n #optimole-app .breadcrumb.has-arrow-separator li + li::before {\n content: \"\\2192\"; }\n #optimole-app .breadcrumb.has-bullet-separator li + li::before {\n content: \"\\2022\"; }\n #optimole-app .breadcrumb.has-dot-separator li + li::before {\n content: \"\\B7\"; }\n #optimole-app .breadcrumb.has-succeeds-separator li + li::before {\n content: \"\\227B\"; }\n #optimole-app .card {\n background-color: white;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n color: #4a4a4a;\n max-width: 100%;\n position: relative; }\n #optimole-app .card-header {\n background-color: none;\n -ms-flex-align: stretch;\n align-items: stretch;\n box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1);\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .card-header-title {\n -ms-flex-align: center;\n align-items: center;\n color: #363636;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-positive: 1;\n flex-grow: 1;\n font-weight: 700;\n padding: 0.75rem; }\n #optimole-app .card-header-title.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .card-header-icon {\n -ms-flex-align: center;\n align-items: center;\n cursor: pointer;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0.75rem; }\n #optimole-app .card-image {\n display: block;\n position: relative; }\n #optimole-app .card-content {\n background-color: none;\n padding: 1.5rem; }\n #optimole-app .card-footer {\n background-color: none;\n border-top: 1px solid #dbdbdb;\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .card-footer-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0.75rem; }\n #optimole-app .card-footer-item:not(:last-child) {\n border-right: 1px solid #dbdbdb; }\n #optimole-app .card .media:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .dropdown {\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n vertical-align: top; }\n #optimole-app .dropdown.is-active .dropdown-menu, #optimole-app .dropdown.is-hoverable:hover .dropdown-menu {\n display: block; }\n #optimole-app .dropdown.is-right .dropdown-menu {\n left: auto;\n right: 0; }\n #optimole-app .dropdown.is-up .dropdown-menu {\n bottom: 100%;\n padding-bottom: 4px;\n padding-top: initial;\n top: auto; }\n #optimole-app .dropdown-menu {\n display: none;\n left: 0;\n min-width: 12rem;\n padding-top: 4px;\n position: absolute;\n top: 100%;\n z-index: 20; }\n #optimole-app .dropdown-content {\n background-color: white;\n border-radius: 4px;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n padding-bottom: 0.5rem;\n padding-top: 0.5rem; }\n #optimole-app .dropdown-item {\n color: #4a4a4a;\n display: block;\n font-size: 0.875rem;\n line-height: 1.5;\n padding: 0.375rem 1rem;\n position: relative; }\n #optimole-app a.dropdown-item {\n padding-right: 3rem;\n white-space: nowrap; }\n #optimole-app a.dropdown-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app a.dropdown-item.is-active {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .dropdown-divider {\n background-color: #dbdbdb;\n border: none;\n display: block;\n height: 1px;\n margin: 0.5rem 0; }\n #optimole-app .level {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n #optimole-app .level code {\n border-radius: 4px; }\n #optimole-app .level img {\n display: inline-block;\n vertical-align: top; }\n #optimole-app .level.is-mobile {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level.is-mobile .level-left,\n #optimole-app .level.is-mobile .level-right {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level.is-mobile .level-left + .level-right {\n margin-top: 0; }\n #optimole-app .level.is-mobile .level-item {\n margin-right: 0.75rem; }\n #optimole-app .level.is-mobile .level-item:not(:last-child) {\n margin-bottom: 0; }\n #optimole-app .level.is-mobile .level-item:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level > .level-item:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; } }\n #optimole-app .level-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .level-item .title,\n #optimole-app .level-item .subtitle {\n margin-bottom: 0; }\n @media screen and (max-width: 768px) {\n #optimole-app .level-item:not(:last-child) {\n margin-bottom: 0.75rem; } }\n #optimole-app .level-left,\n #optimole-app .level-right {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .level-left .level-item.is-flexible,\n #optimole-app .level-right .level-item.is-flexible {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-left .level-item:not(:last-child),\n #optimole-app .level-right .level-item:not(:last-child) {\n margin-right: 0.75rem; } }\n #optimole-app .level-left {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n @media screen and (max-width: 768px) {\n #optimole-app .level-left + .level-right {\n margin-top: 1.5rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-left {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .level-right {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-right {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .media {\n -ms-flex-align: start;\n align-items: flex-start;\n display: -ms-flexbox;\n display: flex;\n text-align: left; }\n #optimole-app .media .content:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .media .media {\n border-top: 1px solid rgba(219, 219, 219, 0.5);\n display: -ms-flexbox;\n display: flex;\n padding-top: 0.75rem; }\n #optimole-app .media .media .content:not(:last-child),\n #optimole-app .media .media .control:not(:last-child) {\n margin-bottom: 0.5rem; }\n #optimole-app .media .media .media {\n padding-top: 0.5rem; }\n #optimole-app .media .media .media + .media {\n margin-top: 0.5rem; }\n #optimole-app .media + .media {\n border-top: 1px solid rgba(219, 219, 219, 0.5);\n margin-top: 1rem;\n padding-top: 1rem; }\n #optimole-app .media.is-large + .media {\n margin-top: 1.5rem;\n padding-top: 1.5rem; }\n #optimole-app .media-left,\n #optimole-app .media-right {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .media-left {\n margin-right: 1rem; }\n #optimole-app .media-right {\n margin-left: 1rem; }\n #optimole-app .media-content {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n text-align: left; }\n #optimole-app .menu {\n font-size: 1rem; }\n #optimole-app .menu.is-small {\n font-size: 0.75rem; }\n #optimole-app .menu.is-medium {\n font-size: 1.25rem; }\n #optimole-app .menu.is-large {\n font-size: 1.5rem; }\n #optimole-app .menu-list {\n line-height: 1.25; }\n #optimole-app .menu-list a {\n border-radius: 2px;\n color: #4a4a4a;\n display: block;\n padding: 0.5em 0.75em; }\n #optimole-app .menu-list a:hover {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .menu-list a.is-active {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .menu-list li ul {\n border-left: 1px solid #dbdbdb;\n margin: 0.75em;\n padding-left: 0.75em; }\n #optimole-app .menu-label {\n color: #7a7a7a;\n font-size: 0.75em;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n #optimole-app .menu-label:not(:first-child) {\n margin-top: 1em; }\n #optimole-app .menu-label:not(:last-child) {\n margin-bottom: 1em; }\n #optimole-app .message {\n background-color: whitesmoke;\n border-radius: 4px;\n font-size: 1rem; }\n #optimole-app .message strong {\n color: currentColor; }\n #optimole-app .message a:not(.button):not(.tag) {\n color: currentColor;\n text-decoration: underline; }\n #optimole-app .message.is-small {\n font-size: 0.75rem; }\n #optimole-app .message.is-medium {\n font-size: 1.25rem; }\n #optimole-app .message.is-large {\n font-size: 1.5rem; }\n #optimole-app .message.is-white {\n background-color: white; }\n #optimole-app .message.is-white .message-header {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .message.is-white .message-body {\n border-color: white;\n color: #4d4d4d; }\n #optimole-app .message.is-black {\n background-color: #fafafa; }\n #optimole-app .message.is-black .message-header {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .message.is-black .message-body {\n border-color: #0a0a0a;\n color: #090909; }\n #optimole-app .message.is-light {\n background-color: #fafafa; }\n #optimole-app .message.is-light .message-header {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .message.is-light .message-body {\n border-color: whitesmoke;\n color: #505050; }\n #optimole-app .message.is-dark {\n background-color: #fafafa; }\n #optimole-app .message.is-dark .message-header {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .message.is-dark .message-body {\n border-color: #363636;\n color: #2a2a2a; }\n #optimole-app .message.is-primary {\n background-color: #fef8f6; }\n #optimole-app .message.is-primary .message-header {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .message.is-primary .message-body {\n border-color: #e7602a;\n color: #8e3a18; }\n #optimole-app .message.is-link {\n background-color: #f6f9fe; }\n #optimole-app .message.is-link .message-header {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .message.is-link .message-body {\n border-color: #3273dc;\n color: #22509a; }\n #optimole-app .message.is-info {\n background-color: #f5fcff; }\n #optimole-app .message.is-info .message-header {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .message.is-info .message-body {\n border-color: #008ec2;\n color: #044259; }\n #optimole-app .message.is-success {\n background-color: #f7fdf9; }\n #optimole-app .message.is-success .message-header {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .message.is-success .message-body {\n border-color: #34a85e;\n color: #1b432a; }\n #optimole-app .message.is-warning {\n background-color: #fffdf5; }\n #optimole-app .message.is-warning .message-header {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .message.is-warning .message-body {\n border-color: #ffdd57;\n color: #3b3108; }\n #optimole-app .message.is-danger {\n background-color: #fef8f6; }\n #optimole-app .message.is-danger .message-header {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .message.is-danger .message-body {\n border-color: #d54222;\n color: #8d311d; }\n #optimole-app .message-header {\n -ms-flex-align: center;\n align-items: center;\n background-color: #4a4a4a;\n border-radius: 4px 4px 0 0;\n color: #fff;\n display: -ms-flexbox;\n display: flex;\n font-weight: 700;\n -ms-flex-pack: justify;\n justify-content: space-between;\n line-height: 1.25;\n padding: 0.75em 1em;\n position: relative; }\n #optimole-app .message-header .delete {\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-left: 0.75em; }\n #optimole-app .message-header + .message-body {\n border-width: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .message-body {\n border-color: #dbdbdb;\n border-radius: 4px;\n border-style: solid;\n border-width: 0 0 0 4px;\n color: #4a4a4a;\n padding: 1.25em 1.5em; }\n #optimole-app .message-body code,\n #optimole-app .message-body pre {\n background-color: white; }\n #optimole-app .message-body pre code {\n background-color: transparent; }\n #optimole-app .modal {\n -ms-flex-align: center;\n align-items: center;\n display: none;\n -ms-flex-pack: center;\n justify-content: center;\n overflow: hidden;\n position: fixed;\n z-index: 40; }\n #optimole-app .modal.is-active {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .modal-background {\n background-color: rgba(10, 10, 10, 0.86); }\n #optimole-app .modal-content,\n #optimole-app .modal-card {\n margin: 0 20px;\n max-height: calc(100vh - 160px);\n overflow: auto;\n position: relative;\n width: 100%; }\n @media screen and (min-width: 769px), print {\n #optimole-app .modal-content,\n #optimole-app .modal-card {\n margin: 0 auto;\n max-height: calc(100vh - 40px);\n width: 640px; } }\n #optimole-app .modal-close {\n background: none;\n height: 40px;\n position: fixed;\n right: 20px;\n top: 20px;\n width: 40px; }\n #optimole-app .modal-card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n max-height: calc(100vh - 40px);\n overflow: hidden; }\n #optimole-app .modal-card-head,\n #optimole-app .modal-card-foot {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding: 20px;\n position: relative; }\n #optimole-app .modal-card-head {\n border-bottom: 1px solid #dbdbdb;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px; }\n #optimole-app .modal-card-title {\n color: #363636;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n font-size: 1.5rem;\n line-height: 1; }\n #optimole-app .modal-card-foot {\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n border-top: 1px solid #dbdbdb; }\n #optimole-app .modal-card-foot .button:not(:last-child) {\n margin-right: 10px; }\n #optimole-app .modal-card-body {\n -webkit-overflow-scrolling: touch;\n background-color: white;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n overflow: auto;\n padding: 20px; }\n #optimole-app .navbar {\n background-color: white;\n min-height: 3.25rem;\n position: relative;\n z-index: 30; }\n #optimole-app .navbar.is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link {\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-white .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link.is-active {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand .navbar-link::after {\n border-color: #0a0a0a; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-white .navbar-start > .navbar-item,\n #optimole-app .navbar.is-white .navbar-start .navbar-link,\n #optimole-app .navbar.is-white .navbar-end > .navbar-item,\n #optimole-app .navbar.is-white .navbar-end .navbar-link {\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-white .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-white .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-white .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-end .navbar-link.is-active {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-white .navbar-end .navbar-link::after {\n border-color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-dropdown a.navbar-item.is-active {\n background-color: white;\n color: #0a0a0a; } }\n #optimole-app .navbar.is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link {\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-black .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link.is-active {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand .navbar-link::after {\n border-color: white; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-black .navbar-start > .navbar-item,\n #optimole-app .navbar.is-black .navbar-start .navbar-link,\n #optimole-app .navbar.is-black .navbar-end > .navbar-item,\n #optimole-app .navbar.is-black .navbar-end .navbar-link {\n color: white; }\n #optimole-app .navbar.is-black .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-black .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-black .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-black .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-end .navbar-link.is-active {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-black .navbar-end .navbar-link::after {\n border-color: white; }\n #optimole-app .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-dropdown a.navbar-item.is-active {\n background-color: #0a0a0a;\n color: white; } }\n #optimole-app .navbar.is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link {\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-light .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand .navbar-link::after {\n border-color: #363636; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-light .navbar-start > .navbar-item,\n #optimole-app .navbar.is-light .navbar-start .navbar-link,\n #optimole-app .navbar.is-light .navbar-end > .navbar-item,\n #optimole-app .navbar.is-light .navbar-end .navbar-link {\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-light .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-light .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-light .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-end .navbar-link.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-light .navbar-end .navbar-link::after {\n border-color: #363636; }\n #optimole-app .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #363636; } }\n #optimole-app .navbar.is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link {\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-dark .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link.is-active {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link::after {\n border-color: whitesmoke; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-dark .navbar-start > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link,\n #optimole-app .navbar.is-dark .navbar-end > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link {\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-dark .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-dark .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-dark .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link.is-active {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link::after {\n border-color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-dropdown a.navbar-item.is-active {\n background-color: #363636;\n color: whitesmoke; } }\n #optimole-app .navbar.is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-primary .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link.is-active {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-primary .navbar-start > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link,\n #optimole-app .navbar.is-primary .navbar-end > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-primary .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-primary .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-primary .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link.is-active {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-dropdown a.navbar-item.is-active {\n background-color: #e7602a;\n color: #fff; } }\n #optimole-app .navbar.is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-link .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link.is-active {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-link .navbar-start > .navbar-item,\n #optimole-app .navbar.is-link .navbar-start .navbar-link,\n #optimole-app .navbar.is-link .navbar-end > .navbar-item,\n #optimole-app .navbar.is-link .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-link .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-link .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-link .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-end .navbar-link.is-active {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-link .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-dropdown a.navbar-item.is-active {\n background-color: #3273dc;\n color: #fff; } }\n #optimole-app .navbar.is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-info .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link.is-active {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-info .navbar-start > .navbar-item,\n #optimole-app .navbar.is-info .navbar-start .navbar-link,\n #optimole-app .navbar.is-info .navbar-end > .navbar-item,\n #optimole-app .navbar.is-info .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-info .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-info .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-info .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-end .navbar-link.is-active {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-info .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-dropdown a.navbar-item.is-active {\n background-color: #008ec2;\n color: #fff; } }\n #optimole-app .navbar.is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-success .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link.is-active {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-success .navbar-start > .navbar-item,\n #optimole-app .navbar.is-success .navbar-start .navbar-link,\n #optimole-app .navbar.is-success .navbar-end > .navbar-item,\n #optimole-app .navbar.is-success .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-success .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-success .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-success .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-end .navbar-link.is-active {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-success .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-dropdown a.navbar-item.is-active {\n background-color: #34a85e;\n color: #fff; } }\n #optimole-app .navbar.is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-warning .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link.is-active {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link::after {\n border-color: rgba(0, 0, 0, 0.7); }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-warning .navbar-start > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link,\n #optimole-app .navbar.is-warning .navbar-end > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-warning .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-warning .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-warning .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link.is-active {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link::after {\n border-color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-dropdown a.navbar-item.is-active {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); } }\n #optimole-app .navbar.is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-danger .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link.is-active {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-danger .navbar-start > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link,\n #optimole-app .navbar.is-danger .navbar-end > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-danger .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-danger .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-danger .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link.is-active {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-dropdown a.navbar-item.is-active {\n background-color: #d54222;\n color: #fff; } }\n #optimole-app .navbar > .container {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n min-height: 3.25rem;\n width: 100%; }\n #optimole-app .navbar.has-shadow {\n box-shadow: 0 2px 0 0 whitesmoke; }\n #optimole-app .navbar.is-fixed-bottom, #optimole-app .navbar.is-fixed-top {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom.has-shadow {\n box-shadow: 0 -2px 0 0 whitesmoke; }\n #optimole-app .navbar.is-fixed-top {\n top: 0; }\n #optimole-app html.has-navbar-fixed-top,\n #optimole-app body.has-navbar-fixed-top {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom,\n #optimole-app body.has-navbar-fixed-bottom {\n padding-bottom: 3.25rem; }\n #optimole-app .navbar-brand,\n #optimole-app .navbar-tabs {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n min-height: 3.25rem; }\n #optimole-app .navbar-brand a.navbar-item:hover {\n background-color: transparent; }\n #optimole-app .navbar-tabs {\n -webkit-overflow-scrolling: touch;\n max-width: 100vw;\n overflow-x: auto;\n overflow-y: hidden; }\n #optimole-app .navbar-burger {\n cursor: pointer;\n display: block;\n height: 3.25rem;\n position: relative;\n width: 3.25rem;\n margin-left: auto; }\n #optimole-app .navbar-burger span {\n background-color: currentColor;\n display: block;\n height: 1px;\n left: calc(50% - 8px);\n position: absolute;\n transform-origin: center;\n transition-duration: 86ms;\n transition-property: background-color, opacity, transform;\n transition-timing-function: ease-out;\n width: 16px; }\n #optimole-app .navbar-burger span:nth-child(1) {\n top: calc(50% - 6px); }\n #optimole-app .navbar-burger span:nth-child(2) {\n top: calc(50% - 1px); }\n #optimole-app .navbar-burger span:nth-child(3) {\n top: calc(50% + 4px); }\n #optimole-app .navbar-burger:hover {\n background-color: rgba(0, 0, 0, 0.05); }\n #optimole-app .navbar-burger.is-active span:nth-child(1) {\n transform: translateY(5px) rotate(45deg); }\n #optimole-app .navbar-burger.is-active span:nth-child(2) {\n opacity: 0; }\n #optimole-app .navbar-burger.is-active span:nth-child(3) {\n transform: translateY(-5px) rotate(-45deg); }\n #optimole-app .navbar-menu {\n display: none; }\n #optimole-app .navbar-item,\n #optimole-app .navbar-link {\n color: #4a4a4a;\n display: block;\n line-height: 1.5;\n padding: 0.5rem 0.75rem;\n position: relative; }\n #optimole-app .navbar-item .icon:only-child,\n #optimole-app .navbar-link .icon:only-child {\n margin-left: -0.25rem;\n margin-right: -0.25rem; }\n #optimole-app a.navbar-item,\n #optimole-app .navbar-link {\n cursor: pointer; }\n #optimole-app a.navbar-item:hover, #optimole-app a.navbar-item.is-active,\n #optimole-app .navbar-link:hover,\n #optimole-app .navbar-link.is-active {\n background-color: #fafafa;\n color: #3273dc; }\n #optimole-app .navbar-item {\n display: block;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .navbar-item img {\n max-height: 1.75rem; }\n #optimole-app .navbar-item.has-dropdown {\n padding: 0; }\n #optimole-app .navbar-item.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .navbar-item.is-tab {\n border-bottom: 1px solid transparent;\n min-height: 3.25rem;\n padding-bottom: calc(0.5rem - 1px); }\n #optimole-app .navbar-item.is-tab:hover {\n background-color: transparent;\n border-bottom-color: #3273dc; }\n #optimole-app .navbar-item.is-tab.is-active {\n background-color: transparent;\n border-bottom-color: #3273dc;\n border-bottom-style: solid;\n border-bottom-width: 3px;\n color: #3273dc;\n padding-bottom: calc(0.5rem - 3px); }\n #optimole-app .navbar-content {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .navbar-link {\n padding-right: 2.5em; }\n #optimole-app .navbar-link::after {\n border-color: #3273dc;\n margin-top: -0.375em;\n right: 1.125em; }\n #optimole-app .navbar-dropdown {\n font-size: 0.875rem;\n padding-bottom: 0.5rem;\n padding-top: 0.5rem; }\n #optimole-app .navbar-dropdown .navbar-item {\n padding-left: 1.5rem;\n padding-right: 1.5rem; }\n #optimole-app .navbar-divider {\n background-color: whitesmoke;\n border: none;\n display: none;\n height: 2px;\n margin: 0.5rem 0; }\n @media screen and (max-width: 1087px) {\n #optimole-app .navbar > .container {\n display: block; }\n #optimole-app .navbar-brand .navbar-item,\n #optimole-app .navbar-tabs .navbar-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-link::after {\n display: none; }\n #optimole-app .navbar-menu {\n background-color: white;\n box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);\n padding: 0.5rem 0; }\n #optimole-app .navbar-menu.is-active {\n display: block; }\n #optimole-app .navbar.is-fixed-bottom-touch, #optimole-app .navbar.is-fixed-top-touch {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom-touch {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom-touch.has-shadow {\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\n #optimole-app .navbar.is-fixed-top-touch {\n top: 0; }\n #optimole-app .navbar.is-fixed-top .navbar-menu, #optimole-app .navbar.is-fixed-top-touch .navbar-menu {\n -webkit-overflow-scrolling: touch;\n max-height: calc(100vh - 3.25rem);\n overflow: auto; }\n #optimole-app html.has-navbar-fixed-top-touch,\n #optimole-app body.has-navbar-fixed-top-touch {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom-touch,\n #optimole-app body.has-navbar-fixed-bottom-touch {\n padding-bottom: 3.25rem; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar,\n #optimole-app .navbar-menu,\n #optimole-app .navbar-start,\n #optimole-app .navbar-end {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar {\n min-height: 3.25rem; }\n #optimole-app .navbar.is-spaced {\n padding: 1rem 2rem; }\n #optimole-app .navbar.is-spaced .navbar-start,\n #optimole-app .navbar.is-spaced .navbar-end {\n -ms-flex-align: center;\n align-items: center; }\n #optimole-app .navbar.is-spaced a.navbar-item,\n #optimole-app .navbar.is-spaced .navbar-link {\n border-radius: 4px; }\n #optimole-app .navbar.is-transparent a.navbar-item:hover, #optimole-app .navbar.is-transparent a.navbar-item.is-active,\n #optimole-app .navbar.is-transparent .navbar-link:hover,\n #optimole-app .navbar.is-transparent .navbar-link.is-active {\n background-color: transparent !important; }\n #optimole-app .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, #optimole-app .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link {\n background-color: transparent !important; }\n #optimole-app .navbar.is-transparent .navbar-dropdown a.navbar-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #3273dc; }\n #optimole-app .navbar-burger {\n display: none; }\n #optimole-app .navbar-item,\n #optimole-app .navbar-link {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-item {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-item.has-dropdown {\n -ms-flex-align: stretch;\n align-items: stretch; }\n #optimole-app .navbar-item.has-dropdown-up .navbar-link::after {\n transform: rotate(135deg) translate(0.25em, -0.25em); }\n #optimole-app .navbar-item.has-dropdown-up .navbar-dropdown {\n border-bottom: 2px solid #dbdbdb;\n border-radius: 6px 6px 0 0;\n border-top: none;\n bottom: 100%;\n box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1);\n top: auto; }\n #optimole-app .navbar-item.is-active .navbar-dropdown, #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown {\n display: block; }\n .navbar.is-spaced #optimole-app .navbar-item.is-active .navbar-dropdown, #optimole-app .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown, #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0); }\n #optimole-app .navbar-menu {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .navbar-start {\n -ms-flex-pack: start;\n justify-content: flex-start;\n margin-right: auto; }\n #optimole-app .navbar-end {\n -ms-flex-pack: end;\n justify-content: flex-end;\n margin-left: auto; }\n #optimole-app .navbar-dropdown {\n background-color: white;\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n border-top: 2px solid #dbdbdb;\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1);\n display: none;\n font-size: 0.875rem;\n left: 0;\n min-width: 100%;\n position: absolute;\n top: 100%;\n z-index: 20; }\n #optimole-app .navbar-dropdown .navbar-item {\n padding: 0.375rem 1rem;\n white-space: nowrap; }\n #optimole-app .navbar-dropdown a.navbar-item {\n padding-right: 3rem; }\n #optimole-app .navbar-dropdown a.navbar-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #3273dc; }\n .navbar.is-spaced #optimole-app .navbar-dropdown, #optimole-app .navbar-dropdown.is-boxed {\n border-radius: 6px;\n border-top: none;\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n display: block;\n opacity: 0;\n pointer-events: none;\n top: calc(100% + (-4px));\n transform: translateY(-5px);\n transition-duration: 86ms;\n transition-property: opacity, transform; }\n #optimole-app .navbar-dropdown.is-right {\n left: auto;\n right: 0; }\n #optimole-app .navbar-divider {\n display: block; }\n #optimole-app .navbar > .container .navbar-brand,\n #optimole-app .container > .navbar .navbar-brand {\n margin-left: -1rem; }\n #optimole-app .navbar > .container .navbar-menu,\n #optimole-app .container > .navbar .navbar-menu {\n margin-right: -1rem; }\n #optimole-app .navbar.is-fixed-bottom-desktop, #optimole-app .navbar.is-fixed-top-desktop {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom-desktop {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom-desktop.has-shadow {\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\n #optimole-app .navbar.is-fixed-top-desktop {\n top: 0; }\n #optimole-app html.has-navbar-fixed-top-desktop,\n #optimole-app body.has-navbar-fixed-top-desktop {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom-desktop,\n #optimole-app body.has-navbar-fixed-bottom-desktop {\n padding-bottom: 3.25rem; }\n #optimole-app html.has-spaced-navbar-fixed-top,\n #optimole-app body.has-spaced-navbar-fixed-top {\n padding-top: 5.25rem; }\n #optimole-app html.has-spaced-navbar-fixed-bottom,\n #optimole-app body.has-spaced-navbar-fixed-bottom {\n padding-bottom: 5.25rem; }\n #optimole-app a.navbar-item.is-active,\n #optimole-app .navbar-link.is-active {\n color: #0a0a0a; }\n #optimole-app a.navbar-item.is-active:not(:hover),\n #optimole-app .navbar-link.is-active:not(:hover) {\n background-color: transparent; }\n #optimole-app .navbar-item.has-dropdown:hover .navbar-link, #optimole-app .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #fafafa; } }\n #optimole-app .pagination {\n font-size: 1rem;\n margin: -0.25rem; }\n #optimole-app .pagination.is-small {\n font-size: 0.75rem; }\n #optimole-app .pagination.is-medium {\n font-size: 1.25rem; }\n #optimole-app .pagination.is-large {\n font-size: 1.5rem; }\n #optimole-app .pagination.is-rounded .pagination-previous,\n #optimole-app .pagination.is-rounded .pagination-next {\n padding-left: 1em;\n padding-right: 1em;\n border-radius: 290486px; }\n #optimole-app .pagination.is-rounded .pagination-link {\n border-radius: 290486px; }\n #optimole-app .pagination,\n #optimole-app .pagination-list {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n text-align: center; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis {\n font-size: 1em;\n padding-left: 0.5em;\n padding-right: 0.5em;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0.25rem;\n text-align: center; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link {\n border-color: #dbdbdb;\n color: #363636;\n min-width: 2.25em; }\n #optimole-app .pagination-previous:hover,\n #optimole-app .pagination-next:hover,\n #optimole-app .pagination-link:hover {\n border-color: #b5b5b5;\n color: #363636; }\n #optimole-app .pagination-previous:focus,\n #optimole-app .pagination-next:focus,\n #optimole-app .pagination-link:focus {\n border-color: #3273dc; }\n #optimole-app .pagination-previous:active,\n #optimole-app .pagination-next:active,\n #optimole-app .pagination-link:active {\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); }\n #optimole-app .pagination-previous[disabled],\n #optimole-app .pagination-next[disabled],\n #optimole-app .pagination-link[disabled] {\n background-color: #dbdbdb;\n border-color: #dbdbdb;\n box-shadow: none;\n color: #7a7a7a;\n opacity: 0.5; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next {\n padding-left: 0.75em;\n padding-right: 0.75em;\n white-space: nowrap; }\n #optimole-app .pagination-link.is-current {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .pagination-ellipsis {\n color: #b5b5b5;\n pointer-events: none; }\n #optimole-app .pagination-list {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n @media screen and (max-width: 768px) {\n #optimole-app .pagination {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .pagination-list li {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .pagination-list {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n -ms-flex-pack: start;\n justify-content: flex-start;\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination-previous {\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination-next {\n -ms-flex-order: 3;\n order: 3; }\n #optimole-app .pagination {\n -ms-flex-pack: justify;\n justify-content: space-between; }\n #optimole-app .pagination.is-centered .pagination-previous {\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination.is-centered .pagination-list {\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination.is-centered .pagination-next {\n -ms-flex-order: 3;\n order: 3; }\n #optimole-app .pagination.is-right .pagination-previous {\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination.is-right .pagination-next {\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination.is-right .pagination-list {\n -ms-flex-pack: end;\n justify-content: flex-end;\n -ms-flex-order: 3;\n order: 3; } }\n #optimole-app .panel {\n font-size: 1rem; }\n #optimole-app .panel:not(:last-child) {\n margin-bottom: 1.5rem; }\n #optimole-app .panel-heading,\n #optimole-app .panel-tabs,\n #optimole-app .panel-block {\n border-bottom: 1px solid #dbdbdb;\n border-left: 1px solid #dbdbdb;\n border-right: 1px solid #dbdbdb; }\n #optimole-app .panel-heading:first-child,\n #optimole-app .panel-tabs:first-child,\n #optimole-app .panel-block:first-child {\n border-top: 1px solid #dbdbdb; }\n #optimole-app .panel-heading {\n background-color: whitesmoke;\n border-radius: 4px 4px 0 0;\n color: #363636;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1.25;\n padding: 0.5em 0.75em; }\n #optimole-app .panel-tabs {\n -ms-flex-align: end;\n align-items: flex-end;\n display: -ms-flexbox;\n display: flex;\n font-size: 0.875em;\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .panel-tabs a {\n border-bottom: 1px solid #dbdbdb;\n margin-bottom: -1px;\n padding: 0.5em; }\n #optimole-app .panel-tabs a.is-active {\n border-bottom-color: #4a4a4a;\n color: #363636; }\n #optimole-app .panel-list a {\n color: #4a4a4a; }\n #optimole-app .panel-list a:hover {\n color: #3273dc; }\n #optimole-app .panel-block {\n -ms-flex-align: center;\n align-items: center;\n color: #363636;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding: 0.5em 0.75em; }\n #optimole-app .panel-block input[type=\"checkbox\"] {\n margin-right: 0.75em; }\n #optimole-app .panel-block > .control {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n width: 100%; }\n #optimole-app .panel-block.is-wrapped {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .panel-block.is-active {\n border-left-color: #3273dc;\n color: #363636; }\n #optimole-app .panel-block.is-active .panel-icon {\n color: #3273dc; }\n #optimole-app a.panel-block,\n #optimole-app label.panel-block {\n cursor: pointer; }\n #optimole-app a.panel-block:hover,\n #optimole-app label.panel-block:hover {\n background-color: whitesmoke; }\n #optimole-app .panel-icon {\n display: inline-block;\n font-size: 14px;\n height: 1em;\n line-height: 1em;\n text-align: center;\n vertical-align: top;\n width: 1em;\n color: #7a7a7a;\n margin-right: 0.75em; }\n #optimole-app .panel-icon .fa {\n font-size: inherit;\n line-height: inherit; }\n #optimole-app .tabs {\n -webkit-overflow-scrolling: touch;\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n font-size: 1rem;\n -ms-flex-pack: justify;\n justify-content: space-between;\n overflow: hidden;\n overflow-x: auto;\n white-space: nowrap; }\n #optimole-app .tabs a {\n -ms-flex-align: center;\n align-items: center;\n border-bottom-color: #dbdbdb;\n border-bottom-style: solid;\n border-bottom-width: 1px;\n color: #4a4a4a;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: -1px;\n padding: 0.5em 1em;\n vertical-align: top; }\n #optimole-app .tabs a:hover {\n border-bottom-color: #363636;\n color: #363636; }\n #optimole-app .tabs li {\n display: block; }\n #optimole-app .tabs li.is-active a {\n border-bottom-color: #3273dc;\n color: #3273dc; }\n #optimole-app .tabs ul {\n -ms-flex-align: center;\n align-items: center;\n border-bottom-color: #dbdbdb;\n border-bottom-style: solid;\n border-bottom-width: 1px;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .tabs ul.is-left {\n padding-right: 0.75em; }\n #optimole-app .tabs ul.is-center {\n -ms-flex: none;\n flex: none;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0.75em;\n padding-right: 0.75em; }\n #optimole-app .tabs ul.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding-left: 0.75em; }\n #optimole-app .tabs .icon:first-child {\n margin-right: 0.5em; }\n #optimole-app .tabs .icon:last-child {\n margin-left: 0.5em; }\n #optimole-app .tabs.is-centered ul {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .tabs.is-right ul {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .tabs.is-boxed a {\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0; }\n #optimole-app .tabs.is-boxed a:hover {\n background-color: whitesmoke;\n border-bottom-color: #dbdbdb; }\n #optimole-app .tabs.is-boxed li.is-active a {\n background-color: white;\n border-color: #dbdbdb;\n border-bottom-color: transparent !important; }\n #optimole-app .tabs.is-fullwidth li {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .tabs.is-toggle a {\n border-color: #dbdbdb;\n border-style: solid;\n border-width: 1px;\n margin-bottom: 0;\n position: relative; }\n #optimole-app .tabs.is-toggle a:hover {\n background-color: whitesmoke;\n border-color: #b5b5b5;\n z-index: 2; }\n #optimole-app .tabs.is-toggle li + li {\n margin-left: -1px; }\n #optimole-app .tabs.is-toggle li:first-child a {\n border-radius: 4px 0 0 4px; }\n #optimole-app .tabs.is-toggle li:last-child a {\n border-radius: 0 4px 4px 0; }\n #optimole-app .tabs.is-toggle li.is-active a {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff;\n z-index: 1; }\n #optimole-app .tabs.is-toggle ul {\n border-bottom: none; }\n #optimole-app .tabs.is-toggle.is-toggle-rounded li:first-child a {\n border-bottom-left-radius: 290486px;\n border-top-left-radius: 290486px;\n padding-left: 1.25em; }\n #optimole-app .tabs.is-toggle.is-toggle-rounded li:last-child a {\n border-bottom-right-radius: 290486px;\n border-top-right-radius: 290486px;\n padding-right: 1.25em; }\n #optimole-app .tabs.is-small {\n font-size: 0.75rem; }\n #optimole-app .tabs.is-medium {\n font-size: 1.25rem; }\n #optimole-app .tabs.is-large {\n font-size: 1.5rem; }\n #optimole-app .column {\n display: block;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n padding: 0.75rem; }\n .columns.is-mobile > #optimole-app .column.is-narrow {\n -ms-flex: none;\n flex: none; }\n .columns.is-mobile > #optimole-app .column.is-full {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n .columns.is-mobile > #optimole-app .column.is-three-quarters {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n .columns.is-mobile > #optimole-app .column.is-two-thirds {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n .columns.is-mobile > #optimole-app .column.is-half {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n .columns.is-mobile > #optimole-app .column.is-one-third {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n .columns.is-mobile > #optimole-app .column.is-one-quarter {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n .columns.is-mobile > #optimole-app .column.is-one-fifth {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n .columns.is-mobile > #optimole-app .column.is-two-fifths {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n .columns.is-mobile > #optimole-app .column.is-three-fifths {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n .columns.is-mobile > #optimole-app .column.is-four-fifths {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n .columns.is-mobile > #optimole-app .column.is-offset-three-quarters {\n margin-left: 75%; }\n .columns.is-mobile > #optimole-app .column.is-offset-two-thirds {\n margin-left: 66.6666%; }\n .columns.is-mobile > #optimole-app .column.is-offset-half {\n margin-left: 50%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-third {\n margin-left: 33.3333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-quarter {\n margin-left: 25%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-fifth {\n margin-left: 20%; }\n .columns.is-mobile > #optimole-app .column.is-offset-two-fifths {\n margin-left: 40%; }\n .columns.is-mobile > #optimole-app .column.is-offset-three-fifths {\n margin-left: 60%; }\n .columns.is-mobile > #optimole-app .column.is-offset-four-fifths {\n margin-left: 80%; }\n .columns.is-mobile > #optimole-app .column.is-1 {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-1 {\n margin-left: 8.33333%; }\n .columns.is-mobile > #optimole-app .column.is-2 {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-2 {\n margin-left: 16.66667%; }\n .columns.is-mobile > #optimole-app .column.is-3 {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n .columns.is-mobile > #optimole-app .column.is-offset-3 {\n margin-left: 25%; }\n .columns.is-mobile > #optimole-app .column.is-4 {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-4 {\n margin-left: 33.33333%; }\n .columns.is-mobile > #optimole-app .column.is-5 {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-5 {\n margin-left: 41.66667%; }\n .columns.is-mobile > #optimole-app .column.is-6 {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n .columns.is-mobile > #optimole-app .column.is-offset-6 {\n margin-left: 50%; }\n .columns.is-mobile > #optimole-app .column.is-7 {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-7 {\n margin-left: 58.33333%; }\n .columns.is-mobile > #optimole-app .column.is-8 {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-8 {\n margin-left: 66.66667%; }\n .columns.is-mobile > #optimole-app .column.is-9 {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n .columns.is-mobile > #optimole-app .column.is-offset-9 {\n margin-left: 75%; }\n .columns.is-mobile > #optimole-app .column.is-10 {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-10 {\n margin-left: 83.33333%; }\n .columns.is-mobile > #optimole-app .column.is-11 {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-11 {\n margin-left: 91.66667%; }\n .columns.is-mobile > #optimole-app .column.is-12 {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n .columns.is-mobile > #optimole-app .column.is-offset-12 {\n margin-left: 100%; }\n @media screen and (max-width: 768px) {\n #optimole-app .column.is-narrow-mobile {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full-mobile {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters-mobile {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds-mobile {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half-mobile {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third-mobile {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter-mobile {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth-mobile {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths-mobile {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths-mobile {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths-mobile {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters-mobile {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds-mobile {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half-mobile {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third-mobile {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter-mobile {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth-mobile {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths-mobile {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths-mobile {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths-mobile {\n margin-left: 80%; }\n #optimole-app .column.is-1-mobile {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1-mobile {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2-mobile {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2-mobile {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3-mobile {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3-mobile {\n margin-left: 25%; }\n #optimole-app .column.is-4-mobile {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4-mobile {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5-mobile {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5-mobile {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6-mobile {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6-mobile {\n margin-left: 50%; }\n #optimole-app .column.is-7-mobile {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7-mobile {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8-mobile {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8-mobile {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9-mobile {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9-mobile {\n margin-left: 75%; }\n #optimole-app .column.is-10-mobile {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10-mobile {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11-mobile {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11-mobile {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12-mobile {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12-mobile {\n margin-left: 100%; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .column.is-narrow, #optimole-app .column.is-narrow-tablet {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full, #optimole-app .column.is-full-tablet {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters, #optimole-app .column.is-three-quarters-tablet {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds, #optimole-app .column.is-two-thirds-tablet {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half, #optimole-app .column.is-half-tablet {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third, #optimole-app .column.is-one-third-tablet {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter, #optimole-app .column.is-one-quarter-tablet {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth, #optimole-app .column.is-one-fifth-tablet {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths, #optimole-app .column.is-two-fifths-tablet {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths, #optimole-app .column.is-three-fifths-tablet {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths, #optimole-app .column.is-four-fifths-tablet {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters, #optimole-app .column.is-offset-three-quarters-tablet {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds, #optimole-app .column.is-offset-two-thirds-tablet {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half, #optimole-app .column.is-offset-half-tablet {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third, #optimole-app .column.is-offset-one-third-tablet {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter, #optimole-app .column.is-offset-one-quarter-tablet {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth, #optimole-app .column.is-offset-one-fifth-tablet {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths, #optimole-app .column.is-offset-two-fifths-tablet {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths, #optimole-app .column.is-offset-three-fifths-tablet {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths, #optimole-app .column.is-offset-four-fifths-tablet {\n margin-left: 80%; }\n #optimole-app .column.is-1, #optimole-app .column.is-1-tablet {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1, #optimole-app .column.is-offset-1-tablet {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2, #optimole-app .column.is-2-tablet {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2, #optimole-app .column.is-offset-2-tablet {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3, #optimole-app .column.is-3-tablet {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3, #optimole-app .column.is-offset-3-tablet {\n margin-left: 25%; }\n #optimole-app .column.is-4, #optimole-app .column.is-4-tablet {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4, #optimole-app .column.is-offset-4-tablet {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5, #optimole-app .column.is-5-tablet {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5, #optimole-app .column.is-offset-5-tablet {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6, #optimole-app .column.is-6-tablet {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6, #optimole-app .column.is-offset-6-tablet {\n margin-left: 50%; }\n #optimole-app .column.is-7, #optimole-app .column.is-7-tablet {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7, #optimole-app .column.is-offset-7-tablet {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8, #optimole-app .column.is-8-tablet {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8, #optimole-app .column.is-offset-8-tablet {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9, #optimole-app .column.is-9-tablet {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9, #optimole-app .column.is-offset-9-tablet {\n margin-left: 75%; }\n #optimole-app .column.is-10, #optimole-app .column.is-10-tablet {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10, #optimole-app .column.is-offset-10-tablet {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11, #optimole-app .column.is-11-tablet {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11, #optimole-app .column.is-offset-11-tablet {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12, #optimole-app .column.is-12-tablet {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12, #optimole-app .column.is-offset-12-tablet {\n margin-left: 100%; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .column.is-narrow-touch {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full-touch {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters-touch {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds-touch {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half-touch {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third-touch {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter-touch {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth-touch {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths-touch {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths-touch {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths-touch {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters-touch {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds-touch {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half-touch {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third-touch {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter-touch {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth-touch {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths-touch {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths-touch {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths-touch {\n margin-left: 80%; }\n #optimole-app .column.is-1-touch {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1-touch {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2-touch {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2-touch {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3-touch {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3-touch {\n margin-left: 25%; }\n #optimole-app .column.is-4-touch {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4-touch {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5-touch {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5-touch {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6-touch {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6-touch {\n margin-left: 50%; }\n #optimole-app .column.is-7-touch {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7-touch {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8-touch {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8-touch {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9-touch {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9-touch {\n margin-left: 75%; }\n #optimole-app .column.is-10-touch {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10-touch {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11-touch {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11-touch {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12-touch {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12-touch {\n margin-left: 100%; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .column.is-narrow-desktop {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full-desktop {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters-desktop {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds-desktop {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half-desktop {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third-desktop {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter-desktop {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth-desktop {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths-desktop {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths-desktop {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths-desktop {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters-desktop {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds-desktop {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half-desktop {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third-desktop {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter-desktop {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth-desktop {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths-desktop {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths-desktop {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths-desktop {\n margin-left: 80%; }\n #optimole-app .column.is-1-desktop {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1-desktop {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2-desktop {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2-desktop {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3-desktop {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3-desktop {\n margin-left: 25%; }\n #optimole-app .column.is-4-desktop {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4-desktop {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5-desktop {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5-desktop {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6-desktop {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6-desktop {\n margin-left: 50%; }\n #optimole-app .column.is-7-desktop {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7-desktop {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8-desktop {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8-desktop {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9-desktop {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9-desktop {\n margin-left: 75%; }\n #optimole-app .column.is-10-desktop {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10-desktop {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11-desktop {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11-desktop {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12-desktop {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12-desktop {\n margin-left: 100%; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .column.is-narrow-widescreen {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full-widescreen {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters-widescreen {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds-widescreen {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half-widescreen {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third-widescreen {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter-widescreen {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth-widescreen {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths-widescreen {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths-widescreen {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths-widescreen {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters-widescreen {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds-widescreen {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half-widescreen {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third-widescreen {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter-widescreen {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth-widescreen {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths-widescreen {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths-widescreen {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths-widescreen {\n margin-left: 80%; }\n #optimole-app .column.is-1-widescreen {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1-widescreen {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2-widescreen {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2-widescreen {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3-widescreen {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3-widescreen {\n margin-left: 25%; }\n #optimole-app .column.is-4-widescreen {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4-widescreen {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5-widescreen {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5-widescreen {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6-widescreen {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6-widescreen {\n margin-left: 50%; }\n #optimole-app .column.is-7-widescreen {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7-widescreen {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8-widescreen {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8-widescreen {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9-widescreen {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9-widescreen {\n margin-left: 75%; }\n #optimole-app .column.is-10-widescreen {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10-widescreen {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11-widescreen {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11-widescreen {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12-widescreen {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12-widescreen {\n margin-left: 100%; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .column.is-narrow-fullhd {\n -ms-flex: none;\n flex: none; }\n #optimole-app .column.is-full-fullhd {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-three-quarters-fullhd {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-two-thirds-fullhd {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n #optimole-app .column.is-half-fullhd {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-one-third-fullhd {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n #optimole-app .column.is-one-quarter-fullhd {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-one-fifth-fullhd {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n #optimole-app .column.is-two-fifths-fullhd {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n #optimole-app .column.is-three-fifths-fullhd {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n #optimole-app .column.is-four-fifths-fullhd {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n #optimole-app .column.is-offset-three-quarters-fullhd {\n margin-left: 75%; }\n #optimole-app .column.is-offset-two-thirds-fullhd {\n margin-left: 66.6666%; }\n #optimole-app .column.is-offset-half-fullhd {\n margin-left: 50%; }\n #optimole-app .column.is-offset-one-third-fullhd {\n margin-left: 33.3333%; }\n #optimole-app .column.is-offset-one-quarter-fullhd {\n margin-left: 25%; }\n #optimole-app .column.is-offset-one-fifth-fullhd {\n margin-left: 20%; }\n #optimole-app .column.is-offset-two-fifths-fullhd {\n margin-left: 40%; }\n #optimole-app .column.is-offset-three-fifths-fullhd {\n margin-left: 60%; }\n #optimole-app .column.is-offset-four-fifths-fullhd {\n margin-left: 80%; }\n #optimole-app .column.is-1-fullhd {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .column.is-offset-1-fullhd {\n margin-left: 8.33333%; }\n #optimole-app .column.is-2-fullhd {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .column.is-offset-2-fullhd {\n margin-left: 16.66667%; }\n #optimole-app .column.is-3-fullhd {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .column.is-offset-3-fullhd {\n margin-left: 25%; }\n #optimole-app .column.is-4-fullhd {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .column.is-offset-4-fullhd {\n margin-left: 33.33333%; }\n #optimole-app .column.is-5-fullhd {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .column.is-offset-5-fullhd {\n margin-left: 41.66667%; }\n #optimole-app .column.is-6-fullhd {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .column.is-offset-6-fullhd {\n margin-left: 50%; }\n #optimole-app .column.is-7-fullhd {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .column.is-offset-7-fullhd {\n margin-left: 58.33333%; }\n #optimole-app .column.is-8-fullhd {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .column.is-offset-8-fullhd {\n margin-left: 66.66667%; }\n #optimole-app .column.is-9-fullhd {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .column.is-offset-9-fullhd {\n margin-left: 75%; }\n #optimole-app .column.is-10-fullhd {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .column.is-offset-10-fullhd {\n margin-left: 83.33333%; }\n #optimole-app .column.is-11-fullhd {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .column.is-offset-11-fullhd {\n margin-left: 91.66667%; }\n #optimole-app .column.is-12-fullhd {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n #optimole-app .column.is-offset-12-fullhd {\n margin-left: 100%; } }\n #optimole-app .columns {\n margin-left: -0.75rem;\n margin-right: -0.75rem;\n margin-top: -0.75rem; }\n #optimole-app .columns:last-child {\n margin-bottom: -0.75rem; }\n #optimole-app .columns:not(:last-child) {\n margin-bottom: calc(1.5rem - 0.75rem); }\n #optimole-app .columns.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .columns.is-gapless {\n margin-left: 0;\n margin-right: 0;\n margin-top: 0; }\n #optimole-app .columns.is-gapless > .column {\n margin: 0;\n padding: 0 !important; }\n #optimole-app .columns.is-gapless:not(:last-child) {\n margin-bottom: 1.5rem; }\n #optimole-app .columns.is-gapless:last-child {\n margin-bottom: 0; }\n #optimole-app .columns.is-mobile {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .columns.is-multiline {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .columns.is-vcentered {\n -ms-flex-align: center;\n align-items: center; }\n @media screen and (min-width: 769px), print {\n #optimole-app .columns:not(.is-desktop) {\n display: -ms-flexbox;\n display: flex; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .columns.is-desktop {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .columns.is-variable {\n --columnGap: 0.75rem;\n margin-left: calc(-1 * var(--columnGap));\n margin-right: calc(-1 * var(--columnGap)); }\n #optimole-app .columns.is-variable .column {\n padding-left: var(--columnGap);\n padding-right: var(--columnGap); }\n #optimole-app .columns.is-variable.is-0 {\n --columnGap: 0rem; }\n #optimole-app .columns.is-variable.is-1 {\n --columnGap: 0.25rem; }\n #optimole-app .columns.is-variable.is-2 {\n --columnGap: 0.5rem; }\n #optimole-app .columns.is-variable.is-3 {\n --columnGap: 0.75rem; }\n #optimole-app .columns.is-variable.is-4 {\n --columnGap: 1rem; }\n #optimole-app .columns.is-variable.is-5 {\n --columnGap: 1.25rem; }\n #optimole-app .columns.is-variable.is-6 {\n --columnGap: 1.5rem; }\n #optimole-app .columns.is-variable.is-7 {\n --columnGap: 1.75rem; }\n #optimole-app .columns.is-variable.is-8 {\n --columnGap: 2rem; }\n #optimole-app .tile {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: block;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n min-height: -webkit-min-content;\n min-height: -moz-min-content;\n min-height: min-content; }\n #optimole-app .tile.is-ancestor {\n margin-left: -0.75rem;\n margin-right: -0.75rem;\n margin-top: -0.75rem; }\n #optimole-app .tile.is-ancestor:last-child {\n margin-bottom: -0.75rem; }\n #optimole-app .tile.is-ancestor:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .tile.is-child {\n margin: 0 !important; }\n #optimole-app .tile.is-parent {\n padding: 0.75rem; }\n #optimole-app .tile.is-vertical {\n -ms-flex-direction: column;\n flex-direction: column; }\n #optimole-app .tile.is-vertical > .tile.is-child:not(:last-child) {\n margin-bottom: 1.5rem !important; }\n @media screen and (min-width: 769px), print {\n #optimole-app .tile:not(.is-child) {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .tile.is-1 {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n #optimole-app .tile.is-2 {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n #optimole-app .tile.is-3 {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n #optimole-app .tile.is-4 {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n #optimole-app .tile.is-5 {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n #optimole-app .tile.is-6 {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n #optimole-app .tile.is-7 {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n #optimole-app .tile.is-8 {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n #optimole-app .tile.is-9 {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n #optimole-app .tile.is-10 {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n #optimole-app .tile.is-11 {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n #optimole-app .tile.is-12 {\n -ms-flex: none;\n flex: none;\n width: 100%; } }\n #optimole-app .hero {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n #optimole-app .hero .navbar {\n background: none; }\n #optimole-app .hero .tabs ul {\n border-bottom: none; }\n #optimole-app .hero.is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .hero.is-white a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-white strong {\n color: inherit; }\n #optimole-app .hero.is-white .title {\n color: #0a0a0a; }\n #optimole-app .hero.is-white .subtitle {\n color: rgba(10, 10, 10, 0.9); }\n #optimole-app .hero.is-white .subtitle a:not(.button),\n #optimole-app .hero.is-white .subtitle strong {\n color: #0a0a0a; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-white .navbar-menu {\n background-color: white; } }\n #optimole-app .hero.is-white .navbar-item,\n #optimole-app .hero.is-white .navbar-link {\n color: rgba(10, 10, 10, 0.7); }\n #optimole-app .hero.is-white a.navbar-item:hover, #optimole-app .hero.is-white a.navbar-item.is-active,\n #optimole-app .hero.is-white .navbar-link:hover,\n #optimole-app .hero.is-white .navbar-link.is-active {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .hero.is-white .tabs a {\n color: #0a0a0a;\n opacity: 0.9; }\n #optimole-app .hero.is-white .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-white .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-white .tabs.is-boxed a, #optimole-app .hero.is-white .tabs.is-toggle a {\n color: #0a0a0a; }\n #optimole-app .hero.is-white .tabs.is-boxed a:hover, #optimole-app .hero.is-white .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-white .tabs.is-boxed li.is-active a, #optimole-app .hero.is-white .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-white .tabs.is-toggle li.is-active a, #optimole-app .hero.is-white .tabs.is-toggle li.is-active a:hover {\n background-color: #0a0a0a;\n border-color: #0a0a0a;\n color: white; }\n #optimole-app .hero.is-white.is-bold {\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-white.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } }\n #optimole-app .hero.is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .hero.is-black a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-black strong {\n color: inherit; }\n #optimole-app .hero.is-black .title {\n color: white; }\n #optimole-app .hero.is-black .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-black .subtitle a:not(.button),\n #optimole-app .hero.is-black .subtitle strong {\n color: white; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-black .navbar-menu {\n background-color: #0a0a0a; } }\n #optimole-app .hero.is-black .navbar-item,\n #optimole-app .hero.is-black .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-black a.navbar-item:hover, #optimole-app .hero.is-black a.navbar-item.is-active,\n #optimole-app .hero.is-black .navbar-link:hover,\n #optimole-app .hero.is-black .navbar-link.is-active {\n background-color: black;\n color: white; }\n #optimole-app .hero.is-black .tabs a {\n color: white;\n opacity: 0.9; }\n #optimole-app .hero.is-black .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-black .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-black .tabs.is-boxed a, #optimole-app .hero.is-black .tabs.is-toggle a {\n color: white; }\n #optimole-app .hero.is-black .tabs.is-boxed a:hover, #optimole-app .hero.is-black .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-black .tabs.is-boxed li.is-active a, #optimole-app .hero.is-black .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-black .tabs.is-toggle li.is-active a, #optimole-app .hero.is-black .tabs.is-toggle li.is-active a:hover {\n background-color: white;\n border-color: white;\n color: #0a0a0a; }\n #optimole-app .hero.is-black.is-bold {\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-black.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } }\n #optimole-app .hero.is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .hero.is-light a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-light strong {\n color: inherit; }\n #optimole-app .hero.is-light .title {\n color: #363636; }\n #optimole-app .hero.is-light .subtitle {\n color: rgba(54, 54, 54, 0.9); }\n #optimole-app .hero.is-light .subtitle a:not(.button),\n #optimole-app .hero.is-light .subtitle strong {\n color: #363636; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-light .navbar-menu {\n background-color: whitesmoke; } }\n #optimole-app .hero.is-light .navbar-item,\n #optimole-app .hero.is-light .navbar-link {\n color: rgba(54, 54, 54, 0.7); }\n #optimole-app .hero.is-light a.navbar-item:hover, #optimole-app .hero.is-light a.navbar-item.is-active,\n #optimole-app .hero.is-light .navbar-link:hover,\n #optimole-app .hero.is-light .navbar-link.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .hero.is-light .tabs a {\n color: #363636;\n opacity: 0.9; }\n #optimole-app .hero.is-light .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-light .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-light .tabs.is-boxed a, #optimole-app .hero.is-light .tabs.is-toggle a {\n color: #363636; }\n #optimole-app .hero.is-light .tabs.is-boxed a:hover, #optimole-app .hero.is-light .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-light .tabs.is-boxed li.is-active a, #optimole-app .hero.is-light .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-light .tabs.is-toggle li.is-active a, #optimole-app .hero.is-light .tabs.is-toggle li.is-active a:hover {\n background-color: #363636;\n border-color: #363636;\n color: whitesmoke; }\n #optimole-app .hero.is-light.is-bold {\n background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-light.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } }\n #optimole-app .hero.is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-dark strong {\n color: inherit; }\n #optimole-app .hero.is-dark .title {\n color: whitesmoke; }\n #optimole-app .hero.is-dark .subtitle {\n color: rgba(245, 245, 245, 0.9); }\n #optimole-app .hero.is-dark .subtitle a:not(.button),\n #optimole-app .hero.is-dark .subtitle strong {\n color: whitesmoke; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-dark .navbar-menu {\n background-color: #363636; } }\n #optimole-app .hero.is-dark .navbar-item,\n #optimole-app .hero.is-dark .navbar-link {\n color: rgba(245, 245, 245, 0.7); }\n #optimole-app .hero.is-dark a.navbar-item:hover, #optimole-app .hero.is-dark a.navbar-item.is-active,\n #optimole-app .hero.is-dark .navbar-link:hover,\n #optimole-app .hero.is-dark .navbar-link.is-active {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .hero.is-dark .tabs a {\n color: whitesmoke;\n opacity: 0.9; }\n #optimole-app .hero.is-dark .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-dark .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-dark .tabs.is-boxed a, #optimole-app .hero.is-dark .tabs.is-toggle a {\n color: whitesmoke; }\n #optimole-app .hero.is-dark .tabs.is-boxed a:hover, #optimole-app .hero.is-dark .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-dark .tabs.is-boxed li.is-active a, #optimole-app .hero.is-dark .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-dark .tabs.is-toggle li.is-active a, #optimole-app .hero.is-dark .tabs.is-toggle li.is-active a:hover {\n background-color: whitesmoke;\n border-color: whitesmoke;\n color: #363636; }\n #optimole-app .hero.is-dark.is-bold {\n background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-dark.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } }\n #optimole-app .hero.is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-primary strong {\n color: inherit; }\n #optimole-app .hero.is-primary .title {\n color: #fff; }\n #optimole-app .hero.is-primary .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-primary .subtitle a:not(.button),\n #optimole-app .hero.is-primary .subtitle strong {\n color: #fff; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-primary .navbar-menu {\n background-color: #e7602a; } }\n #optimole-app .hero.is-primary .navbar-item,\n #optimole-app .hero.is-primary .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-primary a.navbar-item:hover, #optimole-app .hero.is-primary a.navbar-item.is-active,\n #optimole-app .hero.is-primary .navbar-link:hover,\n #optimole-app .hero.is-primary .navbar-link.is-active {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .hero.is-primary .tabs a {\n color: #fff;\n opacity: 0.9; }\n #optimole-app .hero.is-primary .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-primary .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-primary .tabs.is-boxed a, #optimole-app .hero.is-primary .tabs.is-toggle a {\n color: #fff; }\n #optimole-app .hero.is-primary .tabs.is-boxed a:hover, #optimole-app .hero.is-primary .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-primary .tabs.is-boxed li.is-active a, #optimole-app .hero.is-primary .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-primary .tabs.is-toggle li.is-active a, #optimole-app .hero.is-primary .tabs.is-toggle li.is-active a:hover {\n background-color: #fff;\n border-color: #fff;\n color: #e7602a; }\n #optimole-app .hero.is-primary.is-bold {\n background-image: linear-gradient(141deg, #d3230b 0%, #e7602a 71%, #ef8d3c 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-primary.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #d3230b 0%, #e7602a 71%, #ef8d3c 100%); } }\n #optimole-app .hero.is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .hero.is-link a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-link strong {\n color: inherit; }\n #optimole-app .hero.is-link .title {\n color: #fff; }\n #optimole-app .hero.is-link .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-link .subtitle a:not(.button),\n #optimole-app .hero.is-link .subtitle strong {\n color: #fff; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-link .navbar-menu {\n background-color: #3273dc; } }\n #optimole-app .hero.is-link .navbar-item,\n #optimole-app .hero.is-link .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-link a.navbar-item:hover, #optimole-app .hero.is-link a.navbar-item.is-active,\n #optimole-app .hero.is-link .navbar-link:hover,\n #optimole-app .hero.is-link .navbar-link.is-active {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .hero.is-link .tabs a {\n color: #fff;\n opacity: 0.9; }\n #optimole-app .hero.is-link .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-link .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-link .tabs.is-boxed a, #optimole-app .hero.is-link .tabs.is-toggle a {\n color: #fff; }\n #optimole-app .hero.is-link .tabs.is-boxed a:hover, #optimole-app .hero.is-link .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-link .tabs.is-boxed li.is-active a, #optimole-app .hero.is-link .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-link .tabs.is-toggle li.is-active a, #optimole-app .hero.is-link .tabs.is-toggle li.is-active a:hover {\n background-color: #fff;\n border-color: #fff;\n color: #3273dc; }\n #optimole-app .hero.is-link.is-bold {\n background-image: linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-link.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%); } }\n #optimole-app .hero.is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .hero.is-info a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-info strong {\n color: inherit; }\n #optimole-app .hero.is-info .title {\n color: #fff; }\n #optimole-app .hero.is-info .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-info .subtitle a:not(.button),\n #optimole-app .hero.is-info .subtitle strong {\n color: #fff; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-info .navbar-menu {\n background-color: #008ec2; } }\n #optimole-app .hero.is-info .navbar-item,\n #optimole-app .hero.is-info .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-info a.navbar-item:hover, #optimole-app .hero.is-info a.navbar-item.is-active,\n #optimole-app .hero.is-info .navbar-link:hover,\n #optimole-app .hero.is-info .navbar-link.is-active {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .hero.is-info .tabs a {\n color: #fff;\n opacity: 0.9; }\n #optimole-app .hero.is-info .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-info .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-info .tabs.is-boxed a, #optimole-app .hero.is-info .tabs.is-toggle a {\n color: #fff; }\n #optimole-app .hero.is-info .tabs.is-boxed a:hover, #optimole-app .hero.is-info .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-info .tabs.is-boxed li.is-active a, #optimole-app .hero.is-info .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-info .tabs.is-toggle li.is-active a, #optimole-app .hero.is-info .tabs.is-toggle li.is-active a:hover {\n background-color: #fff;\n border-color: #fff;\n color: #008ec2; }\n #optimole-app .hero.is-info.is-bold {\n background-image: linear-gradient(141deg, #00818f 0%, #008ec2 71%, #007cdc 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-info.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #00818f 0%, #008ec2 71%, #007cdc 100%); } }\n #optimole-app .hero.is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .hero.is-success a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-success strong {\n color: inherit; }\n #optimole-app .hero.is-success .title {\n color: #fff; }\n #optimole-app .hero.is-success .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-success .subtitle a:not(.button),\n #optimole-app .hero.is-success .subtitle strong {\n color: #fff; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-success .navbar-menu {\n background-color: #34a85e; } }\n #optimole-app .hero.is-success .navbar-item,\n #optimole-app .hero.is-success .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-success a.navbar-item:hover, #optimole-app .hero.is-success a.navbar-item.is-active,\n #optimole-app .hero.is-success .navbar-link:hover,\n #optimole-app .hero.is-success .navbar-link.is-active {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .hero.is-success .tabs a {\n color: #fff;\n opacity: 0.9; }\n #optimole-app .hero.is-success .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-success .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-success .tabs.is-boxed a, #optimole-app .hero.is-success .tabs.is-toggle a {\n color: #fff; }\n #optimole-app .hero.is-success .tabs.is-boxed a:hover, #optimole-app .hero.is-success .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-success .tabs.is-boxed li.is-active a, #optimole-app .hero.is-success .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-success .tabs.is-toggle li.is-active a, #optimole-app .hero.is-success .tabs.is-toggle li.is-active a:hover {\n background-color: #fff;\n border-color: #fff;\n color: #34a85e; }\n #optimole-app .hero.is-success.is-bold {\n background-image: linear-gradient(141deg, #1f8a34 0%, #34a85e 71%, #34c27f 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-success.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #1f8a34 0%, #34a85e 71%, #34c27f 100%); } }\n #optimole-app .hero.is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-warning strong {\n color: inherit; }\n #optimole-app .hero.is-warning .title {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .hero.is-warning .subtitle {\n color: rgba(0, 0, 0, 0.9); }\n #optimole-app .hero.is-warning .subtitle a:not(.button),\n #optimole-app .hero.is-warning .subtitle strong {\n color: rgba(0, 0, 0, 0.7); }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-warning .navbar-menu {\n background-color: #ffdd57; } }\n #optimole-app .hero.is-warning .navbar-item,\n #optimole-app .hero.is-warning .navbar-link {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .hero.is-warning a.navbar-item:hover, #optimole-app .hero.is-warning a.navbar-item.is-active,\n #optimole-app .hero.is-warning .navbar-link:hover,\n #optimole-app .hero.is-warning .navbar-link.is-active {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .hero.is-warning .tabs a {\n color: rgba(0, 0, 0, 0.7);\n opacity: 0.9; }\n #optimole-app .hero.is-warning .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-warning .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-warning .tabs.is-boxed a, #optimole-app .hero.is-warning .tabs.is-toggle a {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .hero.is-warning .tabs.is-boxed a:hover, #optimole-app .hero.is-warning .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-warning .tabs.is-boxed li.is-active a, #optimole-app .hero.is-warning .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-warning .tabs.is-toggle li.is-active a, #optimole-app .hero.is-warning .tabs.is-toggle li.is-active a:hover {\n background-color: rgba(0, 0, 0, 0.7);\n border-color: rgba(0, 0, 0, 0.7);\n color: #ffdd57; }\n #optimole-app .hero.is-warning.is-bold {\n background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-warning.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } }\n #optimole-app .hero.is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag),\n #optimole-app .hero.is-danger strong {\n color: inherit; }\n #optimole-app .hero.is-danger .title {\n color: #fff; }\n #optimole-app .hero.is-danger .subtitle {\n color: rgba(255, 255, 255, 0.9); }\n #optimole-app .hero.is-danger .subtitle a:not(.button),\n #optimole-app .hero.is-danger .subtitle strong {\n color: #fff; }\n @media screen and (max-width: 1087px) {\n #optimole-app .hero.is-danger .navbar-menu {\n background-color: #d54222; } }\n #optimole-app .hero.is-danger .navbar-item,\n #optimole-app .hero.is-danger .navbar-link {\n color: rgba(255, 255, 255, 0.7); }\n #optimole-app .hero.is-danger a.navbar-item:hover, #optimole-app .hero.is-danger a.navbar-item.is-active,\n #optimole-app .hero.is-danger .navbar-link:hover,\n #optimole-app .hero.is-danger .navbar-link.is-active {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .hero.is-danger .tabs a {\n color: #fff;\n opacity: 0.9; }\n #optimole-app .hero.is-danger .tabs a:hover {\n opacity: 1; }\n #optimole-app .hero.is-danger .tabs li.is-active a {\n opacity: 1; }\n #optimole-app .hero.is-danger .tabs.is-boxed a, #optimole-app .hero.is-danger .tabs.is-toggle a {\n color: #fff; }\n #optimole-app .hero.is-danger .tabs.is-boxed a:hover, #optimole-app .hero.is-danger .tabs.is-toggle a:hover {\n background-color: rgba(10, 10, 10, 0.1); }\n #optimole-app .hero.is-danger .tabs.is-boxed li.is-active a, #optimole-app .hero.is-danger .tabs.is-boxed li.is-active a:hover, #optimole-app .hero.is-danger .tabs.is-toggle li.is-active a, #optimole-app .hero.is-danger .tabs.is-toggle li.is-active a:hover {\n background-color: #fff;\n border-color: #fff;\n color: #d54222; }\n #optimole-app .hero.is-danger.is-bold {\n background-image: linear-gradient(141deg, #b31311 0%, #d54222 71%, #e46c2c 100%); }\n @media screen and (max-width: 768px) {\n #optimole-app .hero.is-danger.is-bold .navbar-menu {\n background-image: linear-gradient(141deg, #b31311 0%, #d54222 71%, #e46c2c 100%); } }\n #optimole-app .hero.is-small .hero-body {\n padding-bottom: 1.5rem;\n padding-top: 1.5rem; }\n @media screen and (min-width: 769px), print {\n #optimole-app .hero.is-medium .hero-body {\n padding-bottom: 9rem;\n padding-top: 9rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .hero.is-large .hero-body {\n padding-bottom: 18rem;\n padding-top: 18rem; } }\n #optimole-app .hero.is-halfheight .hero-body, #optimole-app .hero.is-fullheight .hero-body {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .hero.is-halfheight .hero-body > .container, #optimole-app .hero.is-fullheight .hero-body > .container {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .hero.is-halfheight {\n min-height: 50vh; }\n #optimole-app .hero.is-fullheight {\n min-height: 100vh; }\n #optimole-app .hero-video {\n overflow: hidden; }\n #optimole-app .hero-video video {\n left: 50%;\n min-height: 100%;\n min-width: 100%;\n position: absolute;\n top: 50%;\n transform: translate3d(-50%, -50%, 0); }\n #optimole-app .hero-video.is-transparent {\n opacity: 0.3; }\n @media screen and (max-width: 768px) {\n #optimole-app .hero-video {\n display: none; } }\n #optimole-app .hero-buttons {\n margin-top: 1.5rem; }\n @media screen and (max-width: 768px) {\n #optimole-app .hero-buttons .button {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .hero-buttons .button:not(:last-child) {\n margin-bottom: 0.75rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .hero-buttons {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .hero-buttons .button:not(:last-child) {\n margin-right: 1.5rem; } }\n #optimole-app .hero-head,\n #optimole-app .hero-foot {\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .hero-body {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n padding: 3rem 1.5rem; }\n #optimole-app .section {\n padding: 3rem 1.5rem; }\n @media screen and (min-width: 1088px) {\n #optimole-app .section.is-medium {\n padding: 9rem 1.5rem; }\n #optimole-app .section.is-large {\n padding: 18rem 1.5rem; } }\n #optimole-app .footer {\n background-color: #fafafa;\n padding: 3rem 1.5rem 6rem; }\n #optimole-app .card {\n transition: all 750ms ease-in-out;\n border: 0;\n border-radius: .1875rem;\n box-shadow: 0 1px 15px 1px rgba(39, 39, 39, 0.1); }\n #optimole-app .logo {\n margin-bottom: 10px; }\n #optimole-app .logo img {\n max-width: 180px;\n margin: 0 auto; }\n #optimole-app .vue-js-switch {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center; }\n #optimole-app .api-key-control {\n padding: 0 15px 0 0; }\n #optimole-app .api-key-field .button.is-danger {\n padding-left: 20px;\n padding-right: 20px; }\n #optimole-app .api-key-label, #optimole-app .label {\n -ms-flex-item-align: center;\n -ms-grid-row-align: center;\n align-self: center;\n margin: 0.5em 10px 0.5em 0;\n font-size: 1em; }\n #optimole-app .header {\n padding: 0 1.5rem 0; }\n #optimole-app .header.level {\n margin-bottom: 0; }\n #optimole-app .account img {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n #optimole-app .account .label {\n margin-bottom: 0; }\n #optimole-app .optimized-images table td, #optimole-app .optimized-images table th {\n vertical-align: middle; }\n\n.fade-enter-active, .fade-leave-active {\n transition: opacity .5s; }\n\n.fade-enter, .fade-leave-to {\n opacity: 0; }\n\n.media_page_optimole #wpbody-content > * {\n display: none !important; }\n\n.media_page_optimole #wpbody-content > #optimole-app {\n display: block !important; }\n\n#optimole-app img.optml-image {\n float: left;\n max-width: 100px;\n width: auto;\n margin: auto; }\n\n.optml-ratio-feedback .emoji {\n font-size: 1.5em; }\n\n.optml-ratio-feedback {\n float: right;\n padding-right: 20px; }\n\n.optml-image-heading {\n text-align: left; }\n\nth.optml-image-ratio-heading {\n text-align: right !important;\n font-size: 150%; }\n", ""]);
|
13485 |
+
|
13486 |
+
// exports
|
13487 |
+
|
13488 |
+
|
13489 |
+
/***/ }),
|
13490 |
+
/* 12 */
|
13491 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13492 |
+
|
13493 |
+
"use strict";
|
13494 |
+
|
13495 |
+
|
13496 |
+
Object.defineProperty(exports, "__esModule", {
|
13497 |
+
value: true
|
13498 |
+
});
|
13499 |
+
|
13500 |
+
var _appHeader = __webpack_require__(13);
|
13501 |
+
|
13502 |
+
var _appHeader2 = _interopRequireDefault(_appHeader);
|
13503 |
+
|
13504 |
+
var _apiKeyForm = __webpack_require__(18);
|
13505 |
+
|
13506 |
+
var _apiKeyForm2 = _interopRequireDefault(_apiKeyForm);
|
13507 |
+
|
13508 |
+
var _cdnDetails = __webpack_require__(21);
|
13509 |
+
|
13510 |
+
var _cdnDetails2 = _interopRequireDefault(_cdnDetails);
|
13511 |
+
|
13512 |
+
var _options = __webpack_require__(26);
|
13513 |
+
|
13514 |
+
var _options2 = _interopRequireDefault(_options);
|
13515 |
+
|
13516 |
+
var _lastImages = __webpack_require__(31);
|
13517 |
+
|
13518 |
+
var _lastImages2 = _interopRequireDefault(_lastImages);
|
13519 |
+
|
13520 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13521 |
+
|
13522 |
+
exports.default = {
|
13523 |
+
components: { LastImages: _lastImages2.default }
|
13524 |
+
}; // <template>
|
13525 |
+
// <div class="card">
|
13526 |
+
// <app-header></app-header>
|
13527 |
+
// <div class="card-content">
|
13528 |
+
// <div class="content">
|
13529 |
+
// <p v-html="strings.account_needed"></p>
|
13530 |
+
// <api-key-form></api-key-form>
|
13531 |
+
// <transition name="fade" mode="out-in">
|
13532 |
+
// <div v-if="this.$store.state.connected">
|
13533 |
+
// <hr/>
|
13534 |
+
// <options></options>
|
13535 |
+
// <cdn-details v-if="this.$store.state.userData"></cdn-details>
|
13536 |
+
// <hr/>
|
13537 |
+
// <last-images :status="fetchStatus"></last-images>
|
13538 |
+
// </div>
|
13539 |
+
// </transition>
|
13540 |
+
// </div>
|
13541 |
+
// </div>
|
13542 |
+
// </div>
|
13543 |
+
// </template>
|
13544 |
+
//
|
13545 |
+
// <script>
|
13546 |
+
|
13547 |
+
module.exports = {
|
13548 |
+
name: 'app',
|
13549 |
+
data: function data() {
|
13550 |
+
return {
|
13551 |
+
strings: optimoleDashboardApp.strings,
|
13552 |
+
fetchStatus: false
|
13553 |
+
};
|
13554 |
+
},
|
13555 |
+
|
13556 |
+
components: {
|
13557 |
+
AppHeader: _appHeader2.default,
|
13558 |
+
ApiKeyForm: _apiKeyForm2.default,
|
13559 |
+
Options: _options2.default,
|
13560 |
+
CdnDetails: _cdnDetails2.default,
|
13561 |
+
LastImages: _lastImages2.default
|
13562 |
+
},
|
13563 |
+
mounted: function mounted() {
|
13564 |
+
var self = this;
|
13565 |
+
if (this.$store.state.connected) {
|
13566 |
+
this.$store.dispatch('retrieveOptimizedImages', { waitTime: 0, component: null });
|
13567 |
+
self.fetchStatus = true;
|
13568 |
+
}
|
13569 |
+
}
|
13570 |
+
};
|
13571 |
+
// </script>
|
13572 |
+
// <style lang="sass-loader">
|
13573 |
+
// @import '../../css/style.scss';
|
13574 |
+
//
|
13575 |
+
// </style>
|
13576 |
+
|
13577 |
+
/***/ }),
|
13578 |
+
/* 13 */
|
13579 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13580 |
+
|
13581 |
+
var __vue_script__, __vue_template__
|
13582 |
+
__webpack_require__(14)
|
13583 |
+
__vue_script__ = __webpack_require__(16)
|
13584 |
+
__vue_template__ = __webpack_require__(17)
|
13585 |
+
module.exports = __vue_script__ || {}
|
13586 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
13587 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
13588 |
+
if (false) {(function () { module.hot.accept()
|
13589 |
+
var hotAPI = require("vue-hot-reload-api")
|
13590 |
+
hotAPI.install(require("vue"), true)
|
13591 |
+
if (!hotAPI.compatible) return
|
13592 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/app-header.vue"
|
13593 |
+
if (!module.hot.data) {
|
13594 |
+
hotAPI.createRecord(id, module.exports)
|
13595 |
+
} else {
|
13596 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
13597 |
+
}
|
13598 |
+
})()}
|
13599 |
+
|
13600 |
+
/***/ }),
|
13601 |
+
/* 14 */
|
13602 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13603 |
+
|
13604 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
13605 |
+
|
13606 |
+
// load the styles
|
13607 |
+
var content = __webpack_require__(15);
|
13608 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
13609 |
+
// add the styles to the DOM
|
13610 |
+
var update = __webpack_require__(1)(content, {});
|
13611 |
+
if(content.locals) module.exports = content.locals;
|
13612 |
+
// Hot Module Replacement
|
13613 |
+
if(false) {
|
13614 |
+
// When the styles change, update the <style> tags
|
13615 |
+
if(!content.locals) {
|
13616 |
+
module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-76eafe3c&file=app-header.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./app-header.vue", function() {
|
13617 |
+
var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-76eafe3c&file=app-header.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./app-header.vue");
|
13618 |
+
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
13619 |
+
update(newContent);
|
13620 |
+
});
|
13621 |
+
}
|
13622 |
+
// When the module is disposed, remove the <style> tags
|
13623 |
+
module.hot.dispose(function() { update(); });
|
13624 |
+
}
|
13625 |
+
|
13626 |
+
/***/ }),
|
13627 |
+
/* 15 */
|
13628 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13629 |
+
|
13630 |
+
exports = module.exports = __webpack_require__(0)();
|
13631 |
+
// imports
|
13632 |
+
|
13633 |
+
|
13634 |
+
// module
|
13635 |
+
exports.push([module.i, "\n\t@media ( min-width: 769px ) {\n\t\t#optimole-app hr[_v-76eafe3c] {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n", ""]);
|
13636 |
+
|
13637 |
+
// exports
|
13638 |
+
|
13639 |
+
|
13640 |
+
/***/ }),
|
13641 |
+
/* 16 */
|
13642 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13643 |
+
|
13644 |
+
"use strict";
|
13645 |
+
|
13646 |
+
|
13647 |
+
Object.defineProperty(exports, "__esModule", {
|
13648 |
+
value: true
|
13649 |
+
});
|
13650 |
+
// <template>
|
13651 |
+
// <div>
|
13652 |
+
// <div class="header has-text-centered level">
|
13653 |
+
// <div class="level-left">
|
13654 |
+
// <a class="logo level-item" href="https://optimole.com" target="_blank">
|
13655 |
+
// <figure class="media">
|
13656 |
+
// <img :src="logo" :alt="strings.optimole + ' ' + strings.image_cdn">
|
13657 |
+
// </figure>
|
13658 |
+
// </a>
|
13659 |
+
// <h3 class="has-text-centered has-text-grey-dark is-size-4 level-item">
|
13660 |
+
// <span class="has-text-weight-semibold">
|
13661 |
+
// {{strings.image_cdn}}
|
13662 |
+
// </span>
|
13663 |
+
// </h3>
|
13664 |
+
// </div>
|
13665 |
+
// <div class="level-right">
|
13666 |
+
// <div class="tags has-addons level-item">
|
13667 |
+
// <span class="tag is-dark">{{strings.status}}</span>
|
13668 |
+
// <span v-if="connected" class="tag is-success">{{strings.connected}}</span>
|
13669 |
+
// <span v-else class="tag is-danger">{{strings.not_connected}}</span>
|
13670 |
+
// </div>
|
13671 |
+
// </div>
|
13672 |
+
// </div>
|
13673 |
+
// <hr/>
|
13674 |
+
// </div>
|
13675 |
+
// </template>
|
13676 |
+
//
|
13677 |
+
// <script>
|
13678 |
+
exports.default = {
|
13679 |
+
name: "app-header",
|
13680 |
+
data: function data() {
|
13681 |
+
return {
|
13682 |
+
logo: optimoleDashboardApp.assets_url + 'img/logo.png',
|
13683 |
+
strings: optimoleDashboardApp.strings
|
13684 |
+
};
|
13685 |
+
},
|
13686 |
+
|
13687 |
+
computed: {
|
13688 |
+
connected: function connected() {
|
13689 |
+
return this.$store.state.connected;
|
13690 |
+
}
|
13691 |
+
}
|
13692 |
+
// </script>
|
13693 |
+
//
|
13694 |
+
// <style scoped>
|
13695 |
+
// @media ( min-width: 769px ) {
|
13696 |
+
// #optimole-app hr {
|
13697 |
+
// margin: 0;
|
13698 |
+
// }
|
13699 |
+
// }
|
13700 |
+
// </style>
|
13701 |
+
|
13702 |
+
};
|
13703 |
+
|
13704 |
+
/***/ }),
|
13705 |
+
/* 17 */
|
13706 |
+
/***/ (function(module, exports) {
|
13707 |
+
|
13708 |
+
module.exports = "\n\t<div _v-76eafe3c=\"\">\n\t\t<div class=\"header has-text-centered level\" _v-76eafe3c=\"\">\n\t\t\t<div class=\"level-left\" _v-76eafe3c=\"\">\n\t\t\t\t<a class=\"logo level-item\" href=\"https://optimole.com\" target=\"_blank\" _v-76eafe3c=\"\">\n\t\t\t\t\t<figure class=\"media\" _v-76eafe3c=\"\">\n\t\t\t\t\t\t<img :src=\"logo\" :alt=\"strings.optimole + ' ' + strings.image_cdn\" _v-76eafe3c=\"\">\n\t\t\t\t\t</figure>\n\t\t\t\t</a>\n\t\t\t\t<h3 class=\"has-text-centered has-text-grey-dark is-size-4 level-item\" _v-76eafe3c=\"\">\n\t\t\t\t\t<span class=\"has-text-weight-semibold\" _v-76eafe3c=\"\">\n\t\t\t\t\t{{strings.image_cdn}}\n\t\t\t\t\t</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"level-right\" _v-76eafe3c=\"\">\n\t\t\t\t<div class=\"tags has-addons level-item\" _v-76eafe3c=\"\">\n\t\t\t\t\t<span class=\"tag is-dark\" _v-76eafe3c=\"\">{{strings.status}}</span>\n\t\t\t\t\t<span v-if=\"connected\" class=\"tag is-success\" _v-76eafe3c=\"\">{{strings.connected}}</span>\n\t\t\t\t\t<span v-else=\"\" class=\"tag is-danger\" _v-76eafe3c=\"\">{{strings.not_connected}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<hr _v-76eafe3c=\"\">\n\t</div>\n";
|
13709 |
+
|
13710 |
+
/***/ }),
|
13711 |
+
/* 18 */
|
13712 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13713 |
+
|
13714 |
+
var __vue_script__, __vue_template__
|
13715 |
+
__vue_script__ = __webpack_require__(19)
|
13716 |
+
__vue_template__ = __webpack_require__(20)
|
13717 |
+
module.exports = __vue_script__ || {}
|
13718 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
13719 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
13720 |
+
if (false) {(function () { module.hot.accept()
|
13721 |
+
var hotAPI = require("vue-hot-reload-api")
|
13722 |
+
hotAPI.install(require("vue"), true)
|
13723 |
+
if (!hotAPI.compatible) return
|
13724 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/api-key-form.vue"
|
13725 |
+
if (!module.hot.data) {
|
13726 |
+
hotAPI.createRecord(id, module.exports)
|
13727 |
+
} else {
|
13728 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
13729 |
+
}
|
13730 |
+
})()}
|
13731 |
+
|
13732 |
+
/***/ }),
|
13733 |
+
/* 19 */
|
13734 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13735 |
+
|
13736 |
+
"use strict";
|
13737 |
+
|
13738 |
+
|
13739 |
+
Object.defineProperty(exports, "__esModule", {
|
13740 |
+
value: true
|
13741 |
+
});
|
13742 |
+
// <template>
|
13743 |
+
// <div>
|
13744 |
+
// <div class="field has-addons api-key-field">
|
13745 |
+
// <label v-if="isConnected"
|
13746 |
+
// class="label api-key-label has-text-grey-dark">{{strings.api_key_placeholder}}:</label>
|
13747 |
+
// <div class="control is-expanded api-key-control">
|
13748 |
+
// <input :type="isConnected ? 'password' : 'text'" :disabled="isConnected" name="api_key" class="input is-small"
|
13749 |
+
// :class="validKey ? '' : 'is-danger'" :placeholder="strings.api_key_placeholder"
|
13750 |
+
// v-model="apiKey">
|
13751 |
+
// </div>
|
13752 |
+
// <div class="control">
|
13753 |
+
// <button v-if="! isConnected" class="button button is-success is-small"
|
13754 |
+
// @click="connect" :class="{ 'is-loading' : this.$store.state.isConnecting }">
|
13755 |
+
// <span class="icon"><i class="dashicons dashicons-admin-plugins"></i></span>
|
13756 |
+
// <span>{{strings.connect_btn}}</span>
|
13757 |
+
// </button>
|
13758 |
+
// <button v-else class="button is-danger is-small" @click="disconnect"
|
13759 |
+
// :class="{ 'is-loading' : this.$store.state.isConnecting }">
|
13760 |
+
// <span class="icon"><i class="dashicons dashicons-dismiss"></i></span>
|
13761 |
+
// <span>{{strings.disconnect_btn}}</span>
|
13762 |
+
// </button>
|
13763 |
+
// </div>
|
13764 |
+
// </div>
|
13765 |
+
// <p v-if="! validKey" class="help is-danger">
|
13766 |
+
// {{strings.invalid_key}}
|
13767 |
+
// </p>
|
13768 |
+
// </div>
|
13769 |
+
// </template>
|
13770 |
+
//
|
13771 |
+
// <script>
|
13772 |
+
exports.default = {
|
13773 |
+
name: 'api-key-form',
|
13774 |
+
data: function data() {
|
13775 |
+
return {
|
13776 |
+
apiKey: this.$store.state.apiKey ? this.$store.state.apiKey : '',
|
13777 |
+
connected: this.$store.state.connected,
|
13778 |
+
strings: optimoleDashboardApp.strings,
|
13779 |
+
isLoading: false
|
13780 |
+
};
|
13781 |
+
},
|
13782 |
+
|
13783 |
+
computed: {
|
13784 |
+
validKey: function validKey() {
|
13785 |
+
return this.$store.state.apiKeyValidity;
|
13786 |
+
},
|
13787 |
+
isConnected: function isConnected() {
|
13788 |
+
return this.$store.state.connected;
|
13789 |
+
}
|
13790 |
+
},
|
13791 |
+
methods: {
|
13792 |
+
connect: function connect() {
|
13793 |
+
this.$store.dispatch('connectOptimole', {
|
13794 |
+
req: 'Connect to OptiMole',
|
13795 |
+
apiKey: this.apiKey
|
13796 |
+
});
|
13797 |
+
},
|
13798 |
+
disconnect: function disconnect() {
|
13799 |
+
this.apiKey = '';
|
13800 |
+
this.$store.dispatch('disconnectOptimole', {
|
13801 |
+
req: 'Disconnect from OptiMole'
|
13802 |
+
});
|
13803 |
+
}
|
13804 |
+
}
|
13805 |
+
// </script>
|
13806 |
+
|
13807 |
+
};
|
13808 |
+
|
13809 |
+
/***/ }),
|
13810 |
+
/* 20 */
|
13811 |
+
/***/ (function(module, exports) {
|
13812 |
+
|
13813 |
+
module.exports = "\n\t<div>\n\t\t<div class=\"field has-addons api-key-field\">\n\t\t\t<label v-if=\"isConnected\"\n\t\t\t\t\tclass=\"label api-key-label has-text-grey-dark\">{{strings.api_key_placeholder}}:</label>\n\t\t\t<div class=\"control is-expanded api-key-control\">\n\t\t\t\t<input :type=\"isConnected ? 'password' : 'text'\" :disabled=\"isConnected\" name=\"api_key\" class=\"input is-small\"\n\t\t\t\t\t\t:class=\"validKey ? '' : 'is-danger'\" :placeholder=\"strings.api_key_placeholder\"\n\t\t\t\t\t\tv-model=\"apiKey\">\n\t\t\t</div>\n\t\t\t<div class=\"control\">\n\t\t\t\t<button v-if=\"! isConnected\" class=\"button button is-success is-small\"\n\t\t\t\t\t\t@click=\"connect\" :class=\"{ 'is-loading' : this.$store.state.isConnecting }\">\n\t\t\t\t\t<span class=\"icon\"><i class=\"dashicons dashicons-admin-plugins\"></i></span>\n\t\t\t\t\t<span>{{strings.connect_btn}}</span>\n\t\t\t\t</button>\n\t\t\t\t<button v-else class=\"button is-danger is-small\" @click=\"disconnect\"\n\t\t\t\t\t\t:class=\"{ 'is-loading' : this.$store.state.isConnecting }\">\n\t\t\t\t\t<span class=\"icon\"><i class=\"dashicons dashicons-dismiss\"></i></span>\n\t\t\t\t\t<span>{{strings.disconnect_btn}}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<p v-if=\"! validKey\" class=\"help is-danger\">\n\t\t\t{{strings.invalid_key}}\n\t\t</p>\n\t</div>\n";
|
13814 |
+
|
13815 |
+
/***/ }),
|
13816 |
+
/* 21 */
|
13817 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13818 |
+
|
13819 |
+
var __vue_script__, __vue_template__
|
13820 |
+
__webpack_require__(22)
|
13821 |
+
__vue_script__ = __webpack_require__(24)
|
13822 |
+
__vue_template__ = __webpack_require__(25)
|
13823 |
+
module.exports = __vue_script__ || {}
|
13824 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
13825 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
13826 |
+
if (false) {(function () { module.hot.accept()
|
13827 |
+
var hotAPI = require("vue-hot-reload-api")
|
13828 |
+
hotAPI.install(require("vue"), true)
|
13829 |
+
if (!hotAPI.compatible) return
|
13830 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/cdn-details.vue"
|
13831 |
+
if (!module.hot.data) {
|
13832 |
+
hotAPI.createRecord(id, module.exports)
|
13833 |
+
} else {
|
13834 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
13835 |
+
}
|
13836 |
+
})()}
|
13837 |
+
|
13838 |
+
/***/ }),
|
13839 |
+
/* 22 */
|
13840 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13841 |
+
|
13842 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
13843 |
+
|
13844 |
+
// load the styles
|
13845 |
+
var content = __webpack_require__(23);
|
13846 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
13847 |
+
// add the styles to the DOM
|
13848 |
+
var update = __webpack_require__(1)(content, {});
|
13849 |
+
if(content.locals) module.exports = content.locals;
|
13850 |
+
// Hot Module Replacement
|
13851 |
+
if(false) {
|
13852 |
+
// When the styles change, update the <style> tags
|
13853 |
+
if(!content.locals) {
|
13854 |
+
module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-2cb4f9a2&file=cdn-details.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./cdn-details.vue", function() {
|
13855 |
+
var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-2cb4f9a2&file=cdn-details.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./cdn-details.vue");
|
13856 |
+
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
13857 |
+
update(newContent);
|
13858 |
+
});
|
13859 |
+
}
|
13860 |
+
// When the module is disposed, remove the <style> tags
|
13861 |
+
module.hot.dispose(function() { update(); });
|
13862 |
+
}
|
13863 |
+
|
13864 |
+
/***/ }),
|
13865 |
+
/* 23 */
|
13866 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13867 |
+
|
13868 |
+
exports = module.exports = __webpack_require__(0)();
|
13869 |
+
// imports
|
13870 |
+
|
13871 |
+
|
13872 |
+
// module
|
13873 |
+
exports.push([module.i, "\n\t#optimole-app .label[_v-2cb4f9a2] {\n\t\tmargin-top: 0;\n\t}\n", ""]);
|
13874 |
+
|
13875 |
+
// exports
|
13876 |
+
|
13877 |
+
|
13878 |
+
/***/ }),
|
13879 |
+
/* 24 */
|
13880 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13881 |
+
|
13882 |
+
"use strict";
|
13883 |
+
|
13884 |
+
|
13885 |
+
Object.defineProperty(exports, "__esModule", {
|
13886 |
+
value: true
|
13887 |
+
});
|
13888 |
+
// <template>
|
13889 |
+
// <div class="cdn-details">
|
13890 |
+
// <hr/>
|
13891 |
+
// <div class="account level has-text-centered">
|
13892 |
+
// <div class="level-left">
|
13893 |
+
// <span class="label level-item">{{strings.logged_in_as}}:</span>
|
13894 |
+
// <p class="details level-item tags has-addons">
|
13895 |
+
// <span class="tag is-light">{{userData.display_name}}</span>
|
13896 |
+
// <span class="tag is-paddingless"><img :src="userData.picture" class="image is-24x24 is-rounded" :alt="userData.display_name"></span>
|
13897 |
+
// </p>
|
13898 |
+
// </div>
|
13899 |
+
// <div class="level-right">
|
13900 |
+
// <span class="label level-item">{{strings.private_cdn_url}}:</span>
|
13901 |
+
// <p class="details level-item tag is-light">{{userData.cdn_key}}.i.optimole.com</p>
|
13902 |
+
// </div>
|
13903 |
+
// </div>
|
13904 |
+
// <hr/>
|
13905 |
+
// <div class="level stats">
|
13906 |
+
// <div class="level-left">
|
13907 |
+
// <div class="level-item">
|
13908 |
+
// <div class="tags has-addons">
|
13909 |
+
// <span class="tag is-info">{{strings.usage}}:</span>
|
13910 |
+
// <span class="tag">{{this.userData.usage_pretty}}</span>
|
13911 |
+
// </div>
|
13912 |
+
// </div>
|
13913 |
+
// </div>
|
13914 |
+
// <h4 class="level-item is-size-5 is-marginless has-text-grey">
|
13915 |
+
// {{computedPercentage()}}%
|
13916 |
+
// </h4>
|
13917 |
+
// <div class="level-right">
|
13918 |
+
// <div class="level-item">
|
13919 |
+
// <div class="tags has-addons">
|
13920 |
+
// <span class="tag is-info">{{strings.quota}}:</span>
|
13921 |
+
// <span class="tag">{{this.userData.quota_pretty}}</span>
|
13922 |
+
// </div>
|
13923 |
+
// </div>
|
13924 |
+
// </div>
|
13925 |
+
// </div>
|
13926 |
+
// <progress class="progress is-success" :value="this.userData.usage" :max="this.userData.quota">60%</progress>
|
13927 |
+
//
|
13928 |
+
// </div>
|
13929 |
+
// </template>
|
13930 |
+
//
|
13931 |
+
// <script>
|
13932 |
+
exports.default = {
|
13933 |
+
name: "cdn-details",
|
13934 |
+
data: function data() {
|
13935 |
+
return {
|
13936 |
+
userData: this.$store.state.userData,
|
13937 |
+
strings: optimoleDashboardApp.strings
|
13938 |
+
};
|
13939 |
+
},
|
13940 |
+
|
13941 |
+
methods: {
|
13942 |
+
computedPercentage: function computedPercentage() {
|
13943 |
+
return (this.userData.usage / this.userData.quota * 100).toFixed(2);
|
13944 |
+
}
|
13945 |
+
}
|
13946 |
+
// </script>
|
13947 |
+
//
|
13948 |
+
// <style scoped>
|
13949 |
+
// #optimole-app .label {
|
13950 |
+
// margin-top: 0;
|
13951 |
+
// }
|
13952 |
+
// </style>
|
13953 |
+
|
13954 |
+
};
|
13955 |
+
|
13956 |
+
/***/ }),
|
13957 |
+
/* 25 */
|
13958 |
+
/***/ (function(module, exports) {
|
13959 |
+
|
13960 |
+
module.exports = "\n\t<div class=\"cdn-details\" _v-2cb4f9a2=\"\">\n\t\t<hr _v-2cb4f9a2=\"\">\n\t\t<div class=\"account level has-text-centered\" _v-2cb4f9a2=\"\">\n\t\t\t<div class=\"level-left\" _v-2cb4f9a2=\"\">\n\t\t\t\t<span class=\"label level-item\" _v-2cb4f9a2=\"\">{{strings.logged_in_as}}:</span>\n\t\t\t\t<p class=\"details level-item tags has-addons\" _v-2cb4f9a2=\"\">\n\t\t\t\t\t<span class=\"tag is-light\" _v-2cb4f9a2=\"\">{{userData.display_name}}</span>\n\t\t\t\t\t<span class=\"tag is-paddingless\" _v-2cb4f9a2=\"\"><img :src=\"userData.picture\" class=\"image is-24x24 is-rounded\" :alt=\"userData.display_name\" _v-2cb4f9a2=\"\"></span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<div class=\"level-right\" _v-2cb4f9a2=\"\">\n\t\t\t\t<span class=\"label level-item\" _v-2cb4f9a2=\"\">{{strings.private_cdn_url}}:</span>\n\t\t\t\t<p class=\"details level-item tag is-light\" _v-2cb4f9a2=\"\">{{userData.cdn_key}}.i.optimole.com</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<hr _v-2cb4f9a2=\"\">\n\t\t<div class=\"level stats\" _v-2cb4f9a2=\"\">\n\t\t\t<div class=\"level-left\" _v-2cb4f9a2=\"\">\n\t\t\t\t<div class=\"level-item\" _v-2cb4f9a2=\"\">\n\t\t\t\t\t<div class=\"tags has-addons\" _v-2cb4f9a2=\"\">\n\t\t\t\t\t\t<span class=\"tag is-info\" _v-2cb4f9a2=\"\">{{strings.usage}}:</span>\n\t\t\t\t\t\t<span class=\"tag\" _v-2cb4f9a2=\"\">{{this.userData.usage_pretty}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<h4 class=\"level-item is-size-5 is-marginless has-text-grey\" _v-2cb4f9a2=\"\">\n\t\t\t\t{{computedPercentage()}}%\n\t\t\t</h4>\n\t\t\t<div class=\"level-right\" _v-2cb4f9a2=\"\">\n\t\t\t\t<div class=\"level-item\" _v-2cb4f9a2=\"\">\n\t\t\t\t\t<div class=\"tags has-addons\" _v-2cb4f9a2=\"\">\n\t\t\t\t\t\t<span class=\"tag is-info\" _v-2cb4f9a2=\"\">{{strings.quota}}:</span>\n\t\t\t\t\t\t<span class=\"tag\" _v-2cb4f9a2=\"\">{{this.userData.quota_pretty}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<progress class=\"progress is-success\" :value=\"this.userData.usage\" :max=\"this.userData.quota\" _v-2cb4f9a2=\"\">60%</progress>\n\n\t</div>\n";
|
13961 |
+
|
13962 |
+
/***/ }),
|
13963 |
+
/* 26 */
|
13964 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13965 |
+
|
13966 |
+
var __vue_script__, __vue_template__
|
13967 |
+
__webpack_require__(27)
|
13968 |
+
__vue_script__ = __webpack_require__(29)
|
13969 |
+
__vue_template__ = __webpack_require__(30)
|
13970 |
+
module.exports = __vue_script__ || {}
|
13971 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
13972 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
13973 |
+
if (false) {(function () { module.hot.accept()
|
13974 |
+
var hotAPI = require("vue-hot-reload-api")
|
13975 |
+
hotAPI.install(require("vue"), true)
|
13976 |
+
if (!hotAPI.compatible) return
|
13977 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/options.vue"
|
13978 |
+
if (!module.hot.data) {
|
13979 |
+
hotAPI.createRecord(id, module.exports)
|
13980 |
+
} else {
|
13981 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
13982 |
+
}
|
13983 |
+
})()}
|
13984 |
+
|
13985 |
+
/***/ }),
|
13986 |
+
/* 27 */
|
13987 |
+
/***/ (function(module, exports, __webpack_require__) {
|
13988 |
+
|
13989 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
13990 |
+
|
13991 |
+
// load the styles
|
13992 |
+
var content = __webpack_require__(28);
|
13993 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
13994 |
+
// add the styles to the DOM
|
13995 |
+
var update = __webpack_require__(1)(content, {});
|
13996 |
+
if(content.locals) module.exports = content.locals;
|
13997 |
+
// Hot Module Replacement
|
13998 |
+
if(false) {
|
13999 |
+
// When the styles change, update the <style> tags
|
14000 |
+
if(!content.locals) {
|
14001 |
+
module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-176a95ab&file=options.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./options.vue", function() {
|
14002 |
+
var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-176a95ab&file=options.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./options.vue");
|
14003 |
+
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
14004 |
+
update(newContent);
|
14005 |
+
});
|
14006 |
+
}
|
14007 |
+
// When the module is disposed, remove the <style> tags
|
14008 |
+
module.hot.dispose(function() { update(); });
|
14009 |
+
}
|
14010 |
+
|
14011 |
+
/***/ }),
|
14012 |
+
/* 28 */
|
14013 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14014 |
+
|
14015 |
+
exports = module.exports = __webpack_require__(0)();
|
14016 |
+
// imports
|
14017 |
+
|
14018 |
+
|
14019 |
+
// module
|
14020 |
+
exports.push([module.i, "\n\t.saving--option[_v-176a95ab] {\n\t\topacity: .75;\n\t}\n\t\n\t.field[_v-176a95ab]:nth-child(even) {\n\t\t-ms-flex-pack: end;\n\t\t justify-content: flex-end;\n\t}\n", ""]);
|
14021 |
+
|
14022 |
+
// exports
|
14023 |
+
|
14024 |
+
|
14025 |
+
/***/ }),
|
14026 |
+
/* 29 */
|
14027 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14028 |
+
|
14029 |
+
"use strict";
|
14030 |
+
|
14031 |
+
|
14032 |
+
Object.defineProperty(exports, "__esModule", {
|
14033 |
+
value: true
|
14034 |
+
});
|
14035 |
+
// <template>
|
14036 |
+
// <div class="field-body" :class="{ 'saving--option' : this.$store.state.loading }">
|
14037 |
+
// <div class="field is-horizontal">
|
14038 |
+
// <label class="label has-text-grey-dark">{{strings.enable_image_replace}}:</label>
|
14039 |
+
// <toggle-button @change="toggleOption('image_replacer')"
|
14040 |
+
// :value="imageReplacerStatus"
|
14041 |
+
// :disabled="this.$store.state.loading"
|
14042 |
+
// :labels="{checked: strings.enabled, unchecked: strings.disabled}"
|
14043 |
+
// :width="75"
|
14044 |
+
// color="#008ec2"></toggle-button>
|
14045 |
+
// </div>
|
14046 |
+
// <div class="field is-horizontal">
|
14047 |
+
// <label class="label has-text-grey-dark">{{strings.toggle_ab_item}}:</label>
|
14048 |
+
// <toggle-button @change="toggleOption('admin_bar_item')"
|
14049 |
+
// v-model="adminBarItemStatus"
|
14050 |
+
// :disabled="this.$store.state.loading"
|
14051 |
+
// :labels="{checked: strings.show, unchecked: strings.hide}"
|
14052 |
+
// :width="60"
|
14053 |
+
// color="#008ec2"></toggle-button>
|
14054 |
+
// </div>
|
14055 |
+
//
|
14056 |
+
// </div>
|
14057 |
+
//
|
14058 |
+
// </template>
|
14059 |
+
//
|
14060 |
+
// <script>
|
14061 |
+
exports.default = {
|
14062 |
+
name: "options",
|
14063 |
+
data: function data() {
|
14064 |
+
return {
|
14065 |
+
strings: optimoleDashboardApp.strings.options_strings,
|
14066 |
+
adminBarItem: optimoleDashboardApp.admin_bar_item,
|
14067 |
+
imageReplacer: optimoleDashboardApp.image_replacer
|
14068 |
+
};
|
14069 |
+
},
|
14070 |
+
|
14071 |
+
methods: {
|
14072 |
+
toggleOption: function toggleOption(optionKey) {
|
14073 |
+
this.$store.dispatch('toggleSetting', {
|
14074 |
+
req: 'Toggle ' + optionKey,
|
14075 |
+
option_key: optionKey,
|
14076 |
+
type: 'toggle'
|
14077 |
+
});
|
14078 |
+
}
|
14079 |
+
},
|
14080 |
+
computed: {
|
14081 |
+
adminBarItemStatus: {
|
14082 |
+
set: function set(value) {
|
14083 |
+
this.adminBarItem = value;
|
14084 |
+
if (value) {
|
14085 |
+
document.getElementById("wp-admin-bar-optml_image_quota").style.display = 'block';
|
14086 |
+
} else {
|
14087 |
+
document.getElementById("wp-admin-bar-optml_image_quota").style.display = 'none';
|
14088 |
+
}
|
14089 |
+
},
|
14090 |
+
get: function get() {
|
14091 |
+
return !(this.adminBarItem === 'disabled');
|
14092 |
+
}
|
14093 |
+
},
|
14094 |
+
|
14095 |
+
imageReplacerStatus: function imageReplacerStatus() {
|
14096 |
+
return !(this.imageReplacer === 'disabled');
|
14097 |
+
}
|
14098 |
+
}
|
14099 |
+
// </script>
|
14100 |
+
//
|
14101 |
+
// <style scoped>
|
14102 |
+
// .saving--option {
|
14103 |
+
// opacity: .75;
|
14104 |
+
// }
|
14105 |
+
//
|
14106 |
+
// .field:nth-child(even) {
|
14107 |
+
// justify-content: flex-end;
|
14108 |
+
// }
|
14109 |
+
// </style>
|
14110 |
+
|
14111 |
+
};
|
14112 |
+
|
14113 |
+
/***/ }),
|
14114 |
+
/* 30 */
|
14115 |
+
/***/ (function(module, exports) {
|
14116 |
+
|
14117 |
+
module.exports = "\n\t<div class=\"field-body\" :class=\"{ 'saving--option' : this.$store.state.loading }\" _v-176a95ab=\"\">\n\t\t<div class=\"field is-horizontal\" _v-176a95ab=\"\">\n\t\t\t<label class=\"label has-text-grey-dark\" _v-176a95ab=\"\">{{strings.enable_image_replace}}:</label>\n\t\t\t<toggle-button @change=\"toggleOption('image_replacer')\" :value=\"imageReplacerStatus\" :disabled=\"this.$store.state.loading\" :labels=\"{checked: strings.enabled, unchecked: strings.disabled}\" :width=\"75\" color=\"#008ec2\" _v-176a95ab=\"\"></toggle-button>\n\t\t</div>\n\t\t<div class=\"field is-horizontal\" _v-176a95ab=\"\">\n\t\t\t<label class=\"label has-text-grey-dark\" _v-176a95ab=\"\">{{strings.toggle_ab_item}}:</label>\n\t\t\t<toggle-button @change=\"toggleOption('admin_bar_item')\" v-model=\"adminBarItemStatus\" :disabled=\"this.$store.state.loading\" :labels=\"{checked: strings.show, unchecked: strings.hide}\" :width=\"60\" color=\"#008ec2\" _v-176a95ab=\"\"></toggle-button>\n\t\t</div>\n\t\n\t</div>\n\n";
|
14118 |
+
|
14119 |
+
/***/ }),
|
14120 |
+
/* 31 */
|
14121 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14122 |
+
|
14123 |
+
var __vue_script__, __vue_template__
|
14124 |
+
__webpack_require__(32)
|
14125 |
+
__vue_script__ = __webpack_require__(34)
|
14126 |
+
__vue_template__ = __webpack_require__(35)
|
14127 |
+
module.exports = __vue_script__ || {}
|
14128 |
+
if (module.exports.__esModule) module.exports = module.exports.default
|
14129 |
+
if (__vue_template__) { (typeof module.exports === "function" ? module.exports.options : module.exports).template = __vue_template__ }
|
14130 |
+
if (false) {(function () { module.hot.accept()
|
14131 |
+
var hotAPI = require("vue-hot-reload-api")
|
14132 |
+
hotAPI.install(require("vue"), true)
|
14133 |
+
if (!hotAPI.compatible) return
|
14134 |
+
var id = "/Users/selul/Local Sites/wordpress/app/public/wp-content/plugins/optimole-wp/assets/vue/components/last-images.vue"
|
14135 |
+
if (!module.hot.data) {
|
14136 |
+
hotAPI.createRecord(id, module.exports)
|
14137 |
+
} else {
|
14138 |
+
hotAPI.update(id, module.exports, __vue_template__)
|
14139 |
+
}
|
14140 |
+
})()}
|
14141 |
+
|
14142 |
+
/***/ }),
|
14143 |
+
/* 32 */
|
14144 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14145 |
+
|
14146 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
14147 |
+
|
14148 |
+
// load the styles
|
14149 |
+
var content = __webpack_require__(33);
|
14150 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
14151 |
+
// add the styles to the DOM
|
14152 |
+
var update = __webpack_require__(1)(content, {});
|
14153 |
+
if(content.locals) module.exports = content.locals;
|
14154 |
+
// Hot Module Replacement
|
14155 |
+
if(false) {
|
14156 |
+
// When the styles change, update the <style> tags
|
14157 |
+
if(!content.locals) {
|
14158 |
+
module.hot.accept("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-f0065cc8&file=last-images.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./last-images.vue", function() {
|
14159 |
+
var newContent = require("!!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/lib/style-rewriter.js?id=_v-f0065cc8&file=last-images.vue&scoped=true!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!../../../node_modules/eslint-loader/index.js!../../../node_modules/eslint-loader/index.js!./last-images.vue");
|
14160 |
+
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
|
14161 |
+
update(newContent);
|
14162 |
+
});
|
14163 |
+
}
|
14164 |
+
// When the module is disposed, remove the <style> tags
|
14165 |
+
module.hot.dispose(function() { update(); });
|
14166 |
+
}
|
14167 |
+
|
14168 |
+
/***/ }),
|
14169 |
+
/* 33 */
|
14170 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14171 |
+
|
14172 |
+
exports = module.exports = __webpack_require__(0)();
|
14173 |
+
// imports
|
14174 |
+
|
14175 |
+
|
14176 |
+
// module
|
14177 |
+
exports.push([module.i, "\n .loader[_v-f0065cc8] {\n margin: 0 auto;\n }\n\n", ""]);
|
14178 |
+
|
14179 |
+
// exports
|
14180 |
+
|
14181 |
+
|
14182 |
+
/***/ }),
|
14183 |
+
/* 34 */
|
14184 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14185 |
+
|
14186 |
+
"use strict";
|
14187 |
+
|
14188 |
+
|
14189 |
+
Object.defineProperty(exports, "__esModule", {
|
14190 |
+
value: true
|
14191 |
+
});
|
14192 |
+
// <template>
|
14193 |
+
// <div>
|
14194 |
+
// <div class="optimized-images" v-if="imageData.length">
|
14195 |
+
// <h3 class="has-text-centered">{{strings.last}} {{strings.optimized_images}}</h3>
|
14196 |
+
// <table class="table is-striped is-hoverable is-fullwidth">
|
14197 |
+
// <thead>
|
14198 |
+
// <tr>
|
14199 |
+
// <th class="optml-image-heading">{{strings.image}}</th>
|
14200 |
+
// <th class="optml-image-ratio-heading">{{strings.compression}}</th>
|
14201 |
+
// </tr>
|
14202 |
+
// </thead>
|
14203 |
+
// <tbody>
|
14204 |
+
// <tr v-for="(item, index) in imageData">
|
14205 |
+
// <td><a :href="item.url" target="_blank"><img :src="item.url" class="optml-image"/></a></td>
|
14206 |
+
// <td><p
|
14207 |
+
// class="optml-ratio-feedback" v-html="compressionRate(item.ex_size_raw, item.new_size_raw)"></p>
|
14208 |
+
// </td>
|
14209 |
+
// </tr>
|
14210 |
+
// </tbody>
|
14211 |
+
// </table>
|
14212 |
+
// </div>
|
14213 |
+
// <div v-else class="loader"></div>
|
14214 |
+
// </div>
|
14215 |
+
// </template>
|
14216 |
+
//
|
14217 |
+
// <script>
|
14218 |
+
exports.default = {
|
14219 |
+
name: "last-images",
|
14220 |
+
data: function data() {
|
14221 |
+
return {
|
14222 |
+
loading: true,
|
14223 |
+
strings: optimoleDashboardApp.strings.latest_images
|
14224 |
+
};
|
14225 |
+
},
|
14226 |
+
|
14227 |
+
props: {
|
14228 |
+
status: status
|
14229 |
+
},
|
14230 |
+
mounted: function mounted() {
|
14231 |
+
this.$store.dispatch('retrieveOptimizedImages', { waitTime: 10000, component: this });
|
14232 |
+
},
|
14233 |
+
|
14234 |
+
computed: {
|
14235 |
+
imageData: function imageData() {
|
14236 |
+
return this.$store.state.optimizedImages !== null ? this.$store.state.optimizedImages : [];
|
14237 |
+
}
|
14238 |
+
},
|
14239 |
+
methods: {
|
14240 |
+
compressionRate: function compressionRate(oldSize, newSize) {
|
14241 |
+
var value = (parseFloat(oldSize / newSize * 100) - 100).toFixed(1);
|
14242 |
+
console.log(value);
|
14243 |
+
if (value < 1) {
|
14244 |
+
return this.strings.same_size;
|
14245 |
+
}
|
14246 |
+
if (value > 1 && value < 25) {
|
14247 |
+
return this.strings.small_optimization.replace('{ratio}', value.toString() + '%');
|
14248 |
+
}
|
14249 |
+
if (value > 25 && value < 100) {
|
14250 |
+
return this.strings.medium_optimization.replace('{ratio}', value.toString() + '%');
|
14251 |
+
}
|
14252 |
+
if (value > 100) {
|
14253 |
+
return this.strings.big_optimization.replace('{ratio}', (Math.floor(value / 10 + 10) / 10).toFixed(1).toString() + 'x');
|
14254 |
+
}
|
14255 |
+
}
|
14256 |
+
}
|
14257 |
+
// </script>
|
14258 |
+
//
|
14259 |
+
// <style scoped>
|
14260 |
+
// .loader {
|
14261 |
+
// margin: 0 auto;
|
14262 |
+
// }
|
14263 |
+
//
|
14264 |
+
// </style>
|
14265 |
+
|
14266 |
+
};
|
14267 |
+
|
14268 |
+
/***/ }),
|
14269 |
+
/* 35 */
|
14270 |
+
/***/ (function(module, exports) {
|
14271 |
+
|
14272 |
+
module.exports = "\n <div _v-f0065cc8=\"\">\n <div class=\"optimized-images\" v-if=\"imageData.length\" _v-f0065cc8=\"\">\n <h3 class=\"has-text-centered\" _v-f0065cc8=\"\">{{strings.last}} {{strings.optimized_images}}</h3>\n <table class=\"table is-striped is-hoverable is-fullwidth\" _v-f0065cc8=\"\">\n <thead _v-f0065cc8=\"\">\n <tr _v-f0065cc8=\"\">\n <th class=\"optml-image-heading\" _v-f0065cc8=\"\">{{strings.image}}</th>\n <th class=\"optml-image-ratio-heading\" _v-f0065cc8=\"\">{{strings.compression}}</th>\n </tr>\n </thead>\n <tbody _v-f0065cc8=\"\">\n <tr v-for=\"(item, index) in imageData\" _v-f0065cc8=\"\">\n <td _v-f0065cc8=\"\"><a :href=\"item.url\" target=\"_blank\" _v-f0065cc8=\"\"><img :src=\"item.url\" class=\"optml-image\" _v-f0065cc8=\"\"></a></td>\n <td _v-f0065cc8=\"\"><p class=\"optml-ratio-feedback\" v-html=\"compressionRate(item.ex_size_raw, item.new_size_raw)\" _v-f0065cc8=\"\"></p>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div v-else=\"\" class=\"loader\" _v-f0065cc8=\"\"></div>\n </div>\n";
|
14273 |
+
|
14274 |
+
/***/ }),
|
14275 |
+
/* 36 */
|
14276 |
+
/***/ (function(module, exports) {
|
14277 |
+
|
14278 |
+
module.exports = "\n\t<div class=\"card\">\n\t\t<app-header></app-header>\n\t\t<div class=\"card-content\">\n\t\t\t<div class=\"content\">\n\t\t\t\t<p v-html=\"strings.account_needed\"></p>\n\t\t\t\t<api-key-form></api-key-form>\n\t\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t\t<div v-if=\"this.$store.state.connected\">\n\t\t\t\t\t\t<hr/>\n\t\t\t\t\t\t<options></options>\n\t\t\t\t\t\t<cdn-details v-if=\"this.$store.state.userData\"></cdn-details>\n\t\t\t\t\t\t<hr/>\n\t\t\t\t\t\t<last-images :status=\"fetchStatus\"></last-images>\n\t\t\t\t\t</div>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n";
|
14279 |
+
|
14280 |
+
/***/ }),
|
14281 |
+
/* 37 */
|
14282 |
+
/***/ (function(module, exports, __webpack_require__) {
|
14283 |
+
|
14284 |
+
"use strict";
|
14285 |
+
|
14286 |
+
|
14287 |
+
Object.defineProperty(exports, "__esModule", {
|
14288 |
+
value: true
|
14289 |
+
});
|
14290 |
+
|
14291 |
+
var _vue = __webpack_require__(2);
|
14292 |
+
|
14293 |
+
var _vue2 = _interopRequireDefault(_vue);
|
14294 |
+
|
14295 |
+
var _vuex = __webpack_require__(38);
|
14296 |
+
|
14297 |
+
var _vuex2 = _interopRequireDefault(_vuex);
|
14298 |
+
|
14299 |
+
var _vueResource = __webpack_require__(5);
|
14300 |
+
|
14301 |
+
var _vueResource2 = _interopRequireDefault(_vueResource);
|
14302 |
+
|
14303 |
+
var _mutations = __webpack_require__(40);
|
14304 |
+
|
14305 |
+
var _mutations2 = _interopRequireDefault(_mutations);
|
14306 |
+
|
14307 |
+
var _actions = __webpack_require__(41);
|
14308 |
+
|
14309 |
+
var _actions2 = _interopRequireDefault(_actions);
|
14310 |
+
|
14311 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14312 |
+
|
14313 |
+
_vue2.default.use(_vuex2.default); /* global optimoleDashboardApp */
|
14314 |
+
/*jshint esversion: 6 */
|
14315 |
+
|
14316 |
+
_vue2.default.use(_vueResource2.default);
|
14317 |
+
|
14318 |
+
var store = new _vuex2.default.Store({
|
14319 |
+
state: {
|
14320 |
+
isConnecting: false,
|
14321 |
+
loading: false,
|
14322 |
+
connected: optimoleDashboardApp.connection_status ? true : false,
|
14323 |
+
apiKey: optimoleDashboardApp.api_key ? optimoleDashboardApp.api_key : '',
|
14324 |
+
apiKeyValidity: true,
|
14325 |
+
userData: optimoleDashboardApp.user_data ? optimoleDashboardApp.user_data : null,
|
14326 |
+
optimizedImages: []
|
14327 |
+
},
|
14328 |
+
mutations: _mutations2.default,
|
14329 |
+
actions: _actions2.default
|
14330 |
+
});
|
14331 |
+
|
14332 |
+
exports.default = store;
|
14333 |
+
|
14334 |
+
/***/ }),
|
14335 |
+
/* 38 */
|
14336 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
14337 |
+
|
14338 |
+
"use strict";
|
14339 |
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
14340 |
+
/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Store", function() { return Store; });
|
14341 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "install", function() { return install; });
|
14342 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapState", function() { return mapState; });
|
14343 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapMutations", function() { return mapMutations; });
|
14344 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapGetters", function() { return mapGetters; });
|
14345 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapActions", function() { return mapActions; });
|
14346 |
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createNamespacedHelpers", function() { return createNamespacedHelpers; });
|
14347 |
+
/**
|
14348 |
+
* vuex v2.5.0
|
14349 |
+
* (c) 2017 Evan You
|
14350 |
+
* @license MIT
|
14351 |
+
*/
|
14352 |
+
var applyMixin = function (Vue) {
|
14353 |
+
var version = Number(Vue.version.split('.')[0]);
|
14354 |
+
|
14355 |
+
if (version >= 2) {
|
14356 |
+
Vue.mixin({ beforeCreate: vuexInit });
|
14357 |
+
} else {
|
14358 |
+
// override init and inject vuex init procedure
|
14359 |
+
// for 1.x backwards compatibility.
|
14360 |
+
var _init = Vue.prototype._init;
|
14361 |
+
Vue.prototype._init = function (options) {
|
14362 |
+
if ( options === void 0 ) options = {};
|
14363 |
+
|
14364 |
+
options.init = options.init
|
14365 |
+
? [vuexInit].concat(options.init)
|
14366 |
+
: vuexInit;
|
14367 |
+
_init.call(this, options);
|
14368 |
+
};
|
14369 |
+
}
|
14370 |
+
|
14371 |
+
/**
|
14372 |
+
* Vuex init hook, injected into each instances init hooks list.
|
14373 |
+
*/
|
14374 |
+
|
14375 |
+
function vuexInit () {
|
14376 |
+
var options = this.$options;
|
14377 |
+
// store injection
|
14378 |
+
if (options.store) {
|
14379 |
+
this.$store = typeof options.store === 'function'
|
14380 |
+
? options.store()
|
14381 |
+
: options.store;
|
14382 |
+
} else if (options.parent && options.parent.$store) {
|
14383 |
+
this.$store = options.parent.$store;
|
14384 |
+
}
|
14385 |
+
}
|
14386 |
+
};
|
14387 |
+
|
14388 |
+
var devtoolHook =
|
14389 |
+
typeof window !== 'undefined' &&
|
14390 |
+
window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
14391 |
+
|
14392 |
+
function devtoolPlugin (store) {
|
14393 |
+
if (!devtoolHook) { return }
|
14394 |
+
|
14395 |
+
store._devtoolHook = devtoolHook;
|
14396 |
+
|
14397 |
+
devtoolHook.emit('vuex:init', store);
|
14398 |
+
|
14399 |
+
devtoolHook.on('vuex:travel-to-state', function (targetState) {
|
14400 |
+
store.replaceState(targetState);
|
14401 |
+
});
|
14402 |
+
|
14403 |
+
store.subscribe(function (mutation, state) {
|
14404 |
+
devtoolHook.emit('vuex:mutation', mutation, state);
|
14405 |
+
});
|
14406 |
+
}
|
14407 |
+
|
14408 |
+
/**
|
14409 |
+
* Get the first item that pass the test
|
14410 |
+
* by second argument function
|
14411 |
+
*
|
14412 |
+
* @param {Array} list
|
14413 |
+
* @param {Function} f
|
14414 |
+
* @return {*}
|
14415 |
+
*/
|
14416 |
+
/**
|
14417 |
+
* Deep copy the given object considering circular structure.
|
14418 |
+
* This function caches all nested objects and its copies.
|
14419 |
+
* If it detects circular structure, use cached copy to avoid infinite loop.
|
14420 |
+
*
|
14421 |
+
* @param {*} obj
|
14422 |
+
* @param {Array<Object>} cache
|
14423 |
+
* @return {*}
|
14424 |
+
*/
|
14425 |
+
|
14426 |
+
|
14427 |
+
/**
|
14428 |
+
* forEach for object
|
14429 |
+
*/
|
14430 |
+
function forEachValue (obj, fn) {
|
14431 |
+
Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });
|
14432 |
+
}
|
14433 |
+
|
14434 |
+
function isObject (obj) {
|
14435 |
+
return obj !== null && typeof obj === 'object'
|
14436 |
+
}
|
14437 |
+
|
14438 |
+
function isPromise (val) {
|
14439 |
+
return val && typeof val.then === 'function'
|
14440 |
+
}
|
14441 |
+
|
14442 |
+
function assert (condition, msg) {
|
14443 |
+
if (!condition) { throw new Error(("[vuex] " + msg)) }
|
14444 |
+
}
|
14445 |
+
|
14446 |
+
var Module = function Module (rawModule, runtime) {
|
14447 |
+
this.runtime = runtime;
|
14448 |
+
this._children = Object.create(null);
|
14449 |
+
this._rawModule = rawModule;
|
14450 |
+
var rawState = rawModule.state;
|
14451 |
+
this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};
|
14452 |
+
};
|
14453 |
+
|
14454 |
+
var prototypeAccessors$1 = { namespaced: { configurable: true } };
|
14455 |
+
|
14456 |
+
prototypeAccessors$1.namespaced.get = function () {
|
14457 |
+
return !!this._rawModule.namespaced
|
14458 |
+
};
|
14459 |
+
|
14460 |
+
Module.prototype.addChild = function addChild (key, module) {
|
14461 |
+
this._children[key] = module;
|
14462 |
+
};
|
14463 |
+
|
14464 |
+
Module.prototype.removeChild = function removeChild (key) {
|
14465 |
+
delete this._children[key];
|
14466 |
+
};
|
14467 |
+
|
14468 |
+
Module.prototype.getChild = function getChild (key) {
|
14469 |
+
return this._children[key]
|
14470 |
+
};
|
14471 |
+
|
14472 |
+
Module.prototype.update = function update (rawModule) {
|
14473 |
+
this._rawModule.namespaced = rawModule.namespaced;
|
14474 |
+
if (rawModule.actions) {
|
14475 |
+
this._rawModule.actions = rawModule.actions;
|
14476 |
+
}
|
14477 |
+
if (rawModule.mutations) {
|
14478 |
+
this._rawModule.mutations = rawModule.mutations;
|
14479 |
+
}
|
14480 |
+
if (rawModule.getters) {
|
14481 |
+
this._rawModule.getters = rawModule.getters;
|
14482 |
+
}
|
14483 |
+
};
|
14484 |
+
|
14485 |
+
Module.prototype.forEachChild = function forEachChild (fn) {
|
14486 |
+
forEachValue(this._children, fn);
|
14487 |
+
};
|
14488 |
+
|
14489 |
+
Module.prototype.forEachGetter = function forEachGetter (fn) {
|
14490 |
+
if (this._rawModule.getters) {
|
14491 |
+
forEachValue(this._rawModule.getters, fn);
|
14492 |
+
}
|
14493 |
+
};
|
14494 |
+
|
14495 |
+
Module.prototype.forEachAction = function forEachAction (fn) {
|
14496 |
+
if (this._rawModule.actions) {
|
14497 |
+
forEachValue(this._rawModule.actions, fn);
|
14498 |
+
}
|
14499 |
+
};
|
14500 |
+
|
14501 |
+
Module.prototype.forEachMutation = function forEachMutation (fn) {
|
14502 |
+
if (this._rawModule.mutations) {
|
14503 |
+
forEachValue(this._rawModule.mutations, fn);
|
14504 |
+
}
|
14505 |
+
};
|
14506 |
+
|
14507 |
+
Object.defineProperties( Module.prototype, prototypeAccessors$1 );
|
14508 |
+
|
14509 |
+
var ModuleCollection = function ModuleCollection (rawRootModule) {
|
14510 |
+
// register root module (Vuex.Store options)
|
14511 |
+
this.register([], rawRootModule, false);
|
14512 |
+
};
|
14513 |
+
|
14514 |
+
ModuleCollection.prototype.get = function get (path) {
|
14515 |
+
return path.reduce(function (module, key) {
|
14516 |
+
return module.getChild(key)
|
14517 |
+
}, this.root)
|
14518 |
+
};
|
14519 |
+
|
14520 |
+
ModuleCollection.prototype.getNamespace = function getNamespace (path) {
|
14521 |
+
var module = this.root;
|
14522 |
+
return path.reduce(function (namespace, key) {
|
14523 |
+
module = module.getChild(key);
|
14524 |
+
return namespace + (module.namespaced ? key + '/' : '')
|
14525 |
+
}, '')
|
14526 |
+
};
|
14527 |
+
|
14528 |
+
ModuleCollection.prototype.update = function update$1 (rawRootModule) {
|
14529 |
+
update([], this.root, rawRootModule);
|
14530 |
+
};
|
14531 |
+
|
14532 |
+
ModuleCollection.prototype.register = function register (path, rawModule, runtime) {
|
14533 |
+
var this$1 = this;
|
14534 |
+
if ( runtime === void 0 ) runtime = true;
|
14535 |
+
|
14536 |
+
if (process.env.NODE_ENV !== 'production') {
|
14537 |
+
assertRawModule(path, rawModule);
|
14538 |
+
}
|
14539 |
+
|
14540 |
+
var newModule = new Module(rawModule, runtime);
|
14541 |
+
if (path.length === 0) {
|
14542 |
+
this.root = newModule;
|
14543 |
+
} else {
|
14544 |
+
var parent = this.get(path.slice(0, -1));
|
14545 |
+
parent.addChild(path[path.length - 1], newModule);
|
14546 |
+
}
|
14547 |
+
|
14548 |
+
// register nested modules
|
14549 |
+
if (rawModule.modules) {
|
14550 |
+
forEachValue(rawModule.modules, function (rawChildModule, key) {
|
14551 |
+
this$1.register(path.concat(key), rawChildModule, runtime);
|
14552 |
+
});
|
14553 |
+
}
|
14554 |
+
};
|
14555 |
+
|
14556 |
+
ModuleCollection.prototype.unregister = function unregister (path) {
|
14557 |
+
var parent = this.get(path.slice(0, -1));
|
14558 |
+
var key = path[path.length - 1];
|
14559 |
+
if (!parent.getChild(key).runtime) { return }
|
14560 |
+
|
14561 |
+
parent.removeChild(key);
|
14562 |
+
};
|
14563 |
+
|
14564 |
+
function update (path, targetModule, newModule) {
|
14565 |
+
if (process.env.NODE_ENV !== 'production') {
|
14566 |
+
assertRawModule(path, newModule);
|
14567 |
+
}
|
14568 |
+
|
14569 |
+
// update target module
|
14570 |
+
targetModule.update(newModule);
|
14571 |
+
|
14572 |
+
// update nested modules
|
14573 |
+
if (newModule.modules) {
|
14574 |
+
for (var key in newModule.modules) {
|
14575 |
+
if (!targetModule.getChild(key)) {
|
14576 |
+
if (process.env.NODE_ENV !== 'production') {
|
14577 |
+
console.warn(
|
14578 |
+
"[vuex] trying to add a new module '" + key + "' on hot reloading, " +
|
14579 |
+
'manual reload is needed'
|
14580 |
+
);
|
14581 |
+
}
|
14582 |
+
return
|
14583 |
+
}
|
14584 |
+
update(
|
14585 |
+
path.concat(key),
|
14586 |
+
targetModule.getChild(key),
|
14587 |
+
newModule.modules[key]
|
14588 |
+
);
|
14589 |
+
}
|
14590 |
+
}
|
14591 |
+
}
|
14592 |
+
|
14593 |
+
var functionAssert = {
|
14594 |
+
assert: function (value) { return typeof value === 'function'; },
|
14595 |
+
expected: 'function'
|
14596 |
+
};
|
14597 |
+
|
14598 |
+
var objectAssert = {
|
14599 |
+
assert: function (value) { return typeof value === 'function' ||
|
14600 |
+
(typeof value === 'object' && typeof value.handler === 'function'); },
|
14601 |
+
expected: 'function or object with "handler" function'
|
14602 |
+
};
|
14603 |
+
|
14604 |
+
var assertTypes = {
|
14605 |
+
getters: functionAssert,
|
14606 |
+
mutations: functionAssert,
|
14607 |
+
actions: objectAssert
|
14608 |
+
};
|
14609 |
+
|
14610 |
+
function assertRawModule (path, rawModule) {
|
14611 |
+
Object.keys(assertTypes).forEach(function (key) {
|
14612 |
+
if (!rawModule[key]) { return }
|
14613 |
+
|
14614 |
+
var assertOptions = assertTypes[key];
|
14615 |
+
|
14616 |
+
forEachValue(rawModule[key], function (value, type) {
|
14617 |
+
assert(
|
14618 |
+
assertOptions.assert(value),
|
14619 |
+
makeAssertionMessage(path, key, type, value, assertOptions.expected)
|
14620 |
+
);
|
14621 |
+
});
|
14622 |
+
});
|
14623 |
+
}
|
14624 |
+
|
14625 |
+
function makeAssertionMessage (path, key, type, value, expected) {
|
14626 |
+
var buf = key + " should be " + expected + " but \"" + key + "." + type + "\"";
|
14627 |
+
if (path.length > 0) {
|
14628 |
+
buf += " in module \"" + (path.join('.')) + "\"";
|
14629 |
+
}
|
14630 |
+
buf += " is " + (JSON.stringify(value)) + ".";
|
14631 |
+
return buf
|
14632 |
+
}
|
14633 |
+
|
14634 |
+
var Vue; // bind on install
|
14635 |
+
|
14636 |
+
var Store = function Store (options) {
|
14637 |
+
var this$1 = this;
|
14638 |
+
if ( options === void 0 ) options = {};
|
14639 |
+
|
14640 |
+
// Auto install if it is not done yet and `window` has `Vue`.
|
14641 |
+
// To allow users to avoid auto-installation in some cases,
|
14642 |
+
// this code should be placed here. See #731
|
14643 |
+
if (!Vue && typeof window !== 'undefined' && window.Vue) {
|
14644 |
+
install(window.Vue);
|
14645 |
+
}
|
14646 |
+
|
14647 |
+
if (process.env.NODE_ENV !== 'production') {
|
14648 |
+
assert(Vue, "must call Vue.use(Vuex) before creating a store instance.");
|
14649 |
+
assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.");
|
14650 |
+
assert(this instanceof Store, "Store must be called with the new operator.");
|
14651 |
+
}
|
14652 |
+
|
14653 |
+
var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];
|
14654 |
+
var strict = options.strict; if ( strict === void 0 ) strict = false;
|
14655 |
+
|
14656 |
+
var state = options.state; if ( state === void 0 ) state = {};
|
14657 |
+
if (typeof state === 'function') {
|
14658 |
+
state = state() || {};
|
14659 |
+
}
|
14660 |
+
|
14661 |
+
// store internal state
|
14662 |
+
this._committing = false;
|
14663 |
+
this._actions = Object.create(null);
|
14664 |
+
this._actionSubscribers = [];
|
14665 |
+
this._mutations = Object.create(null);
|
14666 |
+
this._wrappedGetters = Object.create(null);
|
14667 |
+
this._modules = new ModuleCollection(options);
|
14668 |
+
this._modulesNamespaceMap = Object.create(null);
|
14669 |
+
this._subscribers = [];
|
14670 |
+
this._watcherVM = new Vue();
|
14671 |
+
|
14672 |
+
// bind commit and dispatch to self
|
14673 |
+
var store = this;
|
14674 |
+
var ref = this;
|
14675 |
+
var dispatch = ref.dispatch;
|
14676 |
+
var commit = ref.commit;
|
14677 |
+
this.dispatch = function boundDispatch (type, payload) {
|
14678 |
+
return dispatch.call(store, type, payload)
|
14679 |
+
};
|
14680 |
+
this.commit = function boundCommit (type, payload, options) {
|
14681 |
+
return commit.call(store, type, payload, options)
|
14682 |
+
};
|
14683 |
+
|
14684 |
+
// strict mode
|
14685 |
+
this.strict = strict;
|
14686 |
+
|
14687 |
+
// init root module.
|
14688 |
+
// this also recursively registers all sub-modules
|
14689 |
+
// and collects all module getters inside this._wrappedGetters
|
14690 |
+
installModule(this, state, [], this._modules.root);
|
14691 |
+
|
14692 |
+
// initialize the store vm, which is responsible for the reactivity
|
14693 |
+
// (also registers _wrappedGetters as computed properties)
|
14694 |
+
resetStoreVM(this, state);
|
14695 |
+
|
14696 |
+
// apply plugins
|
14697 |
+
plugins.forEach(function (plugin) { return plugin(this$1); });
|
14698 |
+
|
14699 |
+
if (Vue.config.devtools) {
|
14700 |
+
devtoolPlugin(this);
|
14701 |
+
}
|
14702 |
+
};
|
14703 |
+
|
14704 |
+
var prototypeAccessors = { state: { configurable: true } };
|
14705 |
+
|
14706 |
+
prototypeAccessors.state.get = function () {
|
14707 |
+
return this._vm._data.$$state
|
14708 |
+
};
|
14709 |
+
|
14710 |
+
prototypeAccessors.state.set = function (v) {
|
14711 |
+
if (process.env.NODE_ENV !== 'production') {
|
14712 |
+
assert(false, "Use store.replaceState() to explicit replace store state.");
|
14713 |
+
}
|
14714 |
+
};
|
14715 |
+
|
14716 |
+
Store.prototype.commit = function commit (_type, _payload, _options) {
|
14717 |
+
var this$1 = this;
|
14718 |
+
|
14719 |
+
// check object-style commit
|
14720 |
+
var ref = unifyObjectStyle(_type, _payload, _options);
|
14721 |
+
var type = ref.type;
|
14722 |
+
var payload = ref.payload;
|
14723 |
+
var options = ref.options;
|
14724 |
+
|
14725 |
+
var mutation = { type: type, payload: payload };
|
14726 |
+
var entry = this._mutations[type];
|
14727 |
+
if (!entry) {
|
14728 |
+
if (process.env.NODE_ENV !== 'production') {
|
14729 |
+
console.error(("[vuex] unknown mutation type: " + type));
|
14730 |
+
}
|
14731 |
+
return
|
14732 |
+
}
|
14733 |
+
this._withCommit(function () {
|
14734 |
+
entry.forEach(function commitIterator (handler) {
|
14735 |
+
handler(payload);
|
14736 |
+
});
|
14737 |
+
});
|
14738 |
+
this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });
|
14739 |
+
|
14740 |
+
if (
|
14741 |
+
process.env.NODE_ENV !== 'production' &&
|
14742 |
+
options && options.silent
|
14743 |
+
) {
|
14744 |
+
console.warn(
|
14745 |
+
"[vuex] mutation type: " + type + ". Silent option has been removed. " +
|
14746 |
+
'Use the filter functionality in the vue-devtools'
|
14747 |
+
);
|
14748 |
+
}
|
14749 |
+
};
|
14750 |
+
|
14751 |
+
Store.prototype.dispatch = function dispatch (_type, _payload) {
|
14752 |
+
var this$1 = this;
|
14753 |
+
|
14754 |
+
// check object-style dispatch
|
14755 |
+
var ref = unifyObjectStyle(_type, _payload);
|
14756 |
+
var type = ref.type;
|
14757 |
+
var payload = ref.payload;
|
14758 |
+
|
14759 |
+
var action = { type: type, payload: payload };
|
14760 |
+
var entry = this._actions[type];
|
14761 |
+
if (!entry) {
|
14762 |
+
if (process.env.NODE_ENV !== 'production') {
|
14763 |
+
console.error(("[vuex] unknown action type: " + type));
|
14764 |
+
}
|
14765 |
+
return
|
14766 |
+
}
|
14767 |
+
|
14768 |
+
this._actionSubscribers.forEach(function (sub) { return sub(action, this$1.state); });
|
14769 |
+
|
14770 |
+
return entry.length > 1
|
14771 |
+
? Promise.all(entry.map(function (handler) { return handler(payload); }))
|
14772 |
+
: entry[0](payload)
|
14773 |
+
};
|
14774 |
+
|
14775 |
+
Store.prototype.subscribe = function subscribe (fn) {
|
14776 |
+
return genericSubscribe(fn, this._subscribers)
|
14777 |
+
};
|
14778 |
+
|
14779 |
+
Store.prototype.subscribeAction = function subscribeAction (fn) {
|
14780 |
+
return genericSubscribe(fn, this._actionSubscribers)
|
14781 |
+
};
|
14782 |
+
|
14783 |
+
Store.prototype.watch = function watch (getter, cb, options) {
|
14784 |
+
var this$1 = this;
|
14785 |
+
|
14786 |
+
if (process.env.NODE_ENV !== 'production') {
|
14787 |
+
assert(typeof getter === 'function', "store.watch only accepts a function.");
|
14788 |
+
}
|
14789 |
+
return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)
|
14790 |
+
};
|
14791 |
+
|
14792 |
+
Store.prototype.replaceState = function replaceState (state) {
|
14793 |
+
var this$1 = this;
|
14794 |
+
|
14795 |
+
this._withCommit(function () {
|
14796 |
+
this$1._vm._data.$$state = state;
|
14797 |
+
});
|
14798 |
+
};
|
14799 |
+
|
14800 |
+
Store.prototype.registerModule = function registerModule (path, rawModule, options) {
|
14801 |
+
if ( options === void 0 ) options = {};
|
14802 |
+
|
14803 |
+
if (typeof path === 'string') { path = [path]; }
|
14804 |
+
|
14805 |
+
if (process.env.NODE_ENV !== 'production') {
|
14806 |
+
assert(Array.isArray(path), "module path must be a string or an Array.");
|
14807 |
+
assert(path.length > 0, 'cannot register the root module by using registerModule.');
|
14808 |
+
}
|
14809 |
+
|
14810 |
+
this._modules.register(path, rawModule);
|
14811 |
+
installModule(this, this.state, path, this._modules.get(path), options.preserveState);
|
14812 |
+
// reset store to update getters...
|
14813 |
+
resetStoreVM(this, this.state);
|
14814 |
+
};
|
14815 |
+
|
14816 |
+
Store.prototype.unregisterModule = function unregisterModule (path) {
|
14817 |
+
var this$1 = this;
|
14818 |
+
|
14819 |
+
if (typeof path === 'string') { path = [path]; }
|
14820 |
+
|
14821 |
+
if (process.env.NODE_ENV !== 'production') {
|
14822 |
+
assert(Array.isArray(path), "module path must be a string or an Array.");
|
14823 |
+
}
|
14824 |
+
|
14825 |
+
this._modules.unregister(path);
|
14826 |
+
this._withCommit(function () {
|
14827 |
+
var parentState = getNestedState(this$1.state, path.slice(0, -1));
|
14828 |
+
Vue.delete(parentState, path[path.length - 1]);
|
14829 |
+
});
|
14830 |
+
resetStore(this);
|
14831 |
+
};
|
14832 |
+
|
14833 |
+
Store.prototype.hotUpdate = function hotUpdate (newOptions) {
|
14834 |
+
this._modules.update(newOptions);
|
14835 |
+
resetStore(this, true);
|
14836 |
+
};
|
14837 |
+
|
14838 |
+
Store.prototype._withCommit = function _withCommit (fn) {
|
14839 |
+
var committing = this._committing;
|
14840 |
+
this._committing = true;
|
14841 |
+
fn();
|
14842 |
+
this._committing = committing;
|
14843 |
+
};
|
14844 |
+
|
14845 |
+
Object.defineProperties( Store.prototype, prototypeAccessors );
|
14846 |
+
|
14847 |
+
function genericSubscribe (fn, subs) {
|
14848 |
+
if (subs.indexOf(fn) < 0) {
|
14849 |
+
subs.push(fn);
|
14850 |
+
}
|
14851 |
+
return function () {
|
14852 |
+
var i = subs.indexOf(fn);
|
14853 |
+
if (i > -1) {
|
14854 |
+
subs.splice(i, 1);
|
14855 |
+
}
|
14856 |
+
}
|
14857 |
+
}
|
14858 |
+
|
14859 |
+
function resetStore (store, hot) {
|
14860 |
+
store._actions = Object.create(null);
|
14861 |
+
store._mutations = Object.create(null);
|
14862 |
+
store._wrappedGetters = Object.create(null);
|
14863 |
+
store._modulesNamespaceMap = Object.create(null);
|
14864 |
+
var state = store.state;
|
14865 |
+
// init all modules
|
14866 |
+
installModule(store, state, [], store._modules.root, true);
|
14867 |
+
// reset vm
|
14868 |
+
resetStoreVM(store, state, hot);
|
14869 |
+
}
|
14870 |
+
|
14871 |
+
function resetStoreVM (store, state, hot) {
|
14872 |
+
var oldVm = store._vm;
|
14873 |
+
|
14874 |
+
// bind store public getters
|
14875 |
+
store.getters = {};
|
14876 |
+
var wrappedGetters = store._wrappedGetters;
|
14877 |
+
var computed = {};
|
14878 |
+
forEachValue(wrappedGetters, function (fn, key) {
|
14879 |
+
// use computed to leverage its lazy-caching mechanism
|
14880 |
+
computed[key] = function () { return fn(store); };
|
14881 |
+
Object.defineProperty(store.getters, key, {
|
14882 |
+
get: function () { return store._vm[key]; },
|
14883 |
+
enumerable: true // for local getters
|
14884 |
+
});
|
14885 |
+
});
|
14886 |
+
|
14887 |
+
// use a Vue instance to store the state tree
|
14888 |
+
// suppress warnings just in case the user has added
|
14889 |
+
// some funky global mixins
|
14890 |
+
var silent = Vue.config.silent;
|
14891 |
+
Vue.config.silent = true;
|
14892 |
+
store._vm = new Vue({
|
14893 |
+
data: {
|
14894 |
+
$$state: state
|
14895 |
+
},
|
14896 |
+
computed: computed
|
14897 |
+
});
|
14898 |
+
Vue.config.silent = silent;
|
14899 |
+
|
14900 |
+
// enable strict mode for new vm
|
14901 |
+
if (store.strict) {
|
14902 |
+
enableStrictMode(store);
|
14903 |
+
}
|
14904 |
+
|
14905 |
+
if (oldVm) {
|
14906 |
+
if (hot) {
|
14907 |
+
// dispatch changes in all subscribed watchers
|
14908 |
+
// to force getter re-evaluation for hot reloading.
|
14909 |
+
store._withCommit(function () {
|
14910 |
+
oldVm._data.$$state = null;
|
14911 |
+
});
|
14912 |
+
}
|
14913 |
+
Vue.nextTick(function () { return oldVm.$destroy(); });
|
14914 |
+
}
|
14915 |
+
}
|
14916 |
+
|
14917 |
+
function installModule (store, rootState, path, module, hot) {
|
14918 |
+
var isRoot = !path.length;
|
14919 |
+
var namespace = store._modules.getNamespace(path);
|
14920 |
+
|
14921 |
+
// register in namespace map
|
14922 |
+
if (module.namespaced) {
|
14923 |
+
store._modulesNamespaceMap[namespace] = module;
|
14924 |
+
}
|
14925 |
+
|
14926 |
+
// set state
|
14927 |
+
if (!isRoot && !hot) {
|
14928 |
+
var parentState = getNestedState(rootState, path.slice(0, -1));
|
14929 |
+
var moduleName = path[path.length - 1];
|
14930 |
+
store._withCommit(function () {
|
14931 |
+
Vue.set(parentState, moduleName, module.state);
|
14932 |
+
});
|
14933 |
+
}
|
14934 |
+
|
14935 |
+
var local = module.context = makeLocalContext(store, namespace, path);
|
14936 |
+
|
14937 |
+
module.forEachMutation(function (mutation, key) {
|
14938 |
+
var namespacedType = namespace + key;
|
14939 |
+
registerMutation(store, namespacedType, mutation, local);
|
14940 |
+
});
|
14941 |
+
|
14942 |
+
module.forEachAction(function (action, key) {
|
14943 |
+
var type = action.root ? key : namespace + key;
|
14944 |
+
var handler = action.handler || action;
|
14945 |
+
registerAction(store, type, handler, local);
|
14946 |
+
});
|
14947 |
+
|
14948 |
+
module.forEachGetter(function (getter, key) {
|
14949 |
+
var namespacedType = namespace + key;
|
14950 |
+
registerGetter(store, namespacedType, getter, local);
|
14951 |
+
});
|
14952 |
+
|
14953 |
+
module.forEachChild(function (child, key) {
|
14954 |
+
installModule(store, rootState, path.concat(key), child, hot);
|
14955 |
+
});
|
14956 |
+
}
|
14957 |
+
|
14958 |
+
/**
|
14959 |
+
* make localized dispatch, commit, getters and state
|
14960 |
+
* if there is no namespace, just use root ones
|
14961 |
+
*/
|
14962 |
+
function makeLocalContext (store, namespace, path) {
|
14963 |
+
var noNamespace = namespace === '';
|
14964 |
+
|
14965 |
+
var local = {
|
14966 |
+
dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {
|
14967 |
+
var args = unifyObjectStyle(_type, _payload, _options);
|
14968 |
+
var payload = args.payload;
|
14969 |
+
var options = args.options;
|
14970 |
+
var type = args.type;
|
14971 |
+
|
14972 |
+
if (!options || !options.root) {
|
14973 |
+
type = namespace + type;
|
14974 |
+
if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {
|
14975 |
+
console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type));
|
14976 |
+
return
|
14977 |
+
}
|
14978 |
+
}
|
14979 |
+
|
14980 |
+
return store.dispatch(type, payload)
|
14981 |
+
},
|
14982 |
+
|
14983 |
+
commit: noNamespace ? store.commit : function (_type, _payload, _options) {
|
14984 |
+
var args = unifyObjectStyle(_type, _payload, _options);
|
14985 |
+
var payload = args.payload;
|
14986 |
+
var options = args.options;
|
14987 |
+
var type = args.type;
|
14988 |
+
|
14989 |
+
if (!options || !options.root) {
|
14990 |
+
type = namespace + type;
|
14991 |
+
if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {
|
14992 |
+
console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type));
|
14993 |
+
return
|
14994 |
+
}
|
14995 |
+
}
|
14996 |
+
|
14997 |
+
store.commit(type, payload, options);
|
14998 |
+
}
|
14999 |
+
};
|
15000 |
+
|
15001 |
+
// getters and state object must be gotten lazily
|
15002 |
+
// because they will be changed by vm update
|
15003 |
+
Object.defineProperties(local, {
|
15004 |
+
getters: {
|
15005 |
+
get: noNamespace
|
15006 |
+
? function () { return store.getters; }
|
15007 |
+
: function () { return makeLocalGetters(store, namespace); }
|
15008 |
+
},
|
15009 |
+
state: {
|
15010 |
+
get: function () { return getNestedState(store.state, path); }
|
15011 |
+
}
|
15012 |
+
});
|
15013 |
+
|
15014 |
+
return local
|
15015 |
+
}
|
15016 |
+
|
15017 |
+
function makeLocalGetters (store, namespace) {
|
15018 |
+
var gettersProxy = {};
|
15019 |
+
|
15020 |
+
var splitPos = namespace.length;
|
15021 |
+
Object.keys(store.getters).forEach(function (type) {
|
15022 |
+
// skip if the target getter is not match this namespace
|
15023 |
+
if (type.slice(0, splitPos) !== namespace) { return }
|
15024 |
+
|
15025 |
+
// extract local getter type
|
15026 |
+
var localType = type.slice(splitPos);
|
15027 |
+
|
15028 |
+
// Add a port to the getters proxy.
|
15029 |
+
// Define as getter property because
|
15030 |
+
// we do not want to evaluate the getters in this time.
|
15031 |
+
Object.defineProperty(gettersProxy, localType, {
|
15032 |
+
get: function () { return store.getters[type]; },
|
15033 |
+
enumerable: true
|
15034 |
+
});
|
15035 |
+
});
|
15036 |
+
|
15037 |
+
return gettersProxy
|
15038 |
+
}
|
15039 |
+
|
15040 |
+
function registerMutation (store, type, handler, local) {
|
15041 |
+
var entry = store._mutations[type] || (store._mutations[type] = []);
|
15042 |
+
entry.push(function wrappedMutationHandler (payload) {
|
15043 |
+
handler.call(store, local.state, payload);
|
15044 |
+
});
|
15045 |
+
}
|
15046 |
+
|
15047 |
+
function registerAction (store, type, handler, local) {
|
15048 |
+
var entry = store._actions[type] || (store._actions[type] = []);
|
15049 |
+
entry.push(function wrappedActionHandler (payload, cb) {
|
15050 |
+
var res = handler.call(store, {
|
15051 |
+
dispatch: local.dispatch,
|
15052 |
+
commit: local.commit,
|
15053 |
+
getters: local.getters,
|
15054 |
+
state: local.state,
|
15055 |
+
rootGetters: store.getters,
|
15056 |
+
rootState: store.state
|
15057 |
+
}, payload, cb);
|
15058 |
+
if (!isPromise(res)) {
|
15059 |
+
res = Promise.resolve(res);
|
15060 |
+
}
|
15061 |
+
if (store._devtoolHook) {
|
15062 |
+
return res.catch(function (err) {
|
15063 |
+
store._devtoolHook.emit('vuex:error', err);
|
15064 |
+
throw err
|
15065 |
+
})
|
15066 |
+
} else {
|
15067 |
+
return res
|
15068 |
+
}
|
15069 |
+
});
|
15070 |
+
}
|
15071 |
+
|
15072 |
+
function registerGetter (store, type, rawGetter, local) {
|
15073 |
+
if (store._wrappedGetters[type]) {
|
15074 |
+
if (process.env.NODE_ENV !== 'production') {
|
15075 |
+
console.error(("[vuex] duplicate getter key: " + type));
|
15076 |
+
}
|
15077 |
+
return
|
15078 |
+
}
|
15079 |
+
store._wrappedGetters[type] = function wrappedGetter (store) {
|
15080 |
+
return rawGetter(
|
15081 |
+
local.state, // local state
|
15082 |
+
local.getters, // local getters
|
15083 |
+
store.state, // root state
|
15084 |
+
store.getters // root getters
|
15085 |
+
)
|
15086 |
+
};
|
15087 |
+
}
|
15088 |
+
|
15089 |
+
function enableStrictMode (store) {
|
15090 |
+
store._vm.$watch(function () { return this._data.$$state }, function () {
|
15091 |
+
if (process.env.NODE_ENV !== 'production') {
|
15092 |
+
assert(store._committing, "Do not mutate vuex store state outside mutation handlers.");
|
15093 |
+
}
|
15094 |
+
}, { deep: true, sync: true });
|
15095 |
+
}
|
15096 |
+
|
15097 |
+
function getNestedState (state, path) {
|
15098 |
+
return path.length
|
15099 |
+
? path.reduce(function (state, key) { return state[key]; }, state)
|
15100 |
+
: state
|
15101 |
+
}
|
15102 |
+
|
15103 |
+
function unifyObjectStyle (type, payload, options) {
|
15104 |
+
if (isObject(type) && type.type) {
|
15105 |
+
options = payload;
|
15106 |
+
payload = type;
|
15107 |
+
type = type.type;
|
15108 |
+
}
|
15109 |
+
|
15110 |
+
if (process.env.NODE_ENV !== 'production') {
|
15111 |
+
assert(typeof type === 'string', ("Expects string as the type, but found " + (typeof type) + "."));
|
15112 |
+
}
|
15113 |
+
|
15114 |
+
return { type: type, payload: payload, options: options }
|
15115 |
+
}
|
15116 |
+
|
15117 |
+
function install (_Vue) {
|
15118 |
+
if (Vue && _Vue === Vue) {
|
15119 |
+
if (process.env.NODE_ENV !== 'production') {
|
15120 |
+
console.error(
|
15121 |
+
'[vuex] already installed. Vue.use(Vuex) should be called only once.'
|
15122 |
+
);
|
15123 |
+
}
|
15124 |
+
return
|
15125 |
+
}
|
15126 |
+
Vue = _Vue;
|
15127 |
+
applyMixin(Vue);
|
15128 |
+
}
|
15129 |
+
|
15130 |
+
var mapState = normalizeNamespace(function (namespace, states) {
|
15131 |
+
var res = {};
|
15132 |
+
normalizeMap(states).forEach(function (ref) {
|
15133 |
+
var key = ref.key;
|
15134 |
+
var val = ref.val;
|
15135 |
+
|
15136 |
+
res[key] = function mappedState () {
|
15137 |
+
var state = this.$store.state;
|
15138 |
+
var getters = this.$store.getters;
|
15139 |
+
if (namespace) {
|
15140 |
+
var module = getModuleByNamespace(this.$store, 'mapState', namespace);
|
15141 |
+
if (!module) {
|
15142 |
+
return
|
15143 |
+
}
|
15144 |
+
state = module.context.state;
|
15145 |
+
getters = module.context.getters;
|
15146 |
+
}
|
15147 |
+
return typeof val === 'function'
|
15148 |
+
? val.call(this, state, getters)
|
15149 |
+
: state[val]
|
15150 |
+
};
|
15151 |
+
// mark vuex getter for devtools
|
15152 |
+
res[key].vuex = true;
|
15153 |
+
});
|
15154 |
+
return res
|
15155 |
+
});
|
15156 |
+
|
15157 |
+
var mapMutations = normalizeNamespace(function (namespace, mutations) {
|
15158 |
+
var res = {};
|
15159 |
+
normalizeMap(mutations).forEach(function (ref) {
|
15160 |
+
var key = ref.key;
|
15161 |
+
var val = ref.val;
|
15162 |
+
|
15163 |
+
res[key] = function mappedMutation () {
|
15164 |
+
var args = [], len = arguments.length;
|
15165 |
+
while ( len-- ) args[ len ] = arguments[ len ];
|
15166 |
+
|
15167 |
+
var commit = this.$store.commit;
|
15168 |
+
if (namespace) {
|
15169 |
+
var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);
|
15170 |
+
if (!module) {
|
15171 |
+
return
|
15172 |
+
}
|
15173 |
+
commit = module.context.commit;
|
15174 |
+
}
|
15175 |
+
return typeof val === 'function'
|
15176 |
+
? val.apply(this, [commit].concat(args))
|
15177 |
+
: commit.apply(this.$store, [val].concat(args))
|
15178 |
+
};
|
15179 |
+
});
|
15180 |
+
return res
|
15181 |
+
});
|
15182 |
+
|
15183 |
+
var mapGetters = normalizeNamespace(function (namespace, getters) {
|
15184 |
+
var res = {};
|
15185 |
+
normalizeMap(getters).forEach(function (ref) {
|
15186 |
+
var key = ref.key;
|
15187 |
+
var val = ref.val;
|
15188 |
+
|
15189 |
+
val = namespace + val;
|
15190 |
+
res[key] = function mappedGetter () {
|
15191 |
+
if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {
|
15192 |
+
return
|
15193 |
+
}
|
15194 |
+
if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {
|
15195 |
+
console.error(("[vuex] unknown getter: " + val));
|
15196 |
+
return
|
15197 |
+
}
|
15198 |
+
return this.$store.getters[val]
|
15199 |
+
};
|
15200 |
+
// mark vuex getter for devtools
|
15201 |
+
res[key].vuex = true;
|
15202 |
+
});
|
15203 |
+
return res
|
15204 |
+
});
|
15205 |
+
|
15206 |
+
var mapActions = normalizeNamespace(function (namespace, actions) {
|
15207 |
+
var res = {};
|
15208 |
+
normalizeMap(actions).forEach(function (ref) {
|
15209 |
+
var key = ref.key;
|
15210 |
+
var val = ref.val;
|
15211 |
+
|
15212 |
+
res[key] = function mappedAction () {
|
15213 |
+
var args = [], len = arguments.length;
|
15214 |
+
while ( len-- ) args[ len ] = arguments[ len ];
|
15215 |
+
|
15216 |
+
var dispatch = this.$store.dispatch;
|
15217 |
+
if (namespace) {
|
15218 |
+
var module = getModuleByNamespace(this.$store, 'mapActions', namespace);
|
15219 |
+
if (!module) {
|
15220 |
+
return
|
15221 |
+
}
|
15222 |
+
dispatch = module.context.dispatch;
|
15223 |
+
}
|
15224 |
+
return typeof val === 'function'
|
15225 |
+
? val.apply(this, [dispatch].concat(args))
|
15226 |
+
: dispatch.apply(this.$store, [val].concat(args))
|
15227 |
+
};
|
15228 |
+
});
|
15229 |
+
return res
|
15230 |
+
});
|
15231 |
+
|
15232 |
+
var createNamespacedHelpers = function (namespace) { return ({
|
15233 |
+
mapState: mapState.bind(null, namespace),
|
15234 |
+
mapGetters: mapGetters.bind(null, namespace),
|
15235 |
+
mapMutations: mapMutations.bind(null, namespace),
|
15236 |
+
mapActions: mapActions.bind(null, namespace)
|
15237 |
+
}); };
|
15238 |
+
|
15239 |
+
function normalizeMap (map) {
|
15240 |
+
return Array.isArray(map)
|
15241 |
+
? map.map(function (key) { return ({ key: key, val: key }); })
|
15242 |
+
: Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })
|
15243 |
+
}
|
15244 |
+
|
15245 |
+
function normalizeNamespace (fn) {
|
15246 |
+
return function (namespace, map) {
|
15247 |
+
if (typeof namespace !== 'string') {
|
15248 |
+
map = namespace;
|
15249 |
+
namespace = '';
|
15250 |
+
} else if (namespace.charAt(namespace.length - 1) !== '/') {
|
15251 |
+
namespace += '/';
|
15252 |
+
}
|
15253 |
+
return fn(namespace, map)
|
15254 |
+
}
|
15255 |
+
}
|
15256 |
+
|
15257 |
+
function getModuleByNamespace (store, helper, namespace) {
|
15258 |
+
var module = store._modulesNamespaceMap[namespace];
|
15259 |
+
if (process.env.NODE_ENV !== 'production' && !module) {
|
15260 |
+
console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace));
|
15261 |
+
}
|
15262 |
+
return module
|
15263 |
+
}
|
15264 |
+
|
15265 |
+
var index_esm = {
|
15266 |
+
Store: Store,
|
15267 |
+
install: install,
|
15268 |
+
version: '2.5.0',
|
15269 |
+
mapState: mapState,
|
15270 |
+
mapMutations: mapMutations,
|
15271 |
+
mapGetters: mapGetters,
|
15272 |
+
mapActions: mapActions,
|
15273 |
+
createNamespacedHelpers: createNamespacedHelpers
|
15274 |
+
};
|
15275 |
+
|
15276 |
+
|
15277 |
+
/* harmony default export */ __webpack_exports__["default"] = (index_esm);
|
15278 |
+
|
15279 |
+
/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(3)))
|
15280 |
+
|
15281 |
+
/***/ }),
|
15282 |
+
/* 39 */
|
15283 |
+
/***/ (function(module, exports) {
|
15284 |
+
|
15285 |
+
/* (ignored) */
|
15286 |
+
|
15287 |
+
/***/ }),
|
15288 |
+
/* 40 */
|
15289 |
+
/***/ (function(module, exports, __webpack_require__) {
|
15290 |
+
|
15291 |
+
"use strict";
|
15292 |
+
|
15293 |
+
|
15294 |
+
Object.defineProperty(exports, "__esModule", {
|
15295 |
+
value: true
|
15296 |
+
});
|
15297 |
+
/* jshint esversion: 6 */
|
15298 |
+
var toggleLoading = function toggleLoading(state, data) {
|
15299 |
+
state.loading = data;
|
15300 |
+
};
|
15301 |
+
var toggleConnecting = function toggleConnecting(state, data) {
|
15302 |
+
state.isConnecting = data;
|
15303 |
+
};
|
15304 |
+
var toggleKeyValidity = function toggleKeyValidity(state, data) {
|
15305 |
+
state.apiKeyValidity = data;
|
15306 |
+
};
|
15307 |
+
var toggleConnectedToOptml = function toggleConnectedToOptml(state, data) {
|
15308 |
+
state.connected = data;
|
15309 |
+
};
|
15310 |
+
var updateUserData = function updateUserData(state, data) {
|
15311 |
+
state.userData = data;
|
15312 |
+
};
|
15313 |
+
var updateOptimizedImages = function updateOptimizedImages(state, data) {
|
15314 |
+
state.optimizedImages = data.body.data;
|
15315 |
+
};
|
15316 |
+
|
15317 |
+
exports.default = {
|
15318 |
+
toggleLoading: toggleLoading,
|
15319 |
+
toggleConnecting: toggleConnecting,
|
15320 |
+
toggleKeyValidity: toggleKeyValidity,
|
15321 |
+
toggleConnectedToOptml: toggleConnectedToOptml,
|
15322 |
+
updateUserData: updateUserData,
|
15323 |
+
updateOptimizedImages: updateOptimizedImages
|
15324 |
+
};
|
15325 |
+
|
15326 |
+
/***/ }),
|
15327 |
+
/* 41 */
|
15328 |
+
/***/ (function(module, exports, __webpack_require__) {
|
15329 |
+
|
15330 |
+
"use strict";
|
15331 |
+
|
15332 |
+
|
15333 |
+
Object.defineProperty(exports, "__esModule", {
|
15334 |
+
value: true
|
15335 |
+
});
|
15336 |
+
|
15337 |
+
var _vue = __webpack_require__(2);
|
15338 |
+
|
15339 |
+
var _vue2 = _interopRequireDefault(_vue);
|
15340 |
+
|
15341 |
+
var _vueResource = __webpack_require__(5);
|
15342 |
+
|
15343 |
+
var _vueResource2 = _interopRequireDefault(_vueResource);
|
15344 |
+
|
15345 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15346 |
+
|
15347 |
+
/* jshint esversion: 6 */
|
15348 |
+
/* global optimoleDashboardApp */
|
15349 |
+
_vue2.default.use(_vueResource2.default);
|
15350 |
+
|
15351 |
+
var connectOptimole = function connectOptimole(_ref, data) {
|
15352 |
+
var commit = _ref.commit,
|
15353 |
+
state = _ref.state;
|
15354 |
+
|
15355 |
+
commit('toggleConnecting', true);
|
15356 |
+
_vue2.default.http({
|
15357 |
+
url: optimoleDashboardApp.root + '/connect',
|
15358 |
+
method: 'POST',
|
15359 |
+
headers: { 'X-WP-Nonce': optimoleDashboardApp.nonce },
|
15360 |
+
params: { 'req': data.req },
|
15361 |
+
body: {
|
15362 |
+
'api_key': data.apiKey
|
15363 |
+
},
|
15364 |
+
responseType: 'json'
|
15365 |
+
}).then(function (response) {
|
15366 |
+
commit('toggleConnecting', false);
|
15367 |
+
if (response.body.code === 'success') {
|
15368 |
+
commit('toggleKeyValidity', true);
|
15369 |
+
commit('toggleConnectedToOptml', true);
|
15370 |
+
commit('updateUserData', response.body.data);
|
15371 |
+
console.log('%c OptiMole API connection successful.', 'color: #59B278');
|
15372 |
+
pingHomepage();
|
15373 |
+
} else {
|
15374 |
+
commit('toggleKeyValidity', false);
|
15375 |
+
console.log('%c Invalid API Key.', 'color: #E7602A');
|
15376 |
+
}
|
15377 |
+
});
|
15378 |
+
};
|
15379 |
+
|
15380 |
+
var pingHomepage = function pingHomepage() {
|
15381 |
+
_vue2.default.http({
|
15382 |
+
url: optimoleDashboardApp.home_url,
|
15383 |
+
method: 'GET',
|
15384 |
+
headers: { 'X-WP-Nonce': optimoleDashboardApp.nonce },
|
15385 |
+
params: { 'req': 'Ping Homepage' },
|
15386 |
+
responseType: 'json'
|
15387 |
+
});
|
15388 |
+
};
|
15389 |
+
|
15390 |
+
var disconnectOptimole = function disconnectOptimole(_ref2, data) {
|
15391 |
+
var commit = _ref2.commit,
|
15392 |
+
state = _ref2.state;
|
15393 |
+
|
15394 |
+
commit('toggleLoading', true, 'loading');
|
15395 |
+
_vue2.default.http({
|
15396 |
+
url: optimoleDashboardApp.root + '/disconnect',
|
15397 |
+
method: 'GET',
|
15398 |
+
headers: { 'X-WP-Nonce': optimoleDashboardApp.nonce },
|
15399 |
+
params: { 'req': data.req },
|
15400 |
+
responseType: 'json'
|
15401 |
+
}).then(function (response) {
|
15402 |
+
commit('updateUserData', null);
|
15403 |
+
commit('toggleLoading', false);
|
15404 |
+
if (response.ok) {
|
15405 |
+
commit('toggleConnectedToOptml', false);
|
15406 |
+
console.log('%c Disconnected from OptiMole API.', 'color: #59B278');
|
15407 |
+
} else {
|
15408 |
+
console.error(response);
|
15409 |
+
}
|
15410 |
+
});
|
15411 |
+
};
|
15412 |
+
|
15413 |
+
var toggleSetting = function toggleSetting(_ref3, data) {
|
15414 |
+
var commit = _ref3.commit,
|
15415 |
+
state = _ref3.state;
|
15416 |
+
|
15417 |
+
commit('toggleLoading', true, 'loading');
|
15418 |
+
_vue2.default.http({
|
15419 |
+
url: optimoleDashboardApp.root + '/update_option',
|
15420 |
+
method: 'POST',
|
15421 |
+
headers: { 'X-WP-Nonce': optimoleDashboardApp.nonce },
|
15422 |
+
params: {
|
15423 |
+
'req': data.req,
|
15424 |
+
'option_key': data.option_key,
|
15425 |
+
'type': data.type ? data.type : ''
|
15426 |
+
},
|
15427 |
+
responseType: 'json'
|
15428 |
+
}).then(function (response) {
|
15429 |
+
commit('toggleLoading', false);
|
15430 |
+
if (response.ok) {
|
15431 |
+
console.log('%c ' + data.option_key + ' Toggled.', 'color: #59B278');
|
15432 |
+
} else {
|
15433 |
+
console.error(response);
|
15434 |
+
}
|
15435 |
+
});
|
15436 |
+
};
|
15437 |
+
|
15438 |
+
var retrieveOptimizedImages = function retrieveOptimizedImages(_ref4, data) {
|
15439 |
+
var commit = _ref4.commit,
|
15440 |
+
state = _ref4.state;
|
15441 |
+
|
15442 |
+
var self = this;
|
15443 |
+
setTimeout(function () {
|
15444 |
+
if (self.state.optimizedImages.length) {
|
15445 |
+
console.log('%c Images already exsist.', 'color: #59B278');
|
15446 |
+
return false;
|
15447 |
+
}
|
15448 |
+
_vue2.default.http({
|
15449 |
+
url: optimoleDashboardApp.root + '/poll_optimized_images',
|
15450 |
+
method: 'GET',
|
15451 |
+
headers: { 'X-WP-Nonce': optimoleDashboardApp.nonce },
|
15452 |
+
params: { 'req': 'Get Optimized Images' },
|
15453 |
+
responseType: 'json',
|
15454 |
+
timeout: 10000
|
15455 |
+
}).then(function (response) {
|
15456 |
+
if (response.body.code === 'success') {
|
15457 |
+
commit('updateOptimizedImages', response);
|
15458 |
+
if (data.component !== null) {
|
15459 |
+
data.component.loading = false;
|
15460 |
+
}
|
15461 |
+
console.log('%c Images Fetched.', 'color: #59B278');
|
15462 |
+
} else {
|
15463 |
+
console.log('%c No images available.', 'color: #E7602A');
|
15464 |
+
}
|
15465 |
+
});
|
15466 |
+
}, data.waitTime);
|
15467 |
+
};
|
15468 |
+
|
15469 |
+
exports.default = {
|
15470 |
+
connectOptimole: connectOptimole,
|
15471 |
+
disconnectOptimole: disconnectOptimole,
|
15472 |
+
toggleSetting: toggleSetting,
|
15473 |
+
retrieveOptimizedImages: retrieveOptimizedImages
|
15474 |
+
};
|
15475 |
+
|
15476 |
+
/***/ }),
|
15477 |
+
/* 42 */
|
15478 |
+
/***/ (function(module, exports, __webpack_require__) {
|
15479 |
+
|
15480 |
+
(function webpackUniversalModuleDefinition(root, factory) {
|
15481 |
+
if(true)
|
15482 |
+
module.exports = factory(__webpack_require__(2));
|
15483 |
+
else if(typeof define === 'function' && define.amd)
|
15484 |
+
define(["vue"], factory);
|
15485 |
+
else if(typeof exports === 'object')
|
15486 |
+
exports["vue-js-toggle-button"] = factory(require("vue"));
|
15487 |
+
else
|
15488 |
+
root["vue-js-toggle-button"] = factory(root["vue"]);
|
15489 |
+
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
|
15490 |
+
return /******/ (function(modules) { // webpackBootstrap
|
15491 |
+
/******/ // The module cache
|
15492 |
+
/******/ var installedModules = {};
|
15493 |
+
/******/
|
15494 |
+
/******/ // The require function
|
15495 |
+
/******/ function __webpack_require__(moduleId) {
|
15496 |
+
/******/
|
15497 |
+
/******/ // Check if module is in cache
|
15498 |
+
/******/ if(installedModules[moduleId]) {
|
15499 |
+
/******/ return installedModules[moduleId].exports;
|
15500 |
+
/******/ }
|
15501 |
+
/******/ // Create a new module (and put it into the cache)
|
15502 |
+
/******/ var module = installedModules[moduleId] = {
|
15503 |
+
/******/ i: moduleId,
|
15504 |
+
/******/ l: false,
|
15505 |
+
/******/ exports: {}
|
15506 |
+
/******/ };
|
15507 |
+
/******/
|
15508 |
+
/******/ // Execute the module function
|
15509 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
15510 |
+
/******/
|
15511 |
+
/******/ // Flag the module as loaded
|
15512 |
+
/******/ module.l = true;
|
15513 |
+
/******/
|
15514 |
+
/******/ // Return the exports of the module
|
15515 |
+
/******/ return module.exports;
|
15516 |
+
/******/ }
|
15517 |
+
/******/
|
15518 |
+
/******/
|
15519 |
+
/******/ // expose the modules object (__webpack_modules__)
|
15520 |
+
/******/ __webpack_require__.m = modules;
|
15521 |
+
/******/
|
15522 |
+
/******/ // expose the module cache
|
15523 |
+
/******/ __webpack_require__.c = installedModules;
|
15524 |
+
/******/
|
15525 |
+
/******/ // identity function for calling harmony imports with the correct context
|
15526 |
+
/******/ __webpack_require__.i = function(value) { return value; };
|
15527 |
+
/******/
|
15528 |
+
/******/ // define getter function for harmony exports
|
15529 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
15530 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
15531 |
+
/******/ Object.defineProperty(exports, name, {
|
15532 |
+
/******/ configurable: false,
|
15533 |
+
/******/ enumerable: true,
|
15534 |
+
/******/ get: getter
|
15535 |
+
/******/ });
|
15536 |
+
/******/ }
|
15537 |
+
/******/ };
|
15538 |
+
/******/
|
15539 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
15540 |
+
/******/ __webpack_require__.n = function(module) {
|
15541 |
+
/******/ var getter = module && module.__esModule ?
|
15542 |
+
/******/ function getDefault() { return module['default']; } :
|
15543 |
+
/******/ function getModuleExports() { return module; };
|
15544 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
15545 |
+
/******/ return getter;
|
15546 |
+
/******/ };
|
15547 |
+
/******/
|
15548 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
15549 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
15550 |
+
/******/
|
15551 |
+
/******/ // __webpack_public_path__
|
15552 |
+
/******/ __webpack_require__.p = "/dist/";
|
15553 |
+
/******/
|
15554 |
+
/******/ // Load entry module and return exports
|
15555 |
+
/******/ return __webpack_require__(__webpack_require__.s = 3);
|
15556 |
+
/******/ })
|
15557 |
+
/************************************************************************/
|
15558 |
+
/******/ ([
|
15559 |
+
/* 0 */
|
15560 |
+
/***/ (function(module, exports, __webpack_require__) {
|
15561 |
+
|
15562 |
+
|
15563 |
+
/* styles */
|
15564 |
+
__webpack_require__(8)
|
15565 |
+
|
15566 |
+
var Component = __webpack_require__(6)(
|
15567 |
+
/* script */
|
15568 |
+
__webpack_require__(2),
|
15569 |
+
/* template */
|
15570 |
+
__webpack_require__(7),
|
15571 |
+
/* scopeId */
|
15572 |
+
"data-v-25adc6c0",
|
15573 |
+
/* cssModules */
|
15574 |
+
null
|
15575 |
+
)
|
15576 |
+
|
15577 |
+
module.exports = Component.exports
|
15578 |
+
|
15579 |
+
|
15580 |
+
/***/ }),
|
15581 |
+
/* 1 */
|
15582 |
+
/***/ (function(module, exports) {
|
15583 |
+
|
15584 |
+
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
|
15585 |
+
|
15586 |
+
/***/ }),
|
15587 |
+
/* 2 */
|
15588 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
15589 |
+
|
15590 |
+
"use strict";
|
15591 |
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
15592 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
15593 |
+
|
15594 |
+
//
|
15595 |
+
//
|
15596 |
+
//
|
15597 |
+
//
|
15598 |
+
//
|
15599 |
+
//
|
15600 |
+
//
|
15601 |
+
//
|
15602 |
+
//
|
15603 |
+
//
|
15604 |
+
//
|
15605 |
+
//
|
15606 |
+
//
|
15607 |
+
//
|
15608 |
+
//
|
15609 |
+
//
|
15610 |
+
//
|
15611 |
+
//
|
15612 |
+
//
|
15613 |
+
//
|
15614 |
+
//
|
15615 |
+
//
|
15616 |
+
//
|
15617 |
+
//
|
15618 |
+
//
|
15619 |
+
//
|
15620 |
+
|
15621 |
+
var constants = {
|
15622 |
+
colorChecked: '#75C791',
|
15623 |
+
colorUnchecked: '#bfcbd9',
|
15624 |
+
cssColors: false,
|
15625 |
+
labelChecked: 'on',
|
15626 |
+
labelUnchecked: 'off',
|
15627 |
+
width: 50,
|
15628 |
+
height: 22,
|
15629 |
+
margin: 3,
|
15630 |
+
switchColor: '#fff'
|
15631 |
+
};
|
15632 |
+
|
15633 |
+
var contains = function contains(object, title) {
|
15634 |
+
return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object.hasOwnProperty(title);
|
15635 |
+
};
|
15636 |
+
|
15637 |
+
var px = function px(v) {
|
15638 |
+
return v + 'px';
|
15639 |
+
};
|
15640 |
+
|
15641 |
+
/* harmony default export */ __webpack_exports__["default"] = ({
|
15642 |
+
name: 'ToggleButton',
|
15643 |
+
props: {
|
15644 |
+
value: {
|
15645 |
+
type: Boolean,
|
15646 |
+
default: false
|
15647 |
+
},
|
15648 |
+
disabled: {
|
15649 |
+
type: Boolean,
|
15650 |
+
default: false
|
15651 |
+
},
|
15652 |
+
name: {
|
15653 |
+
type: String
|
15654 |
+
},
|
15655 |
+
sync: {
|
15656 |
+
type: Boolean,
|
15657 |
+
default: false
|
15658 |
+
},
|
15659 |
+
speed: {
|
15660 |
+
type: Number,
|
15661 |
+
default: 300
|
15662 |
+
},
|
15663 |
+
color: {
|
15664 |
+
type: [String, Object],
|
15665 |
+
validator: function validator(value) {
|
15666 |
+
return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' ? value.checked || value.unchecked : typeof value === 'string';
|
15667 |
+
}
|
15668 |
+
},
|
15669 |
+
switchColor: {
|
15670 |
+
type: [String, Object],
|
15671 |
+
validator: function validator(value) {
|
15672 |
+
return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' ? value.checked || value.unchecked : typeof value === 'string';
|
15673 |
+
}
|
15674 |
+
},
|
15675 |
+
cssColors: {
|
15676 |
+
type: Boolean,
|
15677 |
+
default: false
|
15678 |
+
},
|
15679 |
+
labels: {
|
15680 |
+
type: [Boolean, Object],
|
15681 |
+
default: false,
|
15682 |
+
validator: function validator(value) {
|
15683 |
+
return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' ? value.checked || value.unchecked : typeof value === 'boolean';
|
15684 |
+
}
|
15685 |
+
},
|
15686 |
+
height: {
|
15687 |
+
type: Number,
|
15688 |
+
default: constants.height
|
15689 |
+
},
|
15690 |
+
width: {
|
15691 |
+
type: Number,
|
15692 |
+
default: constants.width
|
15693 |
+
}
|
15694 |
+
},
|
15695 |
+
computed: {
|
15696 |
+
className: function className() {
|
15697 |
+
var toggled = this.toggled,
|
15698 |
+
disabled = this.disabled;
|
15699 |
+
|
15700 |
+
|
15701 |
+
return ['vue-js-switch', { toggled: toggled, disabled: disabled }];
|
15702 |
+
},
|
15703 |
+
ariaChecked: function ariaChecked() {
|
15704 |
+
return this.toggled.toString();
|
15705 |
+
},
|
15706 |
+
coreStyle: function coreStyle() {
|
15707 |
+
return {
|
15708 |
+
width: px(this.width),
|
15709 |
+
height: px(this.height),
|
15710 |
+
backgroundColor: this.cssColors ? null : this.disabled ? this.colorDisabled : this.colorCurrent,
|
15711 |
+
borderRadius: px(Math.round(this.height / 2))
|
15712 |
+
};
|
15713 |
+
},
|
15714 |
+
buttonRadius: function buttonRadius() {
|
15715 |
+
return this.height - constants.margin * 2;
|
15716 |
+
},
|
15717 |
+
distance: function distance() {
|
15718 |
+
return px(this.width - this.height + constants.margin);
|
15719 |
+
},
|
15720 |
+
buttonStyle: function buttonStyle() {
|
15721 |
+
return {
|
15722 |
+
width: px(this.buttonRadius),
|
15723 |
+
height: px(this.buttonRadius),
|
15724 |
+
transition: 'transform ' + this.speed + 'ms',
|
15725 |
+
transform: this.toggled ? 'translate3d(' + this.distance + ', 3px, 0px)' : null,
|
15726 |
+
background: this.switchColor ? this.switchColorCurrent : undefined
|
15727 |
+
};
|
15728 |
+
},
|
15729 |
+
labelStyle: function labelStyle() {
|
15730 |
+
return {
|
15731 |
+
lineHeight: px(this.height)
|
15732 |
+
};
|
15733 |
+
},
|
15734 |
+
colorChecked: function colorChecked() {
|
15735 |
+
var color = this.color;
|
15736 |
+
|
15737 |
+
|
15738 |
+
if ((typeof color === 'undefined' ? 'undefined' : _typeof(color)) !== 'object') {
|
15739 |
+
return color || constants.colorChecked;
|
15740 |
+
}
|
15741 |
+
|
15742 |
+
return contains(color, 'checked') ? color.checked : constants.colorChecked;
|
15743 |
+
},
|
15744 |
+
colorUnchecked: function colorUnchecked() {
|
15745 |
+
var color = this.color;
|
15746 |
+
|
15747 |
+
|
15748 |
+
return contains(color, 'unchecked') ? color.unchecked : constants.colorUnchecked;
|
15749 |
+
},
|
15750 |
+
colorDisabled: function colorDisabled() {
|
15751 |
+
var color = this.color;
|
15752 |
+
|
15753 |
+
|
15754 |
+
return contains(color, 'disabled') ? color.disabled : this.colorCurrent;
|
15755 |
+
},
|
15756 |
+
colorCurrent: function colorCurrent() {
|
15757 |
+
return this.toggled ? this.colorChecked : this.colorUnchecked;
|
15758 |
+
},
|
15759 |
+
labelChecked: function labelChecked() {
|
15760 |
+
return contains(this.labels, 'checked') ? this.labels.checked : constants.labelChecked;
|
15761 |
+
},
|
15762 |
+
labelUnchecked: function labelUnchecked() {
|
15763 |
+
return contains(this.labels, 'unchecked') ? this.labels.unchecked : constants.labelUnchecked;
|
15764 |
+
},
|
15765 |
+
switchColorChecked: function switchColorChecked() {
|
15766 |
+
var switchColor = this.switchColor;
|
15767 |
+
|
15768 |
+
|
15769 |
+
return contains(switchColor, 'checked') ? switchColor.checked : constants.switchColor;
|
15770 |
+
},
|
15771 |
+
switchColorUnchecked: function switchColorUnchecked() {
|
15772 |
+
var switchColor = this.switchColor;
|
15773 |
+
|
15774 |
+
|
15775 |
+
return contains(switchColor, 'unchecked') ? switchColor.unchecked : constants.switchColor;
|
15776 |
+
},
|
15777 |
+
switchColorCurrent: function switchColorCurrent() {
|
15778 |
+
var switchColor = this.switchColor;
|
15779 |
+
|
15780 |
+
|
15781 |
+
if ((typeof switchColor === 'undefined' ? 'undefined' : _typeof(switchColor)) !== 'object') {
|
15782 |
+
return switchColor || constants.switchColor;
|
15783 |
+
}
|
15784 |
+
|
15785 |
+
return this.toggled ? this.switchColorChecked : this.switchColorUnchecked;
|
15786 |
+
}
|
15787 |
+
},
|
15788 |
+
watch: {
|
15789 |
+
value: function value(_value) {
|
15790 |
+
if (this.sync) {
|
15791 |
+
this.toggled = !!_value;
|
15792 |
+
}
|
15793 |
+
}
|
15794 |
+
},
|
15795 |
+
data: function data() {
|
15796 |
+
return {
|
15797 |
+
toggled: !!this.value
|
15798 |
+
};
|
15799 |
+
},
|
15800 |
+
|
15801 |
+
methods: {
|
15802 |
+
toggle: function toggle(event) {
|
15803 |
+
this.toggled = !this.toggled;
|
15804 |
+
this.$emit('input', this.toggled);
|
15805 |
+
this.$emit('change', {
|
15806 |
+
value: this.toggled,
|
15807 |
+
srcEvent: event
|
15808 |
+
});
|
15809 |
+
}
|
15810 |
+
}
|
15811 |
+
});
|
15812 |
+
|
15813 |
+
/***/ }),
|
15814 |
+
/* 3 */
|
15815 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
15816 |
+
|
15817 |
+
"use strict";
|
15818 |
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
15819 |
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(1);
|
15820 |
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
|
15821 |
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Button_vue__ = __webpack_require__(0);
|
15822 |
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Button_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__Button_vue__);
|
15823 |
+
|
15824 |
+
|
15825 |
+
|
15826 |
+
var plugin = {
|
15827 |
+
install: function install(Vue, options) {
|
15828 |
+
Vue.component('ToggleButton', __WEBPACK_IMPORTED_MODULE_1__Button_vue___default.a);
|
15829 |
+
}
|
15830 |
+
};
|
15831 |
+
|
15832 |
+
/* harmony default export */ __webpack_exports__["default"] = (plugin);
|
15833 |
+
|
15834 |
+
/***/ }),
|
15835 |
+
/* 4 */
|
15836 |
+
/***/ (function(module, exports, __webpack_require__) {
|
15837 |
+
|
15838 |
+
exports = module.exports = __webpack_require__(5)();
|
15839 |
+
// imports
|
15840 |
+
|
15841 |
+
|
15842 |
+
// module
|
15843 |
+
exports.push([module.i, ".vue-js-switch[data-v-25adc6c0]{display:inline-block;position:relative;overflow:hidden;vertical-align:middle;user-select:none;font-size:10px;cursor:pointer}.vue-js-switch .v-switch-input[data-v-25adc6c0]{display:none}.vue-js-switch .v-switch-label[data-v-25adc6c0]{position:absolute;top:0;font-weight:600;color:#fff}.vue-js-switch .v-switch-label.v-left[data-v-25adc6c0]{left:10px}.vue-js-switch .v-switch-label.v-right[data-v-25adc6c0]{right:10px}.vue-js-switch .v-switch-core[data-v-25adc6c0]{display:block;position:relative;box-sizing:border-box;outline:0;margin:0;transition:border-color .3s,background-color .3s;user-select:none}.vue-js-switch .v-switch-core .v-switch-button[data-v-25adc6c0]{display:block;position:absolute;overflow:hidden;top:0;left:0;transform:translate3d(3px,3px,0);border-radius:100%;background-color:#fff}.vue-js-switch.disabled[data-v-25adc6c0]{pointer-events:none;opacity:.6}", ""]);
|
15844 |
+
|
15845 |
+
// exports
|
15846 |
+
|
15847 |
+
|
15848 |
+
/***/ }),
|
15849 |
+
/* 5 */
|
15850 |
+
/***/ (function(module, exports) {
|
15851 |
+
|
15852 |
+
/*
|
15853 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
15854 |
+
Author Tobias Koppers @sokra
|
15855 |
+
*/
|
15856 |
+
// css base code, injected by the css-loader
|
15857 |
+
module.exports = function() {
|
15858 |
+
var list = [];
|
15859 |
+
|
15860 |
+
// return the list of modules as css string
|
15861 |
+
list.toString = function toString() {
|
15862 |
+
var result = [];
|
15863 |
+
for(var i = 0; i < this.length; i++) {
|
15864 |
+
var item = this[i];
|
15865 |
+
if(item[2]) {
|
15866 |
+
result.push("@media " + item[2] + "{" + item[1] + "}");
|
15867 |
+
} else {
|
15868 |
+
result.push(item[1]);
|
15869 |
+
}
|
15870 |
+
}
|
15871 |
+
return result.join("");
|
15872 |
+
};
|
15873 |
+
|
15874 |
+
// import a list of modules into the list
|
15875 |
+
list.i = function(modules, mediaQuery) {
|
15876 |
+
if(typeof modules === "string")
|
15877 |
+
modules = [[null, modules, ""]];
|
15878 |
+
var alreadyImportedModules = {};
|
15879 |
+
for(var i = 0; i < this.length; i++) {
|
15880 |
+
var id = this[i][0];
|
15881 |
+
if(typeof id === "number")
|
15882 |
+
alreadyImportedModules[id] = true;
|
15883 |
+
}
|
15884 |
+
for(i = 0; i < modules.length; i++) {
|
15885 |
+
var item = modules[i];
|
15886 |
+
// skip already imported module
|
15887 |
+
// this implementation is not 100% perfect for weird media query combinations
|
15888 |
+
// when a module is imported multiple times with different media queries.
|
15889 |
+
// I hope this will never occur (Hey this way we have smaller bundles)
|
15890 |
+
if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
|
15891 |
+
if(mediaQuery && !item[2]) {
|
15892 |
+
item[2] = mediaQuery;
|
15893 |
+
} else if(mediaQuery) {
|
15894 |
+
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
|
15895 |
+
}
|
15896 |
+
list.push(item);
|
15897 |
+
}
|
15898 |
+
}
|
15899 |
+
};
|
15900 |
+
return list;
|
15901 |
+
};
|
15902 |
+
|
15903 |
+
|
15904 |
+
/***/ }),
|
15905 |
+
/* 6 */
|
15906 |
+
/***/ (function(module, exports) {
|
15907 |
+
|
15908 |
+
// this module is a runtime utility for cleaner component module output and will
|
15909 |
+
// be included in the final webpack user bundle
|
15910 |
+
|
15911 |
+
module.exports = function normalizeComponent (
|
15912 |
+
rawScriptExports,
|
15913 |
+
compiledTemplate,
|
15914 |
+
scopeId,
|
15915 |
+
cssModules
|
15916 |
+
) {
|
15917 |
+
var esModule
|
15918 |
+
var scriptExports = rawScriptExports = rawScriptExports || {}
|
15919 |
+
|
15920 |
+
// ES6 modules interop
|
15921 |
+
var type = typeof rawScriptExports.default
|
15922 |
+
if (type === 'object' || type === 'function') {
|
15923 |
+
esModule = rawScriptExports
|
15924 |
+
scriptExports = rawScriptExports.default
|
15925 |
+
}
|
15926 |
+
|
15927 |
+
// Vue.extend constructor export interop
|
15928 |
+
var options = typeof scriptExports === 'function'
|
15929 |
+
? scriptExports.options
|
15930 |
+
: scriptExports
|
15931 |
+
|
15932 |
+
// render functions
|
15933 |
+
if (compiledTemplate) {
|
15934 |
+
options.render = compiledTemplate.render
|
15935 |
+
options.staticRenderFns = compiledTemplate.staticRenderFns
|
15936 |
+
}
|
15937 |
+
|
15938 |
+
// scopedId
|
15939 |
+
if (scopeId) {
|
15940 |
+
options._scopeId = scopeId
|
15941 |
+
}
|
15942 |
+
|
15943 |
+
// inject cssModules
|
15944 |
+
if (cssModules) {
|
15945 |
+
var computed = Object.create(options.computed || null)
|
15946 |
+
Object.keys(cssModules).forEach(function (key) {
|
15947 |
+
var module = cssModules[key]
|
15948 |
+
computed[key] = function () { return module }
|
15949 |
+
})
|
15950 |
+
options.computed = computed
|
15951 |
+
}
|
15952 |
+
|
15953 |
+
return {
|
15954 |
+
esModule: esModule,
|
15955 |
+
exports: scriptExports,
|
15956 |
+
options: options
|
15957 |
+
}
|
15958 |
+
}
|
15959 |
+
|
15960 |
+
|
15961 |
+
/***/ }),
|
15962 |
+
/* 7 */
|
15963 |
+
/***/ (function(module, exports) {
|
15964 |
+
|
15965 |
+
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
|
15966 |
+
return _c('label', {
|
15967 |
+
class: _vm.className,
|
15968 |
+
attrs: {
|
15969 |
+
"role": "checkbox",
|
15970 |
+
"aria-checked": _vm.ariaChecked
|
15971 |
+
}
|
15972 |
+
}, [_c('input', {
|
15973 |
+
staticClass: "v-switch-input",
|
15974 |
+
attrs: {
|
15975 |
+
"type": "checkbox",
|
15976 |
+
"name": _vm.name
|
15977 |
+
},
|
15978 |
+
on: {
|
15979 |
+
"change": function($event) {
|
15980 |
+
$event.stopPropagation();
|
15981 |
+
return _vm.toggle($event)
|
15982 |
+
}
|
15983 |
+
}
|
15984 |
+
}), _vm._v(" "), _c('div', {
|
15985 |
+
staticClass: "v-switch-core",
|
15986 |
+
style: (_vm.coreStyle)
|
15987 |
+
}, [_c('div', {
|
15988 |
+
staticClass: "v-switch-button",
|
15989 |
+
style: (_vm.buttonStyle)
|
15990 |
+
})]), _vm._v(" "), (_vm.labels) ? [(_vm.toggled) ? _c('span', {
|
15991 |
+
staticClass: "v-switch-label v-left",
|
15992 |
+
style: (_vm.labelStyle),
|
15993 |
+
domProps: {
|
15994 |
+
"innerHTML": _vm._s(_vm.labelChecked)
|
15995 |
+
}
|
15996 |
+
}) : _c('span', {
|
15997 |
+
staticClass: "v-switch-label v-right",
|
15998 |
+
style: (_vm.labelStyle),
|
15999 |
+
domProps: {
|
16000 |
+
"innerHTML": _vm._s(_vm.labelUnchecked)
|
16001 |
+
}
|
16002 |
+
})] : _vm._e()], 2)
|
16003 |
+
},staticRenderFns: []}
|
16004 |
+
|
16005 |
+
/***/ }),
|
16006 |
+
/* 8 */
|
16007 |
+
/***/ (function(module, exports, __webpack_require__) {
|
16008 |
+
|
16009 |
+
// style-loader: Adds some css to the DOM by adding a <style> tag
|
16010 |
+
|
16011 |
+
// load the styles
|
16012 |
+
var content = __webpack_require__(4);
|
16013 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
16014 |
+
if(content.locals) module.exports = content.locals;
|
16015 |
+
// add the styles to the DOM
|
16016 |
+
var update = __webpack_require__(9)("2283861f", content, true);
|
16017 |
+
|
16018 |
+
/***/ }),
|
16019 |
+
/* 9 */
|
16020 |
+
/***/ (function(module, exports, __webpack_require__) {
|
16021 |
+
|
16022 |
+
/*
|
16023 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
16024 |
+
Author Tobias Koppers @sokra
|
16025 |
+
Modified by Evan You @yyx990803
|
16026 |
+
*/
|
16027 |
+
|
16028 |
+
var hasDocument = typeof document !== 'undefined'
|
16029 |
+
|
16030 |
+
if (typeof DEBUG !== 'undefined' && DEBUG) {
|
16031 |
+
if (!hasDocument) {
|
16032 |
+
throw new Error(
|
16033 |
+
'vue-style-loader cannot be used in a non-browser environment. ' +
|
16034 |
+
"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
|
16035 |
+
) }
|
16036 |
+
}
|
16037 |
+
|
16038 |
+
var listToStyles = __webpack_require__(10)
|
16039 |
+
|
16040 |
+
/*
|
16041 |
+
type StyleObject = {
|
16042 |
+
id: number;
|
16043 |
+
parts: Array<StyleObjectPart>
|
16044 |
+
}
|
16045 |
+
|
16046 |
+
type StyleObjectPart = {
|
16047 |
+
css: string;
|
16048 |
+
media: string;
|
16049 |
+
sourceMap: ?string
|
16050 |
+
}
|
16051 |
+
*/
|
16052 |
+
|
16053 |
+
var stylesInDom = {/*
|
16054 |
+
[id: number]: {
|
16055 |
+
id: number,
|
16056 |
+
refs: number,
|
16057 |
+
parts: Array<(obj?: StyleObjectPart) => void>
|
16058 |
+
}
|
16059 |
+
*/}
|
16060 |
+
|
16061 |
+
var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
|
16062 |
+
var singletonElement = null
|
16063 |
+
var singletonCounter = 0
|
16064 |
+
var isProduction = false
|
16065 |
+
var noop = function () {}
|
16066 |
+
|
16067 |
+
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
16068 |
+
// tags it will allow on a page
|
16069 |
+
var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
|
16070 |
+
|
16071 |
+
module.exports = function (parentId, list, _isProduction) {
|
16072 |
+
isProduction = _isProduction
|
16073 |
+
|
16074 |
+
var styles = listToStyles(parentId, list)
|
16075 |
+
addStylesToDom(styles)
|
16076 |
+
|
16077 |
+
return function update (newList) {
|
16078 |
+
var mayRemove = []
|
16079 |
+
for (var i = 0; i < styles.length; i++) {
|
16080 |
+
var item = styles[i]
|
16081 |
+
var domStyle = stylesInDom[item.id]
|
16082 |
+
domStyle.refs--
|
16083 |
+
mayRemove.push(domStyle)
|
16084 |
+
}
|
16085 |
+
if (newList) {
|
16086 |
+
styles = listToStyles(parentId, newList)
|
16087 |
+
addStylesToDom(styles)
|
16088 |
+
} else {
|
16089 |
+
styles = []
|
16090 |
+
}
|
16091 |
+
for (var i = 0; i < mayRemove.length; i++) {
|
16092 |
+
var domStyle = mayRemove[i]
|
16093 |
+
if (domStyle.refs === 0) {
|
16094 |
+
for (var j = 0; j < domStyle.parts.length; j++) {
|
16095 |
+
domStyle.parts[j]()
|
16096 |
+
}
|
16097 |
+
delete stylesInDom[domStyle.id]
|
16098 |
+
}
|
16099 |
+
}
|
16100 |
+
}
|
16101 |
+
}
|
16102 |
+
|
16103 |
+
function addStylesToDom (styles /* Array<StyleObject> */) {
|
16104 |
+
for (var i = 0; i < styles.length; i++) {
|
16105 |
+
var item = styles[i]
|
16106 |
+
var domStyle = stylesInDom[item.id]
|
16107 |
+
if (domStyle) {
|
16108 |
+
domStyle.refs++
|
16109 |
+
for (var j = 0; j < domStyle.parts.length; j++) {
|
16110 |
+
domStyle.parts[j](item.parts[j])
|
16111 |
+
}
|
16112 |
+
for (; j < item.parts.length; j++) {
|
16113 |
+
domStyle.parts.push(addStyle(item.parts[j]))
|
16114 |
+
}
|
16115 |
+
if (domStyle.parts.length > item.parts.length) {
|
16116 |
+
domStyle.parts.length = item.parts.length
|
16117 |
+
}
|
16118 |
+
} else {
|
16119 |
+
var parts = []
|
16120 |
+
for (var j = 0; j < item.parts.length; j++) {
|
16121 |
+
parts.push(addStyle(item.parts[j]))
|
16122 |
+
}
|
16123 |
+
stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
|
16124 |
+
}
|
16125 |
+
}
|
16126 |
+
}
|
16127 |
+
|
16128 |
+
function createStyleElement () {
|
16129 |
+
var styleElement = document.createElement('style')
|
16130 |
+
styleElement.type = 'text/css'
|
16131 |
+
head.appendChild(styleElement)
|
16132 |
+
return styleElement
|
16133 |
+
}
|
16134 |
+
|
16135 |
+
function addStyle (obj /* StyleObjectPart */) {
|
16136 |
+
var update, remove
|
16137 |
+
var styleElement = document.querySelector('style[data-vue-ssr-id~="' + obj.id + '"]')
|
16138 |
+
|
16139 |
+
if (styleElement) {
|
16140 |
+
if (isProduction) {
|
16141 |
+
// has SSR styles and in production mode.
|
16142 |
+
// simply do nothing.
|
16143 |
+
return noop
|
16144 |
+
} else {
|
16145 |
+
// has SSR styles but in dev mode.
|
16146 |
+
// for some reason Chrome can't handle source map in server-rendered
|
16147 |
+
// style tags - source maps in <style> only works if the style tag is
|
16148 |
+
// created and inserted dynamically. So we remove the server rendered
|
16149 |
+
// styles and inject new ones.
|
16150 |
+
styleElement.parentNode.removeChild(styleElement)
|
16151 |
+
}
|
16152 |
+
}
|
16153 |
+
|
16154 |
+
if (isOldIE) {
|
16155 |
+
// use singleton mode for IE9.
|
16156 |
+
var styleIndex = singletonCounter++
|
16157 |
+
styleElement = singletonElement || (singletonElement = createStyleElement())
|
16158 |
+
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
|
16159 |
+
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
|
16160 |
+
} else {
|
16161 |
+
// use multi-style-tag mode in all other cases
|
16162 |
+
styleElement = createStyleElement()
|
16163 |
+
update = applyToTag.bind(null, styleElement)
|
16164 |
+
remove = function () {
|
16165 |
+
styleElement.parentNode.removeChild(styleElement)
|
16166 |
+
}
|
16167 |
+
}
|
16168 |
+
|
16169 |
+
update(obj)
|
16170 |
+
|
16171 |
+
return function updateStyle (newObj /* StyleObjectPart */) {
|
16172 |
+
if (newObj) {
|
16173 |
+
if (newObj.css === obj.css &&
|
16174 |
+
newObj.media === obj.media &&
|
16175 |
+
newObj.sourceMap === obj.sourceMap) {
|
16176 |
+
return
|
16177 |
+
}
|
16178 |
+
update(obj = newObj)
|
16179 |
+
} else {
|
16180 |
+
remove()
|
16181 |
+
}
|
16182 |
+
}
|
16183 |
+
}
|
16184 |
+
|
16185 |
+
var replaceText = (function () {
|
16186 |
+
var textStore = []
|
16187 |
+
|
16188 |
+
return function (index, replacement) {
|
16189 |
+
textStore[index] = replacement
|
16190 |
+
return textStore.filter(Boolean).join('\n')
|
16191 |
+
}
|
16192 |
+
})()
|
16193 |
+
|
16194 |
+
function applyToSingletonTag (styleElement, index, remove, obj) {
|
16195 |
+
var css = remove ? '' : obj.css
|
16196 |
+
|
16197 |
+
if (styleElement.styleSheet) {
|
16198 |
+
styleElement.styleSheet.cssText = replaceText(index, css)
|
16199 |
+
} else {
|
16200 |
+
var cssNode = document.createTextNode(css)
|
16201 |
+
var childNodes = styleElement.childNodes
|
16202 |
+
if (childNodes[index]) styleElement.removeChild(childNodes[index])
|
16203 |
+
if (childNodes.length) {
|
16204 |
+
styleElement.insertBefore(cssNode, childNodes[index])
|
16205 |
+
} else {
|
16206 |
+
styleElement.appendChild(cssNode)
|
16207 |
+
}
|
16208 |
+
}
|
16209 |
+
}
|
16210 |
+
|
16211 |
+
function applyToTag (styleElement, obj) {
|
16212 |
+
var css = obj.css
|
16213 |
+
var media = obj.media
|
16214 |
+
var sourceMap = obj.sourceMap
|
16215 |
+
|
16216 |
+
if (media) {
|
16217 |
+
styleElement.setAttribute('media', media)
|
16218 |
+
}
|
16219 |
+
|
16220 |
+
if (sourceMap) {
|
16221 |
+
// https://developer.chrome.com/devtools/docs/javascript-debugging
|
16222 |
+
// this makes source maps inside style tags work properly in Chrome
|
16223 |
+
css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
|
16224 |
+
// http://stackoverflow.com/a/26603875
|
16225 |
+
css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
|
16226 |
+
}
|
16227 |
+
|
16228 |
+
if (styleElement.styleSheet) {
|
16229 |
+
styleElement.styleSheet.cssText = css
|
16230 |
+
} else {
|
16231 |
+
while (styleElement.firstChild) {
|
16232 |
+
styleElement.removeChild(styleElement.firstChild)
|
16233 |
+
}
|
16234 |
+
styleElement.appendChild(document.createTextNode(css))
|
16235 |
+
}
|
16236 |
+
}
|
16237 |
+
|
16238 |
+
|
16239 |
+
/***/ }),
|
16240 |
+
/* 10 */
|
16241 |
+
/***/ (function(module, exports) {
|
16242 |
+
|
16243 |
+
/**
|
16244 |
+
* Translates the list format produced by css-loader into something
|
16245 |
+
* easier to manipulate.
|
16246 |
+
*/
|
16247 |
+
module.exports = function listToStyles (parentId, list) {
|
16248 |
+
var styles = []
|
16249 |
+
var newStyles = {}
|
16250 |
+
for (var i = 0; i < list.length; i++) {
|
16251 |
+
var item = list[i]
|
16252 |
+
var id = item[0]
|
16253 |
+
var css = item[1]
|
16254 |
+
var media = item[2]
|
16255 |
+
var sourceMap = item[3]
|
16256 |
+
var part = {
|
16257 |
+
id: parentId + ':' + i,
|
16258 |
+
css: css,
|
16259 |
+
media: media,
|
16260 |
+
sourceMap: sourceMap
|
16261 |
+
}
|
16262 |
+
if (!newStyles[id]) {
|
16263 |
+
styles.push(newStyles[id] = { id: id, parts: [part] })
|
16264 |
+
} else {
|
16265 |
+
newStyles[id].parts.push(part)
|
16266 |
+
}
|
16267 |
+
}
|
16268 |
+
return styles
|
16269 |
+
}
|
16270 |
+
|
16271 |
+
|
16272 |
+
/***/ })
|
16273 |
+
/******/ ]);
|
16274 |
+
});
|
16275 |
+
//# sourceMappingURL=index.js.map
|
16276 |
+
|
16277 |
+
/***/ })
|
16278 |
+
/******/ ]);
|
assets/js/bundle.min.js
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
!function(e){function n(t){if(o[t])return o[t].exports;var i=o[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var o={};n.m=e,n.c=o,n.d=function(e,o,t){n.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(o,"a",o),o},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="/",n(n.s=5)}([function(e,n){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],n=0;n<this.length;n++){var o=this[n];o[2]?e.push("@media "+o[2]+"{"+o[1]+"}"):e.push(o[1])}return e.join("")},e.i=function(n,o){"string"==typeof n&&(n=[[null,n,""]]);for(var t={},i=0;i<this.length;i++){var a=this[i][0];"number"==typeof a&&(t[a]=!0)}for(i=0;i<n.length;i++){var r=n[i];"number"==typeof r[0]&&t[r[0]]||(o&&!r[2]?r[2]=o:o&&(r[2]="("+r[2]+") and ("+o+")"),e.push(r))}},e}},function(e,n){function o(e,n){for(var o=0;o<e.length;o++){var t=e[o],i=d[t.id];if(i){i.refs++;for(var a=0;a<i.parts.length;a++)i.parts[a](t.parts[a]);for(;a<t.parts.length;a++)i.parts.push(l(t.parts[a],n))}else{for(var r=[],a=0;a<t.parts.length;a++)r.push(l(t.parts[a],n));d[t.id]={id:t.id,refs:1,parts:r}}}}function t(e){for(var n=[],o={},t=0;t<e.length;t++){var i=e[t],a=i[0],r=i[1],p=i[2],l=i[3],s={css:r,media:p,sourceMap:l};o[a]?o[a].parts.push(s):n.push(o[a]={id:a,parts:[s]})}return n}function i(e,n){var o=b(),t=v[v.length-1];if("top"===e.insertAt)t?t.nextSibling?o.insertBefore(n,t.nextSibling):o.appendChild(n):o.insertBefore(n,o.firstChild),v.push(n);else{if("bottom"!==e.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");o.appendChild(n)}}function a(e){e.parentNode.removeChild(e);var n=v.indexOf(e);n>=0&&v.splice(n,1)}function r(e){var n=document.createElement("style");return n.type="text/css",i(e,n),n}function p(e){var n=document.createElement("link");return n.rel="stylesheet",i(e,n),n}function l(e,n){var o,t,i;if(n.singleton){var l=g++;o=h||(h=r(n)),t=s.bind(null,o,l,!1),i=s.bind(null,o,l,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=p(n),t=m.bind(null,o),i=function(){a(o),o.href&&URL.revokeObjectURL(o.href)}):(o=r(n),t=c.bind(null,o),i=function(){a(o)});return t(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;t(e=n)}else i()}}function s(e,n,o,t){var i=o?"":t.css;if(e.styleSheet)e.styleSheet.cssText=x(n,i);else{var a=document.createTextNode(i),r=e.childNodes;r[n]&&e.removeChild(r[n]),r.length?e.insertBefore(a,r[n]):e.appendChild(a)}}function c(e,n){var o=n.css,t=n.media;if(t&&e.setAttribute("media",t),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function m(e,n){var o=n.css,t=n.sourceMap;t&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */");var i=new Blob([o],{type:"text/css"}),a=e.href;e.href=URL.createObjectURL(i),a&&URL.revokeObjectURL(a)}var d={},f=function(e){var n;return function(){return void 0===n&&(n=e.apply(this,arguments)),n}},u=f(function(){return/msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())}),b=f(function(){return document.head||document.getElementsByTagName("head")[0]}),h=null,g=0,v=[];e.exports=function(e,n){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");n=n||{},void 0===n.singleton&&(n.singleton=u()),void 0===n.insertAt&&(n.insertAt="bottom");var i=t(e);return o(i,n),function(e){for(var a=[],r=0;r<i.length;r++){var p=i[r],l=d[p.id];l.refs--,a.push(l)}if(e){o(t(e),n)}for(var r=0;r<a.length;r++){var l=a[r];if(0===l.refs){for(var s=0;s<l.parts.length;s++)l.parts[s]();delete d[l.id]}}}};var x=function(){var e=[];return function(n,o){return e[n]=o,e.filter(Boolean).join("\n")}}()},function(e,n,o){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e,o){function t(e){return void 0===e||null===e}function i(e){return void 0!==e&&null!==e}function a(e){return!0===e}function r(e){return!1===e}function p(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return null!==e&&"object"==typeof e}function s(e){return"[object Object]"===la.call(e)}function c(e){return"[object RegExp]"===la.call(e)}function m(e){var n=parseFloat(String(e));return n>=0&&Math.floor(n)===n&&isFinite(e)}function d(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function f(e){var n=parseFloat(e);return isNaN(n)?e:n}function u(e,n){for(var o=Object.create(null),t=e.split(","),i=0;i<t.length;i++)o[t[i]]=!0;return n?function(e){return o[e.toLowerCase()]}:function(e){return o[e]}}function b(e,n){if(e.length){var o=e.indexOf(n);if(o>-1)return e.splice(o,1)}}function h(e,n){return ma.call(e,n)}function g(e){var n=Object.create(null);return function(o){return n[o]||(n[o]=e(o))}}function v(e,n){function o(o){var t=arguments.length;return t?t>1?e.apply(n,arguments):e.call(n,o):e.call(n)}return o._length=e.length,o}function x(e,n){return e.bind(n)}function w(e,n){n=n||0;for(var o=e.length-n,t=new Array(o);o--;)t[o]=e[o+n];return t}function k(e,n){for(var o in n)e[o]=n[o];return e}function y(e){for(var n={},o=0;o<e.length;o++)e[o]&&k(n,e[o]);return n}function _(e,n,o){}function C(e,n){if(e===n)return!0;var o=l(e),t=l(n);if(!o||!t)return!o&&!t&&String(e)===String(n);try{var i=Array.isArray(e),a=Array.isArray(n);if(i&&a)return e.length===n.length&&e.every(function(e,o){return C(e,n[o])});if(i||a)return!1;var r=Object.keys(e),p=Object.keys(n);return r.length===p.length&&r.every(function(o){return C(e[o],n[o])})}catch(e){return!1}}function $(e,n){for(var o=0;o<e.length;o++)if(C(e[o],n))return o;return-1}function z(e){var n=!1;return function(){n||(n=!0,e.apply(this,arguments))}}function j(e){var n=(e+"").charCodeAt(0);return 36===n||95===n}function O(e,n,o,t){Object.defineProperty(e,n,{value:o,enumerable:!!t,writable:!0,configurable:!0})}function A(e){if(!Ca.test(e)){var n=e.split(".");return function(e){for(var o=0;o<n.length;o++){if(!e)return;e=e[n[o]]}return e}}}function T(e){return"function"==typeof e&&/native code/.test(e.toString())}function S(e){Ha.target&&Ga.push(Ha.target),Ha.target=e}function E(){Ha.target=Ga.pop()}function M(e){return new Ka(void 0,void 0,void 0,String(e))}function P(e){var n=new Ka(e.tag,e.data,e.children,e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return n.ns=e.ns,n.isStatic=e.isStatic,n.key=e.key,n.isComment=e.isComment,n.fnContext=e.fnContext,n.fnOptions=e.fnOptions,n.fnScopeId=e.fnScopeId,n.isCloned=!0,n}function I(e){Za=e}function L(e,n,o){e.__proto__=n}function D(e,n,o){for(var t=0,i=o.length;t<i;t++){var a=o[t];O(e,a,n[a])}}function N(e,n){if(l(e)&&!(e instanceof Ka)){var o;return h(e,"__ob__")&&e.__ob__ instanceof Qa?o=e.__ob__:Za&&!Ra()&&(Array.isArray(e)||s(e))&&Object.isExtensible(e)&&!e._isVue&&(o=new Qa(e)),n&&o&&o.vmCount++,o}}function R(e,n,o,t,i){var a=new Ha,r=Object.getOwnPropertyDescriptor(e,n);if(!r||!1!==r.configurable){var p=r&&r.get;p||2!==arguments.length||(o=e[n]);var l=r&&r.set,s=!i&&N(o);Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:function(){var n=p?p.call(e):o;return Ha.target&&(a.depend(),s&&(s.dep.depend(),Array.isArray(n)&&B(n))),n},set:function(n){var t=p?p.call(e):o;n===t||n!==n&&t!==t||(l?l.call(e,n):o=n,s=!i&&N(n),a.notify())}})}}function U(e,n,o){if(Array.isArray(e)&&m(n))return e.length=Math.max(e.length,n),e.splice(n,1,o),o;if(n in e&&!(n in Object.prototype))return e[n]=o,o;var t=e.__ob__;return e._isVue||t&&t.vmCount?o:t?(R(t.value,n,o),t.dep.notify(),o):(e[n]=o,o)}function q(e,n){if(Array.isArray(e)&&m(n))return void e.splice(n,1);var o=e.__ob__;e._isVue||o&&o.vmCount||h(e,n)&&(delete e[n],o&&o.dep.notify())}function B(e){for(var n=void 0,o=0,t=e.length;o<t;o++)n=e[o],n&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&B(n)}function F(e,n){if(!n)return e;for(var o,t,i,a=Object.keys(n),r=0;r<a.length;r++)o=a[r],t=e[o],i=n[o],h(e,o)?s(t)&&s(i)&&F(t,i):U(e,o,i);return e}function H(e,n,o){return o?function(){var t="function"==typeof n?n.call(o,o):n,i="function"==typeof e?e.call(o,o):e;return t?F(t,i):i}:n?e?function(){return F("function"==typeof n?n.call(this,this):n,"function"==typeof e?e.call(this,this):e)}:n:e}function G(e,n){return n?e?e.concat(n):Array.isArray(n)?n:[n]:e}function K(e,n,o,t){var i=Object.create(e||null);return n?k(i,n):i}function V(e,n){var o=e.props;if(o){var t,i,a,r={};if(Array.isArray(o))for(t=o.length;t--;)"string"==typeof(i=o[t])&&(a=fa(i),r[a]={type:null});else if(s(o))for(var p in o)i=o[p],a=fa(p),r[a]=s(i)?i:{type:i};e.props=r}}function W(e,n){var o=e.inject;if(o){var t=e.inject={};if(Array.isArray(o))for(var i=0;i<o.length;i++)t[o[i]]={from:o[i]};else if(s(o))for(var a in o){var r=o[a];t[a]=s(r)?k({from:a},r):{from:r}}}}function J(e){var n=e.directives;if(n)for(var o in n){var t=n[o];"function"==typeof t&&(n[o]={bind:t,update:t})}}function X(e,n,o){function t(t){var i=er[t]||tr;l[t]=i(e[t],n[t],o,t)}"function"==typeof n&&(n=n.options),V(n,o),W(n,o),J(n);var i=n.extends;if(i&&(e=X(e,i,o)),n.mixins)for(var a=0,r=n.mixins.length;a<r;a++)e=X(e,n.mixins[a],o);var p,l={};for(p in e)t(p);for(p in n)h(e,p)||t(p);return l}function Y(e,n,o,t){if("string"==typeof o){var i=e[n];if(h(i,o))return i[o];var a=fa(o);if(h(i,a))return i[a];var r=ua(a);if(h(i,r))return i[r];return i[o]||i[a]||i[r]}}function Z(e,n,o,t){var i=n[e],a=!h(o,e),r=o[e],p=oe(Boolean,i.type);if(p>-1)if(a&&!h(i,"default"))r=!1;else if(""===r||r===ha(e)){var l=oe(String,i.type);(l<0||p<l)&&(r=!0)}if(void 0===r){r=Q(t,i,e);var s=Za;I(!0),N(r),I(s)}return r}function Q(e,n,o){if(h(n,"default")){var t=n.default;return e&&e.$options.propsData&&void 0===e.$options.propsData[o]&&void 0!==e._props[o]?e._props[o]:"function"==typeof t&&"Function"!==ee(n.type)?t.call(e):t}}function ee(e){var n=e&&e.toString().match(/^\s*function (\w+)/);return n?n[1]:""}function ne(e,n){return ee(e)===ee(n)}function oe(e,n){if(!Array.isArray(n))return ne(n,e)?0:-1;for(var o=0,t=n.length;o<t;o++)if(ne(n[o],e))return o;return-1}function te(e,n,o){if(n)for(var t=n;t=t.$parent;){var i=t.$options.errorCaptured;if(i)for(var a=0;a<i.length;a++)try{var r=!1===i[a].call(t,e,n,o);if(r)return}catch(e){ie(e,t,"errorCaptured hook")}}ie(e,n,o)}function ie(e,n,o){if(_a.errorHandler)try{return _a.errorHandler.call(null,e,n,o)}catch(e){ae(e,null,"config.errorHandler")}ae(e,n,o)}function ae(e,n,o){if(!za&&!ja||"undefined"==typeof console)throw e;console.error(e)}function re(){ar=!1;var e=ir.slice(0);ir.length=0;for(var n=0;n<e.length;n++)e[n]()}function pe(e){return e._withTask||(e._withTask=function(){rr=!0;var n=e.apply(null,arguments);return rr=!1,n})}function le(e,n){var o;if(ir.push(function(){if(e)try{e.call(n)}catch(e){te(e,n,"nextTick")}else o&&o(n)}),ar||(ar=!0,rr?or():nr()),!e&&"undefined"!=typeof Promise)return new Promise(function(e){o=e})}function se(e){ce(e,mr),mr.clear()}function ce(e,n){var o,t,i=Array.isArray(e);if(!(!i&&!l(e)||Object.isFrozen(e)||e instanceof Ka)){if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(o=e.length;o--;)ce(e[o],n);else for(t=Object.keys(e),o=t.length;o--;)ce(e[t[o]],n)}}function me(e){function n(){var e=arguments,o=n.fns;if(!Array.isArray(o))return o.apply(null,arguments);for(var t=o.slice(),i=0;i<t.length;i++)t[i].apply(null,e)}return n.fns=e,n}function de(e,n,o,i,a){var r,p,l,s;for(r in e)p=e[r],l=n[r],s=dr(r),t(p)||(t(l)?(t(p.fns)&&(p=e[r]=me(p)),o(s.name,p,s.once,s.capture,s.passive,s.params)):p!==l&&(l.fns=p,e[r]=l));for(r in n)t(e[r])&&(s=dr(r),i(s.name,n[r],s.capture))}function fe(e,n,o){function r(){o.apply(this,arguments),b(p.fns,r)}e instanceof Ka&&(e=e.data.hook||(e.data.hook={}));var p,l=e[n];t(l)?p=me([r]):i(l.fns)&&a(l.merged)?(p=l,p.fns.push(r)):p=me([l,r]),p.merged=!0,e[n]=p}function ue(e,n,o){var a=n.options.props;if(!t(a)){var r={},p=e.attrs,l=e.props;if(i(p)||i(l))for(var s in a){var c=ha(s);be(r,l,s,c,!0)||be(r,p,s,c,!1)}return r}}function be(e,n,o,t,a){if(i(n)){if(h(n,o))return e[o]=n[o],a||delete n[o],!0;if(h(n,t))return e[o]=n[t],a||delete n[t],!0}return!1}function he(e){for(var n=0;n<e.length;n++)if(Array.isArray(e[n]))return Array.prototype.concat.apply([],e);return e}function ge(e){return p(e)?[M(e)]:Array.isArray(e)?xe(e):void 0}function ve(e){return i(e)&&i(e.text)&&r(e.isComment)}function xe(e,n){var o,r,l,s,c=[];for(o=0;o<e.length;o++)r=e[o],t(r)||"boolean"==typeof r||(l=c.length-1,s=c[l],Array.isArray(r)?r.length>0&&(r=xe(r,(n||"")+"_"+o),ve(r[0])&&ve(s)&&(c[l]=M(s.text+r[0].text),r.shift()),c.push.apply(c,r)):p(r)?ve(s)?c[l]=M(s.text+r):""!==r&&c.push(M(r)):ve(r)&&ve(s)?c[l]=M(s.text+r.text):(a(e._isVList)&&i(r.tag)&&t(r.key)&&i(n)&&(r.key="__vlist"+n+"_"+o+"__"),c.push(r)));return c}function we(e,n){return(e.__esModule||qa&&"Module"===e[Symbol.toStringTag])&&(e=e.default),l(e)?n.extend(e):e}function ke(e,n,o,t,i){var a=Wa();return a.asyncFactory=e,a.asyncMeta={data:n,context:o,children:t,tag:i},a}function ye(e,n,o){if(a(e.error)&&i(e.errorComp))return e.errorComp;if(i(e.resolved))return e.resolved;if(a(e.loading)&&i(e.loadingComp))return e.loadingComp;if(!i(e.contexts)){var r=e.contexts=[o],p=!0,s=function(){for(var e=0,n=r.length;e<n;e++)r[e].$forceUpdate()},c=z(function(o){e.resolved=we(o,n),p||s()}),m=z(function(n){i(e.errorComp)&&(e.error=!0,s())}),d=e(c,m);return l(d)&&("function"==typeof d.then?t(e.resolved)&&d.then(c,m):i(d.component)&&"function"==typeof d.component.then&&(d.component.then(c,m),i(d.error)&&(e.errorComp=we(d.error,n)),i(d.loading)&&(e.loadingComp=we(d.loading,n),0===d.delay?e.loading=!0:setTimeout(function(){t(e.resolved)&&t(e.error)&&(e.loading=!0,s())},d.delay||200)),i(d.timeout)&&setTimeout(function(){t(e.resolved)&&m(null)},d.timeout))),p=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(o)}function _e(e){return e.isComment&&e.asyncFactory}function Ce(e){if(Array.isArray(e))for(var n=0;n<e.length;n++){var o=e[n];if(i(o)&&(i(o.componentOptions)||_e(o)))return o}}function $e(e){e._events=Object.create(null),e._hasHookEvent=!1;var n=e.$options._parentListeners;n&&Oe(e,n)}function ze(e,n,o){o?cr.$once(e,n):cr.$on(e,n)}function je(e,n){cr.$off(e,n)}function Oe(e,n,o){cr=e,de(n,o||{},ze,je,e),cr=void 0}function Ae(e,n){var o={};if(!e)return o;for(var t=0,i=e.length;t<i;t++){var a=e[t],r=a.data;if(r&&r.attrs&&r.attrs.slot&&delete r.attrs.slot,a.context!==n&&a.fnContext!==n||!r||null==r.slot)(o.default||(o.default=[])).push(a);else{var p=r.slot,l=o[p]||(o[p]=[]);"template"===a.tag?l.push.apply(l,a.children||[]):l.push(a)}}for(var s in o)o[s].every(Te)&&delete o[s];return o}function Te(e){return e.isComment&&!e.asyncFactory||" "===e.text}function Se(e,n){n=n||{};for(var o=0;o<e.length;o++)Array.isArray(e[o])?Se(e[o],n):n[e[o].key]=e[o].fn;return n}function Ee(e){var n=e.$options,o=n.parent;if(o&&!n.abstract){for(;o.$options.abstract&&o.$parent;)o=o.$parent;o.$children.push(e)}e.$parent=o,e.$root=o?o.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}function Me(e,n,o){e.$el=n,e.$options.render||(e.$options.render=Wa),Ne(e,"beforeMount");var t;return t=function(){e._update(e._render(),o)},new kr(e,t,_,null,!0),o=!1,null==e.$vnode&&(e._isMounted=!0,Ne(e,"mounted")),e}function Pe(e,n,o,t,i){var a=!!(i||e.$options._renderChildren||t.data.scopedSlots||e.$scopedSlots!==pa);if(e.$options._parentVnode=t,e.$vnode=t,e._vnode&&(e._vnode.parent=t),e.$options._renderChildren=i,e.$attrs=t.data.attrs||pa,e.$listeners=o||pa,n&&e.$options.props){I(!1);for(var r=e._props,p=e.$options._propKeys||[],l=0;l<p.length;l++){var s=p[l],c=e.$options.props;r[s]=Z(s,c,n,e)}I(!0),e.$options.propsData=n}o=o||pa;var m=e.$options._parentListeners;e.$options._parentListeners=o,Oe(e,o,m),a&&(e.$slots=Ae(i,t.context),e.$forceUpdate())}function Ie(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function Le(e,n){if(n){if(e._directInactive=!1,Ie(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var o=0;o<e.$children.length;o++)Le(e.$children[o]);Ne(e,"activated")}}function De(e,n){if(!(n&&(e._directInactive=!0,Ie(e))||e._inactive)){e._inactive=!0;for(var o=0;o<e.$children.length;o++)De(e.$children[o]);Ne(e,"deactivated")}}function Ne(e,n){S();var o=e.$options[n];if(o)for(var t=0,i=o.length;t<i;t++)try{o[t].call(e)}catch(o){te(o,e,n+" hook")}e._hasHookEvent&&e.$emit("hook:"+n),E()}function Re(){xr=ur.length=br.length=0,hr={},gr=vr=!1}function Ue(){vr=!0;var e,n;for(ur.sort(function(e,n){return e.id-n.id}),xr=0;xr<ur.length;xr++)e=ur[xr],n=e.id,hr[n]=null,e.run();var o=br.slice(),t=ur.slice();Re(),Fe(o),qe(t),Ua&&_a.devtools&&Ua.emit("flush")}function qe(e){for(var n=e.length;n--;){var o=e[n],t=o.vm;t._watcher===o&&t._isMounted&&Ne(t,"updated")}}function Be(e){e._inactive=!1,br.push(e)}function Fe(e){for(var n=0;n<e.length;n++)e[n]._inactive=!0,Le(e[n],!0)}function He(e){var n=e.id;if(null==hr[n]){if(hr[n]=!0,vr){for(var o=ur.length-1;o>xr&&ur[o].id>e.id;)o--;ur.splice(o+1,0,e)}else ur.push(e);gr||(gr=!0,le(Ue))}}function Ge(e,n,o){yr.get=function(){return this[n][o]},yr.set=function(e){this[n][o]=e},Object.defineProperty(e,o,yr)}function Ke(e){e._watchers=[];var n=e.$options;n.props&&Ve(e,n.props),n.methods&&Qe(e,n.methods),n.data?We(e):N(e._data={},!0),n.computed&&Xe(e,n.computed),n.watch&&n.watch!==Pa&&en(e,n.watch)}function Ve(e,n){var o=e.$options.propsData||{},t=e._props={},i=e.$options._propKeys=[];!e.$parent||I(!1);for(var a in n)!function(a){i.push(a);var r=Z(a,n,o,e);R(t,a,r),a in e||Ge(e,"_props",a)}(a);I(!0)}function We(e){var n=e.$options.data;n=e._data="function"==typeof n?Je(n,e):n||{},s(n)||(n={});for(var o=Object.keys(n),t=e.$options.props,i=(e.$options.methods,o.length);i--;){var a=o[i];t&&h(t,a)||j(a)||Ge(e,"_data",a)}N(n,!0)}function Je(e,n){S();try{return e.call(n,n)}catch(e){return te(e,n,"data()"),{}}finally{E()}}function Xe(e,n){var o=e._computedWatchers=Object.create(null),t=Ra();for(var i in n){var a=n[i],r="function"==typeof a?a:a.get;t||(o[i]=new kr(e,r||_,_,_r)),i in e||Ye(e,i,a)}}function Ye(e,n,o){var t=!Ra();"function"==typeof o?(yr.get=t?Ze(n):o,yr.set=_):(yr.get=o.get?t&&!1!==o.cache?Ze(n):o.get:_,yr.set=o.set?o.set:_),Object.defineProperty(e,n,yr)}function Ze(e){return function(){var n=this._computedWatchers&&this._computedWatchers[e];if(n)return n.dirty&&n.evaluate(),Ha.target&&n.depend(),n.value}}function Qe(e,n){e.$options.props;for(var o in n)e[o]=null==n[o]?_:ga(n[o],e)}function en(e,n){for(var o in n){var t=n[o];if(Array.isArray(t))for(var i=0;i<t.length;i++)nn(e,o,t[i]);else nn(e,o,t)}}function nn(e,n,o,t){return s(o)&&(t=o,o=o.handler),"string"==typeof o&&(o=e[o]),e.$watch(n,o,t)}function on(e){var n=e.$options.provide;n&&(e._provided="function"==typeof n?n.call(e):n)}function tn(e){var n=an(e.$options.inject,e);n&&(I(!1),Object.keys(n).forEach(function(o){R(e,o,n[o])}),I(!0))}function an(e,n){if(e){for(var o=Object.create(null),t=qa?Reflect.ownKeys(e).filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}):Object.keys(e),i=0;i<t.length;i++){for(var a=t[i],r=e[a].from,p=n;p;){if(p._provided&&h(p._provided,r)){o[a]=p._provided[r];break}p=p.$parent}if(!p&&"default"in e[a]){var l=e[a].default;o[a]="function"==typeof l?l.call(n):l}}return o}}function rn(e,n){var o,t,a,r,p;if(Array.isArray(e)||"string"==typeof e)for(o=new Array(e.length),t=0,a=e.length;t<a;t++)o[t]=n(e[t],t);else if("number"==typeof e)for(o=new Array(e),t=0;t<e;t++)o[t]=n(t+1,t);else if(l(e))for(r=Object.keys(e),o=new Array(r.length),t=0,a=r.length;t<a;t++)p=r[t],o[t]=n(e[p],p,t);return i(o)&&(o._isVList=!0),o}function pn(e,n,o,t){var i,a=this.$scopedSlots[e];if(a)o=o||{},t&&(o=k(k({},t),o)),i=a(o)||n;else{var r=this.$slots[e];r&&(r._rendered=!0),i=r||n}var p=o&&o.slot;return p?this.$createElement("template",{slot:p},i):i}function ln(e){return Y(this.$options,"filters",e,!0)||xa}function sn(e,n){return Array.isArray(e)?-1===e.indexOf(n):e!==n}function cn(e,n,o,t,i){var a=_a.keyCodes[n]||o;return i&&t&&!_a.keyCodes[n]?sn(i,t):a?sn(a,e):t?ha(t)!==n:void 0}function mn(e,n,o,t,i){if(o)if(l(o)){Array.isArray(o)&&(o=y(o));var a;for(var r in o)!function(r){if("class"===r||"style"===r||ca(r))a=e;else{var p=e.attrs&&e.attrs.type;a=t||_a.mustUseProp(n,p,r)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}if(!(r in a)&&(a[r]=o[r],i)){(e.on||(e.on={}))["update:"+r]=function(e){o[r]=e}}}(r)}else;return e}function dn(e,n){var o=this._staticTrees||(this._staticTrees=[]),t=o[e];return t&&!n?t:(t=o[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),un(t,"__static__"+e,!1),t)}function fn(e,n,o){return un(e,"__once__"+n+(o?"_"+o:""),!0),e}function un(e,n,o){if(Array.isArray(e))for(var t=0;t<e.length;t++)e[t]&&"string"!=typeof e[t]&&bn(e[t],n+"_"+t,o);else bn(e,n,o)}function bn(e,n,o){e.isStatic=!0,e.key=n,e.isOnce=o}function hn(e,n){if(n)if(s(n)){var o=e.on=e.on?k({},e.on):{};for(var t in n){var i=o[t],a=n[t];o[t]=i?[].concat(i,a):a}}else;return e}function gn(e){e._o=fn,e._n=f,e._s=d,e._l=rn,e._t=pn,e._q=C,e._i=$,e._m=dn,e._f=ln,e._k=cn,e._b=mn,e._v=M,e._e=Wa,e._u=Se,e._g=hn}function vn(e,n,o,t,i){var r,p=i.options;h(t,"_uid")?(r=Object.create(t),r._original=t):(r=t,t=t._original);var l=a(p._compiled),s=!l;this.data=e,this.props=n,this.children=o,this.parent=t,this.listeners=e.on||pa,this.injections=an(p.inject,t),this.slots=function(){return Ae(o,t)},l&&(this.$options=p,this.$slots=this.slots(),this.$scopedSlots=e.scopedSlots||pa),p._scopeId?this._c=function(e,n,o,i){var a=zn(r,e,n,o,i,s);return a&&!Array.isArray(a)&&(a.fnScopeId=p._scopeId,a.fnContext=t),a}:this._c=function(e,n,o,t){return zn(r,e,n,o,t,s)}}function xn(e,n,o,t,a){var r=e.options,p={},l=r.props;if(i(l))for(var s in l)p[s]=Z(s,l,n||pa);else i(o.attrs)&&kn(p,o.attrs),i(o.props)&&kn(p,o.props);var c=new vn(o,p,a,t,e),m=r.render.call(null,c._c,c);if(m instanceof Ka)return wn(m,o,c.parent,r);if(Array.isArray(m)){for(var d=ge(m)||[],f=new Array(d.length),u=0;u<d.length;u++)f[u]=wn(d[u],o,c.parent,r);return f}}function wn(e,n,o,t){var i=P(e);return i.fnContext=o,i.fnOptions=t,n.slot&&((i.data||(i.data={})).slot=n.slot),i}function kn(e,n){for(var o in n)e[fa(o)]=n[o]}function yn(e,n,o,r,p){if(!t(e)){var s=o.$options._base;if(l(e)&&(e=s.extend(e)),"function"==typeof e){var c;if(t(e.cid)&&(c=e,void 0===(e=ye(c,s,o))))return ke(c,n,o,r,p);n=n||{},En(e),i(n.model)&&$n(e.options,n);var m=ue(n,e,p);if(a(e.options.functional))return xn(e,m,n,o,r);var d=n.on;if(n.on=n.nativeOn,a(e.options.abstract)){var f=n.slot;n={},f&&(n.slot=f)}Cn(n);var u=e.options.name||p;return new Ka("vue-component-"+e.cid+(u?"-"+u:""),n,void 0,void 0,void 0,o,{Ctor:e,propsData:m,listeners:d,tag:p,children:r},c)}}}function _n(e,n,o,t){var a={_isComponent:!0,parent:n,_parentVnode:e,_parentElm:o||null,_refElm:t||null},r=e.data.inlineTemplate;return i(r)&&(a.render=r.render,a.staticRenderFns=r.staticRenderFns),new e.componentOptions.Ctor(a)}function Cn(e){for(var n=e.hook||(e.hook={}),o=0;o<$r.length;o++){var t=$r[o];n[t]=Cr[t]}}function $n(e,n){var o=e.model&&e.model.prop||"value",t=e.model&&e.model.event||"input";(n.props||(n.props={}))[o]=n.model.value;var a=n.on||(n.on={});i(a[t])?a[t]=[n.model.callback].concat(a[t]):a[t]=n.model.callback}function zn(e,n,o,t,i,r){return(Array.isArray(o)||p(o))&&(i=t,t=o,o=void 0),a(r)&&(i=jr),jn(e,n,o,t,i)}function jn(e,n,o,t,a){if(i(o)&&i(o.__ob__))return Wa();if(i(o)&&i(o.is)&&(n=o.is),!n)return Wa();Array.isArray(t)&&"function"==typeof t[0]&&(o=o||{},o.scopedSlots={default:t[0]},t.length=0),a===jr?t=ge(t):a===zr&&(t=he(t));var r,p;if("string"==typeof n){var l;p=e.$vnode&&e.$vnode.ns||_a.getTagNamespace(n),r=_a.isReservedTag(n)?new Ka(_a.parsePlatformTagName(n),o,t,void 0,void 0,e):i(l=Y(e.$options,"components",n))?yn(l,o,e,t,n):new Ka(n,o,t,void 0,void 0,e)}else r=yn(n,o,e,t);return Array.isArray(r)?r:i(r)?(i(p)&&On(r,p),i(o)&&An(o),r):Wa()}function On(e,n,o){if(e.ns=n,"foreignObject"===e.tag&&(n=void 0,o=!0),i(e.children))for(var r=0,p=e.children.length;r<p;r++){var l=e.children[r];i(l.tag)&&(t(l.ns)||a(o)&&"svg"!==l.tag)&&On(l,n,o)}}function An(e){l(e.style)&&se(e.style),l(e.class)&&se(e.class)}function Tn(e){e._vnode=null,e._staticTrees=null;var n=e.$options,o=e.$vnode=n._parentVnode,t=o&&o.context;e.$slots=Ae(n._renderChildren,t),e.$scopedSlots=pa,e._c=function(n,o,t,i){return zn(e,n,o,t,i,!1)},e.$createElement=function(n,o,t,i){return zn(e,n,o,t,i,!0)};var i=o&&o.data;R(e,"$attrs",i&&i.attrs||pa,null,!0),R(e,"$listeners",n._parentListeners||pa,null,!0)}function Sn(e,n){var o=e.$options=Object.create(e.constructor.options),t=n._parentVnode;o.parent=n.parent,o._parentVnode=t,o._parentElm=n._parentElm,o._refElm=n._refElm;var i=t.componentOptions;o.propsData=i.propsData,o._parentListeners=i.listeners,o._renderChildren=i.children,o._componentTag=i.tag,n.render&&(o.render=n.render,o.staticRenderFns=n.staticRenderFns)}function En(e){var n=e.options;if(e.super){var o=En(e.super);if(o!==e.superOptions){e.superOptions=o;var t=Mn(e);t&&k(e.extendOptions,t),n=e.options=X(o,e.extendOptions),n.name&&(n.components[n.name]=e)}}return n}function Mn(e){var n,o=e.options,t=e.extendOptions,i=e.sealedOptions;for(var a in o)o[a]!==i[a]&&(n||(n={}),n[a]=Pn(o[a],t[a],i[a]));return n}function Pn(e,n,o){if(Array.isArray(e)){var t=[];o=Array.isArray(o)?o:[o],n=Array.isArray(n)?n:[n];for(var i=0;i<e.length;i++)(n.indexOf(e[i])>=0||o.indexOf(e[i])<0)&&t.push(e[i]);return t}return e}function In(e){this._init(e)}function Ln(e){e.use=function(e){var n=this._installedPlugins||(this._installedPlugins=[]);if(n.indexOf(e)>-1)return this;var o=w(arguments,1);return o.unshift(this),"function"==typeof e.install?e.install.apply(e,o):"function"==typeof e&&e.apply(null,o),n.push(e),this}}function Dn(e){e.mixin=function(e){return this.options=X(this.options,e),this}}function Nn(e){e.cid=0;var n=1;e.extend=function(e){e=e||{};var o=this,t=o.cid,i=e._Ctor||(e._Ctor={});if(i[t])return i[t];var a=e.name||o.options.name,r=function(e){this._init(e)};return r.prototype=Object.create(o.prototype),r.prototype.constructor=r,r.cid=n++,r.options=X(o.options,e),r.super=o,r.options.props&&Rn(r),r.options.computed&&Un(r),r.extend=o.extend,r.mixin=o.mixin,r.use=o.use,ka.forEach(function(e){r[e]=o[e]}),a&&(r.options.components[a]=r),r.superOptions=o.options,r.extendOptions=e,r.sealedOptions=k({},r.options),i[t]=r,r}}function Rn(e){var n=e.options.props;for(var o in n)Ge(e.prototype,"_props",o)}function Un(e){var n=e.options.computed;for(var o in n)Ye(e.prototype,o,n[o])}function qn(e){ka.forEach(function(n){e[n]=function(e,o){return o?("component"===n&&s(o)&&(o.name=o.name||e,o=this.options._base.extend(o)),"directive"===n&&"function"==typeof o&&(o={bind:o,update:o}),this.options[n+"s"][e]=o,o):this.options[n+"s"][e]}})}function Bn(e){return e&&(e.Ctor.options.name||e.tag)}function Fn(e,n){return Array.isArray(e)?e.indexOf(n)>-1:"string"==typeof e?e.split(",").indexOf(n)>-1:!!c(e)&&e.test(n)}function Hn(e,n){var o=e.cache,t=e.keys,i=e._vnode;for(var a in o){var r=o[a];if(r){var p=Bn(r.componentOptions);p&&!n(p)&&Gn(o,a,t,i)}}}function Gn(e,n,o,t){var i=e[n];!i||t&&i.tag===t.tag||i.componentInstance.$destroy(),e[n]=null,b(o,n)}function Kn(e){for(var n=e.data,o=e,t=e;i(t.componentInstance);)(t=t.componentInstance._vnode)&&t.data&&(n=Vn(t.data,n));for(;i(o=o.parent);)o&&o.data&&(n=Vn(n,o.data));return Wn(n.staticClass,n.class)}function Vn(e,n){return{staticClass:Jn(e.staticClass,n.staticClass),class:i(e.class)?[e.class,n.class]:n.class}}function Wn(e,n){return i(e)||i(n)?Jn(e,Xn(n)):""}function Jn(e,n){return e?n?e+" "+n:e:n||""}function Xn(e){return Array.isArray(e)?Yn(e):l(e)?Zn(e):"string"==typeof e?e:""}function Yn(e){for(var n,o="",t=0,a=e.length;t<a;t++)i(n=Xn(e[t]))&&""!==n&&(o&&(o+=" "),o+=n);return o}function Zn(e){var n="";for(var o in e)e[o]&&(n&&(n+=" "),n+=o);return n}function Qn(e){return Zr(e)?"svg":"math"===e?"math":void 0}function eo(e){if(!za)return!0;if(ep(e))return!1;if(e=e.toLowerCase(),null!=np[e])return np[e];var n=document.createElement(e);return e.indexOf("-")>-1?np[e]=n.constructor===window.HTMLUnknownElement||n.constructor===window.HTMLElement:np[e]=/HTMLUnknownElement/.test(n.toString())}function no(e){if("string"==typeof e){var n=document.querySelector(e);return n||document.createElement("div")}return e}function oo(e,n){var o=document.createElement(e);return"select"!==e?o:(n.data&&n.data.attrs&&void 0!==n.data.attrs.multiple&&o.setAttribute("multiple","multiple"),o)}function to(e,n){return document.createElementNS(Xr[e],n)}function io(e){return document.createTextNode(e)}function ao(e){return document.createComment(e)}function ro(e,n,o){e.insertBefore(n,o)}function po(e,n){e.removeChild(n)}function lo(e,n){e.appendChild(n)}function so(e){return e.parentNode}function co(e){return e.nextSibling}function mo(e){return e.tagName}function fo(e,n){e.textContent=n}function uo(e,n){e.setAttribute(n,"")}function bo(e,n){var o=e.data.ref;if(i(o)){var t=e.context,a=e.componentInstance||e.elm,r=t.$refs;n?Array.isArray(r[o])?b(r[o],a):r[o]===a&&(r[o]=void 0):e.data.refInFor?Array.isArray(r[o])?r[o].indexOf(a)<0&&r[o].push(a):r[o]=[a]:r[o]=a}}function ho(e,n){return e.key===n.key&&(e.tag===n.tag&&e.isComment===n.isComment&&i(e.data)===i(n.data)&&go(e,n)||a(e.isAsyncPlaceholder)&&e.asyncFactory===n.asyncFactory&&t(n.asyncFactory.error))}function go(e,n){if("input"!==e.tag)return!0;var o,t=i(o=e.data)&&i(o=o.attrs)&&o.type,a=i(o=n.data)&&i(o=o.attrs)&&o.type;return t===a||op(t)&&op(a)}function vo(e,n,o){var t,a,r={};for(t=n;t<=o;++t)a=e[t].key,i(a)&&(r[a]=t);return r}function xo(e,n){(e.data.directives||n.data.directives)&&wo(e,n)}function wo(e,n){var o,t,i,a=e===ap,r=n===ap,p=ko(e.data.directives,e.context),l=ko(n.data.directives,n.context),s=[],c=[];for(o in l)t=p[o],i=l[o],t?(i.oldValue=t.value,_o(i,"update",n,e),i.def&&i.def.componentUpdated&&c.push(i)):(_o(i,"bind",n,e),i.def&&i.def.inserted&&s.push(i));if(s.length){var m=function(){for(var o=0;o<s.length;o++)_o(s[o],"inserted",n,e)};a?fe(n,"insert",m):m()}if(c.length&&fe(n,"postpatch",function(){for(var o=0;o<c.length;o++)_o(c[o],"componentUpdated",n,e)}),!a)for(o in p)l[o]||_o(p[o],"unbind",e,e,r)}function ko(e,n){var o=Object.create(null);if(!e)return o;var t,i;for(t=0;t<e.length;t++)i=e[t],i.modifiers||(i.modifiers=lp),o[yo(i)]=i,i.def=Y(n.$options,"directives",i.name,!0);return o}function yo(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function _o(e,n,o,t,i){var a=e.def&&e.def[n];if(a)try{a(o.elm,e,o,t,i)}catch(t){te(t,o.context,"directive "+e.name+" "+n+" hook")}}function Co(e,n){var o=n.componentOptions;if(!(i(o)&&!1===o.Ctor.options.inheritAttrs||t(e.data.attrs)&&t(n.data.attrs))){var a,r,p=n.elm,l=e.data.attrs||{},s=n.data.attrs||{};i(s.__ob__)&&(s=n.data.attrs=k({},s));for(a in s)r=s[a],l[a]!==r&&$o(p,a,r);(Ta||Ea)&&s.value!==l.value&&$o(p,"value",s.value);for(a in l)t(s[a])&&(Vr(a)?p.removeAttributeNS(Kr,Wr(a)):Hr(a)||p.removeAttribute(a))}}function $o(e,n,o){e.tagName.indexOf("-")>-1?zo(e,n,o):Gr(n)?Jr(o)?e.removeAttribute(n):(o="allowfullscreen"===n&&"EMBED"===e.tagName?"true":n,e.setAttribute(n,o)):Hr(n)?e.setAttribute(n,Jr(o)||"false"===o?"false":"true"):Vr(n)?Jr(o)?e.removeAttributeNS(Kr,Wr(n)):e.setAttributeNS(Kr,n,o):zo(e,n,o)}function zo(e,n,o){if(Jr(o))e.removeAttribute(n);else{if(Ta&&!Sa&&"TEXTAREA"===e.tagName&&"placeholder"===n&&!e.__ieph){var t=function(n){n.stopImmediatePropagation(),e.removeEventListener("input",t)};e.addEventListener("input",t),e.__ieph=!0}e.setAttribute(n,o)}}function jo(e,n){var o=n.elm,a=n.data,r=e.data;if(!(t(a.staticClass)&&t(a.class)&&(t(r)||t(r.staticClass)&&t(r.class)))){var p=Kn(n),l=o._transitionClasses;i(l)&&(p=Jn(p,Xn(l))),p!==o._prevClass&&(o.setAttribute("class",p),o._prevClass=p)}}function Oo(e){function n(){(r||(r=[])).push(e.slice(u,i).trim()),u=i+1}var o,t,i,a,r,p=!1,l=!1,s=!1,c=!1,m=0,d=0,f=0,u=0;for(i=0;i<e.length;i++)if(t=o,o=e.charCodeAt(i),p)39===o&&92!==t&&(p=!1);else if(l)34===o&&92!==t&&(l=!1);else if(s)96===o&&92!==t&&(s=!1);else if(c)47===o&&92!==t&&(c=!1);else if(124!==o||124===e.charCodeAt(i+1)||124===e.charCodeAt(i-1)||m||d||f){switch(o){case 34:l=!0;break;case 39:p=!0;break;case 96:s=!0;break;case 40:f++;break;case 41:f--;break;case 91:d++;break;case 93:d--;break;case 123:m++;break;case 125:m--}if(47===o){for(var b=i-1,h=void 0;b>=0&&" "===(h=e.charAt(b));b--);h&&dp.test(h)||(c=!0)}}else void 0===a?(u=i+1,a=e.slice(0,i).trim()):n();if(void 0===a?a=e.slice(0,i).trim():0!==u&&n(),r)for(i=0;i<r.length;i++)a=Ao(a,r[i]);return a}function Ao(e,n){var o=n.indexOf("(");if(o<0)return'_f("'+n+'")('+e+")";var t=n.slice(0,o),i=n.slice(o+1);return'_f("'+t+'")('+e+(")"!==i?","+i:i)}function To(e){console.error("[Vue compiler]: "+e)}function So(e,n){return e?e.map(function(e){return e[n]}).filter(function(e){return e}):[]}function Eo(e,n,o){(e.props||(e.props=[])).push({name:n,value:o}),e.plain=!1}function Mo(e,n,o){(e.attrs||(e.attrs=[])).push({name:n,value:o}),e.plain=!1}function Po(e,n,o){e.attrsMap[n]=o,e.attrsList.push({name:n,value:o})}function Io(e,n,o,t,i,a){(e.directives||(e.directives=[])).push({name:n,rawName:o,value:t,arg:i,modifiers:a}),e.plain=!1}function Lo(e,n,o,t,i,a){t=t||pa,t.capture&&(delete t.capture,n="!"+n),t.once&&(delete t.once,n="~"+n),t.passive&&(delete t.passive,n="&"+n),"click"===n&&(t.right?(n="contextmenu",delete t.right):t.middle&&(n="mouseup"));var r;t.native?(delete t.native,r=e.nativeEvents||(e.nativeEvents={})):r=e.events||(e.events={});var p={value:o.trim()};t!==pa&&(p.modifiers=t);var l=r[n];Array.isArray(l)?i?l.unshift(p):l.push(p):r[n]=l?i?[p,l]:[l,p]:p,e.plain=!1}function Do(e,n,o){var t=No(e,":"+n)||No(e,"v-bind:"+n);if(null!=t)return Oo(t);if(!1!==o){var i=No(e,n);if(null!=i)return JSON.stringify(i)}}function No(e,n,o){var t;if(null!=(t=e.attrsMap[n]))for(var i=e.attrsList,a=0,r=i.length;a<r;a++)if(i[a].name===n){i.splice(a,1);break}return o&&delete e.attrsMap[n],t}function Ro(e,n,o){var t=o||{},i=t.number,a=t.trim,r="$$v";a&&(r="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(r="_n("+r+")");var p=Uo(n,r);e.model={value:"("+n+")",expression:'"'+n+'"',callback:"function ($$v) {"+p+"}"}}function Uo(e,n){var o=qo(e);return null===o.key?e+"="+n:"$set("+o.exp+", "+o.key+", "+n+")"}function qo(e){if(e=e.trim(),Er=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<Er-1)return Ir=e.lastIndexOf("."),Ir>-1?{exp:e.slice(0,Ir),key:'"'+e.slice(Ir+1)+'"'}:{exp:e,key:null};for(Mr=e,Ir=Lr=Dr=0;!Fo();)Pr=Bo(),Ho(Pr)?Ko(Pr):91===Pr&&Go(Pr);return{exp:e.slice(0,Lr),key:e.slice(Lr+1,Dr)}}function Bo(){return Mr.charCodeAt(++Ir)}function Fo(){return Ir>=Er}function Ho(e){return 34===e||39===e}function Go(e){var n=1;for(Lr=Ir;!Fo();)if(e=Bo(),Ho(e))Ko(e);else if(91===e&&n++,93===e&&n--,0===n){Dr=Ir;break}}function Ko(e){for(var n=e;!Fo()&&(e=Bo())!==n;);}function Vo(e,n,o){Nr=o;var t=n.value,i=n.modifiers,a=e.tag,r=e.attrsMap.type;if(e.component)return Ro(e,t,i),!1;if("select"===a)Xo(e,t,i);else if("input"===a&&"checkbox"===r)Wo(e,t,i);else if("input"===a&&"radio"===r)Jo(e,t,i);else if("input"===a||"textarea"===a)Yo(e,t,i);else if(!_a.isReservedTag(a))return Ro(e,t,i),!1;return!0}function Wo(e,n,o){var t=o&&o.number,i=Do(e,"value")||"null",a=Do(e,"true-value")||"true",r=Do(e,"false-value")||"false";Eo(e,"checked","Array.isArray("+n+")?_i("+n+","+i+")>-1"+("true"===a?":("+n+")":":_q("+n+","+a+")")),Lo(e,"change","var $$a="+n+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+r+");if(Array.isArray($$a)){var $$v="+(t?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Uo(n,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Uo(n,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Uo(n,"$$c")+"}",null,!0)}function Jo(e,n,o){var t=o&&o.number,i=Do(e,"value")||"null";i=t?"_n("+i+")":i,Eo(e,"checked","_q("+n+","+i+")"),Lo(e,"change",Uo(n,i),null,!0)}function Xo(e,n,o){var t=o&&o.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(t?"_n(val)":"val")+"})",a="var $$selectedVal = "+i+";";a=a+" "+Uo(n,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),Lo(e,"change",a,null,!0)}function Yo(e,n,o){var t=e.attrsMap.type,i=o||{},a=i.lazy,r=i.number,p=i.trim,l=!a&&"range"!==t,s=a?"change":"range"===t?fp:"input",c="$event.target.value";p&&(c="$event.target.value.trim()"),r&&(c="_n("+c+")");var m=Uo(n,c);l&&(m="if($event.target.composing)return;"+m),Eo(e,"value","("+n+")"),Lo(e,s,m,null,!0),(p||r)&&Lo(e,"blur","$forceUpdate()")}function Zo(e){if(i(e[fp])){var n=Ta?"change":"input";e[n]=[].concat(e[fp],e[n]||[]),delete e[fp]}i(e[up])&&(e.change=[].concat(e[up],e.change||[]),delete e[up])}function Qo(e,n,o){var t=Rr;return function i(){null!==e.apply(null,arguments)&&nt(n,i,o,t)}}function et(e,n,o,t,i){n=pe(n),o&&(n=Qo(n,e,t)),Rr.addEventListener(e,n,Ia?{capture:t,passive:i}:t)}function nt(e,n,o,t){(t||Rr).removeEventListener(e,n._withTask||n,o)}function ot(e,n){if(!t(e.data.on)||!t(n.data.on)){var o=n.data.on||{},i=e.data.on||{};Rr=n.elm,Zo(o),de(o,i,et,nt,n.context),Rr=void 0}}function tt(e,n){if(!t(e.data.domProps)||!t(n.data.domProps)){var o,a,r=n.elm,p=e.data.domProps||{},l=n.data.domProps||{};i(l.__ob__)&&(l=n.data.domProps=k({},l));for(o in p)t(l[o])&&(r[o]="");for(o in l){if(a=l[o],"textContent"===o||"innerHTML"===o){if(n.children&&(n.children.length=0),a===p[o])continue;1===r.childNodes.length&&r.removeChild(r.childNodes[0])}if("value"===o){r._value=a;var s=t(a)?"":String(a);it(r,s)&&(r.value=s)}else r[o]=a}}}function it(e,n){return!e.composing&&("OPTION"===e.tagName||at(e,n)||rt(e,n))}function at(e,n){var o=!0;try{o=document.activeElement!==e}catch(e){}return o&&e.value!==n}function rt(e,n){var o=e.value,t=e._vModifiers;if(i(t)){if(t.lazy)return!1;if(t.number)return f(o)!==f(n);if(t.trim)return o.trim()!==n.trim()}return o!==n}function pt(e){var n=lt(e.style);return e.staticStyle?k(e.staticStyle,n):n}function lt(e){return Array.isArray(e)?y(e):"string"==typeof e?gp(e):e}function st(e,n){var o,t={};if(n)for(var i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(o=pt(i.data))&&k(t,o);(o=pt(e.data))&&k(t,o);for(var a=e;a=a.parent;)a.data&&(o=pt(a.data))&&k(t,o);return t}function ct(e,n){var o=n.data,a=e.data;if(!(t(o.staticStyle)&&t(o.style)&&t(a.staticStyle)&&t(a.style))){var r,p,l=n.elm,s=a.staticStyle,c=a.normalizedStyle||a.style||{},m=s||c,d=lt(n.data.style)||{};n.data.normalizedStyle=i(d.__ob__)?k({},d):d;var f=st(n,!0);for(p in m)t(f[p])&&wp(l,p,"");for(p in f)(r=f[p])!==m[p]&&wp(l,p,null==r?"":r)}}function mt(e,n){if(n&&(n=n.trim()))if(e.classList)n.indexOf(" ")>-1?n.split(/\s+/).forEach(function(n){return e.classList.add(n)}):e.classList.add(n);else{var o=" "+(e.getAttribute("class")||"")+" ";o.indexOf(" "+n+" ")<0&&e.setAttribute("class",(o+n).trim())}}function dt(e,n){if(n&&(n=n.trim()))if(e.classList)n.indexOf(" ")>-1?n.split(/\s+/).forEach(function(n){return e.classList.remove(n)}):e.classList.remove(n),e.classList.length||e.removeAttribute("class");else{for(var o=" "+(e.getAttribute("class")||"")+" ",t=" "+n+" ";o.indexOf(t)>=0;)o=o.replace(t," ");o=o.trim(),o?e.setAttribute("class",o):e.removeAttribute("class")}}function ft(e){if(e){if("object"==typeof e){var n={};return!1!==e.css&&k(n,Cp(e.name||"v")),k(n,e),n}return"string"==typeof e?Cp(e):void 0}}function ut(e){Ep(function(){Ep(e)})}function bt(e,n){var o=e._transitionClasses||(e._transitionClasses=[]);o.indexOf(n)<0&&(o.push(n),mt(e,n))}function ht(e,n){e._transitionClasses&&b(e._transitionClasses,n),dt(e,n)}function gt(e,n,o){var t=vt(e,n),i=t.type,a=t.timeout,r=t.propCount;if(!i)return o();var p=i===zp?Ap:Sp,l=0,s=function(){e.removeEventListener(p,c),o()},c=function(n){n.target===e&&++l>=r&&s()};setTimeout(function(){l<r&&s()},a+1),e.addEventListener(p,c)}function vt(e,n){var o,t=window.getComputedStyle(e),i=t[Op+"Delay"].split(", "),a=t[Op+"Duration"].split(", "),r=xt(i,a),p=t[Tp+"Delay"].split(", "),l=t[Tp+"Duration"].split(", "),s=xt(p,l),c=0,m=0;return n===zp?r>0&&(o=zp,c=r,m=a.length):n===jp?s>0&&(o=jp,c=s,m=l.length):(c=Math.max(r,s),o=c>0?r>s?zp:jp:null,m=o?o===zp?a.length:l.length:0),{type:o,timeout:c,propCount:m,hasTransform:o===zp&&Mp.test(t[Op+"Property"])}}function xt(e,n){for(;e.length<n.length;)e=e.concat(e);return Math.max.apply(null,n.map(function(n,o){return wt(n)+wt(e[o])}))}function wt(e){return 1e3*Number(e.slice(0,-1))}function kt(e,n){var o=e.elm;i(o._leaveCb)&&(o._leaveCb.cancelled=!0,o._leaveCb());var a=ft(e.data.transition);if(!t(a)&&!i(o._enterCb)&&1===o.nodeType){for(var r=a.css,p=a.type,s=a.enterClass,c=a.enterToClass,m=a.enterActiveClass,d=a.appearClass,u=a.appearToClass,b=a.appearActiveClass,h=a.beforeEnter,g=a.enter,v=a.afterEnter,x=a.enterCancelled,w=a.beforeAppear,k=a.appear,y=a.afterAppear,_=a.appearCancelled,C=a.duration,$=fr,j=fr.$vnode;j&&j.parent;)j=j.parent,$=j.context;var O=!$._isMounted||!e.isRootInsert;if(!O||k||""===k){var A=O&&d?d:s,T=O&&b?b:m,S=O&&u?u:c,E=O?w||h:h,M=O&&"function"==typeof k?k:g,P=O?y||v:v,I=O?_||x:x,L=f(l(C)?C.enter:C),D=!1!==r&&!Sa,N=Ct(M),R=o._enterCb=z(function(){D&&(ht(o,S),ht(o,T)),R.cancelled?(D&&ht(o,A),I&&I(o)):P&&P(o),o._enterCb=null});e.data.show||fe(e,"insert",function(){var n=o.parentNode,t=n&&n._pending&&n._pending[e.key];t&&t.tag===e.tag&&t.elm._leaveCb&&t.elm._leaveCb(),M&&M(o,R)}),E&&E(o),D&&(bt(o,A),bt(o,T),ut(function(){ht(o,A),R.cancelled||(bt(o,S),N||(_t(L)?setTimeout(R,L):gt(o,p,R)))})),e.data.show&&(n&&n(),M&&M(o,R)),D||N||R()}}}function yt(e,n){function o(){_.cancelled||(e.data.show||((a.parentNode._pending||(a.parentNode._pending={}))[e.key]=e),u&&u(a),w&&(bt(a,c),bt(a,d),ut(function(){ht(a,c),_.cancelled||(bt(a,m),k||(_t(y)?setTimeout(_,y):gt(a,s,_)))})),b&&b(a,_),w||k||_())}var a=e.elm;i(a._enterCb)&&(a._enterCb.cancelled=!0,a._enterCb());var r=ft(e.data.transition);if(t(r)||1!==a.nodeType)return n();if(!i(a._leaveCb)){var p=r.css,s=r.type,c=r.leaveClass,m=r.leaveToClass,d=r.leaveActiveClass,u=r.beforeLeave,b=r.leave,h=r.afterLeave,g=r.leaveCancelled,v=r.delayLeave,x=r.duration,w=!1!==p&&!Sa,k=Ct(b),y=f(l(x)?x.leave:x),_=a._leaveCb=z(function(){a.parentNode&&a.parentNode._pending&&(a.parentNode._pending[e.key]=null),w&&(ht(a,m),ht(a,d)),_.cancelled?(w&&ht(a,c),g&&g(a)):(n(),h&&h(a)),a._leaveCb=null});v?v(o):o()}}function _t(e){return"number"==typeof e&&!isNaN(e)}function Ct(e){if(t(e))return!1;var n=e.fns;return i(n)?Ct(Array.isArray(n)?n[0]:n):(e._length||e.length)>1}function $t(e,n){!0!==n.data.show&&kt(n)}function zt(e,n,o){jt(e,n,o),(Ta||Ea)&&setTimeout(function(){jt(e,n,o)},0)}function jt(e,n,o){var t=n.value,i=e.multiple;if(!i||Array.isArray(t)){for(var a,r,p=0,l=e.options.length;p<l;p++)if(r=e.options[p],i)a=$(t,At(r))>-1,r.selected!==a&&(r.selected=a);else if(C(At(r),t))return void(e.selectedIndex!==p&&(e.selectedIndex=p));i||(e.selectedIndex=-1)}}function Ot(e,n){return n.every(function(n){return!C(n,e)})}function At(e){return"_value"in e?e._value:e.value}function Tt(e){e.target.composing=!0}function St(e){e.target.composing&&(e.target.composing=!1,Et(e.target,"input"))}function Et(e,n){var o=document.createEvent("HTMLEvents");o.initEvent(n,!0,!0),e.dispatchEvent(o)}function Mt(e){return!e.componentInstance||e.data&&e.data.transition?e:Mt(e.componentInstance._vnode)}function Pt(e){var n=e&&e.componentOptions;return n&&n.Ctor.options.abstract?Pt(Ce(n.children)):e}function It(e){var n={},o=e.$options;for(var t in o.propsData)n[t]=e[t];var i=o._parentListeners;for(var a in i)n[fa(a)]=i[a];return n}function Lt(e,n){if(/\d-keep-alive$/.test(n.tag))return e("keep-alive",{props:n.componentOptions.propsData})}function Dt(e){for(;e=e.parent;)if(e.data.transition)return!0}function Nt(e,n){return n.key===e.key&&n.tag===e.tag}function Rt(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Ut(e){e.data.newPos=e.elm.getBoundingClientRect()}function qt(e){var n=e.data.pos,o=e.data.newPos,t=n.left-o.left,i=n.top-o.top;if(t||i){e.data.moved=!0;var a=e.elm.style;a.transform=a.WebkitTransform="translate("+t+"px,"+i+"px)",a.transitionDuration="0s"}}function Bt(e,n){var o=n?Jp(n):Vp;if(o.test(e)){for(var t,i,a,r=[],p=[],l=o.lastIndex=0;t=o.exec(e);){i=t.index,i>l&&(p.push(a=e.slice(l,i)),r.push(JSON.stringify(a)));var s=Oo(t[1].trim());r.push("_s("+s+")"),p.push({"@binding":s}),l=i+t[0].length}return l<e.length&&(p.push(a=e.slice(l)),r.push(JSON.stringify(a))),{expression:r.join("+"),tokens:p}}}function Ft(e,n){var o=(n.warn,No(e,"class"));o&&(e.staticClass=JSON.stringify(o));var t=Do(e,"class",!1);t&&(e.classBinding=t)}function Ht(e){var n="";return e.staticClass&&(n+="staticClass:"+e.staticClass+","),e.classBinding&&(n+="class:"+e.classBinding+","),n}function Gt(e,n){var o=(n.warn,No(e,"style"));if(o){e.staticStyle=JSON.stringify(gp(o))}var t=Do(e,"style",!1);t&&(e.styleBinding=t)}function Kt(e){var n="";return e.staticStyle&&(n+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(n+="style:("+e.styleBinding+"),"),n}function Vt(e,n){var o=n?jl:zl;return e.replace(o,function(e){return $l[e]})}function Wt(e,n){function o(n){c+=n,e=e.substring(n)}function t(e,o,t){var i,p;if(null==o&&(o=c),null==t&&(t=c),e&&(p=e.toLowerCase()),e)for(i=r.length-1;i>=0&&r[i].lowerCasedTag!==p;i--);else i=0;if(i>=0){for(var l=r.length-1;l>=i;l--)n.end&&n.end(r[l].tag,o,t);r.length=i,a=i&&r[i-1].tag}else"br"===p?n.start&&n.start(e,[],!0,o,t):"p"===p&&(n.start&&n.start(e,[],!1,o,t),n.end&&n.end(e,o,t))}for(var i,a,r=[],p=n.expectHTML,l=n.isUnaryTag||va,s=n.canBeLeftOpenTag||va,c=0;e;){if(i=e,a&&_l(a)){var m=0,d=a.toLowerCase(),f=Cl[d]||(Cl[d]=new RegExp("([\\s\\S]*?)(</"+d+"[^>]*>)","i")),u=e.replace(f,function(e,o,t){return m=t.length,_l(d)||"noscript"===d||(o=o.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Al(d,o)&&(o=o.slice(1)),n.chars&&n.chars(o),""});c+=e.length-u.length,e=u,t(d,c-m,c)}else{var b=e.indexOf("<");if(0===b){if(sl.test(e)){var h=e.indexOf("--\x3e");if(h>=0){n.shouldKeepComment&&n.comment(e.substring(4,h)),o(h+3);continue}}if(cl.test(e)){var g=e.indexOf("]>");if(g>=0){o(g+2);continue}}var v=e.match(ll);if(v){o(v[0].length);continue}var x=e.match(pl);if(x){var w=c;o(x[0].length),t(x[1],w,c);continue}var k=function(){var n=e.match(al);if(n){var t={tagName:n[1],attrs:[],start:c};o(n[0].length);for(var i,a;!(i=e.match(rl))&&(a=e.match(ol));)o(a[0].length),t.attrs.push(a);if(i)return t.unarySlash=i[1],o(i[0].length),t.end=c,t}}();if(k){!function(e){var o=e.tagName,i=e.unarySlash;p&&("p"===a&&nl(o)&&t(a),s(o)&&a===o&&t(o));for(var c=l(o)||!!i,m=e.attrs.length,d=new Array(m),f=0;f<m;f++){var u=e.attrs[f];ml&&-1===u[0].indexOf('""')&&(""===u[3]&&delete u[3],""===u[4]&&delete u[4],""===u[5]&&delete u[5]);var b=u[3]||u[4]||u[5]||"",h="a"===o&&"href"===u[1]?n.shouldDecodeNewlinesForHref:n.shouldDecodeNewlines;d[f]={name:u[1],value:Vt(b,h)}}c||(r.push({tag:o,lowerCasedTag:o.toLowerCase(),attrs:d}),a=o),n.start&&n.start(o,d,c,e.start,e.end)}(k),Al(a,e)&&o(1);continue}}var y=void 0,_=void 0,C=void 0;if(b>=0){for(_=e.slice(b);!(pl.test(_)||al.test(_)||sl.test(_)||cl.test(_)||(C=_.indexOf("<",1))<0);)b+=C,_=e.slice(b);y=e.substring(0,b),o(b)}b<0&&(y=e,e=""),n.chars&&y&&n.chars(y)}if(e===i){n.chars&&n.chars(e);break}}t()}function Jt(e,n,o){return{type:1,tag:e,attrsList:n,attrsMap:ui(n),parent:o,children:[]}}function Xt(e,n){function o(e){e.pre&&(p=!1),gl(e.tag)&&(l=!1);for(var o=0;o<hl.length;o++)hl[o](e,n)}dl=n.warn||To,gl=n.isPreTag||va,vl=n.mustUseProp||va,xl=n.getTagNamespace||va,ul=So(n.modules,"transformNode"),bl=So(n.modules,"preTransformNode"),hl=So(n.modules,"postTransformNode"),fl=n.delimiters;var t,i,a=[],r=!1!==n.preserveWhitespace,p=!1,l=!1;return Wt(e,{warn:dl,expectHTML:n.expectHTML,isUnaryTag:n.isUnaryTag,canBeLeftOpenTag:n.canBeLeftOpenTag,shouldDecodeNewlines:n.shouldDecodeNewlines,shouldDecodeNewlinesForHref:n.shouldDecodeNewlinesForHref,shouldKeepComment:n.comments,start:function(e,r,s){var c=i&&i.ns||xl(e);Ta&&"svg"===c&&(r=gi(r));var m=Jt(e,r,i);c&&(m.ns=c),hi(m)&&!Ra()&&(m.forbidden=!0);for(var d=0;d<bl.length;d++)m=bl[d](m,n)||m;if(p||(Yt(m),m.pre&&(p=!0)),gl(m.tag)&&(l=!0),p?Zt(m):m.processed||(oi(m),ii(m),li(m),Qt(m,n)),t?a.length||t.if&&(m.elseif||m.else)&&pi(t,{exp:m.elseif,block:m}):t=m,i&&!m.forbidden)if(m.elseif||m.else)ai(m,i);else if(m.slotScope){i.plain=!1;var f=m.slotTarget||'"default"';(i.scopedSlots||(i.scopedSlots={}))[f]=m}else i.children.push(m),m.parent=i;s?o(m):(i=m,a.push(m))},end:function(){var e=a[a.length-1],n=e.children[e.children.length-1];n&&3===n.type&&" "===n.text&&!l&&e.children.pop(),a.length-=1,i=a[a.length-1],o(e)},chars:function(e){if(i&&(!Ta||"textarea"!==i.tag||i.attrsMap.placeholder!==e)){var n=i.children;if(e=l||e.trim()?bi(i)?e:Nl(e):r&&n.length?" ":""){var o;!p&&" "!==e&&(o=Bt(e,fl))?n.push({type:2,expression:o.expression,tokens:o.tokens,text:e}):" "===e&&n.length&&" "===n[n.length-1].text||n.push({type:3,text:e})}}},comment:function(e){i.children.push({type:3,text:e,isComment:!0})}}),t}function Yt(e){null!=No(e,"v-pre")&&(e.pre=!0)}function Zt(e){var n=e.attrsList.length;if(n)for(var o=e.attrs=new Array(n),t=0;t<n;t++)o[t]={name:e.attrsList[t].name,value:JSON.stringify(e.attrsList[t].value)};else e.pre||(e.plain=!0)}function Qt(e,n){ei(e),e.plain=!e.key&&!e.attrsList.length,ni(e),si(e),ci(e);for(var o=0;o<ul.length;o++)e=ul[o](e,n)||e;mi(e)}function ei(e){var n=Do(e,"key");n&&(e.key=n)}function ni(e){var n=Do(e,"ref");n&&(e.ref=n,e.refInFor=di(e))}function oi(e){var n;if(n=No(e,"v-for")){var o=ti(n);o&&k(e,o)}}function ti(e){var n=e.match(El);if(n){var o={};o.for=n[2].trim();var t=n[1].trim().replace(Pl,""),i=t.match(Ml);return i?(o.alias=t.replace(Ml,""),o.iterator1=i[1].trim(),i[2]&&(o.iterator2=i[2].trim())):o.alias=t,o}}function ii(e){var n=No(e,"v-if");if(n)e.if=n,pi(e,{exp:n,block:e});else{null!=No(e,"v-else")&&(e.else=!0);var o=No(e,"v-else-if");o&&(e.elseif=o)}}function ai(e,n){var o=ri(n.children);o&&o.if&&pi(o,{exp:e.elseif,block:e})}function ri(e){for(var n=e.length;n--;){if(1===e[n].type)return e[n];e.pop()}}function pi(e,n){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(n)}function li(e){null!=No(e,"v-once")&&(e.once=!0)}function si(e){if("slot"===e.tag)e.slotName=Do(e,"name");else{var n;"template"===e.tag?(n=No(e,"scope"),e.slotScope=n||No(e,"slot-scope")):(n=No(e,"slot-scope"))&&(e.slotScope=n);var o=Do(e,"slot");o&&(e.slotTarget='""'===o?'"default"':o,"template"===e.tag||e.slotScope||Mo(e,"slot",o))}}function ci(e){var n;(n=Do(e,"is"))&&(e.component=n),null!=No(e,"inline-template")&&(e.inlineTemplate=!0)}function mi(e){var n,o,t,i,a,r,p,l=e.attrsList;for(n=0,o=l.length;n<o;n++)if(t=i=l[n].name,a=l[n].value,Sl.test(t))if(e.hasBindings=!0,r=fi(t),r&&(t=t.replace(Dl,"")),Ll.test(t))t=t.replace(Ll,""),a=Oo(a),p=!1,r&&(r.prop&&(p=!0,"innerHtml"===(t=fa(t))&&(t="innerHTML")),r.camel&&(t=fa(t)),r.sync&&Lo(e,"update:"+fa(t),Uo(a,"$event"))),p||!e.component&&vl(e.tag,e.attrsMap.type,t)?Eo(e,t,a):Mo(e,t,a);else if(Tl.test(t))t=t.replace(Tl,""),Lo(e,t,a,r,!1,dl);else{t=t.replace(Sl,"");var s=t.match(Il),c=s&&s[1];c&&(t=t.slice(0,-(c.length+1))),Io(e,t,i,a,c,r)}else{Mo(e,t,JSON.stringify(a)),!e.component&&"muted"===t&&vl(e.tag,e.attrsMap.type,t)&&Eo(e,t,"true")}}function di(e){for(var n=e;n;){if(void 0!==n.for)return!0;n=n.parent}return!1}function fi(e){var n=e.match(Dl);if(n){var o={};return n.forEach(function(e){o[e.slice(1)]=!0}),o}}function ui(e){for(var n={},o=0,t=e.length;o<t;o++)n[e[o].name]=e[o].value;return n}function bi(e){return"script"===e.tag||"style"===e.tag}function hi(e){return"style"===e.tag||"script"===e.tag&&(!e.attrsMap.type||"text/javascript"===e.attrsMap.type)}function gi(e){for(var n=[],o=0;o<e.length;o++){var t=e[o];Rl.test(t.name)||(t.name=t.name.replace(Ul,""),n.push(t))}return n}function vi(e,n){if("input"===e.tag){var o=e.attrsMap;if(!o["v-model"])return;var t;if((o[":type"]||o["v-bind:type"])&&(t=Do(e,"type")),o.type||t||!o["v-bind"]||(t="("+o["v-bind"]+").type"),t){var i=No(e,"v-if",!0),a=i?"&&("+i+")":"",r=null!=No(e,"v-else",!0),p=No(e,"v-else-if",!0),l=xi(e);oi(l),Po(l,"type","checkbox"),Qt(l,n),l.processed=!0,l.if="("+t+")==='checkbox'"+a,pi(l,{exp:l.if,block:l});var s=xi(e);No(s,"v-for",!0),Po(s,"type","radio"),Qt(s,n),pi(l,{exp:"("+t+")==='radio'"+a,block:s});var c=xi(e);return No(c,"v-for",!0),Po(c,":type",t),Qt(c,n),pi(l,{exp:i,block:c}),r?l.else=!0:p&&(l.elseif=p),l}}}function xi(e){return Jt(e.tag,e.attrsList.slice(),e.parent)}function wi(e,n){n.value&&Eo(e,"textContent","_s("+n.value+")")}function ki(e,n){n.value&&Eo(e,"innerHTML","_s("+n.value+")")}function yi(e,n){e&&(wl=Gl(n.staticKeys||""),kl=n.isReservedTag||va,Ci(e),$i(e,!1))}function _i(e){return u("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(e?","+e:""))}function Ci(e){if(e.static=zi(e),1===e.type){if(!kl(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,o=e.children.length;n<o;n++){var t=e.children[n];Ci(t),t.static||(e.static=!1)}if(e.ifConditions)for(var i=1,a=e.ifConditions.length;i<a;i++){var r=e.ifConditions[i].block;Ci(r),r.static||(e.static=!1)}}}function $i(e,n){if(1===e.type){if((e.static||e.once)&&(e.staticInFor=n),e.static&&e.children.length&&(1!==e.children.length||3!==e.children[0].type))return void(e.staticRoot=!0);if(e.staticRoot=!1,e.children)for(var o=0,t=e.children.length;o<t;o++)$i(e.children[o],n||!!e.for);if(e.ifConditions)for(var i=1,a=e.ifConditions.length;i<a;i++)$i(e.ifConditions[i].block,n)}}function zi(e){return 2!==e.type&&(3===e.type||!(!e.pre&&(e.hasBindings||e.if||e.for||sa(e.tag)||!kl(e.tag)||ji(e)||!Object.keys(e).every(wl))))}function ji(e){for(;e.parent;){if(e=e.parent,"template"!==e.tag)return!1;if(e.for)return!0}return!1}function Oi(e,n,o){var t=n?"nativeOn:{":"on:{";for(var i in e)t+='"'+i+'":'+Ai(i,e[i])+",";return t.slice(0,-1)+"}"}function Ai(e,n){if(!n)return"function(){}";if(Array.isArray(n))return"["+n.map(function(n){return Ai(e,n)}).join(",")+"]";var o=Vl.test(n.value),t=Kl.test(n.value);if(n.modifiers){var i="",a="",r=[];for(var p in n.modifiers)if(Yl[p])a+=Yl[p],Wl[p]&&r.push(p);else if("exact"===p){var l=n.modifiers;a+=Xl(["ctrl","shift","alt","meta"].filter(function(e){return!l[e]}).map(function(e){return"$event."+e+"Key"}).join("||"))}else r.push(p);r.length&&(i+=Ti(r)),a&&(i+=a);return"function($event){"+i+(o?"return "+n.value+"($event)":t?"return ("+n.value+")($event)":n.value)+"}"}return o||t?n.value:"function($event){"+n.value+"}"}function Ti(e){return"if(!('button' in $event)&&"+e.map(Si).join("&&")+")return null;"}function Si(e){var n=parseInt(e,10);if(n)return"$event.keyCode!=="+n;var o=Wl[e],t=Jl[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(o)+",$event.key,"+JSON.stringify(t)+")"}function Ei(e,n){e.wrapListeners=function(e){return"_g("+e+","+n.value+")"}}function Mi(e,n){e.wrapData=function(o){return"_b("+o+",'"+e.tag+"',"+n.value+","+(n.modifiers&&n.modifiers.prop?"true":"false")+(n.modifiers&&n.modifiers.sync?",true":"")+")"}}function Pi(e,n){var o=new Ql(n);return{render:"with(this){return "+(e?Ii(e,o):'_c("div")')+"}",staticRenderFns:o.staticRenderFns}}function Ii(e,n){if(e.staticRoot&&!e.staticProcessed)return Li(e,n);if(e.once&&!e.onceProcessed)return Di(e,n);if(e.for&&!e.forProcessed)return Ui(e,n);if(e.if&&!e.ifProcessed)return Ni(e,n);if("template"!==e.tag||e.slotTarget){if("slot"===e.tag)return Qi(e,n);var o;if(e.component)o=ea(e.component,e,n);else{var t=e.plain?void 0:qi(e,n),i=e.inlineTemplate?null:Vi(e,n,!0);o="_c('"+e.tag+"'"+(t?","+t:"")+(i?","+i:"")+")"}for(var a=0;a<n.transforms.length;a++)o=n.transforms[a](e,o);return o}return Vi(e,n)||"void 0"}function Li(e,n){return e.staticProcessed=!0,n.staticRenderFns.push("with(this){return "+Ii(e,n)+"}"),"_m("+(n.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function Di(e,n){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Ni(e,n);if(e.staticInFor){for(var o="",t=e.parent;t;){if(t.for){o=t.key;break}t=t.parent}return o?"_o("+Ii(e,n)+","+n.onceId+++","+o+")":Ii(e,n)}return Li(e,n)}function Ni(e,n,o,t){return e.ifProcessed=!0,Ri(e.ifConditions.slice(),n,o,t)}function Ri(e,n,o,t){function i(e){return o?o(e,n):e.once?Di(e,n):Ii(e,n)}if(!e.length)return t||"_e()";var a=e.shift();return a.exp?"("+a.exp+")?"+i(a.block)+":"+Ri(e,n,o,t):""+i(a.block)}function Ui(e,n,o,t){var i=e.for,a=e.alias,r=e.iterator1?","+e.iterator1:"",p=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,(t||"_l")+"(("+i+"),function("+a+r+p+"){return "+(o||Ii)(e,n)+"})"}function qi(e,n){var o="{",t=Bi(e,n);t&&(o+=t+","),e.key&&(o+="key:"+e.key+","),e.ref&&(o+="ref:"+e.ref+","),e.refInFor&&(o+="refInFor:true,"),e.pre&&(o+="pre:true,"),e.component&&(o+='tag:"'+e.tag+'",');for(var i=0;i<n.dataGenFns.length;i++)o+=n.dataGenFns[i](e);if(e.attrs&&(o+="attrs:{"+na(e.attrs)+"},"),e.props&&(o+="domProps:{"+na(e.props)+"},"),e.events&&(o+=Oi(e.events,!1,n.warn)+","),e.nativeEvents&&(o+=Oi(e.nativeEvents,!0,n.warn)+","),e.slotTarget&&!e.slotScope&&(o+="slot:"+e.slotTarget+","),e.scopedSlots&&(o+=Hi(e.scopedSlots,n)+","),e.model&&(o+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var a=Fi(e,n);a&&(o+=a+",")}return o=o.replace(/,$/,"")+"}",e.wrapData&&(o=e.wrapData(o)),e.wrapListeners&&(o=e.wrapListeners(o)),o}function Bi(e,n){var o=e.directives;if(o){var t,i,a,r,p="directives:[",l=!1;for(t=0,i=o.length;t<i;t++){a=o[t],r=!0;var s=n.directives[a.name];s&&(r=!!s(e,a,n.warn)),r&&(l=!0,p+='{name:"'+a.name+'",rawName:"'+a.rawName+'"'+(a.value?",value:("+a.value+"),expression:"+JSON.stringify(a.value):"")+(a.arg?',arg:"'+a.arg+'"':"")+(a.modifiers?",modifiers:"+JSON.stringify(a.modifiers):"")+"},")}return l?p.slice(0,-1)+"]":void 0}}function Fi(e,n){var o=e.children[0];if(1===o.type){var t=Pi(o,n.options);return"inlineTemplate:{render:function(){"+t.render+"},staticRenderFns:["+t.staticRenderFns.map(function(e){return"function(){"+e+"}"}).join(",")+"]}"}}function Hi(e,n){return"scopedSlots:_u(["+Object.keys(e).map(function(o){return Gi(o,e[o],n)}).join(",")+"])"}function Gi(e,n,o){return n.for&&!n.forProcessed?Ki(e,n,o):"{key:"+e+",fn:function("+String(n.slotScope)+"){return "+("template"===n.tag?n.if?n.if+"?"+(Vi(n,o)||"undefined")+":undefined":Vi(n,o)||"undefined":Ii(n,o))+"}}"}function Ki(e,n,o){var t=n.for,i=n.alias,a=n.iterator1?","+n.iterator1:"",r=n.iterator2?","+n.iterator2:"";return n.forProcessed=!0,"_l(("+t+"),function("+i+a+r+"){return "+Gi(e,n,o)+"})"}function Vi(e,n,o,t,i){var a=e.children;if(a.length){var r=a[0];if(1===a.length&&r.for&&"template"!==r.tag&&"slot"!==r.tag)return(t||Ii)(r,n);var p=o?Wi(a,n.maybeComponent):0,l=i||Xi;return"["+a.map(function(e){return l(e,n)}).join(",")+"]"+(p?","+p:"")}}function Wi(e,n){for(var o=0,t=0;t<e.length;t++){var i=e[t];if(1===i.type){if(Ji(i)||i.ifConditions&&i.ifConditions.some(function(e){return Ji(e.block)})){o=2;break}(n(i)||i.ifConditions&&i.ifConditions.some(function(e){return n(e.block)}))&&(o=1)}}return o}function Ji(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function Xi(e,n){return 1===e.type?Ii(e,n):3===e.type&&e.isComment?Zi(e):Yi(e)}function Yi(e){return"_v("+(2===e.type?e.expression:oa(JSON.stringify(e.text)))+")"}function Zi(e){return"_e("+JSON.stringify(e.text)+")"}function Qi(e,n){var o=e.slotName||'"default"',t=Vi(e,n),i="_t("+o+(t?","+t:""),a=e.attrs&&"{"+e.attrs.map(function(e){return fa(e.name)+":"+e.value}).join(",")+"}",r=e.attrsMap["v-bind"];return!a&&!r||t||(i+=",null"),a&&(i+=","+a),r&&(i+=(a?"":",null")+","+r),i+")"}function ea(e,n,o){var t=n.inlineTemplate?null:Vi(n,o,!0);return"_c("+e+","+qi(n,o)+(t?","+t:"")+")"}function na(e){for(var n="",o=0;o<e.length;o++){var t=e[o];n+='"'+t.name+'":'+oa(t.value)+","}return n.slice(0,-1)}function oa(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function ta(e,n){try{return new Function(e)}catch(o){return n.push({err:o,code:e}),_}}function ia(e){var n=Object.create(null);return function(o,t,i){t=k({},t);t.warn;delete t.warn;var a=t.delimiters?String(t.delimiters)+o:o;if(n[a])return n[a];var r=e(o,t),p={},l=[];return p.render=ta(r.render,l),p.staticRenderFns=r.staticRenderFns.map(function(e){return ta(e,l)}),n[a]=p}}function aa(e){return yl=yl||document.createElement("div"),yl.innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',yl.innerHTML.indexOf(" ")>0}function ra(e){if(e.outerHTML)return e.outerHTML;var n=document.createElement("div");return n.appendChild(e.cloneNode(!0)),n.innerHTML}/*!
|
2 |
+
* Vue.js v2.5.17
|
3 |
+
* (c) 2014-2018 Evan You
|
4 |
+
* Released under the MIT License.
|
5 |
+
*/
|
6 |
+
var pa=Object.freeze({}),la=Object.prototype.toString,sa=u("slot,component",!0),ca=u("key,ref,slot,slot-scope,is"),ma=Object.prototype.hasOwnProperty,da=/-(\w)/g,fa=g(function(e){return e.replace(da,function(e,n){return n?n.toUpperCase():""})}),ua=g(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),ba=/\B([A-Z])/g,ha=g(function(e){return e.replace(ba,"-$1").toLowerCase()}),ga=Function.prototype.bind?x:v,va=function(e,n,o){return!1},xa=function(e){return e},wa="data-server-rendered",ka=["component","directive","filter"],ya=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured"],_a={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:va,isReservedAttr:va,isUnknownElement:va,getTagNamespace:_,parsePlatformTagName:xa,mustUseProp:va,_lifecycleHooks:ya},Ca=/[^\w.$]/,$a="__proto__"in{},za="undefined"!=typeof window,ja="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,Oa=ja&&WXEnvironment.platform.toLowerCase(),Aa=za&&window.navigator.userAgent.toLowerCase(),Ta=Aa&&/msie|trident/.test(Aa),Sa=Aa&&Aa.indexOf("msie 9.0")>0,Ea=Aa&&Aa.indexOf("edge/")>0,Ma=(Aa&&Aa.indexOf("android"),Aa&&/iphone|ipad|ipod|ios/.test(Aa)||"ios"===Oa),Pa=(Aa&&/chrome\/\d+/.test(Aa),{}.watch),Ia=!1;if(za)try{var La={};Object.defineProperty(La,"passive",{get:function(){Ia=!0}}),window.addEventListener("test-passive",null,La)}catch(e){}var Da,Na,Ra=function(){return void 0===Da&&(Da=!za&&!ja&&void 0!==e&&"server"===e.process.env.VUE_ENV),Da},Ua=za&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,qa="undefined"!=typeof Symbol&&T(Symbol)&&"undefined"!=typeof Reflect&&T(Reflect.ownKeys);Na="undefined"!=typeof Set&&T(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var Ba=_,Fa=0,Ha=function(){this.id=Fa++,this.subs=[]};Ha.prototype.addSub=function(e){this.subs.push(e)},Ha.prototype.removeSub=function(e){b(this.subs,e)},Ha.prototype.depend=function(){Ha.target&&Ha.target.addDep(this)},Ha.prototype.notify=function(){for(var e=this.subs.slice(),n=0,o=e.length;n<o;n++)e[n].update()},Ha.target=null;var Ga=[],Ka=function(e,n,o,t,i,a,r,p){this.tag=e,this.data=n,this.children=o,this.text=t,this.elm=i,this.ns=void 0,this.context=a,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=n&&n.key,this.componentOptions=r,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=p,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},Va={child:{configurable:!0}};Va.child.get=function(){return this.componentInstance},Object.defineProperties(Ka.prototype,Va);var Wa=function(e){void 0===e&&(e="");var n=new Ka;return n.text=e,n.isComment=!0,n},Ja=Array.prototype,Xa=Object.create(Ja);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var n=Ja[e];O(Xa,e,function(){for(var o=[],t=arguments.length;t--;)o[t]=arguments[t];var i,a=n.apply(this,o),r=this.__ob__;switch(e){case"push":case"unshift":i=o;break;case"splice":i=o.slice(2)}return i&&r.observeArray(i),r.dep.notify(),a})});var Ya=Object.getOwnPropertyNames(Xa),Za=!0,Qa=function(e){if(this.value=e,this.dep=new Ha,this.vmCount=0,O(e,"__ob__",this),Array.isArray(e)){($a?L:D)(e,Xa,Ya),this.observeArray(e)}else this.walk(e)};Qa.prototype.walk=function(e){for(var n=Object.keys(e),o=0;o<n.length;o++)R(e,n[o])},Qa.prototype.observeArray=function(e){for(var n=0,o=e.length;n<o;n++)N(e[n])};var er=_a.optionMergeStrategies;er.data=function(e,n,o){return o?H(e,n,o):n&&"function"!=typeof n?e:H(e,n)},ya.forEach(function(e){er[e]=G}),ka.forEach(function(e){er[e+"s"]=K}),er.watch=function(e,n,o,t){if(e===Pa&&(e=void 0),n===Pa&&(n=void 0),!n)return Object.create(e||null);if(!e)return n;var i={};k(i,e);for(var a in n){var r=i[a],p=n[a];r&&!Array.isArray(r)&&(r=[r]),i[a]=r?r.concat(p):Array.isArray(p)?p:[p]}return i},er.props=er.methods=er.inject=er.computed=function(e,n,o,t){if(!e)return n;var i=Object.create(null);return k(i,e),n&&k(i,n),i},er.provide=H;var nr,or,tr=function(e,n){return void 0===n?e:n},ir=[],ar=!1,rr=!1;if(void 0!==o&&T(o))or=function(){o(re)};else if("undefined"==typeof MessageChannel||!T(MessageChannel)&&"[object MessageChannelConstructor]"!==MessageChannel.toString())or=function(){setTimeout(re,0)};else{var pr=new MessageChannel,lr=pr.port2;pr.port1.onmessage=re,or=function(){lr.postMessage(1)}}if("undefined"!=typeof Promise&&T(Promise)){var sr=Promise.resolve();nr=function(){sr.then(re),Ma&&setTimeout(_)}}else nr=or;var cr,mr=new Na,dr=g(function(e){var n="&"===e.charAt(0);e=n?e.slice(1):e;var o="~"===e.charAt(0);e=o?e.slice(1):e;var t="!"===e.charAt(0);return e=t?e.slice(1):e,{name:e,once:o,capture:t,passive:n}}),fr=null,ur=[],br=[],hr={},gr=!1,vr=!1,xr=0,wr=0,kr=function(e,n,o,t,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),t?(this.deep=!!t.deep,this.user=!!t.user,this.lazy=!!t.lazy,this.sync=!!t.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=o,this.id=++wr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Na,this.newDepIds=new Na,this.expression="","function"==typeof n?this.getter=n:(this.getter=A(n),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};kr.prototype.get=function(){S(this);var e,n=this.vm;try{e=this.getter.call(n,n)}catch(e){if(!this.user)throw e;te(e,n,'getter for watcher "'+this.expression+'"')}finally{this.deep&&se(e),E(),this.cleanupDeps()}return e},kr.prototype.addDep=function(e){var n=e.id;this.newDepIds.has(n)||(this.newDepIds.add(n),this.newDeps.push(e),this.depIds.has(n)||e.addSub(this))},kr.prototype.cleanupDeps=function(){for(var e=this,n=this.deps.length;n--;){var o=e.deps[n];e.newDepIds.has(o.id)||o.removeSub(e)}var t=this.depIds;this.depIds=this.newDepIds,this.newDepIds=t,this.newDepIds.clear(),t=this.deps,this.deps=this.newDeps,this.newDeps=t,this.newDeps.length=0},kr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():He(this)},kr.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||l(e)||this.deep){var n=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,n)}catch(e){te(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,n)}}},kr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},kr.prototype.depend=function(){for(var e=this,n=this.deps.length;n--;)e.deps[n].depend()},kr.prototype.teardown=function(){var e=this;if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);for(var n=this.deps.length;n--;)e.deps[n].removeSub(e);this.active=!1}};var yr={enumerable:!0,configurable:!0,get:_,set:_},_r={lazy:!0};gn(vn.prototype);var Cr={init:function(e,n,o,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var i=e;Cr.prepatch(i,i)}else{(e.componentInstance=_n(e,fr,o,t)).$mount(n?e.elm:void 0,n)}},prepatch:function(e,n){var o=n.componentOptions;Pe(n.componentInstance=e.componentInstance,o.propsData,o.listeners,n,o.children)},insert:function(e){var n=e.context,o=e.componentInstance;o._isMounted||(o._isMounted=!0,Ne(o,"mounted")),e.data.keepAlive&&(n._isMounted?Be(o):Le(o,!0))},destroy:function(e){var n=e.componentInstance;n._isDestroyed||(e.data.keepAlive?De(n,!0):n.$destroy())}},$r=Object.keys(Cr),zr=1,jr=2,Or=0;!function(e){e.prototype._init=function(e){var n=this;n._uid=Or++,n._isVue=!0,e&&e._isComponent?Sn(n,e):n.$options=X(En(n.constructor),e||{},n),n._renderProxy=n,n._self=n,Ee(n),$e(n),Tn(n),Ne(n,"beforeCreate"),tn(n),Ke(n),on(n),Ne(n,"created"),n.$options.el&&n.$mount(n.$options.el)}}(In),function(e){var n={};n.get=function(){return this._data};var o={};o.get=function(){return this._props},Object.defineProperty(e.prototype,"$data",n),Object.defineProperty(e.prototype,"$props",o),e.prototype.$set=U,e.prototype.$delete=q,e.prototype.$watch=function(e,n,o){var t=this;if(s(n))return nn(t,e,n,o);o=o||{},o.user=!0;var i=new kr(t,e,n,o);return o.immediate&&n.call(t,i.value),function(){i.teardown()}}}(In),function(e){var n=/^hook:/;e.prototype.$on=function(e,o){var t=this,i=this;if(Array.isArray(e))for(var a=0,r=e.length;a<r;a++)t.$on(e[a],o);else(i._events[e]||(i._events[e]=[])).push(o),n.test(e)&&(i._hasHookEvent=!0);return i},e.prototype.$once=function(e,n){function o(){t.$off(e,o),n.apply(t,arguments)}var t=this;return o.fn=n,t.$on(e,o),t},e.prototype.$off=function(e,n){var o=this,t=this;if(!arguments.length)return t._events=Object.create(null),t;if(Array.isArray(e)){for(var i=0,a=e.length;i<a;i++)o.$off(e[i],n);return t}var r=t._events[e];if(!r)return t;if(!n)return t._events[e]=null,t;if(n)for(var p,l=r.length;l--;)if((p=r[l])===n||p.fn===n){r.splice(l,1);break}return t},e.prototype.$emit=function(e){var n=this,o=n._events[e];if(o){o=o.length>1?w(o):o;for(var t=w(arguments,1),i=0,a=o.length;i<a;i++)try{o[i].apply(n,t)}catch(o){te(o,n,'event handler for "'+e+'"')}}return n}}(In),function(e){e.prototype._update=function(e,n){var o=this;o._isMounted&&Ne(o,"beforeUpdate");var t=o.$el,i=o._vnode,a=fr;fr=o,o._vnode=e,i?o.$el=o.__patch__(i,e):(o.$el=o.__patch__(o.$el,e,n,!1,o.$options._parentElm,o.$options._refElm),o.$options._parentElm=o.$options._refElm=null),fr=a,t&&(t.__vue__=null),o.$el&&(o.$el.__vue__=o),o.$vnode&&o.$parent&&o.$vnode===o.$parent._vnode&&(o.$parent.$el=o.$el)},e.prototype.$forceUpdate=function(){var e=this;e._watcher&&e._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Ne(e,"beforeDestroy"),e._isBeingDestroyed=!0;var n=e.$parent;!n||n._isBeingDestroyed||e.$options.abstract||b(n.$children,e),e._watcher&&e._watcher.teardown();for(var o=e._watchers.length;o--;)e._watchers[o].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Ne(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(In),function(e){gn(e.prototype),e.prototype.$nextTick=function(e){return le(e,this)},e.prototype._render=function(){var e=this,n=e.$options,o=n.render,t=n._parentVnode;t&&(e.$scopedSlots=t.data.scopedSlots||pa),e.$vnode=t;var i;try{i=o.call(e._renderProxy,e.$createElement)}catch(n){te(n,e,"render"),i=e._vnode}return i instanceof Ka||(i=Wa()),i.parent=t,i}}(In);var Ar=[String,RegExp,Array],Tr={name:"keep-alive",abstract:!0,props:{include:Ar,exclude:Ar,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){var e=this;for(var n in e.cache)Gn(e.cache,n,e.keys)},mounted:function(){var e=this;this.$watch("include",function(n){Hn(e,function(e){return Fn(n,e)})}),this.$watch("exclude",function(n){Hn(e,function(e){return!Fn(n,e)})})},render:function(){var e=this.$slots.default,n=Ce(e),o=n&&n.componentOptions;if(o){var t=Bn(o),i=this,a=i.include,r=i.exclude;if(a&&(!t||!Fn(a,t))||r&&t&&Fn(r,t))return n;var p=this,l=p.cache,s=p.keys,c=null==n.key?o.Ctor.cid+(o.tag?"::"+o.tag:""):n.key;l[c]?(n.componentInstance=l[c].componentInstance,b(s,c),s.push(c)):(l[c]=n,s.push(c),this.max&&s.length>parseInt(this.max)&&Gn(l,s[0],s,this._vnode)),n.data.keepAlive=!0}return n||e&&e[0]}},Sr={KeepAlive:Tr};!function(e){var n={};n.get=function(){return _a},Object.defineProperty(e,"config",n),e.util={warn:Ba,extend:k,mergeOptions:X,defineReactive:R},e.set=U,e.delete=q,e.nextTick=le,e.options=Object.create(null),ka.forEach(function(n){e.options[n+"s"]=Object.create(null)}),e.options._base=e,k(e.options.components,Sr),Ln(e),Dn(e),Nn(e),qn(e)}(In),Object.defineProperty(In.prototype,"$isServer",{get:Ra}),Object.defineProperty(In.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(In,"FunctionalRenderContext",{value:vn}),In.version="2.5.17";var Er,Mr,Pr,Ir,Lr,Dr,Nr,Rr,Ur,qr=u("style,class"),Br=u("input,textarea,option,select,progress"),Fr=function(e,n,o){return"value"===o&&Br(e)&&"button"!==n||"selected"===o&&"option"===e||"checked"===o&&"input"===e||"muted"===o&&"video"===e},Hr=u("contenteditable,draggable,spellcheck"),Gr=u("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Kr="http://www.w3.org/1999/xlink",Vr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Wr=function(e){return Vr(e)?e.slice(6,e.length):""},Jr=function(e){return null==e||!1===e},Xr={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Yr=u("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Zr=u("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Qr=function(e){return"pre"===e},ep=function(e){return Yr(e)||Zr(e)},np=Object.create(null),op=u("text,number,password,search,email,tel,url"),tp=Object.freeze({createElement:oo,createElementNS:to,createTextNode:io,createComment:ao,insertBefore:ro,removeChild:po,appendChild:lo,parentNode:so,nextSibling:co,tagName:mo,setTextContent:fo,setStyleScope:uo}),ip={create:function(e,n){bo(n)},update:function(e,n){e.data.ref!==n.data.ref&&(bo(e,!0),bo(n))},destroy:function(e){bo(e,!0)}},ap=new Ka("",{},[]),rp=["create","activate","update","remove","destroy"],pp={create:xo,update:xo,destroy:function(e){xo(e,ap)}},lp=Object.create(null),sp=[ip,pp],cp={create:Co,update:Co},mp={create:jo,update:jo},dp=/[\w).+\-_$\]]/,fp="__r",up="__c",bp={create:ot,update:ot},hp={create:tt,update:tt},gp=g(function(e){var n={},o=/;(?![^(]*\))/g,t=/:(.+)/;return e.split(o).forEach(function(e){if(e){var o=e.split(t);o.length>1&&(n[o[0].trim()]=o[1].trim())}}),n}),vp=/^--/,xp=/\s*!important$/,wp=function(e,n,o){if(vp.test(n))e.style.setProperty(n,o);else if(xp.test(o))e.style.setProperty(n,o.replace(xp,""),"important");else{var t=yp(n);if(Array.isArray(o))for(var i=0,a=o.length;i<a;i++)e.style[t]=o[i];else e.style[t]=o}},kp=["Webkit","Moz","ms"],yp=g(function(e){if(Ur=Ur||document.createElement("div").style,"filter"!==(e=fa(e))&&e in Ur)return e;for(var n=e.charAt(0).toUpperCase()+e.slice(1),o=0;o<kp.length;o++){var t=kp[o]+n;if(t in Ur)return t}}),_p={create:ct,update:ct},Cp=g(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),$p=za&&!Sa,zp="transition",jp="animation",Op="transition",Ap="transitionend",Tp="animation",Sp="animationend";$p&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Op="WebkitTransition",Ap="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Tp="WebkitAnimation",Sp="webkitAnimationEnd"));var Ep=za?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()},Mp=/\b(transform|all)(,|$)/,Pp=za?{create:$t,activate:$t,remove:function(e,n){!0!==e.data.show?yt(e,n):n()}}:{},Ip=[cp,mp,bp,hp,_p,Pp],Lp=Ip.concat(sp),Dp=function(e){function n(e){return new Ka(S.tagName(e).toLowerCase(),{},[],void 0,e)}function o(e,n){function o(){0==--o.listeners&&r(e)}return o.listeners=n,o}function r(e){var n=S.parentNode(e);i(n)&&S.removeChild(n,e)}function l(e,n,o,t,r,p,l){if(i(e.elm)&&i(p)&&(e=p[l]=P(e)),e.isRootInsert=!r,!s(e,n,o,t)){var c=e.data,m=e.children,u=e.tag;i(u)?(e.elm=e.ns?S.createElementNS(e.ns,u):S.createElement(u,e),g(e),f(e,m,n),i(c)&&h(e,n),d(o,e.elm,t)):a(e.isComment)?(e.elm=S.createComment(e.text),d(o,e.elm,t)):(e.elm=S.createTextNode(e.text),d(o,e.elm,t))}}function s(e,n,o,t){var r=e.data;if(i(r)){var p=i(e.componentInstance)&&r.keepAlive;if(i(r=r.hook)&&i(r=r.init)&&r(e,!1,o,t),i(e.componentInstance))return c(e,n),a(p)&&m(e,n,o,t),!0}}function c(e,n){i(e.data.pendingInsert)&&(n.push.apply(n,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,b(e)?(h(e,n),g(e)):(bo(e),n.push(e))}function m(e,n,o,t){for(var a,r=e;r.componentInstance;)if(r=r.componentInstance._vnode,i(a=r.data)&&i(a=a.transition)){for(a=0;a<A.activate.length;++a)A.activate[a](ap,r);n.push(r);break}d(o,e.elm,t)}function d(e,n,o){i(e)&&(i(o)?o.parentNode===e&&S.insertBefore(e,n,o):S.appendChild(e,n))}function f(e,n,o){if(Array.isArray(n))for(var t=0;t<n.length;++t)l(n[t],o,e.elm,null,!0,n,t);else p(e.text)&&S.appendChild(e.elm,S.createTextNode(String(e.text)))}function b(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return i(e.tag)}function h(e,n){for(var o=0;o<A.create.length;++o)A.create[o](ap,e);j=e.data.hook,i(j)&&(i(j.create)&&j.create(ap,e),i(j.insert)&&n.push(e))}function g(e){var n;if(i(n=e.fnScopeId))S.setStyleScope(e.elm,n);else for(var o=e;o;)i(n=o.context)&&i(n=n.$options._scopeId)&&S.setStyleScope(e.elm,n),o=o.parent;i(n=fr)&&n!==e.context&&n!==e.fnContext&&i(n=n.$options._scopeId)&&S.setStyleScope(e.elm,n)}function v(e,n,o,t,i,a){for(;t<=i;++t)l(o[t],a,e,n,!1,o,t)}function x(e){var n,o,t=e.data;if(i(t))for(i(n=t.hook)&&i(n=n.destroy)&&n(e),n=0;n<A.destroy.length;++n)A.destroy[n](e);if(i(n=e.children))for(o=0;o<e.children.length;++o)x(e.children[o])}function w(e,n,o,t){for(;o<=t;++o){var a=n[o];i(a)&&(i(a.tag)?(k(a),x(a)):r(a.elm))}}function k(e,n){if(i(n)||i(e.data)){var t,a=A.remove.length+1;for(i(n)?n.listeners+=a:n=o(e.elm,a),i(t=e.componentInstance)&&i(t=t._vnode)&&i(t.data)&&k(t,n),t=0;t<A.remove.length;++t)A.remove[t](e,n);i(t=e.data.hook)&&i(t=t.remove)?t(e,n):n()}else r(e.elm)}function y(e,n,o,a,r){for(var p,s,c,m,d=0,f=0,u=n.length-1,b=n[0],h=n[u],g=o.length-1,x=o[0],k=o[g],y=!r;d<=u&&f<=g;)t(b)?b=n[++d]:t(h)?h=n[--u]:ho(b,x)?(C(b,x,a),b=n[++d],x=o[++f]):ho(h,k)?(C(h,k,a),h=n[--u],k=o[--g]):ho(b,k)?(C(b,k,a),y&&S.insertBefore(e,b.elm,S.nextSibling(h.elm)),b=n[++d],k=o[--g]):ho(h,x)?(C(h,x,a),y&&S.insertBefore(e,h.elm,b.elm),h=n[--u],x=o[++f]):(t(p)&&(p=vo(n,d,u)),s=i(x.key)?p[x.key]:_(x,n,d,u),t(s)?l(x,a,e,b.elm,!1,o,f):(c=n[s],ho(c,x)?(C(c,x,a),n[s]=void 0,y&&S.insertBefore(e,c.elm,b.elm)):l(x,a,e,b.elm,!1,o,f)),x=o[++f]);d>u?(m=t(o[g+1])?null:o[g+1].elm,v(e,m,o,f,g,a)):f>g&&w(e,n,d,u)}function _(e,n,o,t){for(var a=o;a<t;a++){var r=n[a];if(i(r)&&ho(e,r))return a}}function C(e,n,o,r){if(e!==n){var p=n.elm=e.elm;if(a(e.isAsyncPlaceholder))return void(i(n.asyncFactory.resolved)?z(e.elm,n,o):n.isAsyncPlaceholder=!0);if(a(n.isStatic)&&a(e.isStatic)&&n.key===e.key&&(a(n.isCloned)||a(n.isOnce)))return void(n.componentInstance=e.componentInstance);var l,s=n.data;i(s)&&i(l=s.hook)&&i(l=l.prepatch)&&l(e,n);var c=e.children,m=n.children;if(i(s)&&b(n)){for(l=0;l<A.update.length;++l)A.update[l](e,n);i(l=s.hook)&&i(l=l.update)&&l(e,n)}t(n.text)?i(c)&&i(m)?c!==m&&y(p,c,m,o,r):i(m)?(i(e.text)&&S.setTextContent(p,""),v(p,null,m,0,m.length-1,o)):i(c)?w(p,c,0,c.length-1):i(e.text)&&S.setTextContent(p,""):e.text!==n.text&&S.setTextContent(p,n.text),i(s)&&i(l=s.hook)&&i(l=l.postpatch)&&l(e,n)}}function $(e,n,o){if(a(o)&&i(e.parent))e.parent.data.pendingInsert=n;else for(var t=0;t<n.length;++t)n[t].data.hook.insert(n[t])}function z(e,n,o,t){var r,p=n.tag,l=n.data,s=n.children;if(t=t||l&&l.pre,n.elm=e,a(n.isComment)&&i(n.asyncFactory))return n.isAsyncPlaceholder=!0,!0;if(i(l)&&(i(r=l.hook)&&i(r=r.init)&&r(n,!0),i(r=n.componentInstance)))return c(n,o),!0;if(i(p)){if(i(s))if(e.hasChildNodes())if(i(r=l)&&i(r=r.domProps)&&i(r=r.innerHTML)){if(r!==e.innerHTML)return!1}else{for(var m=!0,d=e.firstChild,u=0;u<s.length;u++){if(!d||!z(d,s[u],o,t)){m=!1;break}d=d.nextSibling}if(!m||d)return!1}else f(n,s,o);if(i(l)){var b=!1;for(var g in l)if(!E(g)){b=!0,h(n,o);break}!b&&l.class&&se(l.class)}}else e.data!==n.text&&(e.data=n.text);return!0}var j,O,A={},T=e.modules,S=e.nodeOps;for(j=0;j<rp.length;++j)for(A[rp[j]]=[],O=0;O<T.length;++O)i(T[O][rp[j]])&&A[rp[j]].push(T[O][rp[j]]);var E=u("attrs,class,staticClass,staticStyle,key");return function(e,o,r,p,s,c){if(t(o))return void(i(e)&&x(e));var m=!1,d=[];if(t(e))m=!0,l(o,d,s,c);else{var f=i(e.nodeType);if(!f&&ho(e,o))C(e,o,d,p);else{if(f){if(1===e.nodeType&&e.hasAttribute(wa)&&(e.removeAttribute(wa),r=!0),a(r)&&z(e,o,d))return $(o,d,!0),e;e=n(e)}var u=e.elm,h=S.parentNode(u);if(l(o,d,u._leaveCb?null:h,S.nextSibling(u)),i(o.parent))for(var g=o.parent,v=b(o);g;){for(var k=0;k<A.destroy.length;++k)A.destroy[k](g);if(g.elm=o.elm,v){for(var y=0;y<A.create.length;++y)A.create[y](ap,g);var _=g.data.hook.insert;if(_.merged)for(var j=1;j<_.fns.length;j++)_.fns[j]()}else bo(g);g=g.parent}i(h)?w(h,[e],0,0):i(e.tag)&&x(e)}}return $(o,d,m),o.elm}}({nodeOps:tp,modules:Lp});Sa&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&Et(e,"input")});var Np={inserted:function(e,n,o,t){"select"===o.tag?(t.elm&&!t.elm._vOptions?fe(o,"postpatch",function(){Np.componentUpdated(e,n,o)}):zt(e,n,o.context),e._vOptions=[].map.call(e.options,At)):("textarea"===o.tag||op(e.type))&&(e._vModifiers=n.modifiers,n.modifiers.lazy||(e.addEventListener("compositionstart",Tt),e.addEventListener("compositionend",St),e.addEventListener("change",St),Sa&&(e.vmodel=!0)))},componentUpdated:function(e,n,o){if("select"===o.tag){zt(e,n,o.context);var t=e._vOptions,i=e._vOptions=[].map.call(e.options,At);if(i.some(function(e,n){return!C(e,t[n])})){(e.multiple?n.value.some(function(e){return Ot(e,i)}):n.value!==n.oldValue&&Ot(n.value,i))&&Et(e,"change")}}}},Rp={bind:function(e,n,o){var t=n.value;o=Mt(o);var i=o.data&&o.data.transition,a=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;t&&i?(o.data.show=!0,kt(o,function(){e.style.display=a})):e.style.display=t?a:"none"},update:function(e,n,o){var t=n.value;!t!=!n.oldValue&&(o=Mt(o),o.data&&o.data.transition?(o.data.show=!0,t?kt(o,function(){e.style.display=e.__vOriginalDisplay}):yt(o,function(){e.style.display="none"})):e.style.display=t?e.__vOriginalDisplay:"none")},unbind:function(e,n,o,t,i){i||(e.style.display=e.__vOriginalDisplay)}},Up={model:Np,show:Rp},qp={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Bp={name:"transition",props:qp,abstract:!0,render:function(e){var n=this,o=this.$slots.default;if(o&&(o=o.filter(function(e){return e.tag||_e(e)}),o.length)){var t=this.mode,i=o[0];if(Dt(this.$vnode))return i;var a=Pt(i);if(!a)return i;if(this._leaving)return Lt(e,i);var r="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?r+"comment":r+a.tag:p(a.key)?0===String(a.key).indexOf(r)?a.key:r+a.key:a.key;var l=(a.data||(a.data={})).transition=It(this),s=this._vnode,c=Pt(s);if(a.data.directives&&a.data.directives.some(function(e){return"show"===e.name})&&(a.data.show=!0),c&&c.data&&!Nt(a,c)&&!_e(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var m=c.data.transition=k({},l);if("out-in"===t)return this._leaving=!0,fe(m,"afterLeave",function(){n._leaving=!1,n.$forceUpdate()}),Lt(e,i);if("in-out"===t){if(_e(a))return s;var d,f=function(){d()};fe(l,"afterEnter",f),fe(l,"enterCancelled",f),fe(m,"delayLeave",function(e){d=e})}}return i}}},Fp=k({tag:String,moveClass:String},qp);delete Fp.mode;var Hp={props:Fp,render:function(e){for(var n=this.tag||this.$vnode.data.tag||"span",o=Object.create(null),t=this.prevChildren=this.children,i=this.$slots.default||[],a=this.children=[],r=It(this),p=0;p<i.length;p++){var l=i[p];if(l.tag)if(null!=l.key&&0!==String(l.key).indexOf("__vlist"))a.push(l),o[l.key]=l,(l.data||(l.data={})).transition=r;else;}if(t){for(var s=[],c=[],m=0;m<t.length;m++){var d=t[m];d.data.transition=r,d.data.pos=d.elm.getBoundingClientRect(),o[d.key]?s.push(d):c.push(d)}this.kept=e(n,null,s),this.removed=c}return e(n,null,a)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,n=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,n)&&(e.forEach(Rt),e.forEach(Ut),e.forEach(qt),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var o=e.elm,t=o.style;bt(o,n),t.transform=t.WebkitTransform=t.transitionDuration="",o.addEventListener(Ap,o._moveCb=function e(t){t&&!/transform$/.test(t.propertyName)||(o.removeEventListener(Ap,e),o._moveCb=null,ht(o,n))})}}))},methods:{hasMove:function(e,n){if(!$p)return!1;if(this._hasMove)return this._hasMove;var o=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){dt(o,e)}),mt(o,n),o.style.display="none",this.$el.appendChild(o);var t=vt(o);return this.$el.removeChild(o),this._hasMove=t.hasTransform}}},Gp={Transition:Bp,TransitionGroup:Hp};In.config.mustUseProp=Fr,In.config.isReservedTag=ep,In.config.isReservedAttr=qr,In.config.getTagNamespace=Qn,In.config.isUnknownElement=eo,k(In.options.directives,Up),k(In.options.components,Gp),In.prototype.__patch__=za?Dp:_,In.prototype.$mount=function(e,n){return e=e&&za?no(e):void 0,Me(this,e,n)},za&&setTimeout(function(){_a.devtools&&Ua&&Ua.emit("init",In)},0);var Kp,Vp=/\{\{((?:.|\n)+?)\}\}/g,Wp=/[-.*+?^${}()|[\]\/\\]/g,Jp=g(function(e){var n=e[0].replace(Wp,"\\$&"),o=e[1].replace(Wp,"\\$&");return new RegExp(n+"((?:.|\\n)+?)"+o,"g")}),Xp={staticKeys:["staticClass"],transformNode:Ft,genData:Ht},Yp={staticKeys:["staticStyle"],transformNode:Gt,genData:Kt},Zp={decode:function(e){return Kp=Kp||document.createElement("div"),Kp.innerHTML=e,Kp.textContent}},Qp=u("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),el=u("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),nl=u("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),ol=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,tl="[a-zA-Z_][\\w\\-\\.]*",il="((?:"+tl+"\\:)?"+tl+")",al=new RegExp("^<"+il),rl=/^\s*(\/?)>/,pl=new RegExp("^<\\/"+il+"[^>]*>"),ll=/^<!DOCTYPE [^>]+>/i,sl=/^<!\--/,cl=/^<!\[/,ml=!1;"x".replace(/x(.)?/g,function(e,n){ml=""===n});var dl,fl,ul,bl,hl,gl,vl,xl,wl,kl,yl,_l=u("script,style,textarea",!0),Cl={},$l={"<":"<",">":">",""":'"',"&":"&"," ":"\n","	":"\t"},zl=/&(?:lt|gt|quot|amp);/g,jl=/&(?:lt|gt|quot|amp|#10|#9);/g,Ol=u("pre,textarea",!0),Al=function(e,n){return e&&Ol(e)&&"\n"===n[0]},Tl=/^@|^v-on:/,Sl=/^v-|^@|^:/,El=/([^]*?)\s+(?:in|of)\s+([^]*)/,Ml=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Pl=/^\(|\)$/g,Il=/:(.*)$/,Ll=/^:|^v-bind:/,Dl=/\.[^.]+/g,Nl=g(Zp.decode),Rl=/^xmlns:NS\d+/,Ul=/^NS\d+:/,ql={preTransformNode:vi},Bl=[Xp,Yp,ql],Fl={model:Vo,text:wi,html:ki},Hl={expectHTML:!0,modules:Bl,directives:Fl,isPreTag:Qr,isUnaryTag:Qp,mustUseProp:Fr,canBeLeftOpenTag:el,isReservedTag:ep,getTagNamespace:Qn,staticKeys:function(e){return e.reduce(function(e,n){return e.concat(n.staticKeys||[])},[]).join(",")}(Bl)},Gl=g(_i),Kl=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,Vl=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Wl={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Jl={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},Xl=function(e){return"if("+e+")return null;"},Yl={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Xl("$event.target !== $event.currentTarget"),ctrl:Xl("!$event.ctrlKey"),shift:Xl("!$event.shiftKey"),alt:Xl("!$event.altKey"),meta:Xl("!$event.metaKey"),left:Xl("'button' in $event && $event.button !== 0"),middle:Xl("'button' in $event && $event.button !== 1"),right:Xl("'button' in $event && $event.button !== 2")},Zl={on:Ei,bind:Mi,cloak:_},Ql=function(e){this.options=e,this.warn=e.warn||To,this.transforms=So(e.modules,"transformCode"),this.dataGenFns=So(e.modules,"genData"),this.directives=k(k({},Zl),e.directives);var n=e.isReservedTag||va;this.maybeComponent=function(e){return!n(e.tag)},this.onceId=0,this.staticRenderFns=[]},es=(new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)"),function(e){return function(n){function o(o,t){var i=Object.create(n),a=[],r=[];if(i.warn=function(e,n){(n?r:a).push(e)},t){t.modules&&(i.modules=(n.modules||[]).concat(t.modules)),t.directives&&(i.directives=k(Object.create(n.directives||null),t.directives));for(var p in t)"modules"!==p&&"directives"!==p&&(i[p]=t[p])}var l=e(o,i);return l.errors=a,l.tips=r,l}return{compile:o,compileToFunctions:ia(o)}}}(function(e,n){var o=Xt(e.trim(),n);!1!==n.optimize&&yi(o,n);var t=Pi(o,n);return{ast:o,render:t.render,staticRenderFns:t.staticRenderFns}})),ns=es(Hl),os=ns.compileToFunctions,ts=!!za&&aa(!1),is=!!za&&aa(!0),as=g(function(e){var n=no(e);return n&&n.innerHTML}),rs=In.prototype.$mount;In.prototype.$mount=function(e,n){if((e=e&&no(e))===document.body||e===document.documentElement)return this;var o=this.$options;if(!o.render){var t=o.template;if(t)if("string"==typeof t)"#"===t.charAt(0)&&(t=as(t));else{if(!t.nodeType)return this;t=t.innerHTML}else e&&(t=ra(e));if(t){var i=os(t,{shouldDecodeNewlines:ts,shouldDecodeNewlinesForHref:is,delimiters:o.delimiters,comments:o.comments},this),a=i.render,r=i.staticRenderFns;o.render=a,o.staticRenderFns=r}}return rs.call(this,e,n)},In.compile=os,n.default=In}.call(n,o(3),o(6).setImmediate)},function(e,n){var o;o=function(){return this}();try{o=o||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,n,o){"use strict";function t(e){this.state=pe,this.value=void 0,this.deferred=[];var n=this;try{e(function(e){n.resolve(e)},function(e){n.reject(e)})}catch(e){n.reject(e)}}function i(e,n){e instanceof Promise?this.promise=e:this.promise=new Promise(e.bind(n)),this.context=n}function a(e){var n=e.config,o=e.nextTick;ce=o,be=n.debug||!n.silent}function r(e){"undefined"!=typeof console&&be&&console.warn("[VueResource warn]: "+e)}function p(e){"undefined"!=typeof console&&console.error(e)}function l(e,n){return ce(e,n)}function s(e){return e?e.replace(/^\s*|\s*$/g,""):""}function c(e,n){return e&&void 0===n?e.replace(/\s+$/,""):e&&n?e.replace(new RegExp("["+n+"]+$"),""):e}function m(e){return e?e.toLowerCase():""}function d(e){return e?e.toUpperCase():""}function f(e){return"string"==typeof e}function u(e){return"function"==typeof e}function b(e){return null!==e&&"object"==typeof e}function h(e){return b(e)&&Object.getPrototypeOf(e)==Object.prototype}function g(e){return"undefined"!=typeof Blob&&e instanceof Blob}function v(e){return"undefined"!=typeof FormData&&e instanceof FormData}function x(e,n,o){var t=i.resolve(e);return arguments.length<2?t:t.then(n,o)}function w(e,n,o){return o=o||{},u(o)&&(o=o.call(n)),y(e.bind({$vm:n,$options:o}),e,{$options:o})}function k(e,n){var o,t;if(ge(e))for(o=0;o<e.length;o++)n.call(e[o],e[o],o);else if(b(e))for(t in e)de.call(e,t)&&n.call(e[t],e[t],t);return e}function y(e){return ue.call(arguments,1).forEach(function(n){$(e,n,!0)}),e}function _(e){return ue.call(arguments,1).forEach(function(n){for(var o in n)void 0===e[o]&&(e[o]=n[o])}),e}function C(e){return ue.call(arguments,1).forEach(function(n){$(e,n)}),e}function $(e,n,o){for(var t in n)o&&(h(n[t])||ge(n[t]))?(h(n[t])&&!h(e[t])&&(e[t]={}),ge(n[t])&&!ge(e[t])&&(e[t]=[]),$(e[t],n[t],o)):void 0!==n[t]&&(e[t]=n[t])}function z(e,n){var o=n(e);return f(e.root)&&!/^(https?:)?\//.test(o)&&(o=c(e.root,"/")+"/"+o),o}function j(e,n){var o=Object.keys(L.options.params),t={},i=n(e);return k(e.params,function(e,n){-1===o.indexOf(n)&&(t[n]=e)}),t=L.params(t),t&&(i+=(-1==i.indexOf("?")?"?":"&")+t),i}function O(e,n,o){var t=A(e),i=t.expand(n);return o&&o.push.apply(o,t.vars),i}function A(e){var n=["+","#",".","/",";","?","&"],o=[];return{vars:o,expand:function(t){return e.replace(/\{([^{}]+)\}|([^{}]+)/g,function(e,i,a){if(i){var r=null,p=[];if(-1!==n.indexOf(i.charAt(0))&&(r=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(e){var n=/([^:*]*)(?::(\d+)|(\*))?/.exec(e);p.push.apply(p,T(t,r,n[1],n[2]||n[3])),o.push(n[1])}),r&&"+"!==r){var l=",";return"?"===r?l="&":"#"!==r&&(l=r),(0!==p.length?r:"")+p.join(l)}return p.join(",")}return P(a)})}}}function T(e,n,o,t){var i=e[o],a=[];if(S(i)&&""!==i)if("string"==typeof i||"number"==typeof i||"boolean"==typeof i)i=i.toString(),t&&"*"!==t&&(i=i.substring(0,parseInt(t,10))),a.push(M(n,i,E(n)?o:null));else if("*"===t)Array.isArray(i)?i.filter(S).forEach(function(e){a.push(M(n,e,E(n)?o:null))}):Object.keys(i).forEach(function(e){S(i[e])&&a.push(M(n,i[e],e))});else{var r=[];Array.isArray(i)?i.filter(S).forEach(function(e){r.push(M(n,e))}):Object.keys(i).forEach(function(e){S(i[e])&&(r.push(encodeURIComponent(e)),r.push(M(n,i[e].toString())))}),E(n)?a.push(encodeURIComponent(o)+"="+r.join(",")):0!==r.length&&a.push(r.join(","))}else";"===n?a.push(encodeURIComponent(o)):""!==i||"&"!==n&&"?"!==n?""===i&&a.push(""):a.push(encodeURIComponent(o)+"=");return a}function S(e){return void 0!==e&&null!==e}function E(e){return";"===e||"&"===e||"?"===e}function M(e,n,o){return n="+"===e||"#"===e?P(n):encodeURIComponent(n),o?encodeURIComponent(o)+"="+n:n}function P(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e)),e}).join("")}function I(e){var n=[],o=O(e.url,e.params,n);return n.forEach(function(n){delete e.params[n]}),o}function L(e,n){var o,t=this||{},i=e;return f(e)&&(i={url:e,params:n}),i=y({},L.options,t.$options,i),L.transforms.forEach(function(e){f(e)&&(e=L.transform[e]),u(e)&&(o=D(e,o,t.$vm))}),o(i)}function D(e,n,o){return function(t){return e.call(o,t,n)}}function N(e,n,o){var t,i=ge(n),a=h(n);k(n,function(n,r){t=b(n)||ge(n),o&&(r=o+"["+(a||t?r:"")+"]"),!o&&i?e.add(n.name,n.value):t?N(e,n,r):e.add(r,n)})}function R(e){return new i(function(n){var o=new XDomainRequest,t=function(t){var i=t.type,a=0;"load"===i?a=200:"error"===i&&(a=500),n(e.respondWith(o.responseText,{status:a}))};e.abort=function(){return o.abort()},o.open(e.method,e.getUrl()),e.timeout&&(o.timeout=e.timeout),o.onload=t,o.onabort=t,o.onerror=t,o.ontimeout=t,o.onprogress=function(){},o.send(e.getBody())})}function U(e){if(he){var n=L.parse(location.href),o=L.parse(e.getUrl());o.protocol===n.protocol&&o.host===n.host||(e.crossOrigin=!0,e.emulateHTTP=!1,xe||(e.client=R))}}function q(e){v(e.body)?e.headers.delete("Content-Type"):b(e.body)&&e.emulateJSON&&(e.body=L.params(e.body),e.headers.set("Content-Type","application/x-www-form-urlencoded"))}function B(e){var n=e.headers.get("Content-Type")||"";return b(e.body)&&0===n.indexOf("application/json")&&(e.body=JSON.stringify(e.body)),function(e){return e.bodyText?x(e.text(),function(n){if(0===(e.headers.get("Content-Type")||"").indexOf("application/json")||F(n))try{e.body=JSON.parse(n)}catch(n){e.body=null}else e.body=n;return e}):e}}function F(e){var n=e.match(/^\s*(\[|\{)/),o={"[":/]\s*$/,"{":/}\s*$/};return n&&o[n[1]].test(e)}function H(e){return new i(function(n){var o,t,i=e.jsonp||"callback",a=e.jsonpCallback||"_jsonp"+Math.random().toString(36).substr(2),r=null;o=function(o){var i=o.type,p=0;"load"===i&&null!==r?p=200:"error"===i&&(p=500),p&&window[a]&&(delete window[a],document.body.removeChild(t)),n(e.respondWith(r,{status:p}))},window[a]=function(e){r=JSON.stringify(e)},e.abort=function(){o({type:"abort"})},e.params[i]=a,e.timeout&&setTimeout(e.abort,e.timeout),t=document.createElement("script"),t.src=e.getUrl(),t.type="text/javascript",t.async=!0,t.onload=o,t.onerror=o,document.body.appendChild(t)})}function G(e){"JSONP"==e.method&&(e.client=H)}function K(e){u(e.before)&&e.before.call(this,e)}function V(e){e.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(e.method)&&(e.headers.set("X-HTTP-Method-Override",e.method),e.method="POST")}function W(e){k(ve({},te.headers.common,e.crossOrigin?{}:te.headers.custom,te.headers[m(e.method)]),function(n,o){e.headers.has(o)||e.headers.set(o,n)})}function J(e){return new i(function(n){var o=new XMLHttpRequest,t=function(t){var i=e.respondWith("response"in o?o.response:o.responseText,{status:1223===o.status?204:o.status,statusText:1223===o.status?"No Content":s(o.statusText)});k(s(o.getAllResponseHeaders()).split("\n"),function(e){i.headers.append(e.slice(0,e.indexOf(":")),e.slice(e.indexOf(":")+1))}),n(i)};e.abort=function(){return o.abort()},o.open(e.method,e.getUrl(),!0),e.timeout&&(o.timeout=e.timeout),e.responseType&&"responseType"in o&&(o.responseType=e.responseType),(e.withCredentials||e.credentials)&&(o.withCredentials=!0),e.crossOrigin||e.headers.set("X-Requested-With","XMLHttpRequest"),u(e.progress)&&"GET"===e.method&&o.addEventListener("progress",e.progress),u(e.downloadProgress)&&o.addEventListener("progress",e.downloadProgress),u(e.progress)&&/^(POST|PUT)$/i.test(e.method)&&o.upload.addEventListener("progress",e.progress),u(e.uploadProgress)&&o.upload&&o.upload.addEventListener("progress",e.uploadProgress),e.headers.forEach(function(e,n){o.setRequestHeader(n,e)}),o.onload=t,o.onabort=t,o.onerror=t,o.ontimeout=t,o.send(e.getBody())})}function X(e){var n=o(39);return new i(function(o){var t,i=e.getUrl(),a=e.getBody(),r=e.method,p={};e.headers.forEach(function(e,n){p[n]=e}),n(i,{body:a,method:r,headers:p}).then(t=function(n){var t=e.respondWith(n.body,{status:n.statusCode,statusText:s(n.statusMessage)});k(n.headers,function(e,n){t.headers.set(n,e)}),o(t)},function(e){return t(e.response)})})}function Y(e){function n(n){for(;o.length;){var a=o.pop();if(u(a)){var p=void 0,l=void 0;if(p=a.call(e,n,function(e){return l=e})||l,b(p))return new i(function(n,o){t.forEach(function(n){p=x(p,function(o){return n.call(e,o)||o},o)}),x(p,n,o)},e);u(p)&&t.unshift(p)}else r("Invalid interceptor of type "+typeof a+", must be a function")}}var o=[Z],t=[];return b(e)||(e=null),n.use=function(e){o.push(e)},n}function Z(e){return(e.client||(he?J:X))(e)}function Q(e,n){return Object.keys(e).reduce(function(e,o){return m(n)===m(o)?o:e},null)}function ee(e){if(/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return s(e)}function ne(e){return new i(function(n){var o=new FileReader;o.readAsText(e),o.onload=function(){n(o.result)}})}function oe(e){return 0===e.type.indexOf("text")||-1!==e.type.indexOf("json")}function te(e){var n=this||{},o=Y(n.$vm);return _(e||{},n.$options,te.options),te.interceptors.forEach(function(e){f(e)&&(e=te.interceptor[e]),u(e)&&o.use(e)}),o(new ye(e)).then(function(e){return e.ok?e:i.reject(e)},function(e){return e instanceof Error&&p(e),i.reject(e)})}function ie(e,n,o,t){var i=this||{},a={};return o=ve({},ie.actions,o),k(o,function(o,r){o=y({url:e,params:ve({},n)},t,o),a[r]=function(){return(i.$http||te)(ae(o,arguments))}}),a}function ae(e,n){var o,t=ve({},e),i={};switch(n.length){case 2:i=n[0],o=n[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(t.method)?o=n[0]:i=n[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+n.length+" arguments"}return t.body=o,t.params=ve({},t.params,i),t}function re(e){re.installed||(a(e),e.url=L,e.http=te,e.resource=ie,e.Promise=i,Object.defineProperties(e.prototype,{$url:{get:function(){return w(e.url,this,this.$options.url)}},$http:{get:function(){return w(e.http,this,this.$options.http)}},$resource:{get:function(){return e.resource.bind(this)}},$promise:{get:function(){var n=this;return function(o){return new e.Promise(o,n)}}}}))}Object.defineProperty(n,"__esModule",{value:!0}),o.d(n,"Url",function(){return L}),o.d(n,"Http",function(){return te}),o.d(n,"Resource",function(){return ie});/*!
|
7 |
+
* vue-resource v1.5.1
|
8 |
+
* https://github.com/pagekit/vue-resource
|
9 |
+
* Released under the MIT License.
|
10 |
+
*/
|
11 |
+
var pe=2;t.reject=function(e){return new t(function(n,o){o(e)})},t.resolve=function(e){return new t(function(n,o){n(e)})},t.all=function(e){return new t(function(n,o){var i=0,a=[];0===e.length&&n(a);for(var r=0;r<e.length;r+=1)t.resolve(e[r]).then(function(o){return function(t){a[o]=t,(i+=1)===e.length&&n(a)}}(r),o)})},t.race=function(e){return new t(function(n,o){for(var i=0;i<e.length;i+=1)t.resolve(e[i]).then(n,o)})};var le=t.prototype;le.resolve=function(e){var n=this;if(n.state===pe){if(e===n)throw new TypeError("Promise settled with itself.");var o=!1;try{var t=e&&e.then;if(null!==e&&"object"==typeof e&&"function"==typeof t)return void t.call(e,function(e){o||n.resolve(e),o=!0},function(e){o||n.reject(e),o=!0})}catch(e){return void(o||n.reject(e))}n.state=0,n.value=e,n.notify()}},le.reject=function(e){var n=this;if(n.state===pe){if(e===n)throw new TypeError("Promise settled with itself.");n.state=1,n.value=e,n.notify()}},le.notify=function(){var e=this;l(function(){if(e.state!==pe)for(;e.deferred.length;){var n=e.deferred.shift(),o=n[0],t=n[1],i=n[2],a=n[3];try{0===e.state?i("function"==typeof o?o.call(void 0,e.value):e.value):1===e.state&&("function"==typeof t?i(t.call(void 0,e.value)):a(e.value))}catch(e){a(e)}}})},le.then=function(e,n){var o=this;return new t(function(t,i){o.deferred.push([e,n,t,i]),o.notify()})},le.catch=function(e){return this.then(void 0,e)},"undefined"==typeof Promise&&(window.Promise=t),i.all=function(e,n){return new i(Promise.all(e),n)},i.resolve=function(e,n){return new i(Promise.resolve(e),n)},i.reject=function(e,n){return new i(Promise.reject(e),n)},i.race=function(e,n){return new i(Promise.race(e),n)};var se=i.prototype;se.bind=function(e){return this.context=e,this},se.then=function(e,n){return e&&e.bind&&this.context&&(e=e.bind(this.context)),n&&n.bind&&this.context&&(n=n.bind(this.context)),new i(this.promise.then(e,n),this.context)},se.catch=function(e){return e&&e.bind&&this.context&&(e=e.bind(this.context)),new i(this.promise.catch(e),this.context)},se.finally=function(e){return this.then(function(n){return e.call(this),n},function(n){return e.call(this),Promise.reject(n)})};var ce,me={},de=me.hasOwnProperty,fe=[],ue=fe.slice,be=!1,he="undefined"!=typeof window,ge=Array.isArray,ve=Object.assign||C;L.options={url:"",root:null,params:{}},L.transform={template:I,query:j,root:z},L.transforms=["template","query","root"],L.params=function(e){var n=[],o=encodeURIComponent;return n.add=function(e,n){u(n)&&(n=n()),null===n&&(n=""),this.push(o(e)+"="+o(n))},N(n,e),n.join("&").replace(/%20/g,"+")},L.parse=function(e){var n=document.createElement("a");return document.documentMode&&(n.href=e,e=n.href),n.href=e,{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",port:n.port,host:n.host,hostname:n.hostname,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):""}};var xe=he&&"withCredentials"in new XMLHttpRequest,we=function(e){var n=this;this.map={},k(e,function(e,o){return n.append(o,e)})};we.prototype.has=function(e){return null!==Q(this.map,e)},we.prototype.get=function(e){var n=this.map[Q(this.map,e)];return n?n.join():null},we.prototype.getAll=function(e){return this.map[Q(this.map,e)]||[]},we.prototype.set=function(e,n){this.map[ee(Q(this.map,e)||e)]=[s(n)]},we.prototype.append=function(e,n){var o=this.map[Q(this.map,e)];o?o.push(s(n)):this.set(e,n)},we.prototype.delete=function(e){delete this.map[Q(this.map,e)]},we.prototype.deleteAll=function(){this.map={}},we.prototype.forEach=function(e,n){var o=this;k(this.map,function(t,i){k(t,function(t){return e.call(n,t,i,o)})})};var ke=function(e,n){var o=n.url,t=n.headers,i=n.status,a=n.statusText;this.url=o,this.ok=i>=200&&i<300,this.status=i||0,this.statusText=a||"",this.headers=new we(t),this.body=e,f(e)?this.bodyText=e:g(e)&&(this.bodyBlob=e,oe(e)&&(this.bodyText=ne(e)))};ke.prototype.blob=function(){return x(this.bodyBlob)},ke.prototype.text=function(){return x(this.bodyText)},ke.prototype.json=function(){return x(this.text(),function(e){return JSON.parse(e)})},Object.defineProperty(ke.prototype,"data",{get:function(){return this.body},set:function(e){this.body=e}});var ye=function(e){this.body=null,this.params={},ve(this,e,{method:d(e.method||"GET")}),this.headers instanceof we||(this.headers=new we(this.headers))};ye.prototype.getUrl=function(){return L(this)},ye.prototype.getBody=function(){return this.body},ye.prototype.respondWith=function(e,n){return new ke(e,ve(n||{},{url:this.getUrl()}))};var _e={Accept:"application/json, text/plain, */*"},Ce={"Content-Type":"application/json;charset=utf-8"};te.options={},te.headers={put:Ce,post:Ce,patch:Ce,delete:Ce,common:_e,custom:{}},te.interceptor={before:K,method:V,jsonp:G,json:B,form:q,header:W,cors:U},te.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(e){te[e]=function(n,o){return this(ve(o||{},{url:n,method:e}))}}),["post","put","patch"].forEach(function(e){te[e]=function(n,o,t){return this(ve(t||{},{url:n,method:e,body:o}))}}),ie.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(re),n.default=re},function(e,n,o){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var i=o(2),a=t(i),r=o(9),p=t(r),l=o(37),s=t(l),c=o(42),m=t(c);a.default.use(m.default),window.onload=function(){new a.default({el:"#optimole-app",store:s.default,components:{App:p.default}})}},function(e,n,o){(function(e){function t(e,n){this._id=e,this._clearFn=n}var i=void 0!==e&&e||"undefined"!=typeof self&&self||window,a=Function.prototype.apply;n.setTimeout=function(){return new t(a.call(setTimeout,i,arguments),clearTimeout)},n.setInterval=function(){return new t(a.call(setInterval,i,arguments),clearInterval)},n.clearTimeout=n.clearInterval=function(e){e&&e.close()},t.prototype.unref=t.prototype.ref=function(){},t.prototype.close=function(){this._clearFn.call(i,this._id)},n.enroll=function(e,n){clearTimeout(e._idleTimeoutId),e._idleTimeout=n},n.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},n._unrefActive=n.active=function(e){clearTimeout(e._idleTimeoutId);var n=e._idleTimeout;n>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},n))},o(7),n.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,n.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(n,o(3))},function(e,n,o){(function(e,n){!function(e,o){"use strict";function t(e){"function"!=typeof e&&(e=new Function(""+e));for(var n=new Array(arguments.length-1),o=0;o<n.length;o++)n[o]=arguments[o+1];var t={callback:e,args:n};return s[l]=t,p(l),l++}function i(e){delete s[e]}function a(e){var n=e.callback,t=e.args;switch(t.length){case 0:n();break;case 1:n(t[0]);break;case 2:n(t[0],t[1]);break;case 3:n(t[0],t[1],t[2]);break;default:n.apply(o,t)}}function r(e){if(c)setTimeout(r,0,e);else{var n=s[e];if(n){c=!0;try{a(n)}finally{i(e),c=!1}}}}if(!e.setImmediate){var p,l=1,s={},c=!1,m=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?function(){p=function(e){n.nextTick(function(){r(e)})}}():function(){if(e.postMessage&&!e.importScripts){var n=!0,o=e.onmessage;return e.onmessage=function(){n=!1},e.postMessage("","*"),e.onmessage=o,n}}()?function(){var n="setImmediate$"+Math.random()+"$",o=function(o){o.source===e&&"string"==typeof o.data&&0===o.data.indexOf(n)&&r(+o.data.slice(n.length))};e.addEventListener?e.addEventListener("message",o,!1):e.attachEvent("onmessage",o),p=function(o){e.postMessage(n+o,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){r(e.data)},p=function(n){e.port2.postMessage(n)}}():m&&"onreadystatechange"in m.createElement("script")?function(){var e=m.documentElement;p=function(n){var o=m.createElement("script");o.onreadystatechange=function(){r(n),o.onreadystatechange=null,e.removeChild(o),o=null},e.appendChild(o)}}():function(){p=function(e){setTimeout(r,0,e)}}(),d.setImmediate=t,d.clearImmediate=i}}("undefined"==typeof self?void 0===e?this:e:self)}).call(n,o(3),o(8))},function(e,n){function o(){throw new Error("setTimeout has not been defined")}function t(){throw new Error("clearTimeout has not been defined")}function i(e){if(c===setTimeout)return setTimeout(e,0);if((c===o||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(n){try{return c.call(null,e,0)}catch(n){return c.call(this,e,0)}}}function a(e){if(m===clearTimeout)return clearTimeout(e);if((m===t||!m)&&clearTimeout)return m=clearTimeout,clearTimeout(e);try{return m(e)}catch(n){try{return m.call(null,e)}catch(n){return m.call(this,e)}}}function r(){b&&f&&(b=!1,f.length?u=f.concat(u):h=-1,u.length&&p())}function p(){if(!b){var e=i(r);b=!0;for(var n=u.length;n;){for(f=u,u=[];++h<n;)f&&f[h].run();h=-1,n=u.length}f=null,b=!1,a(e)}}function l(e,n){this.fun=e,this.array=n}function s(){}var c,m,d=e.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:o}catch(e){c=o}try{m="function"==typeof clearTimeout?clearTimeout:t}catch(e){m=t}}();var f,u=[],b=!1,h=-1;d.nextTick=function(e){var n=new Array(arguments.length-1);if(arguments.length>1)for(var o=1;o<arguments.length;o++)n[o-1]=arguments[o];u.push(new l(e,n)),1!==u.length||b||i(p)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=s,d.addListener=s,d.once=s,d.off=s,d.removeListener=s,d.removeAllListeners=s,d.emit=s,d.prependListener=s,d.prependOnceListener=s,d.listeners=function(e){return[]},d.binding=function(e){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(e){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(e,n,o){var t,i;o(10),t=o(12),i=o(36),e.exports=t||{},e.exports.__esModule&&(e.exports=e.exports.default),i&&(("function"==typeof e.exports?e.exports.options:e.exports).template=i)},function(e,n,o){var t=o(11);"string"==typeof t&&(t=[[e.i,t,""]]);o(1)(t,{});t.locals&&(e.exports=t.locals)},function(e,n,o){n=e.exports=o(0)(),n.push([e.i,'#optimole-app {\n padding: 0 30px 0 20px;\n /*! bulma.io v0.7.1 | MIT License | github.com/jgthms/bulma */\n /*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */ }\n\n@keyframes spinAround {\n from {\n transform: rotate(0deg); }\n to {\n transform: rotate(359deg); } }\n #optimole-app .delete, #optimole-app .modal-close, #optimole-app .is-unselectable, #optimole-app .button, #optimole-app .file, #optimole-app .breadcrumb, #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis, #optimole-app .tabs {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n #optimole-app .select:not(.is-multiple):not(.is-loading)::after, #optimole-app .navbar-link::after {\n border: 3px solid transparent;\n border-radius: 2px;\n border-right: 0;\n border-top: 0;\n content: " ";\n display: block;\n height: 0.625em;\n margin-top: -0.4375em;\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: rotate(-45deg);\n transform-origin: center;\n width: 0.625em; }\n #optimole-app .box:not(:last-child), #optimole-app .content:not(:last-child), #optimole-app .notification:not(:last-child), #optimole-app .progress:not(:last-child), #optimole-app .table:not(:last-child), #optimole-app .table-container:not(:last-child), #optimole-app .title:not(:last-child),\n #optimole-app .subtitle:not(:last-child), #optimole-app .block:not(:last-child), #optimole-app .highlight:not(:last-child), #optimole-app .breadcrumb:not(:last-child), #optimole-app .level:not(:last-child), #optimole-app .message:not(:last-child), #optimole-app .tabs:not(:last-child) {\n margin-bottom: 1.5rem; }\n #optimole-app .delete, #optimole-app .modal-close {\n -moz-appearance: none;\n -webkit-appearance: none;\n background-color: rgba(10, 10, 10, 0.2);\n border: none;\n border-radius: 290486px;\n cursor: pointer;\n display: inline-block;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n font-size: 0;\n height: 20px;\n max-height: 20px;\n max-width: 20px;\n min-height: 20px;\n min-width: 20px;\n outline: none;\n position: relative;\n vertical-align: top;\n width: 20px; }\n #optimole-app .delete::before, #optimole-app .modal-close::before, #optimole-app .delete::after, #optimole-app .modal-close::after {\n background-color: white;\n content: "";\n display: block;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\n transform-origin: center center; }\n #optimole-app .delete::before, #optimole-app .modal-close::before {\n height: 2px;\n width: 50%; }\n #optimole-app .delete::after, #optimole-app .modal-close::after {\n height: 50%;\n width: 2px; }\n #optimole-app .delete:hover, #optimole-app .modal-close:hover, #optimole-app .delete:focus, #optimole-app .modal-close:focus {\n background-color: rgba(10, 10, 10, 0.3); }\n #optimole-app .delete:active, #optimole-app .modal-close:active {\n background-color: rgba(10, 10, 10, 0.4); }\n #optimole-app .is-small.delete, #optimole-app .is-small.modal-close {\n height: 16px;\n max-height: 16px;\n max-width: 16px;\n min-height: 16px;\n min-width: 16px;\n width: 16px; }\n #optimole-app .is-medium.delete, #optimole-app .is-medium.modal-close {\n height: 24px;\n max-height: 24px;\n max-width: 24px;\n min-height: 24px;\n min-width: 24px;\n width: 24px; }\n #optimole-app .is-large.delete, #optimole-app .is-large.modal-close {\n height: 32px;\n max-height: 32px;\n max-width: 32px;\n min-height: 32px;\n min-width: 32px;\n width: 32px; }\n #optimole-app .button.is-loading::after, #optimole-app .select.is-loading::after, #optimole-app .control.is-loading::after, #optimole-app .loader {\n animation: spinAround 500ms infinite linear;\n border: 2px solid #dbdbdb;\n border-radius: 290486px;\n border-right-color: transparent;\n border-top-color: transparent;\n content: "";\n display: block;\n height: 1em;\n position: relative;\n width: 1em; }\n #optimole-app .is-overlay, #optimole-app .image.is-square img, #optimole-app .image.is-1by1 img, #optimole-app .image.is-5by4 img, #optimole-app .image.is-4by3 img, #optimole-app .image.is-3by2 img, #optimole-app .image.is-5by3 img, #optimole-app .image.is-16by9 img, #optimole-app .image.is-2by1 img, #optimole-app .image.is-3by1 img, #optimole-app .image.is-4by5 img, #optimole-app .image.is-3by4 img, #optimole-app .image.is-2by3 img, #optimole-app .image.is-3by5 img, #optimole-app .image.is-9by16 img, #optimole-app .image.is-1by2 img, #optimole-app .image.is-1by3 img, #optimole-app .modal, #optimole-app .modal-background, #optimole-app .hero-video {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0; }\n #optimole-app .button, #optimole-app .input,\n #optimole-app .textarea, #optimole-app .select select, #optimole-app .file-cta,\n #optimole-app .file-name, #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis {\n -moz-appearance: none;\n -webkit-appearance: none;\n -ms-flex-align: center;\n align-items: center;\n border: 1px solid transparent;\n border-radius: 4px;\n box-shadow: none;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 1rem;\n height: 2.25em;\n -ms-flex-pack: start;\n justify-content: flex-start;\n line-height: 1.5;\n padding-bottom: calc(0.375em - 1px);\n padding-left: calc(0.625em - 1px);\n padding-right: calc(0.625em - 1px);\n padding-top: calc(0.375em - 1px);\n position: relative;\n vertical-align: top; }\n #optimole-app .button:focus, #optimole-app .input:focus,\n #optimole-app .textarea:focus, #optimole-app .select select:focus, #optimole-app .file-cta:focus,\n #optimole-app .file-name:focus, #optimole-app .pagination-previous:focus,\n #optimole-app .pagination-next:focus,\n #optimole-app .pagination-link:focus,\n #optimole-app .pagination-ellipsis:focus, #optimole-app .is-focused.button, #optimole-app .is-focused.input,\n #optimole-app .is-focused.textarea, #optimole-app .select select.is-focused, #optimole-app .is-focused.file-cta,\n #optimole-app .is-focused.file-name, #optimole-app .is-focused.pagination-previous,\n #optimole-app .is-focused.pagination-next,\n #optimole-app .is-focused.pagination-link,\n #optimole-app .is-focused.pagination-ellipsis, #optimole-app .button:active, #optimole-app .input:active,\n #optimole-app .textarea:active, #optimole-app .select select:active, #optimole-app .file-cta:active,\n #optimole-app .file-name:active, #optimole-app .pagination-previous:active,\n #optimole-app .pagination-next:active,\n #optimole-app .pagination-link:active,\n #optimole-app .pagination-ellipsis:active, #optimole-app .is-active.button, #optimole-app .is-active.input,\n #optimole-app .is-active.textarea, #optimole-app .select select.is-active, #optimole-app .is-active.file-cta,\n #optimole-app .is-active.file-name, #optimole-app .is-active.pagination-previous,\n #optimole-app .is-active.pagination-next,\n #optimole-app .is-active.pagination-link,\n #optimole-app .is-active.pagination-ellipsis {\n outline: none; }\n #optimole-app .button[disabled], #optimole-app .input[disabled],\n #optimole-app .textarea[disabled], #optimole-app .select select[disabled], #optimole-app .file-cta[disabled],\n #optimole-app .file-name[disabled], #optimole-app .pagination-previous[disabled],\n #optimole-app .pagination-next[disabled],\n #optimole-app .pagination-link[disabled],\n #optimole-app .pagination-ellipsis[disabled] {\n cursor: not-allowed; }\n #optimole-app html,\n #optimole-app body,\n #optimole-app p,\n #optimole-app ol,\n #optimole-app ul,\n #optimole-app li,\n #optimole-app dl,\n #optimole-app dt,\n #optimole-app dd,\n #optimole-app blockquote,\n #optimole-app figure,\n #optimole-app fieldset,\n #optimole-app legend,\n #optimole-app textarea,\n #optimole-app pre,\n #optimole-app iframe,\n #optimole-app hr,\n #optimole-app h1,\n #optimole-app h2,\n #optimole-app h3,\n #optimole-app h4,\n #optimole-app h5,\n #optimole-app h6 {\n margin: 0;\n padding: 0; }\n #optimole-app h1,\n #optimole-app h2,\n #optimole-app h3,\n #optimole-app h4,\n #optimole-app h5,\n #optimole-app h6 {\n font-size: 100%;\n font-weight: normal; }\n #optimole-app ul {\n list-style: none; }\n #optimole-app button,\n #optimole-app input,\n #optimole-app select,\n #optimole-app textarea {\n margin: 0; }\n #optimole-app html {\n box-sizing: border-box; }\n #optimole-app *, #optimole-app *::before, #optimole-app *::after {\n box-sizing: inherit; }\n #optimole-app img,\n #optimole-app audio,\n #optimole-app video {\n height: auto;\n max-width: 100%; }\n #optimole-app iframe {\n border: 0; }\n #optimole-app table {\n border-collapse: collapse;\n border-spacing: 0; }\n #optimole-app td,\n #optimole-app th {\n padding: 0;\n text-align: left; }\n #optimole-app html {\n background-color: white;\n font-size: 16px;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n min-width: 300px;\n overflow-x: hidden;\n overflow-y: scroll;\n text-rendering: optimizeLegibility;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n text-size-adjust: 100%; }\n #optimole-app article,\n #optimole-app aside,\n #optimole-app figure,\n #optimole-app footer,\n #optimole-app header,\n #optimole-app hgroup,\n #optimole-app section {\n display: block; }\n #optimole-app body,\n #optimole-app button,\n #optimole-app input,\n #optimole-app select,\n #optimole-app textarea {\n font-family: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; }\n #optimole-app code,\n #optimole-app pre {\n -moz-osx-font-smoothing: auto;\n -webkit-font-smoothing: auto;\n font-family: monospace; }\n #optimole-app body {\n color: #4a4a4a;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5; }\n #optimole-app a {\n color: #3273dc;\n cursor: pointer;\n text-decoration: none; }\n #optimole-app a strong {\n color: currentColor; }\n #optimole-app a:hover {\n color: #363636; }\n #optimole-app code {\n background-color: whitesmoke;\n color: #ff3860;\n font-size: 0.875em;\n font-weight: normal;\n padding: 0.25em 0.5em 0.25em; }\n #optimole-app hr {\n background-color: whitesmoke;\n border: none;\n display: block;\n height: 2px;\n margin: 1.5rem 0; }\n #optimole-app img {\n height: auto;\n max-width: 100%; }\n #optimole-app input[type="checkbox"],\n #optimole-app input[type="radio"] {\n vertical-align: baseline; }\n #optimole-app small {\n font-size: 0.875em; }\n #optimole-app span {\n font-style: inherit;\n font-weight: inherit; }\n #optimole-app strong {\n color: #363636;\n font-weight: 700; }\n #optimole-app pre {\n -webkit-overflow-scrolling: touch;\n background-color: whitesmoke;\n color: #4a4a4a;\n font-size: 0.875em;\n overflow-x: auto;\n padding: 1.25rem 1.5rem;\n white-space: pre;\n word-wrap: normal; }\n #optimole-app pre code {\n background-color: transparent;\n color: currentColor;\n font-size: 1em;\n padding: 0; }\n #optimole-app table td,\n #optimole-app table th {\n text-align: left;\n vertical-align: top; }\n #optimole-app table th {\n color: #363636; }\n #optimole-app .is-clearfix::after {\n clear: both;\n content: " ";\n display: table; }\n #optimole-app .is-pulled-left {\n float: left !important; }\n #optimole-app .is-pulled-right {\n float: right !important; }\n #optimole-app .is-clipped {\n overflow: hidden !important; }\n #optimole-app .is-size-1 {\n font-size: 3rem !important; }\n #optimole-app .is-size-2 {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3 {\n font-size: 2rem !important; }\n #optimole-app .is-size-4 {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5 {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6 {\n font-size: 1rem !important; }\n #optimole-app .is-size-7 {\n font-size: 0.75rem !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-size-1-mobile {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-mobile {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-mobile {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-mobile {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-mobile {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-mobile {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-mobile {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-size-1-tablet {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-tablet {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-tablet {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-tablet {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-tablet {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-tablet {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-tablet {\n font-size: 0.75rem !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-size-1-touch {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-touch {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-touch {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-touch {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-touch {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-touch {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-touch {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-size-1-desktop {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-desktop {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-desktop {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-desktop {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-desktop {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-desktop {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-desktop {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-size-1-widescreen {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-widescreen {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-widescreen {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-widescreen {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-widescreen {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-widescreen {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-widescreen {\n font-size: 0.75rem !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-size-1-fullhd {\n font-size: 3rem !important; }\n #optimole-app .is-size-2-fullhd {\n font-size: 2.5rem !important; }\n #optimole-app .is-size-3-fullhd {\n font-size: 2rem !important; }\n #optimole-app .is-size-4-fullhd {\n font-size: 1.5rem !important; }\n #optimole-app .is-size-5-fullhd {\n font-size: 1.25rem !important; }\n #optimole-app .is-size-6-fullhd {\n font-size: 1rem !important; }\n #optimole-app .is-size-7-fullhd {\n font-size: 0.75rem !important; } }\n #optimole-app .has-text-centered {\n text-align: center !important; }\n #optimole-app .has-text-justified {\n text-align: justify !important; }\n #optimole-app .has-text-left {\n text-align: left !important; }\n #optimole-app .has-text-right {\n text-align: right !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-centered-mobile {\n text-align: center !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-centered-tablet {\n text-align: center !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-centered-tablet-only {\n text-align: center !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-centered-touch {\n text-align: center !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-centered-desktop {\n text-align: center !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-centered-desktop-only {\n text-align: center !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-centered-widescreen {\n text-align: center !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-centered-widescreen-only {\n text-align: center !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-centered-fullhd {\n text-align: center !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-justified-mobile {\n text-align: justify !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-justified-tablet {\n text-align: justify !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-justified-tablet-only {\n text-align: justify !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-justified-touch {\n text-align: justify !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-justified-desktop {\n text-align: justify !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-justified-desktop-only {\n text-align: justify !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-justified-widescreen {\n text-align: justify !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-justified-widescreen-only {\n text-align: justify !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-justified-fullhd {\n text-align: justify !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-left-mobile {\n text-align: left !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-left-tablet {\n text-align: left !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-left-tablet-only {\n text-align: left !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-left-touch {\n text-align: left !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-left-desktop {\n text-align: left !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-left-desktop-only {\n text-align: left !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-left-widescreen {\n text-align: left !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-left-widescreen-only {\n text-align: left !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-left-fullhd {\n text-align: left !important; } }\n @media screen and (max-width: 768px) {\n #optimole-app .has-text-right-mobile {\n text-align: right !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .has-text-right-tablet {\n text-align: right !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .has-text-right-tablet-only {\n text-align: right !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .has-text-right-touch {\n text-align: right !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .has-text-right-desktop {\n text-align: right !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .has-text-right-desktop-only {\n text-align: right !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .has-text-right-widescreen {\n text-align: right !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .has-text-right-widescreen-only {\n text-align: right !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .has-text-right-fullhd {\n text-align: right !important; } }\n #optimole-app .is-capitalized {\n text-transform: capitalize !important; }\n #optimole-app .is-lowercase {\n text-transform: lowercase !important; }\n #optimole-app .is-uppercase {\n text-transform: uppercase !important; }\n #optimole-app .is-italic {\n font-style: italic !important; }\n #optimole-app .has-text-white {\n color: white !important; }\n #optimole-app a.has-text-white:hover, #optimole-app a.has-text-white:focus {\n color: #e6e6e6 !important; }\n #optimole-app .has-background-white {\n background-color: white !important; }\n #optimole-app .has-text-black {\n color: #0a0a0a !important; }\n #optimole-app a.has-text-black:hover, #optimole-app a.has-text-black:focus {\n color: black !important; }\n #optimole-app .has-background-black {\n background-color: #0a0a0a !important; }\n #optimole-app .has-text-light {\n color: whitesmoke !important; }\n #optimole-app a.has-text-light:hover, #optimole-app a.has-text-light:focus {\n color: #dbdbdb !important; }\n #optimole-app .has-background-light {\n background-color: whitesmoke !important; }\n #optimole-app .has-text-dark {\n color: #363636 !important; }\n #optimole-app a.has-text-dark:hover, #optimole-app a.has-text-dark:focus {\n color: #1c1c1c !important; }\n #optimole-app .has-background-dark {\n background-color: #363636 !important; }\n #optimole-app .has-text-primary {\n color: #e7602a !important; }\n #optimole-app a.has-text-primary:hover, #optimole-app a.has-text-primary:focus {\n color: #c84916 !important; }\n #optimole-app .has-background-primary {\n background-color: #e7602a !important; }\n #optimole-app .has-text-link {\n color: #3273dc !important; }\n #optimole-app a.has-text-link:hover, #optimole-app a.has-text-link:focus {\n color: #205bbc !important; }\n #optimole-app .has-background-link {\n background-color: #3273dc !important; }\n #optimole-app .has-text-info {\n color: #008ec2 !important; }\n #optimole-app a.has-text-info:hover, #optimole-app a.has-text-info:focus {\n color: #00698f !important; }\n #optimole-app .has-background-info {\n background-color: #008ec2 !important; }\n #optimole-app .has-text-success {\n color: #34a85e !important; }\n #optimole-app a.has-text-success:hover, #optimole-app a.has-text-success:focus {\n color: #288148 !important; }\n #optimole-app .has-background-success {\n background-color: #34a85e !important; }\n #optimole-app .has-text-warning {\n color: #ffdd57 !important; }\n #optimole-app a.has-text-warning:hover, #optimole-app a.has-text-warning:focus {\n color: #ffd324 !important; }\n #optimole-app .has-background-warning {\n background-color: #ffdd57 !important; }\n #optimole-app .has-text-danger {\n color: #d54222 !important; }\n #optimole-app a.has-text-danger:hover, #optimole-app a.has-text-danger:focus {\n color: #a9341b !important; }\n #optimole-app .has-background-danger {\n background-color: #d54222 !important; }\n #optimole-app .has-text-black-bis {\n color: #121212 !important; }\n #optimole-app .has-background-black-bis {\n background-color: #121212 !important; }\n #optimole-app .has-text-black-ter {\n color: #242424 !important; }\n #optimole-app .has-background-black-ter {\n background-color: #242424 !important; }\n #optimole-app .has-text-grey-darker {\n color: #363636 !important; }\n #optimole-app .has-background-grey-darker {\n background-color: #363636 !important; }\n #optimole-app .has-text-grey-dark {\n color: #4a4a4a !important; }\n #optimole-app .has-background-grey-dark {\n background-color: #4a4a4a !important; }\n #optimole-app .has-text-grey {\n color: #7a7a7a !important; }\n #optimole-app .has-background-grey {\n background-color: #7a7a7a !important; }\n #optimole-app .has-text-grey-light {\n color: #b5b5b5 !important; }\n #optimole-app .has-background-grey-light {\n background-color: #b5b5b5 !important; }\n #optimole-app .has-text-grey-lighter {\n color: #dbdbdb !important; }\n #optimole-app .has-background-grey-lighter {\n background-color: #dbdbdb !important; }\n #optimole-app .has-text-white-ter {\n color: whitesmoke !important; }\n #optimole-app .has-background-white-ter {\n background-color: whitesmoke !important; }\n #optimole-app .has-text-white-bis {\n color: #fafafa !important; }\n #optimole-app .has-background-white-bis {\n background-color: #fafafa !important; }\n #optimole-app .has-text-weight-light {\n font-weight: 300 !important; }\n #optimole-app .has-text-weight-normal {\n font-weight: 400 !important; }\n #optimole-app .has-text-weight-semibold {\n font-weight: 600 !important; }\n #optimole-app .has-text-weight-bold {\n font-weight: 700 !important; }\n #optimole-app .is-block {\n display: block !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-block-mobile {\n display: block !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-block-tablet {\n display: block !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-block-tablet-only {\n display: block !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-block-touch {\n display: block !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-block-desktop {\n display: block !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-block-desktop-only {\n display: block !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-block-widescreen {\n display: block !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-block-widescreen-only {\n display: block !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-block-fullhd {\n display: block !important; } }\n #optimole-app .is-flex {\n display: -ms-flexbox !important;\n display: flex !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-flex-mobile {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-flex-tablet {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-flex-tablet-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-flex-touch {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-flex-desktop {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-flex-desktop-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-flex-widescreen {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-flex-widescreen-only {\n display: -ms-flexbox !important;\n display: flex !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-flex-fullhd {\n display: -ms-flexbox !important;\n display: flex !important; } }\n #optimole-app .is-inline {\n display: inline !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-mobile {\n display: inline !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-tablet {\n display: inline !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-tablet-only {\n display: inline !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-touch {\n display: inline !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-desktop {\n display: inline !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-desktop-only {\n display: inline !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-widescreen {\n display: inline !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-widescreen-only {\n display: inline !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-fullhd {\n display: inline !important; } }\n #optimole-app .is-inline-block {\n display: inline-block !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-block-mobile {\n display: inline-block !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-block-tablet {\n display: inline-block !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-block-tablet-only {\n display: inline-block !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-block-touch {\n display: inline-block !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-block-desktop {\n display: inline-block !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-block-desktop-only {\n display: inline-block !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-block-widescreen {\n display: inline-block !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-block-widescreen-only {\n display: inline-block !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-block-fullhd {\n display: inline-block !important; } }\n #optimole-app .is-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-inline-flex-mobile {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-inline-flex-tablet {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-inline-flex-tablet-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-inline-flex-touch {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-inline-flex-desktop {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-inline-flex-desktop-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-inline-flex-widescreen {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-inline-flex-widescreen-only {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-inline-flex-fullhd {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n #optimole-app .is-hidden {\n display: none !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-hidden-mobile {\n display: none !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-hidden-tablet {\n display: none !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-hidden-tablet-only {\n display: none !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-hidden-touch {\n display: none !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-hidden-desktop {\n display: none !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-hidden-desktop-only {\n display: none !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-hidden-widescreen {\n display: none !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-hidden-widescreen-only {\n display: none !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-hidden-fullhd {\n display: none !important; } }\n #optimole-app .is-invisible {\n visibility: hidden !important; }\n @media screen and (max-width: 768px) {\n #optimole-app .is-invisible-mobile {\n visibility: hidden !important; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .is-invisible-tablet {\n visibility: hidden !important; } }\n @media screen and (min-width: 769px) and (max-width: 1087px) {\n #optimole-app .is-invisible-tablet-only {\n visibility: hidden !important; } }\n @media screen and (max-width: 1087px) {\n #optimole-app .is-invisible-touch {\n visibility: hidden !important; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .is-invisible-desktop {\n visibility: hidden !important; } }\n @media screen and (min-width: 1088px) and (max-width: 1279px) {\n #optimole-app .is-invisible-desktop-only {\n visibility: hidden !important; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .is-invisible-widescreen {\n visibility: hidden !important; } }\n @media screen and (min-width: 1280px) and (max-width: 1471px) {\n #optimole-app .is-invisible-widescreen-only {\n visibility: hidden !important; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .is-invisible-fullhd {\n visibility: hidden !important; } }\n #optimole-app .is-marginless {\n margin: 0 !important; }\n #optimole-app .is-paddingless {\n padding: 0 !important; }\n #optimole-app .is-radiusless {\n border-radius: 0 !important; }\n #optimole-app .is-shadowless {\n box-shadow: none !important; }\n #optimole-app .box {\n background-color: white;\n border-radius: 6px;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n color: #4a4a4a;\n display: block;\n padding: 1.25rem; }\n #optimole-app a.box:hover, #optimole-app a.box:focus {\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #3273dc; }\n #optimole-app a.box:active {\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #3273dc; }\n #optimole-app .button {\n background-color: white;\n border-color: #dbdbdb;\n border-width: 1px;\n color: #363636;\n cursor: pointer;\n -ms-flex-pack: center;\n justify-content: center;\n padding-bottom: calc(0.375em - 1px);\n padding-left: 0.75em;\n padding-right: 0.75em;\n padding-top: calc(0.375em - 1px);\n text-align: center;\n white-space: nowrap; }\n #optimole-app .button strong {\n color: inherit; }\n #optimole-app .button .icon, #optimole-app .button .icon.is-small, #optimole-app .button .icon.is-medium, #optimole-app .button .icon.is-large {\n height: 1.5em;\n width: 1.5em; }\n #optimole-app .button .icon:first-child:not(:last-child) {\n margin-left: calc(-0.375em - 1px);\n margin-right: 0.1875em; }\n #optimole-app .button .icon:last-child:not(:first-child) {\n margin-left: 0.1875em;\n margin-right: calc(-0.375em - 1px); }\n #optimole-app .button .icon:first-child:last-child {\n margin-left: calc(-0.375em - 1px);\n margin-right: calc(-0.375em - 1px); }\n #optimole-app .button:hover, #optimole-app .button.is-hovered {\n border-color: #b5b5b5;\n color: #363636; }\n #optimole-app .button:focus, #optimole-app .button.is-focused {\n border-color: #3273dc;\n color: #363636; }\n #optimole-app .button:focus:not(:active), #optimole-app .button.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .button:active, #optimole-app .button.is-active {\n border-color: #4a4a4a;\n color: #363636; }\n #optimole-app .button.is-text {\n background-color: transparent;\n border-color: transparent;\n color: #4a4a4a;\n text-decoration: underline; }\n #optimole-app .button.is-text:hover, #optimole-app .button.is-text.is-hovered, #optimole-app .button.is-text:focus, #optimole-app .button.is-text.is-focused {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-text:active, #optimole-app .button.is-text.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .button.is-text[disabled] {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-white {\n background-color: white;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:hover, #optimole-app .button.is-white.is-hovered {\n background-color: #f9f9f9;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:focus, #optimole-app .button.is-white.is-focused {\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white:focus:not(:active), #optimole-app .button.is-white.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .button.is-white:active, #optimole-app .button.is-white.is-active {\n background-color: #f2f2f2;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .button.is-white[disabled] {\n background-color: white;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-white.is-inverted {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-white.is-inverted:hover {\n background-color: black; }\n #optimole-app .button.is-white.is-inverted[disabled] {\n background-color: #0a0a0a;\n border-color: transparent;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-white.is-loading::after {\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\n #optimole-app .button.is-white.is-outlined {\n background-color: transparent;\n border-color: white;\n color: white; }\n #optimole-app .button.is-white.is-outlined:hover, #optimole-app .button.is-white.is-outlined:focus {\n background-color: white;\n border-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-white.is-outlined.is-loading::after {\n border-color: transparent transparent white white !important; }\n #optimole-app .button.is-white.is-outlined[disabled] {\n background-color: transparent;\n border-color: white;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-white.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #0a0a0a;\n color: #0a0a0a; }\n #optimole-app .button.is-white.is-inverted.is-outlined:hover, #optimole-app .button.is-white.is-inverted.is-outlined:focus {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-white.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #0a0a0a;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black {\n background-color: #0a0a0a;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:hover, #optimole-app .button.is-black.is-hovered {\n background-color: #040404;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:focus, #optimole-app .button.is-black.is-focused {\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black:focus:not(:active), #optimole-app .button.is-black.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .button.is-black:active, #optimole-app .button.is-black.is-active {\n background-color: black;\n border-color: transparent;\n color: white; }\n #optimole-app .button.is-black[disabled] {\n background-color: #0a0a0a;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-black.is-inverted {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-black.is-inverted[disabled] {\n background-color: white;\n border-color: transparent;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-loading::after {\n border-color: transparent transparent white white !important; }\n #optimole-app .button.is-black.is-outlined {\n background-color: transparent;\n border-color: #0a0a0a;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-outlined:hover, #optimole-app .button.is-black.is-outlined:focus {\n background-color: #0a0a0a;\n border-color: #0a0a0a;\n color: white; }\n #optimole-app .button.is-black.is-outlined.is-loading::after {\n border-color: transparent transparent #0a0a0a #0a0a0a !important; }\n #optimole-app .button.is-black.is-outlined[disabled] {\n background-color: transparent;\n border-color: #0a0a0a;\n box-shadow: none;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted.is-outlined {\n background-color: transparent;\n border-color: white;\n color: white; }\n #optimole-app .button.is-black.is-inverted.is-outlined:hover, #optimole-app .button.is-black.is-inverted.is-outlined:focus {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .button.is-black.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: white;\n box-shadow: none;\n color: white; }\n #optimole-app .button.is-light {\n background-color: whitesmoke;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:hover, #optimole-app .button.is-light.is-hovered {\n background-color: #eeeeee;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:focus, #optimole-app .button.is-light.is-focused {\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light:focus:not(:active), #optimole-app .button.is-light.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .button.is-light:active, #optimole-app .button.is-light.is-active {\n background-color: #e8e8e8;\n border-color: transparent;\n color: #363636; }\n #optimole-app .button.is-light[disabled] {\n background-color: whitesmoke;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-light.is-inverted {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted:hover {\n background-color: #292929; }\n #optimole-app .button.is-light.is-inverted[disabled] {\n background-color: #363636;\n border-color: transparent;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-loading::after {\n border-color: transparent transparent #363636 #363636 !important; }\n #optimole-app .button.is-light.is-outlined {\n background-color: transparent;\n border-color: whitesmoke;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-outlined:hover, #optimole-app .button.is-light.is-outlined:focus {\n background-color: whitesmoke;\n border-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-light.is-outlined.is-loading::after {\n border-color: transparent transparent whitesmoke whitesmoke !important; }\n #optimole-app .button.is-light.is-outlined[disabled] {\n background-color: transparent;\n border-color: whitesmoke;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #363636;\n color: #363636; }\n #optimole-app .button.is-light.is-inverted.is-outlined:hover, #optimole-app .button.is-light.is-inverted.is-outlined:focus {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-light.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #363636;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark {\n background-color: #363636;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:hover, #optimole-app .button.is-dark.is-hovered {\n background-color: #2f2f2f;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:focus, #optimole-app .button.is-dark.is-focused {\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark:focus:not(:active), #optimole-app .button.is-dark.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .button.is-dark:active, #optimole-app .button.is-dark.is-active {\n background-color: #292929;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .button.is-dark[disabled] {\n background-color: #363636;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-dark.is-inverted {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted:hover {\n background-color: #e8e8e8; }\n #optimole-app .button.is-dark.is-inverted[disabled] {\n background-color: whitesmoke;\n border-color: transparent;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark.is-loading::after {\n border-color: transparent transparent whitesmoke whitesmoke !important; }\n #optimole-app .button.is-dark.is-outlined {\n background-color: transparent;\n border-color: #363636;\n color: #363636; }\n #optimole-app .button.is-dark.is-outlined:hover, #optimole-app .button.is-dark.is-outlined:focus {\n background-color: #363636;\n border-color: #363636;\n color: whitesmoke; }\n #optimole-app .button.is-dark.is-outlined.is-loading::after {\n border-color: transparent transparent #363636 #363636 !important; }\n #optimole-app .button.is-dark.is-outlined[disabled] {\n background-color: transparent;\n border-color: #363636;\n box-shadow: none;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted.is-outlined {\n background-color: transparent;\n border-color: whitesmoke;\n color: whitesmoke; }\n #optimole-app .button.is-dark.is-inverted.is-outlined:hover, #optimole-app .button.is-dark.is-inverted.is-outlined:focus {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .button.is-dark.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: whitesmoke;\n box-shadow: none;\n color: whitesmoke; }\n #optimole-app .button.is-primary {\n background-color: #e7602a;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:hover, #optimole-app .button.is-primary.is-hovered {\n background-color: #e6571f;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:focus, #optimole-app .button.is-primary.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary:focus:not(:active), #optimole-app .button.is-primary.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .button.is-primary:active, #optimole-app .button.is-primary.is-active {\n background-color: #de5119;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-primary[disabled] {\n background-color: #e7602a;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-primary.is-inverted {\n background-color: #fff;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-primary.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-primary.is-outlined {\n background-color: transparent;\n border-color: #e7602a;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-outlined:hover, #optimole-app .button.is-primary.is-outlined:focus {\n background-color: #e7602a;\n border-color: #e7602a;\n color: #fff; }\n #optimole-app .button.is-primary.is-outlined.is-loading::after {\n border-color: transparent transparent #e7602a #e7602a !important; }\n #optimole-app .button.is-primary.is-outlined[disabled] {\n background-color: transparent;\n border-color: #e7602a;\n box-shadow: none;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-primary.is-inverted.is-outlined:hover, #optimole-app .button.is-primary.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #e7602a; }\n #optimole-app .button.is-primary.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-link {\n background-color: #3273dc;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:hover, #optimole-app .button.is-link.is-hovered {\n background-color: #276cda;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:focus, #optimole-app .button.is-link.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link:focus:not(:active), #optimole-app .button.is-link.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .button.is-link:active, #optimole-app .button.is-link.is-active {\n background-color: #2366d1;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-link[disabled] {\n background-color: #3273dc;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-link.is-inverted {\n background-color: #fff;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-link.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #3273dc; }\n #optimole-app .button.is-link.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-link.is-outlined {\n background-color: transparent;\n border-color: #3273dc;\n color: #3273dc; }\n #optimole-app .button.is-link.is-outlined:hover, #optimole-app .button.is-link.is-outlined:focus {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .button.is-link.is-outlined.is-loading::after {\n border-color: transparent transparent #3273dc #3273dc !important; }\n #optimole-app .button.is-link.is-outlined[disabled] {\n background-color: transparent;\n border-color: #3273dc;\n box-shadow: none;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-link.is-inverted.is-outlined:hover, #optimole-app .button.is-link.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #3273dc; }\n #optimole-app .button.is-link.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-info {\n background-color: #008ec2;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:hover, #optimole-app .button.is-info.is-hovered {\n background-color: #0085b5;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:focus, #optimole-app .button.is-info.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info:focus:not(:active), #optimole-app .button.is-info.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .button.is-info:active, #optimole-app .button.is-info.is-active {\n background-color: #007ba9;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-info[disabled] {\n background-color: #008ec2;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-info.is-inverted {\n background-color: #fff;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-info.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #008ec2; }\n #optimole-app .button.is-info.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-info.is-outlined {\n background-color: transparent;\n border-color: #008ec2;\n color: #008ec2; }\n #optimole-app .button.is-info.is-outlined:hover, #optimole-app .button.is-info.is-outlined:focus {\n background-color: #008ec2;\n border-color: #008ec2;\n color: #fff; }\n #optimole-app .button.is-info.is-outlined.is-loading::after {\n border-color: transparent transparent #008ec2 #008ec2 !important; }\n #optimole-app .button.is-info.is-outlined[disabled] {\n background-color: transparent;\n border-color: #008ec2;\n box-shadow: none;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-info.is-inverted.is-outlined:hover, #optimole-app .button.is-info.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #008ec2; }\n #optimole-app .button.is-info.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-success {\n background-color: #34a85e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:hover, #optimole-app .button.is-success.is-hovered {\n background-color: #319e59;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:focus, #optimole-app .button.is-success.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success:focus:not(:active), #optimole-app .button.is-success.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .button.is-success:active, #optimole-app .button.is-success.is-active {\n background-color: #2e9553;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-success[disabled] {\n background-color: #34a85e;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-success.is-inverted {\n background-color: #fff;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-success.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #34a85e; }\n #optimole-app .button.is-success.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-success.is-outlined {\n background-color: transparent;\n border-color: #34a85e;\n color: #34a85e; }\n #optimole-app .button.is-success.is-outlined:hover, #optimole-app .button.is-success.is-outlined:focus {\n background-color: #34a85e;\n border-color: #34a85e;\n color: #fff; }\n #optimole-app .button.is-success.is-outlined.is-loading::after {\n border-color: transparent transparent #34a85e #34a85e !important; }\n #optimole-app .button.is-success.is-outlined[disabled] {\n background-color: transparent;\n border-color: #34a85e;\n box-shadow: none;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-success.is-inverted.is-outlined:hover, #optimole-app .button.is-success.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #34a85e; }\n #optimole-app .button.is-success.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-warning {\n background-color: #ffdd57;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:hover, #optimole-app .button.is-warning.is-hovered {\n background-color: #ffdb4a;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:focus, #optimole-app .button.is-warning.is-focused {\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning:focus:not(:active), #optimole-app .button.is-warning.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .button.is-warning:active, #optimole-app .button.is-warning.is-active {\n background-color: #ffd83d;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning[disabled] {\n background-color: #ffdd57;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-warning.is-inverted {\n background-color: rgba(0, 0, 0, 0.7);\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted:hover {\n background-color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-inverted[disabled] {\n background-color: rgba(0, 0, 0, 0.7);\n border-color: transparent;\n box-shadow: none;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-loading::after {\n border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }\n #optimole-app .button.is-warning.is-outlined {\n background-color: transparent;\n border-color: #ffdd57;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-outlined:hover, #optimole-app .button.is-warning.is-outlined:focus {\n background-color: #ffdd57;\n border-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-outlined.is-loading::after {\n border-color: transparent transparent #ffdd57 #ffdd57 !important; }\n #optimole-app .button.is-warning.is-outlined[disabled] {\n background-color: transparent;\n border-color: #ffdd57;\n box-shadow: none;\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted.is-outlined {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.7);\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-warning.is-inverted.is-outlined:hover, #optimole-app .button.is-warning.is-inverted.is-outlined:focus {\n background-color: rgba(0, 0, 0, 0.7);\n color: #ffdd57; }\n #optimole-app .button.is-warning.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: rgba(0, 0, 0, 0.7);\n box-shadow: none;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .button.is-danger {\n background-color: #d54222;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:hover, #optimole-app .button.is-danger.is-hovered {\n background-color: #ca3f20;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:focus, #optimole-app .button.is-danger.is-focused {\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger:focus:not(:active), #optimole-app .button.is-danger.is-focused:not(:active) {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .button.is-danger:active, #optimole-app .button.is-danger.is-active {\n background-color: #bf3b1e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .button.is-danger[disabled] {\n background-color: #d54222;\n border-color: transparent;\n box-shadow: none; }\n #optimole-app .button.is-danger.is-inverted {\n background-color: #fff;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted:hover {\n background-color: #f2f2f2; }\n #optimole-app .button.is-danger.is-inverted[disabled] {\n background-color: #fff;\n border-color: transparent;\n box-shadow: none;\n color: #d54222; }\n #optimole-app .button.is-danger.is-loading::after {\n border-color: transparent transparent #fff #fff !important; }\n #optimole-app .button.is-danger.is-outlined {\n background-color: transparent;\n border-color: #d54222;\n color: #d54222; }\n #optimole-app .button.is-danger.is-outlined:hover, #optimole-app .button.is-danger.is-outlined:focus {\n background-color: #d54222;\n border-color: #d54222;\n color: #fff; }\n #optimole-app .button.is-danger.is-outlined.is-loading::after {\n border-color: transparent transparent #d54222 #d54222 !important; }\n #optimole-app .button.is-danger.is-outlined[disabled] {\n background-color: transparent;\n border-color: #d54222;\n box-shadow: none;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted.is-outlined {\n background-color: transparent;\n border-color: #fff;\n color: #fff; }\n #optimole-app .button.is-danger.is-inverted.is-outlined:hover, #optimole-app .button.is-danger.is-inverted.is-outlined:focus {\n background-color: #fff;\n color: #d54222; }\n #optimole-app .button.is-danger.is-inverted.is-outlined[disabled] {\n background-color: transparent;\n border-color: #fff;\n box-shadow: none;\n color: #fff; }\n #optimole-app .button.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .button.is-medium {\n font-size: 1.25rem; }\n #optimole-app .button.is-large {\n font-size: 1.5rem; }\n #optimole-app .button[disabled] {\n background-color: white;\n border-color: #dbdbdb;\n box-shadow: none;\n opacity: 0.5; }\n #optimole-app .button.is-fullwidth {\n display: -ms-flexbox;\n display: flex;\n width: 100%; }\n #optimole-app .button.is-loading {\n color: transparent !important;\n pointer-events: none; }\n #optimole-app .button.is-loading::after {\n position: absolute;\n left: calc(50% - (1em / 2));\n top: calc(50% - (1em / 2));\n position: absolute !important; }\n #optimole-app .button.is-static {\n background-color: whitesmoke;\n border-color: #dbdbdb;\n color: #7a7a7a;\n box-shadow: none;\n pointer-events: none; }\n #optimole-app .button.is-rounded {\n border-radius: 290486px;\n padding-left: 1em;\n padding-right: 1em; }\n #optimole-app .buttons {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .buttons .button {\n margin-bottom: 0.5rem; }\n #optimole-app .buttons .button:not(:last-child) {\n margin-right: 0.5rem; }\n #optimole-app .buttons:last-child {\n margin-bottom: -0.5rem; }\n #optimole-app .buttons:not(:last-child) {\n margin-bottom: 1rem; }\n #optimole-app .buttons.has-addons .button:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .buttons.has-addons .button:not(:last-child) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n margin-right: -1px; }\n #optimole-app .buttons.has-addons .button:last-child {\n margin-right: 0; }\n #optimole-app .buttons.has-addons .button:hover, #optimole-app .buttons.has-addons .button.is-hovered {\n z-index: 2; }\n #optimole-app .buttons.has-addons .button:focus, #optimole-app .buttons.has-addons .button.is-focused, #optimole-app .buttons.has-addons .button:active, #optimole-app .buttons.has-addons .button.is-active, #optimole-app .buttons.has-addons .button.is-selected {\n z-index: 3; }\n #optimole-app .buttons.has-addons .button:focus:hover, #optimole-app .buttons.has-addons .button.is-focused:hover, #optimole-app .buttons.has-addons .button:active:hover, #optimole-app .buttons.has-addons .button.is-active:hover, #optimole-app .buttons.has-addons .button.is-selected:hover {\n z-index: 4; }\n #optimole-app .buttons.has-addons .button.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .buttons.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .buttons.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .container {\n margin: 0 auto;\n position: relative; }\n @media screen and (min-width: 1088px) {\n #optimole-app .container {\n max-width: 960px;\n width: 960px; }\n #optimole-app .container.is-fluid {\n margin-left: 64px;\n margin-right: 64px;\n max-width: none;\n width: auto; } }\n @media screen and (max-width: 1279px) {\n #optimole-app .container.is-widescreen {\n max-width: 1152px;\n width: auto; } }\n @media screen and (max-width: 1471px) {\n #optimole-app .container.is-fullhd {\n max-width: 1344px;\n width: auto; } }\n @media screen and (min-width: 1280px) {\n #optimole-app .container {\n max-width: 1152px;\n width: 1152px; } }\n @media screen and (min-width: 1472px) {\n #optimole-app .container {\n max-width: 1344px;\n width: 1344px; } }\n #optimole-app .content li + li {\n margin-top: 0.25em; }\n #optimole-app .content p:not(:last-child),\n #optimole-app .content dl:not(:last-child),\n #optimole-app .content ol:not(:last-child),\n #optimole-app .content ul:not(:last-child),\n #optimole-app .content blockquote:not(:last-child),\n #optimole-app .content pre:not(:last-child),\n #optimole-app .content table:not(:last-child) {\n margin-bottom: 1em; }\n #optimole-app .content h1,\n #optimole-app .content h2,\n #optimole-app .content h3,\n #optimole-app .content h4,\n #optimole-app .content h5,\n #optimole-app .content h6 {\n color: #363636;\n font-weight: 600;\n line-height: 1.125; }\n #optimole-app .content h1 {\n font-size: 2em;\n margin-bottom: 0.5em; }\n #optimole-app .content h1:not(:first-child) {\n margin-top: 1em; }\n #optimole-app .content h2 {\n font-size: 1.75em;\n margin-bottom: 0.5714em; }\n #optimole-app .content h2:not(:first-child) {\n margin-top: 1.1428em; }\n #optimole-app .content h3 {\n font-size: 1.5em;\n margin-bottom: 0.6666em; }\n #optimole-app .content h3:not(:first-child) {\n margin-top: 1.3333em; }\n #optimole-app .content h4 {\n font-size: 1.25em;\n margin-bottom: 0.8em; }\n #optimole-app .content h5 {\n font-size: 1.125em;\n margin-bottom: 0.8888em; }\n #optimole-app .content h6 {\n font-size: 1em;\n margin-bottom: 1em; }\n #optimole-app .content blockquote {\n background-color: whitesmoke;\n border-left: 5px solid #dbdbdb;\n padding: 1.25em 1.5em; }\n #optimole-app .content ol {\n list-style: decimal outside;\n margin-left: 2em;\n margin-top: 1em; }\n #optimole-app .content ul {\n list-style: disc outside;\n margin-left: 2em;\n margin-top: 1em; }\n #optimole-app .content ul ul {\n list-style-type: circle;\n margin-top: 0.5em; }\n #optimole-app .content ul ul ul {\n list-style-type: square; }\n #optimole-app .content dd {\n margin-left: 2em; }\n #optimole-app .content figure {\n margin-left: 2em;\n margin-right: 2em;\n text-align: center; }\n #optimole-app .content figure:not(:first-child) {\n margin-top: 2em; }\n #optimole-app .content figure:not(:last-child) {\n margin-bottom: 2em; }\n #optimole-app .content figure img {\n display: inline-block; }\n #optimole-app .content figure figcaption {\n font-style: italic; }\n #optimole-app .content pre {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding: 1.25em 1.5em;\n white-space: pre;\n word-wrap: normal; }\n #optimole-app .content sup,\n #optimole-app .content sub {\n font-size: 75%; }\n #optimole-app .content table {\n width: 100%; }\n #optimole-app .content table td,\n #optimole-app .content table th {\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px;\n padding: 0.5em 0.75em;\n vertical-align: top; }\n #optimole-app .content table th {\n color: #363636;\n text-align: left; }\n #optimole-app .content table thead td,\n #optimole-app .content table thead th {\n border-width: 0 0 2px;\n color: #363636; }\n #optimole-app .content table tfoot td,\n #optimole-app .content table tfoot th {\n border-width: 2px 0 0;\n color: #363636; }\n #optimole-app .content table tbody tr:last-child td,\n #optimole-app .content table tbody tr:last-child th {\n border-bottom-width: 0; }\n #optimole-app .content.is-small {\n font-size: 0.75rem; }\n #optimole-app .content.is-medium {\n font-size: 1.25rem; }\n #optimole-app .content.is-large {\n font-size: 1.5rem; }\n #optimole-app .input,\n #optimole-app .textarea {\n background-color: white;\n border-color: #dbdbdb;\n color: #363636;\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);\n max-width: 100%;\n width: 100%; }\n #optimole-app .input::-moz-placeholder,\n #optimole-app .textarea::-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input::-webkit-input-placeholder,\n #optimole-app .textarea::-webkit-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:-moz-placeholder,\n #optimole-app .textarea:-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:-ms-input-placeholder,\n #optimole-app .textarea:-ms-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .input:hover, #optimole-app .input.is-hovered,\n #optimole-app .textarea:hover,\n #optimole-app .textarea.is-hovered {\n border-color: #b5b5b5; }\n #optimole-app .input:focus, #optimole-app .input.is-focused, #optimole-app .input:active, #optimole-app .input.is-active,\n #optimole-app .textarea:focus,\n #optimole-app .textarea.is-focused,\n #optimole-app .textarea:active,\n #optimole-app .textarea.is-active {\n border-color: #3273dc;\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .input[disabled],\n #optimole-app .textarea[disabled] {\n background-color: whitesmoke;\n border-color: whitesmoke;\n box-shadow: none;\n color: #7a7a7a; }\n #optimole-app .input[disabled]::-moz-placeholder,\n #optimole-app .textarea[disabled]::-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]::-webkit-input-placeholder,\n #optimole-app .textarea[disabled]::-webkit-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]:-moz-placeholder,\n #optimole-app .textarea[disabled]:-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[disabled]:-ms-input-placeholder,\n #optimole-app .textarea[disabled]:-ms-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .input[readonly],\n #optimole-app .textarea[readonly] {\n box-shadow: none; }\n #optimole-app .input.is-white,\n #optimole-app .textarea.is-white {\n border-color: white; }\n #optimole-app .input.is-white:focus, #optimole-app .input.is-white.is-focused, #optimole-app .input.is-white:active, #optimole-app .input.is-white.is-active,\n #optimole-app .textarea.is-white:focus,\n #optimole-app .textarea.is-white.is-focused,\n #optimole-app .textarea.is-white:active,\n #optimole-app .textarea.is-white.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .input.is-black,\n #optimole-app .textarea.is-black {\n border-color: #0a0a0a; }\n #optimole-app .input.is-black:focus, #optimole-app .input.is-black.is-focused, #optimole-app .input.is-black:active, #optimole-app .input.is-black.is-active,\n #optimole-app .textarea.is-black:focus,\n #optimole-app .textarea.is-black.is-focused,\n #optimole-app .textarea.is-black:active,\n #optimole-app .textarea.is-black.is-active {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .input.is-light,\n #optimole-app .textarea.is-light {\n border-color: whitesmoke; }\n #optimole-app .input.is-light:focus, #optimole-app .input.is-light.is-focused, #optimole-app .input.is-light:active, #optimole-app .input.is-light.is-active,\n #optimole-app .textarea.is-light:focus,\n #optimole-app .textarea.is-light.is-focused,\n #optimole-app .textarea.is-light:active,\n #optimole-app .textarea.is-light.is-active {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .input.is-dark,\n #optimole-app .textarea.is-dark {\n border-color: #363636; }\n #optimole-app .input.is-dark:focus, #optimole-app .input.is-dark.is-focused, #optimole-app .input.is-dark:active, #optimole-app .input.is-dark.is-active,\n #optimole-app .textarea.is-dark:focus,\n #optimole-app .textarea.is-dark.is-focused,\n #optimole-app .textarea.is-dark:active,\n #optimole-app .textarea.is-dark.is-active {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .input.is-primary,\n #optimole-app .textarea.is-primary {\n border-color: #e7602a; }\n #optimole-app .input.is-primary:focus, #optimole-app .input.is-primary.is-focused, #optimole-app .input.is-primary:active, #optimole-app .input.is-primary.is-active,\n #optimole-app .textarea.is-primary:focus,\n #optimole-app .textarea.is-primary.is-focused,\n #optimole-app .textarea.is-primary:active,\n #optimole-app .textarea.is-primary.is-active {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .input.is-link,\n #optimole-app .textarea.is-link {\n border-color: #3273dc; }\n #optimole-app .input.is-link:focus, #optimole-app .input.is-link.is-focused, #optimole-app .input.is-link:active, #optimole-app .input.is-link.is-active,\n #optimole-app .textarea.is-link:focus,\n #optimole-app .textarea.is-link.is-focused,\n #optimole-app .textarea.is-link:active,\n #optimole-app .textarea.is-link.is-active {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .input.is-info,\n #optimole-app .textarea.is-info {\n border-color: #008ec2; }\n #optimole-app .input.is-info:focus, #optimole-app .input.is-info.is-focused, #optimole-app .input.is-info:active, #optimole-app .input.is-info.is-active,\n #optimole-app .textarea.is-info:focus,\n #optimole-app .textarea.is-info.is-focused,\n #optimole-app .textarea.is-info:active,\n #optimole-app .textarea.is-info.is-active {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .input.is-success,\n #optimole-app .textarea.is-success {\n border-color: #34a85e; }\n #optimole-app .input.is-success:focus, #optimole-app .input.is-success.is-focused, #optimole-app .input.is-success:active, #optimole-app .input.is-success.is-active,\n #optimole-app .textarea.is-success:focus,\n #optimole-app .textarea.is-success.is-focused,\n #optimole-app .textarea.is-success:active,\n #optimole-app .textarea.is-success.is-active {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .input.is-warning,\n #optimole-app .textarea.is-warning {\n border-color: #ffdd57; }\n #optimole-app .input.is-warning:focus, #optimole-app .input.is-warning.is-focused, #optimole-app .input.is-warning:active, #optimole-app .input.is-warning.is-active,\n #optimole-app .textarea.is-warning:focus,\n #optimole-app .textarea.is-warning.is-focused,\n #optimole-app .textarea.is-warning:active,\n #optimole-app .textarea.is-warning.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .input.is-danger,\n #optimole-app .textarea.is-danger {\n border-color: #d54222; }\n #optimole-app .input.is-danger:focus, #optimole-app .input.is-danger.is-focused, #optimole-app .input.is-danger:active, #optimole-app .input.is-danger.is-active,\n #optimole-app .textarea.is-danger:focus,\n #optimole-app .textarea.is-danger.is-focused,\n #optimole-app .textarea.is-danger:active,\n #optimole-app .textarea.is-danger.is-active {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .input.is-small,\n #optimole-app .textarea.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .input.is-medium,\n #optimole-app .textarea.is-medium {\n font-size: 1.25rem; }\n #optimole-app .input.is-large,\n #optimole-app .textarea.is-large {\n font-size: 1.5rem; }\n #optimole-app .input.is-fullwidth,\n #optimole-app .textarea.is-fullwidth {\n display: block;\n width: 100%; }\n #optimole-app .input.is-inline,\n #optimole-app .textarea.is-inline {\n display: inline;\n width: auto; }\n #optimole-app .input.is-rounded {\n border-radius: 290486px;\n padding-left: 1em;\n padding-right: 1em; }\n #optimole-app .input.is-static {\n background-color: transparent;\n border-color: transparent;\n box-shadow: none;\n padding-left: 0;\n padding-right: 0; }\n #optimole-app .textarea {\n display: block;\n max-width: 100%;\n min-width: 100%;\n padding: 0.625em;\n resize: vertical; }\n #optimole-app .textarea:not([rows]) {\n max-height: 600px;\n min-height: 120px; }\n #optimole-app .textarea[rows] {\n height: initial; }\n #optimole-app .textarea.has-fixed-size {\n resize: none; }\n #optimole-app .checkbox,\n #optimole-app .radio {\n cursor: pointer;\n display: inline-block;\n line-height: 1.25;\n position: relative; }\n #optimole-app .checkbox input,\n #optimole-app .radio input {\n cursor: pointer; }\n #optimole-app .checkbox:hover,\n #optimole-app .radio:hover {\n color: #363636; }\n #optimole-app .checkbox[disabled],\n #optimole-app .radio[disabled] {\n color: #7a7a7a;\n cursor: not-allowed; }\n #optimole-app .radio + .radio {\n margin-left: 0.5em; }\n #optimole-app .select {\n display: inline-block;\n max-width: 100%;\n position: relative;\n vertical-align: top; }\n #optimole-app .select:not(.is-multiple) {\n height: 2.25em; }\n #optimole-app .select:not(.is-multiple):not(.is-loading)::after {\n border-color: #3273dc;\n right: 1.125em;\n z-index: 4; }\n #optimole-app .select.is-rounded select {\n border-radius: 290486px;\n padding-left: 1em; }\n #optimole-app .select select {\n background-color: white;\n border-color: #dbdbdb;\n color: #363636;\n cursor: pointer;\n display: block;\n font-size: 1em;\n max-width: 100%;\n outline: none; }\n #optimole-app .select select::-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select::-webkit-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:-moz-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:-ms-input-placeholder {\n color: rgba(54, 54, 54, 0.3); }\n #optimole-app .select select:hover, #optimole-app .select select.is-hovered {\n border-color: #b5b5b5; }\n #optimole-app .select select:focus, #optimole-app .select select.is-focused, #optimole-app .select select:active, #optimole-app .select select.is-active {\n border-color: #3273dc;\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .select select[disabled] {\n background-color: whitesmoke;\n border-color: whitesmoke;\n box-shadow: none;\n color: #7a7a7a; }\n #optimole-app .select select[disabled]::-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]::-webkit-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]:-moz-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select[disabled]:-ms-input-placeholder {\n color: rgba(122, 122, 122, 0.3); }\n #optimole-app .select select::-ms-expand {\n display: none; }\n #optimole-app .select select[disabled]:hover {\n border-color: whitesmoke; }\n #optimole-app .select select:not([multiple]) {\n padding-right: 2.5em; }\n #optimole-app .select select[multiple] {\n height: initial;\n padding: 0; }\n #optimole-app .select select[multiple] option {\n padding: 0.5em 1em; }\n #optimole-app .select:not(.is-multiple):not(.is-loading):hover::after {\n border-color: #363636; }\n #optimole-app .select.is-white:not(:hover)::after {\n border-color: white; }\n #optimole-app .select.is-white select {\n border-color: white; }\n #optimole-app .select.is-white select:hover, #optimole-app .select.is-white select.is-hovered {\n border-color: #f2f2f2; }\n #optimole-app .select.is-white select:focus, #optimole-app .select.is-white select.is-focused, #optimole-app .select.is-white select:active, #optimole-app .select.is-white select.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }\n #optimole-app .select.is-black:not(:hover)::after {\n border-color: #0a0a0a; }\n #optimole-app .select.is-black select {\n border-color: #0a0a0a; }\n #optimole-app .select.is-black select:hover, #optimole-app .select.is-black select.is-hovered {\n border-color: black; }\n #optimole-app .select.is-black select:focus, #optimole-app .select.is-black select.is-focused, #optimole-app .select.is-black select:active, #optimole-app .select.is-black select.is-active {\n box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }\n #optimole-app .select.is-light:not(:hover)::after {\n border-color: whitesmoke; }\n #optimole-app .select.is-light select {\n border-color: whitesmoke; }\n #optimole-app .select.is-light select:hover, #optimole-app .select.is-light select.is-hovered {\n border-color: #e8e8e8; }\n #optimole-app .select.is-light select:focus, #optimole-app .select.is-light select.is-focused, #optimole-app .select.is-light select:active, #optimole-app .select.is-light select.is-active {\n box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }\n #optimole-app .select.is-dark:not(:hover)::after {\n border-color: #363636; }\n #optimole-app .select.is-dark select {\n border-color: #363636; }\n #optimole-app .select.is-dark select:hover, #optimole-app .select.is-dark select.is-hovered {\n border-color: #292929; }\n #optimole-app .select.is-dark select:focus, #optimole-app .select.is-dark select.is-focused, #optimole-app .select.is-dark select:active, #optimole-app .select.is-dark select.is-active {\n box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }\n #optimole-app .select.is-primary:not(:hover)::after {\n border-color: #e7602a; }\n #optimole-app .select.is-primary select {\n border-color: #e7602a; }\n #optimole-app .select.is-primary select:hover, #optimole-app .select.is-primary select.is-hovered {\n border-color: #de5119; }\n #optimole-app .select.is-primary select:focus, #optimole-app .select.is-primary select.is-focused, #optimole-app .select.is-primary select:active, #optimole-app .select.is-primary select.is-active {\n box-shadow: 0 0 0 0.125em rgba(231, 96, 42, 0.25); }\n #optimole-app .select.is-link:not(:hover)::after {\n border-color: #3273dc; }\n #optimole-app .select.is-link select {\n border-color: #3273dc; }\n #optimole-app .select.is-link select:hover, #optimole-app .select.is-link select.is-hovered {\n border-color: #2366d1; }\n #optimole-app .select.is-link select:focus, #optimole-app .select.is-link select.is-focused, #optimole-app .select.is-link select:active, #optimole-app .select.is-link select.is-active {\n box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }\n #optimole-app .select.is-info:not(:hover)::after {\n border-color: #008ec2; }\n #optimole-app .select.is-info select {\n border-color: #008ec2; }\n #optimole-app .select.is-info select:hover, #optimole-app .select.is-info select.is-hovered {\n border-color: #007ba9; }\n #optimole-app .select.is-info select:focus, #optimole-app .select.is-info select.is-focused, #optimole-app .select.is-info select:active, #optimole-app .select.is-info select.is-active {\n box-shadow: 0 0 0 0.125em rgba(0, 142, 194, 0.25); }\n #optimole-app .select.is-success:not(:hover)::after {\n border-color: #34a85e; }\n #optimole-app .select.is-success select {\n border-color: #34a85e; }\n #optimole-app .select.is-success select:hover, #optimole-app .select.is-success select.is-hovered {\n border-color: #2e9553; }\n #optimole-app .select.is-success select:focus, #optimole-app .select.is-success select.is-focused, #optimole-app .select.is-success select:active, #optimole-app .select.is-success select.is-active {\n box-shadow: 0 0 0 0.125em rgba(52, 168, 94, 0.25); }\n #optimole-app .select.is-warning:not(:hover)::after {\n border-color: #ffdd57; }\n #optimole-app .select.is-warning select {\n border-color: #ffdd57; }\n #optimole-app .select.is-warning select:hover, #optimole-app .select.is-warning select.is-hovered {\n border-color: #ffd83d; }\n #optimole-app .select.is-warning select:focus, #optimole-app .select.is-warning select.is-focused, #optimole-app .select.is-warning select:active, #optimole-app .select.is-warning select.is-active {\n box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }\n #optimole-app .select.is-danger:not(:hover)::after {\n border-color: #d54222; }\n #optimole-app .select.is-danger select {\n border-color: #d54222; }\n #optimole-app .select.is-danger select:hover, #optimole-app .select.is-danger select.is-hovered {\n border-color: #bf3b1e; }\n #optimole-app .select.is-danger select:focus, #optimole-app .select.is-danger select.is-focused, #optimole-app .select.is-danger select:active, #optimole-app .select.is-danger select.is-active {\n box-shadow: 0 0 0 0.125em rgba(213, 66, 34, 0.25); }\n #optimole-app .select.is-small {\n border-radius: 2px;\n font-size: 0.75rem; }\n #optimole-app .select.is-medium {\n font-size: 1.25rem; }\n #optimole-app .select.is-large {\n font-size: 1.5rem; }\n #optimole-app .select.is-disabled::after {\n border-color: #7a7a7a; }\n #optimole-app .select.is-fullwidth {\n width: 100%; }\n #optimole-app .select.is-fullwidth select {\n width: 100%; }\n #optimole-app .select.is-loading::after {\n margin-top: 0;\n position: absolute;\n right: 0.625em;\n top: 0.625em;\n transform: none; }\n #optimole-app .select.is-loading.is-small:after {\n font-size: 0.75rem; }\n #optimole-app .select.is-loading.is-medium:after {\n font-size: 1.25rem; }\n #optimole-app .select.is-loading.is-large:after {\n font-size: 1.5rem; }\n #optimole-app .file {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start;\n position: relative; }\n #optimole-app .file.is-white .file-cta {\n background-color: white;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-white:hover .file-cta, #optimole-app .file.is-white.is-hovered .file-cta {\n background-color: #f9f9f9;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-white:focus .file-cta, #optimole-app .file.is-white.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);\n color: #0a0a0a; }\n #optimole-app .file.is-white:active .file-cta, #optimole-app .file.is-white.is-active .file-cta {\n background-color: #f2f2f2;\n border-color: transparent;\n color: #0a0a0a; }\n #optimole-app .file.is-black .file-cta {\n background-color: #0a0a0a;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-black:hover .file-cta, #optimole-app .file.is-black.is-hovered .file-cta {\n background-color: #040404;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-black:focus .file-cta, #optimole-app .file.is-black.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);\n color: white; }\n #optimole-app .file.is-black:active .file-cta, #optimole-app .file.is-black.is-active .file-cta {\n background-color: black;\n border-color: transparent;\n color: white; }\n #optimole-app .file.is-light .file-cta {\n background-color: whitesmoke;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-light:hover .file-cta, #optimole-app .file.is-light.is-hovered .file-cta {\n background-color: #eeeeee;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-light:focus .file-cta, #optimole-app .file.is-light.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25);\n color: #363636; }\n #optimole-app .file.is-light:active .file-cta, #optimole-app .file.is-light.is-active .file-cta {\n background-color: #e8e8e8;\n border-color: transparent;\n color: #363636; }\n #optimole-app .file.is-dark .file-cta {\n background-color: #363636;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-dark:hover .file-cta, #optimole-app .file.is-dark.is-hovered .file-cta {\n background-color: #2f2f2f;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-dark:focus .file-cta, #optimole-app .file.is-dark.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25);\n color: whitesmoke; }\n #optimole-app .file.is-dark:active .file-cta, #optimole-app .file.is-dark.is-active .file-cta {\n background-color: #292929;\n border-color: transparent;\n color: whitesmoke; }\n #optimole-app .file.is-primary .file-cta {\n background-color: #e7602a;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-primary:hover .file-cta, #optimole-app .file.is-primary.is-hovered .file-cta {\n background-color: #e6571f;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-primary:focus .file-cta, #optimole-app .file.is-primary.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(231, 96, 42, 0.25);\n color: #fff; }\n #optimole-app .file.is-primary:active .file-cta, #optimole-app .file.is-primary.is-active .file-cta {\n background-color: #de5119;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link .file-cta {\n background-color: #3273dc;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link:hover .file-cta, #optimole-app .file.is-link.is-hovered .file-cta {\n background-color: #276cda;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-link:focus .file-cta, #optimole-app .file.is-link.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(50, 115, 220, 0.25);\n color: #fff; }\n #optimole-app .file.is-link:active .file-cta, #optimole-app .file.is-link.is-active .file-cta {\n background-color: #2366d1;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info .file-cta {\n background-color: #008ec2;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info:hover .file-cta, #optimole-app .file.is-info.is-hovered .file-cta {\n background-color: #0085b5;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-info:focus .file-cta, #optimole-app .file.is-info.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(0, 142, 194, 0.25);\n color: #fff; }\n #optimole-app .file.is-info:active .file-cta, #optimole-app .file.is-info.is-active .file-cta {\n background-color: #007ba9;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success .file-cta {\n background-color: #34a85e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success:hover .file-cta, #optimole-app .file.is-success.is-hovered .file-cta {\n background-color: #319e59;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-success:focus .file-cta, #optimole-app .file.is-success.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(52, 168, 94, 0.25);\n color: #fff; }\n #optimole-app .file.is-success:active .file-cta, #optimole-app .file.is-success.is-active .file-cta {\n background-color: #2e9553;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-warning .file-cta {\n background-color: #ffdd57;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:hover .file-cta, #optimole-app .file.is-warning.is-hovered .file-cta {\n background-color: #ffdb4a;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:focus .file-cta, #optimole-app .file.is-warning.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25);\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-warning:active .file-cta, #optimole-app .file.is-warning.is-active .file-cta {\n background-color: #ffd83d;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .file.is-danger .file-cta {\n background-color: #d54222;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-danger:hover .file-cta, #optimole-app .file.is-danger.is-hovered .file-cta {\n background-color: #ca3f20;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-danger:focus .file-cta, #optimole-app .file.is-danger.is-focused .file-cta {\n border-color: transparent;\n box-shadow: 0 0 0.5em rgba(213, 66, 34, 0.25);\n color: #fff; }\n #optimole-app .file.is-danger:active .file-cta, #optimole-app .file.is-danger.is-active .file-cta {\n background-color: #bf3b1e;\n border-color: transparent;\n color: #fff; }\n #optimole-app .file.is-small {\n font-size: 0.75rem; }\n #optimole-app .file.is-medium {\n font-size: 1.25rem; }\n #optimole-app .file.is-medium .file-icon .fa {\n font-size: 21px; }\n #optimole-app .file.is-large {\n font-size: 1.5rem; }\n #optimole-app .file.is-large .file-icon .fa {\n font-size: 28px; }\n #optimole-app .file.has-name .file-cta {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .file.has-name .file-name {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .file.has-name.is-empty .file-cta {\n border-radius: 4px; }\n #optimole-app .file.has-name.is-empty .file-name {\n display: none; }\n #optimole-app .file.is-boxed .file-label {\n -ms-flex-direction: column;\n flex-direction: column; }\n #optimole-app .file.is-boxed .file-cta {\n -ms-flex-direction: column;\n flex-direction: column;\n height: auto;\n padding: 1em 3em; }\n #optimole-app .file.is-boxed .file-name {\n border-width: 0 1px 1px; }\n #optimole-app .file.is-boxed .file-icon {\n height: 1.5em;\n width: 1.5em; }\n #optimole-app .file.is-boxed .file-icon .fa {\n font-size: 21px; }\n #optimole-app .file.is-boxed.is-small .file-icon .fa {\n font-size: 14px; }\n #optimole-app .file.is-boxed.is-medium .file-icon .fa {\n font-size: 28px; }\n #optimole-app .file.is-boxed.is-large .file-icon .fa {\n font-size: 35px; }\n #optimole-app .file.is-boxed.has-name .file-cta {\n border-radius: 4px 4px 0 0; }\n #optimole-app .file.is-boxed.has-name .file-name {\n border-radius: 0 0 4px 4px;\n border-width: 0 1px 1px; }\n #optimole-app .file.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .file.is-fullwidth .file-label {\n width: 100%; }\n #optimole-app .file.is-fullwidth .file-name {\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: none; }\n #optimole-app .file.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .file.is-right .file-cta {\n border-radius: 0 4px 4px 0; }\n #optimole-app .file.is-right .file-name {\n border-radius: 4px 0 0 4px;\n border-width: 1px 0 1px 1px;\n -ms-flex-order: -1;\n order: -1; }\n #optimole-app .file-label {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n cursor: pointer;\n -ms-flex-pack: start;\n justify-content: flex-start;\n overflow: hidden;\n position: relative; }\n #optimole-app .file-label:hover .file-cta {\n background-color: #eeeeee;\n color: #363636; }\n #optimole-app .file-label:hover .file-name {\n border-color: #d5d5d5; }\n #optimole-app .file-label:active .file-cta {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .file-label:active .file-name {\n border-color: #cfcfcf; }\n #optimole-app .file-input {\n height: 0.01em;\n left: 0;\n outline: none;\n position: absolute;\n top: 0;\n width: 0.01em; }\n #optimole-app .file-cta,\n #optimole-app .file-name {\n border-color: #dbdbdb;\n border-radius: 4px;\n font-size: 1em;\n padding-left: 1em;\n padding-right: 1em;\n white-space: nowrap; }\n #optimole-app .file-cta {\n background-color: whitesmoke;\n color: #4a4a4a; }\n #optimole-app .file-name {\n border-color: #dbdbdb;\n border-style: solid;\n border-width: 1px 1px 1px 0;\n display: block;\n max-width: 16em;\n overflow: hidden;\n text-align: left;\n text-overflow: ellipsis; }\n #optimole-app .file-icon {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n height: 1em;\n -ms-flex-pack: center;\n justify-content: center;\n margin-right: 0.5em;\n width: 1em; }\n #optimole-app .file-icon .fa {\n font-size: 14px; }\n #optimole-app .label {\n color: #363636;\n display: block;\n font-size: 1rem;\n font-weight: 700; }\n #optimole-app .label:not(:last-child) {\n margin-bottom: 0.5em; }\n #optimole-app .label.is-small {\n font-size: 0.75rem; }\n #optimole-app .label.is-medium {\n font-size: 1.25rem; }\n #optimole-app .label.is-large {\n font-size: 1.5rem; }\n #optimole-app .help {\n display: block;\n font-size: 0.75rem;\n margin-top: 0.25rem; }\n #optimole-app .help.is-white {\n color: white; }\n #optimole-app .help.is-black {\n color: #0a0a0a; }\n #optimole-app .help.is-light {\n color: whitesmoke; }\n #optimole-app .help.is-dark {\n color: #363636; }\n #optimole-app .help.is-primary {\n color: #e7602a; }\n #optimole-app .help.is-link {\n color: #3273dc; }\n #optimole-app .help.is-info {\n color: #008ec2; }\n #optimole-app .help.is-success {\n color: #34a85e; }\n #optimole-app .help.is-warning {\n color: #ffdd57; }\n #optimole-app .help.is-danger {\n color: #d54222; }\n #optimole-app .field:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .field.has-addons {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .field.has-addons .control:not(:last-child) {\n margin-right: -1px; }\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .button,\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .input,\n #optimole-app .field.has-addons .control:not(:first-child):not(:last-child) .select select {\n border-radius: 0; }\n #optimole-app .field.has-addons .control:first-child .button,\n #optimole-app .field.has-addons .control:first-child .input,\n #optimole-app .field.has-addons .control:first-child .select select {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .field.has-addons .control:last-child .button,\n #optimole-app .field.has-addons .control:last-child .input,\n #optimole-app .field.has-addons .control:last-child .select select {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .field.has-addons .control .button:hover, #optimole-app .field.has-addons .control .button.is-hovered,\n #optimole-app .field.has-addons .control .input:hover,\n #optimole-app .field.has-addons .control .input.is-hovered,\n #optimole-app .field.has-addons .control .select select:hover,\n #optimole-app .field.has-addons .control .select select.is-hovered {\n z-index: 2; }\n #optimole-app .field.has-addons .control .button:focus, #optimole-app .field.has-addons .control .button.is-focused, #optimole-app .field.has-addons .control .button:active, #optimole-app .field.has-addons .control .button.is-active,\n #optimole-app .field.has-addons .control .input:focus,\n #optimole-app .field.has-addons .control .input.is-focused,\n #optimole-app .field.has-addons .control .input:active,\n #optimole-app .field.has-addons .control .input.is-active,\n #optimole-app .field.has-addons .control .select select:focus,\n #optimole-app .field.has-addons .control .select select.is-focused,\n #optimole-app .field.has-addons .control .select select:active,\n #optimole-app .field.has-addons .control .select select.is-active {\n z-index: 3; }\n #optimole-app .field.has-addons .control .button:focus:hover, #optimole-app .field.has-addons .control .button.is-focused:hover, #optimole-app .field.has-addons .control .button:active:hover, #optimole-app .field.has-addons .control .button.is-active:hover,\n #optimole-app .field.has-addons .control .input:focus:hover,\n #optimole-app .field.has-addons .control .input.is-focused:hover,\n #optimole-app .field.has-addons .control .input:active:hover,\n #optimole-app .field.has-addons .control .input.is-active:hover,\n #optimole-app .field.has-addons .control .select select:focus:hover,\n #optimole-app .field.has-addons .control .select select.is-focused:hover,\n #optimole-app .field.has-addons .control .select select:active:hover,\n #optimole-app .field.has-addons .control .select select.is-active:hover {\n z-index: 4; }\n #optimole-app .field.has-addons .control.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .field.has-addons.has-addons-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .field.has-addons.has-addons-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .field.has-addons.has-addons-fullwidth .control {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .field.is-grouped {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .field.is-grouped > .control {\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .field.is-grouped > .control:not(:last-child) {\n margin-bottom: 0;\n margin-right: 0.75rem; }\n #optimole-app .field.is-grouped > .control.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field.is-grouped.is-grouped-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .field.is-grouped.is-grouped-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .field.is-grouped.is-grouped-multiline {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .field.is-grouped.is-grouped-multiline > .control:last-child, #optimole-app .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .field.is-grouped.is-grouped-multiline:last-child {\n margin-bottom: -0.75rem; }\n #optimole-app .field.is-grouped.is-grouped-multiline:not(:last-child) {\n margin-bottom: 0; }\n @media screen and (min-width: 769px), print {\n #optimole-app .field.is-horizontal {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .field-label .label {\n font-size: inherit; }\n @media screen and (max-width: 768px) {\n #optimole-app .field-label {\n margin-bottom: 0.5rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .field-label {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-right: 1.5rem;\n text-align: right; }\n #optimole-app .field-label.is-small {\n font-size: 0.75rem;\n padding-top: 0.375em; }\n #optimole-app .field-label.is-normal {\n padding-top: 0.375em; }\n #optimole-app .field-label.is-medium {\n font-size: 1.25rem;\n padding-top: 0.375em; }\n #optimole-app .field-label.is-large {\n font-size: 1.5rem;\n padding-top: 0.375em; } }\n #optimole-app .field-body .field .field {\n margin-bottom: 0; }\n @media screen and (min-width: 769px), print {\n #optimole-app .field-body {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 5;\n flex-grow: 5;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field-body .field {\n margin-bottom: 0; }\n #optimole-app .field-body > .field {\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .field-body > .field:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n #optimole-app .field-body > .field:not(:last-child) {\n margin-right: 0.75rem; } }\n #optimole-app .control {\n font-size: 1rem;\n position: relative;\n text-align: left; }\n #optimole-app .control.has-icon .icon {\n color: #dbdbdb;\n height: 2.25em;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 2.25em;\n z-index: 4; }\n #optimole-app .control.has-icon .input:focus + .icon {\n color: #7a7a7a; }\n #optimole-app .control.has-icon .input.is-small + .icon {\n font-size: 0.75rem; }\n #optimole-app .control.has-icon .input.is-medium + .icon {\n font-size: 1.25rem; }\n #optimole-app .control.has-icon .input.is-large + .icon {\n font-size: 1.5rem; }\n #optimole-app .control.has-icon:not(.has-icon-right) .icon {\n left: 0; }\n #optimole-app .control.has-icon:not(.has-icon-right) .input {\n padding-left: 2.25em; }\n #optimole-app .control.has-icon.has-icon-right .icon {\n right: 0; }\n #optimole-app .control.has-icon.has-icon-right .input {\n padding-right: 2.25em; }\n #optimole-app .control.has-icons-left .input:focus ~ .icon,\n #optimole-app .control.has-icons-left .select:focus ~ .icon, #optimole-app .control.has-icons-right .input:focus ~ .icon,\n #optimole-app .control.has-icons-right .select:focus ~ .icon {\n color: #7a7a7a; }\n #optimole-app .control.has-icons-left .input.is-small ~ .icon,\n #optimole-app .control.has-icons-left .select.is-small ~ .icon, #optimole-app .control.has-icons-right .input.is-small ~ .icon,\n #optimole-app .control.has-icons-right .select.is-small ~ .icon {\n font-size: 0.75rem; }\n #optimole-app .control.has-icons-left .input.is-medium ~ .icon,\n #optimole-app .control.has-icons-left .select.is-medium ~ .icon, #optimole-app .control.has-icons-right .input.is-medium ~ .icon,\n #optimole-app .control.has-icons-right .select.is-medium ~ .icon {\n font-size: 1.25rem; }\n #optimole-app .control.has-icons-left .input.is-large ~ .icon,\n #optimole-app .control.has-icons-left .select.is-large ~ .icon, #optimole-app .control.has-icons-right .input.is-large ~ .icon,\n #optimole-app .control.has-icons-right .select.is-large ~ .icon {\n font-size: 1.5rem; }\n #optimole-app .control.has-icons-left .icon, #optimole-app .control.has-icons-right .icon {\n color: #dbdbdb;\n height: 2.25em;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 2.25em;\n z-index: 4; }\n #optimole-app .control.has-icons-left .input,\n #optimole-app .control.has-icons-left .select select {\n padding-left: 2.25em; }\n #optimole-app .control.has-icons-left .icon.is-left {\n left: 0; }\n #optimole-app .control.has-icons-right .input,\n #optimole-app .control.has-icons-right .select select {\n padding-right: 2.25em; }\n #optimole-app .control.has-icons-right .icon.is-right {\n right: 0; }\n #optimole-app .control.is-loading::after {\n position: absolute !important;\n right: 0.625em;\n top: 0.625em;\n z-index: 4; }\n #optimole-app .control.is-loading.is-small:after {\n font-size: 0.75rem; }\n #optimole-app .control.is-loading.is-medium:after {\n font-size: 1.25rem; }\n #optimole-app .control.is-loading.is-large:after {\n font-size: 1.5rem; }\n #optimole-app .icon {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n height: 1.5rem;\n width: 1.5rem; }\n #optimole-app .icon.is-small {\n height: 1rem;\n width: 1rem; }\n #optimole-app .icon.is-medium {\n height: 2rem;\n width: 2rem; }\n #optimole-app .icon.is-large {\n height: 3rem;\n width: 3rem; }\n #optimole-app .image {\n display: block;\n position: relative; }\n #optimole-app .image img {\n display: block;\n height: auto;\n width: 100%; }\n #optimole-app .image img.is-rounded {\n border-radius: 290486px; }\n #optimole-app .image.is-square img, #optimole-app .image.is-1by1 img, #optimole-app .image.is-5by4 img, #optimole-app .image.is-4by3 img, #optimole-app .image.is-3by2 img, #optimole-app .image.is-5by3 img, #optimole-app .image.is-16by9 img, #optimole-app .image.is-2by1 img, #optimole-app .image.is-3by1 img, #optimole-app .image.is-4by5 img, #optimole-app .image.is-3by4 img, #optimole-app .image.is-2by3 img, #optimole-app .image.is-3by5 img, #optimole-app .image.is-9by16 img, #optimole-app .image.is-1by2 img, #optimole-app .image.is-1by3 img {\n height: 100%;\n width: 100%; }\n #optimole-app .image.is-square, #optimole-app .image.is-1by1 {\n padding-top: 100%; }\n #optimole-app .image.is-5by4 {\n padding-top: 80%; }\n #optimole-app .image.is-4by3 {\n padding-top: 75%; }\n #optimole-app .image.is-3by2 {\n padding-top: 66.6666%; }\n #optimole-app .image.is-5by3 {\n padding-top: 60%; }\n #optimole-app .image.is-16by9 {\n padding-top: 56.25%; }\n #optimole-app .image.is-2by1 {\n padding-top: 50%; }\n #optimole-app .image.is-3by1 {\n padding-top: 33.3333%; }\n #optimole-app .image.is-4by5 {\n padding-top: 125%; }\n #optimole-app .image.is-3by4 {\n padding-top: 133.3333%; }\n #optimole-app .image.is-2by3 {\n padding-top: 150%; }\n #optimole-app .image.is-3by5 {\n padding-top: 166.6666%; }\n #optimole-app .image.is-9by16 {\n padding-top: 177.7777%; }\n #optimole-app .image.is-1by2 {\n padding-top: 200%; }\n #optimole-app .image.is-1by3 {\n padding-top: 300%; }\n #optimole-app .image.is-16x16 {\n height: 16px;\n width: 16px; }\n #optimole-app .image.is-24x24 {\n height: 24px;\n width: 24px; }\n #optimole-app .image.is-32x32 {\n height: 32px;\n width: 32px; }\n #optimole-app .image.is-48x48 {\n height: 48px;\n width: 48px; }\n #optimole-app .image.is-64x64 {\n height: 64px;\n width: 64px; }\n #optimole-app .image.is-96x96 {\n height: 96px;\n width: 96px; }\n #optimole-app .image.is-128x128 {\n height: 128px;\n width: 128px; }\n #optimole-app .notification {\n background-color: whitesmoke;\n border-radius: 4px;\n padding: 1.25rem 2.5rem 1.25rem 1.5rem;\n position: relative; }\n #optimole-app .notification a:not(.button) {\n color: currentColor;\n text-decoration: underline; }\n #optimole-app .notification strong {\n color: currentColor; }\n #optimole-app .notification code,\n #optimole-app .notification pre {\n background: white; }\n #optimole-app .notification pre code {\n background: transparent; }\n #optimole-app .notification > .delete {\n position: absolute;\n right: 0.5rem;\n top: 0.5rem; }\n #optimole-app .notification .title,\n #optimole-app .notification .subtitle,\n #optimole-app .notification .content {\n color: currentColor; }\n #optimole-app .notification.is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .notification.is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .notification.is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .notification.is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .notification.is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .notification.is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .notification.is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .notification.is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .notification.is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .notification.is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .progress {\n -moz-appearance: none;\n -webkit-appearance: none;\n border: none;\n border-radius: 290486px;\n display: block;\n height: 1rem;\n overflow: hidden;\n padding: 0;\n width: 100%; }\n #optimole-app .progress::-webkit-progress-bar {\n background-color: #dbdbdb; }\n #optimole-app .progress::-webkit-progress-value {\n background-color: #4a4a4a; }\n #optimole-app .progress::-moz-progress-bar {\n background-color: #4a4a4a; }\n #optimole-app .progress::-ms-fill {\n background-color: #4a4a4a;\n border: none; }\n #optimole-app .progress.is-white::-webkit-progress-value {\n background-color: white; }\n #optimole-app .progress.is-white::-moz-progress-bar {\n background-color: white; }\n #optimole-app .progress.is-white::-ms-fill {\n background-color: white; }\n #optimole-app .progress.is-black::-webkit-progress-value {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-black::-moz-progress-bar {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-black::-ms-fill {\n background-color: #0a0a0a; }\n #optimole-app .progress.is-light::-webkit-progress-value {\n background-color: whitesmoke; }\n #optimole-app .progress.is-light::-moz-progress-bar {\n background-color: whitesmoke; }\n #optimole-app .progress.is-light::-ms-fill {\n background-color: whitesmoke; }\n #optimole-app .progress.is-dark::-webkit-progress-value {\n background-color: #363636; }\n #optimole-app .progress.is-dark::-moz-progress-bar {\n background-color: #363636; }\n #optimole-app .progress.is-dark::-ms-fill {\n background-color: #363636; }\n #optimole-app .progress.is-primary::-webkit-progress-value {\n background-color: #e7602a; }\n #optimole-app .progress.is-primary::-moz-progress-bar {\n background-color: #e7602a; }\n #optimole-app .progress.is-primary::-ms-fill {\n background-color: #e7602a; }\n #optimole-app .progress.is-link::-webkit-progress-value {\n background-color: #3273dc; }\n #optimole-app .progress.is-link::-moz-progress-bar {\n background-color: #3273dc; }\n #optimole-app .progress.is-link::-ms-fill {\n background-color: #3273dc; }\n #optimole-app .progress.is-info::-webkit-progress-value {\n background-color: #008ec2; }\n #optimole-app .progress.is-info::-moz-progress-bar {\n background-color: #008ec2; }\n #optimole-app .progress.is-info::-ms-fill {\n background-color: #008ec2; }\n #optimole-app .progress.is-success::-webkit-progress-value {\n background-color: #34a85e; }\n #optimole-app .progress.is-success::-moz-progress-bar {\n background-color: #34a85e; }\n #optimole-app .progress.is-success::-ms-fill {\n background-color: #34a85e; }\n #optimole-app .progress.is-warning::-webkit-progress-value {\n background-color: #ffdd57; }\n #optimole-app .progress.is-warning::-moz-progress-bar {\n background-color: #ffdd57; }\n #optimole-app .progress.is-warning::-ms-fill {\n background-color: #ffdd57; }\n #optimole-app .progress.is-danger::-webkit-progress-value {\n background-color: #d54222; }\n #optimole-app .progress.is-danger::-moz-progress-bar {\n background-color: #d54222; }\n #optimole-app .progress.is-danger::-ms-fill {\n background-color: #d54222; }\n #optimole-app .progress.is-small {\n height: 0.75rem; }\n #optimole-app .progress.is-medium {\n height: 1.25rem; }\n #optimole-app .progress.is-large {\n height: 1.5rem; }\n #optimole-app .table {\n background-color: white;\n color: #363636; }\n #optimole-app .table td,\n #optimole-app .table th {\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px;\n padding: 0.5em 0.75em;\n vertical-align: top; }\n #optimole-app .table td.is-white,\n #optimole-app .table th.is-white {\n background-color: white;\n border-color: white;\n color: #0a0a0a; }\n #optimole-app .table td.is-black,\n #optimole-app .table th.is-black {\n background-color: #0a0a0a;\n border-color: #0a0a0a;\n color: white; }\n #optimole-app .table td.is-light,\n #optimole-app .table th.is-light {\n background-color: whitesmoke;\n border-color: whitesmoke;\n color: #363636; }\n #optimole-app .table td.is-dark,\n #optimole-app .table th.is-dark {\n background-color: #363636;\n border-color: #363636;\n color: whitesmoke; }\n #optimole-app .table td.is-primary,\n #optimole-app .table th.is-primary {\n background-color: #e7602a;\n border-color: #e7602a;\n color: #fff; }\n #optimole-app .table td.is-link,\n #optimole-app .table th.is-link {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .table td.is-info,\n #optimole-app .table th.is-info {\n background-color: #008ec2;\n border-color: #008ec2;\n color: #fff; }\n #optimole-app .table td.is-success,\n #optimole-app .table th.is-success {\n background-color: #34a85e;\n border-color: #34a85e;\n color: #fff; }\n #optimole-app .table td.is-warning,\n #optimole-app .table th.is-warning {\n background-color: #ffdd57;\n border-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .table td.is-danger,\n #optimole-app .table th.is-danger {\n background-color: #d54222;\n border-color: #d54222;\n color: #fff; }\n #optimole-app .table td.is-narrow,\n #optimole-app .table th.is-narrow {\n white-space: nowrap;\n width: 1%; }\n #optimole-app .table td.is-selected,\n #optimole-app .table th.is-selected {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .table td.is-selected a,\n #optimole-app .table td.is-selected strong,\n #optimole-app .table th.is-selected a,\n #optimole-app .table th.is-selected strong {\n color: currentColor; }\n #optimole-app .table th {\n color: #363636;\n text-align: left; }\n #optimole-app .table tr.is-selected {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .table tr.is-selected a,\n #optimole-app .table tr.is-selected strong {\n color: currentColor; }\n #optimole-app .table tr.is-selected td,\n #optimole-app .table tr.is-selected th {\n border-color: #fff;\n color: currentColor; }\n #optimole-app .table thead td,\n #optimole-app .table thead th {\n border-width: 0 0 2px;\n color: #363636; }\n #optimole-app .table tfoot td,\n #optimole-app .table tfoot th {\n border-width: 2px 0 0;\n color: #363636; }\n #optimole-app .table tbody tr:last-child td,\n #optimole-app .table tbody tr:last-child th {\n border-bottom-width: 0; }\n #optimole-app .table.is-bordered td,\n #optimole-app .table.is-bordered th {\n border-width: 1px; }\n #optimole-app .table.is-bordered tr:last-child td,\n #optimole-app .table.is-bordered tr:last-child th {\n border-bottom-width: 1px; }\n #optimole-app .table.is-fullwidth {\n width: 100%; }\n #optimole-app .table.is-hoverable tbody tr:not(.is-selected):hover {\n background-color: #fafafa; }\n #optimole-app .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover {\n background-color: whitesmoke; }\n #optimole-app .table.is-narrow td,\n #optimole-app .table.is-narrow th {\n padding: 0.25em 0.5em; }\n #optimole-app .table.is-striped tbody tr:not(.is-selected):nth-child(even) {\n background-color: #fafafa; }\n #optimole-app .table-container {\n -webkit-overflow-scrolling: touch;\n overflow: auto;\n overflow-y: hidden;\n max-width: 100%; }\n #optimole-app .tags {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .tags .tag {\n margin-bottom: 0.5rem; }\n #optimole-app .tags .tag:not(:last-child) {\n margin-right: 0.5rem; }\n #optimole-app .tags:last-child {\n margin-bottom: -0.5rem; }\n #optimole-app .tags:not(:last-child) {\n margin-bottom: 1rem; }\n #optimole-app .tags.has-addons .tag {\n margin-right: 0; }\n #optimole-app .tags.has-addons .tag:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0; }\n #optimole-app .tags.has-addons .tag:not(:last-child) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .tags.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .tags.is-centered .tag {\n margin-right: 0.25rem;\n margin-left: 0.25rem; }\n #optimole-app .tags.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .tags.is-right .tag:not(:first-child) {\n margin-left: 0.5rem; }\n #optimole-app .tags.is-right .tag:not(:last-child) {\n margin-right: 0; }\n #optimole-app .tag:not(body) {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n border-radius: 4px;\n color: #4a4a4a;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 0.75rem;\n height: 2em;\n -ms-flex-pack: center;\n justify-content: center;\n line-height: 1.5;\n padding-left: 0.75em;\n padding-right: 0.75em;\n white-space: nowrap; }\n #optimole-app .tag:not(body) .delete {\n margin-left: 0.25rem;\n margin-right: -0.375rem; }\n #optimole-app .tag:not(body).is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .tag:not(body).is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .tag:not(body).is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .tag:not(body).is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .tag:not(body).is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .tag:not(body).is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .tag:not(body).is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .tag:not(body).is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .tag:not(body).is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .tag:not(body).is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .tag:not(body).is-medium {\n font-size: 1rem; }\n #optimole-app .tag:not(body).is-large {\n font-size: 1.25rem; }\n #optimole-app .tag:not(body) .icon:first-child:not(:last-child) {\n margin-left: -0.375em;\n margin-right: 0.1875em; }\n #optimole-app .tag:not(body) .icon:last-child:not(:first-child) {\n margin-left: 0.1875em;\n margin-right: -0.375em; }\n #optimole-app .tag:not(body) .icon:first-child:last-child {\n margin-left: -0.375em;\n margin-right: -0.375em; }\n #optimole-app .tag:not(body).is-delete {\n margin-left: 1px;\n padding: 0;\n position: relative;\n width: 2em; }\n #optimole-app .tag:not(body).is-delete::before, #optimole-app .tag:not(body).is-delete::after {\n background-color: currentColor;\n content: "";\n display: block;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) rotate(45deg);\n transform-origin: center center; }\n #optimole-app .tag:not(body).is-delete::before {\n height: 1px;\n width: 50%; }\n #optimole-app .tag:not(body).is-delete::after {\n height: 50%;\n width: 1px; }\n #optimole-app .tag:not(body).is-delete:hover, #optimole-app .tag:not(body).is-delete:focus {\n background-color: #e8e8e8; }\n #optimole-app .tag:not(body).is-delete:active {\n background-color: #dbdbdb; }\n #optimole-app .tag:not(body).is-rounded {\n border-radius: 290486px; }\n #optimole-app a.tag:hover {\n text-decoration: underline; }\n #optimole-app .title,\n #optimole-app .subtitle {\n word-break: break-word; }\n #optimole-app .title em,\n #optimole-app .title span,\n #optimole-app .subtitle em,\n #optimole-app .subtitle span {\n font-weight: inherit; }\n #optimole-app .title sub,\n #optimole-app .subtitle sub {\n font-size: 0.75em; }\n #optimole-app .title sup,\n #optimole-app .subtitle sup {\n font-size: 0.75em; }\n #optimole-app .title .tag,\n #optimole-app .subtitle .tag {\n vertical-align: middle; }\n #optimole-app .title {\n color: #363636;\n font-size: 2rem;\n font-weight: 600;\n line-height: 1.125; }\n #optimole-app .title strong {\n color: inherit;\n font-weight: inherit; }\n #optimole-app .title + .highlight {\n margin-top: -0.75rem; }\n #optimole-app .title:not(.is-spaced) + .subtitle {\n margin-top: -1.25rem; }\n #optimole-app .title.is-1 {\n font-size: 3rem; }\n #optimole-app .title.is-2 {\n font-size: 2.5rem; }\n #optimole-app .title.is-3 {\n font-size: 2rem; }\n #optimole-app .title.is-4 {\n font-size: 1.5rem; }\n #optimole-app .title.is-5 {\n font-size: 1.25rem; }\n #optimole-app .title.is-6 {\n font-size: 1rem; }\n #optimole-app .title.is-7 {\n font-size: 0.75rem; }\n #optimole-app .subtitle {\n color: #4a4a4a;\n font-size: 1.25rem;\n font-weight: 400;\n line-height: 1.25; }\n #optimole-app .subtitle strong {\n color: #363636;\n font-weight: 600; }\n #optimole-app .subtitle:not(.is-spaced) + .title {\n margin-top: -1.25rem; }\n #optimole-app .subtitle.is-1 {\n font-size: 3rem; }\n #optimole-app .subtitle.is-2 {\n font-size: 2.5rem; }\n #optimole-app .subtitle.is-3 {\n font-size: 2rem; }\n #optimole-app .subtitle.is-4 {\n font-size: 1.5rem; }\n #optimole-app .subtitle.is-5 {\n font-size: 1.25rem; }\n #optimole-app .subtitle.is-6 {\n font-size: 1rem; }\n #optimole-app .subtitle.is-7 {\n font-size: 0.75rem; }\n #optimole-app .heading {\n display: block;\n font-size: 11px;\n letter-spacing: 1px;\n margin-bottom: 5px;\n text-transform: uppercase; }\n #optimole-app .highlight {\n font-weight: 400;\n max-width: 100%;\n overflow: hidden;\n padding: 0; }\n #optimole-app .highlight pre {\n overflow: auto;\n max-width: 100%; }\n #optimole-app .number {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n border-radius: 290486px;\n display: -ms-inline-flexbox;\n display: inline-flex;\n font-size: 1.25rem;\n height: 2em;\n -ms-flex-pack: center;\n justify-content: center;\n margin-right: 1.5rem;\n min-width: 2.5em;\n padding: 0.25rem 0.5rem;\n text-align: center;\n vertical-align: top; }\n #optimole-app .breadcrumb {\n font-size: 1rem;\n white-space: nowrap; }\n #optimole-app .breadcrumb a {\n -ms-flex-align: center;\n align-items: center;\n color: #3273dc;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0 0.75em; }\n #optimole-app .breadcrumb a:hover {\n color: #363636; }\n #optimole-app .breadcrumb li {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .breadcrumb li:first-child a {\n padding-left: 0; }\n #optimole-app .breadcrumb li.is-active a {\n color: #363636;\n cursor: default;\n pointer-events: none; }\n #optimole-app .breadcrumb li + li::before {\n color: #b5b5b5;\n content: "/"; }\n #optimole-app .breadcrumb ul,\n #optimole-app .breadcrumb ol {\n -ms-flex-align: start;\n align-items: flex-start;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .breadcrumb .icon:first-child {\n margin-right: 0.5em; }\n #optimole-app .breadcrumb .icon:last-child {\n margin-left: 0.5em; }\n #optimole-app .breadcrumb.is-centered ol,\n #optimole-app .breadcrumb.is-centered ul {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .breadcrumb.is-right ol,\n #optimole-app .breadcrumb.is-right ul {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .breadcrumb.is-small {\n font-size: 0.75rem; }\n #optimole-app .breadcrumb.is-medium {\n font-size: 1.25rem; }\n #optimole-app .breadcrumb.is-large {\n font-size: 1.5rem; }\n #optimole-app .breadcrumb.has-arrow-separator li + li::before {\n content: "\\2192"; }\n #optimole-app .breadcrumb.has-bullet-separator li + li::before {\n content: "\\2022"; }\n #optimole-app .breadcrumb.has-dot-separator li + li::before {\n content: "\\B7"; }\n #optimole-app .breadcrumb.has-succeeds-separator li + li::before {\n content: "\\227B"; }\n #optimole-app .card {\n background-color: white;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n color: #4a4a4a;\n max-width: 100%;\n position: relative; }\n #optimole-app .card-header {\n background-color: none;\n -ms-flex-align: stretch;\n align-items: stretch;\n box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1);\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .card-header-title {\n -ms-flex-align: center;\n align-items: center;\n color: #363636;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-positive: 1;\n flex-grow: 1;\n font-weight: 700;\n padding: 0.75rem; }\n #optimole-app .card-header-title.is-centered {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .card-header-icon {\n -ms-flex-align: center;\n align-items: center;\n cursor: pointer;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0.75rem; }\n #optimole-app .card-image {\n display: block;\n position: relative; }\n #optimole-app .card-content {\n background-color: none;\n padding: 1.5rem; }\n #optimole-app .card-footer {\n background-color: none;\n border-top: 1px solid #dbdbdb;\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .card-footer-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 0.75rem; }\n #optimole-app .card-footer-item:not(:last-child) {\n border-right: 1px solid #dbdbdb; }\n #optimole-app .card .media:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .dropdown {\n display: -ms-inline-flexbox;\n display: inline-flex;\n position: relative;\n vertical-align: top; }\n #optimole-app .dropdown.is-active .dropdown-menu, #optimole-app .dropdown.is-hoverable:hover .dropdown-menu {\n display: block; }\n #optimole-app .dropdown.is-right .dropdown-menu {\n left: auto;\n right: 0; }\n #optimole-app .dropdown.is-up .dropdown-menu {\n bottom: 100%;\n padding-bottom: 4px;\n padding-top: initial;\n top: auto; }\n #optimole-app .dropdown-menu {\n display: none;\n left: 0;\n min-width: 12rem;\n padding-top: 4px;\n position: absolute;\n top: 100%;\n z-index: 20; }\n #optimole-app .dropdown-content {\n background-color: white;\n border-radius: 4px;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n padding-bottom: 0.5rem;\n padding-top: 0.5rem; }\n #optimole-app .dropdown-item {\n color: #4a4a4a;\n display: block;\n font-size: 0.875rem;\n line-height: 1.5;\n padding: 0.375rem 1rem;\n position: relative; }\n #optimole-app a.dropdown-item {\n padding-right: 3rem;\n white-space: nowrap; }\n #optimole-app a.dropdown-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app a.dropdown-item.is-active {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .dropdown-divider {\n background-color: #dbdbdb;\n border: none;\n display: block;\n height: 1px;\n margin: 0.5rem 0; }\n #optimole-app .level {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n #optimole-app .level code {\n border-radius: 4px; }\n #optimole-app .level img {\n display: inline-block;\n vertical-align: top; }\n #optimole-app .level.is-mobile {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level.is-mobile .level-left,\n #optimole-app .level.is-mobile .level-right {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level.is-mobile .level-left + .level-right {\n margin-top: 0; }\n #optimole-app .level.is-mobile .level-item {\n margin-right: 0.75rem; }\n #optimole-app .level.is-mobile .level-item:not(:last-child) {\n margin-bottom: 0; }\n #optimole-app .level.is-mobile .level-item:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .level > .level-item:not(.is-narrow) {\n -ms-flex-positive: 1;\n flex-grow: 1; } }\n #optimole-app .level-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .level-item .title,\n #optimole-app .level-item .subtitle {\n margin-bottom: 0; }\n @media screen and (max-width: 768px) {\n #optimole-app .level-item:not(:last-child) {\n margin-bottom: 0.75rem; } }\n #optimole-app .level-left,\n #optimole-app .level-right {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .level-left .level-item.is-flexible,\n #optimole-app .level-right .level-item.is-flexible {\n -ms-flex-positive: 1;\n flex-grow: 1; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-left .level-item:not(:last-child),\n #optimole-app .level-right .level-item:not(:last-child) {\n margin-right: 0.75rem; } }\n #optimole-app .level-left {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n @media screen and (max-width: 768px) {\n #optimole-app .level-left + .level-right {\n margin-top: 1.5rem; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-left {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .level-right {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n @media screen and (min-width: 769px), print {\n #optimole-app .level-right {\n display: -ms-flexbox;\n display: flex; } }\n #optimole-app .media {\n -ms-flex-align: start;\n align-items: flex-start;\n display: -ms-flexbox;\n display: flex;\n text-align: left; }\n #optimole-app .media .content:not(:last-child) {\n margin-bottom: 0.75rem; }\n #optimole-app .media .media {\n border-top: 1px solid rgba(219, 219, 219, 0.5);\n display: -ms-flexbox;\n display: flex;\n padding-top: 0.75rem; }\n #optimole-app .media .media .content:not(:last-child),\n #optimole-app .media .media .control:not(:last-child) {\n margin-bottom: 0.5rem; }\n #optimole-app .media .media .media {\n padding-top: 0.5rem; }\n #optimole-app .media .media .media + .media {\n margin-top: 0.5rem; }\n #optimole-app .media + .media {\n border-top: 1px solid rgba(219, 219, 219, 0.5);\n margin-top: 1rem;\n padding-top: 1rem; }\n #optimole-app .media.is-large + .media {\n margin-top: 1.5rem;\n padding-top: 1.5rem; }\n #optimole-app .media-left,\n #optimole-app .media-right {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .media-left {\n margin-right: 1rem; }\n #optimole-app .media-right {\n margin-left: 1rem; }\n #optimole-app .media-content {\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n text-align: left; }\n #optimole-app .menu {\n font-size: 1rem; }\n #optimole-app .menu.is-small {\n font-size: 0.75rem; }\n #optimole-app .menu.is-medium {\n font-size: 1.25rem; }\n #optimole-app .menu.is-large {\n font-size: 1.5rem; }\n #optimole-app .menu-list {\n line-height: 1.25; }\n #optimole-app .menu-list a {\n border-radius: 2px;\n color: #4a4a4a;\n display: block;\n padding: 0.5em 0.75em; }\n #optimole-app .menu-list a:hover {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .menu-list a.is-active {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .menu-list li ul {\n border-left: 1px solid #dbdbdb;\n margin: 0.75em;\n padding-left: 0.75em; }\n #optimole-app .menu-label {\n color: #7a7a7a;\n font-size: 0.75em;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n #optimole-app .menu-label:not(:first-child) {\n margin-top: 1em; }\n #optimole-app .menu-label:not(:last-child) {\n margin-bottom: 1em; }\n #optimole-app .message {\n background-color: whitesmoke;\n border-radius: 4px;\n font-size: 1rem; }\n #optimole-app .message strong {\n color: currentColor; }\n #optimole-app .message a:not(.button):not(.tag) {\n color: currentColor;\n text-decoration: underline; }\n #optimole-app .message.is-small {\n font-size: 0.75rem; }\n #optimole-app .message.is-medium {\n font-size: 1.25rem; }\n #optimole-app .message.is-large {\n font-size: 1.5rem; }\n #optimole-app .message.is-white {\n background-color: white; }\n #optimole-app .message.is-white .message-header {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .message.is-white .message-body {\n border-color: white;\n color: #4d4d4d; }\n #optimole-app .message.is-black {\n background-color: #fafafa; }\n #optimole-app .message.is-black .message-header {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .message.is-black .message-body {\n border-color: #0a0a0a;\n color: #090909; }\n #optimole-app .message.is-light {\n background-color: #fafafa; }\n #optimole-app .message.is-light .message-header {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .message.is-light .message-body {\n border-color: whitesmoke;\n color: #505050; }\n #optimole-app .message.is-dark {\n background-color: #fafafa; }\n #optimole-app .message.is-dark .message-header {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .message.is-dark .message-body {\n border-color: #363636;\n color: #2a2a2a; }\n #optimole-app .message.is-primary {\n background-color: #fef8f6; }\n #optimole-app .message.is-primary .message-header {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .message.is-primary .message-body {\n border-color: #e7602a;\n color: #8e3a18; }\n #optimole-app .message.is-link {\n background-color: #f6f9fe; }\n #optimole-app .message.is-link .message-header {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .message.is-link .message-body {\n border-color: #3273dc;\n color: #22509a; }\n #optimole-app .message.is-info {\n background-color: #f5fcff; }\n #optimole-app .message.is-info .message-header {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .message.is-info .message-body {\n border-color: #008ec2;\n color: #044259; }\n #optimole-app .message.is-success {\n background-color: #f7fdf9; }\n #optimole-app .message.is-success .message-header {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .message.is-success .message-body {\n border-color: #34a85e;\n color: #1b432a; }\n #optimole-app .message.is-warning {\n background-color: #fffdf5; }\n #optimole-app .message.is-warning .message-header {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .message.is-warning .message-body {\n border-color: #ffdd57;\n color: #3b3108; }\n #optimole-app .message.is-danger {\n background-color: #fef8f6; }\n #optimole-app .message.is-danger .message-header {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .message.is-danger .message-body {\n border-color: #d54222;\n color: #8d311d; }\n #optimole-app .message-header {\n -ms-flex-align: center;\n align-items: center;\n background-color: #4a4a4a;\n border-radius: 4px 4px 0 0;\n color: #fff;\n display: -ms-flexbox;\n display: flex;\n font-weight: 700;\n -ms-flex-pack: justify;\n justify-content: space-between;\n line-height: 1.25;\n padding: 0.75em 1em;\n position: relative; }\n #optimole-app .message-header .delete {\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-left: 0.75em; }\n #optimole-app .message-header + .message-body {\n border-width: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n #optimole-app .message-body {\n border-color: #dbdbdb;\n border-radius: 4px;\n border-style: solid;\n border-width: 0 0 0 4px;\n color: #4a4a4a;\n padding: 1.25em 1.5em; }\n #optimole-app .message-body code,\n #optimole-app .message-body pre {\n background-color: white; }\n #optimole-app .message-body pre code {\n background-color: transparent; }\n #optimole-app .modal {\n -ms-flex-align: center;\n align-items: center;\n display: none;\n -ms-flex-pack: center;\n justify-content: center;\n overflow: hidden;\n position: fixed;\n z-index: 40; }\n #optimole-app .modal.is-active {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .modal-background {\n background-color: rgba(10, 10, 10, 0.86); }\n #optimole-app .modal-content,\n #optimole-app .modal-card {\n margin: 0 20px;\n max-height: calc(100vh - 160px);\n overflow: auto;\n position: relative;\n width: 100%; }\n @media screen and (min-width: 769px), print {\n #optimole-app .modal-content,\n #optimole-app .modal-card {\n margin: 0 auto;\n max-height: calc(100vh - 40px);\n width: 640px; } }\n #optimole-app .modal-close {\n background: none;\n height: 40px;\n position: fixed;\n right: 20px;\n top: 20px;\n width: 40px; }\n #optimole-app .modal-card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n max-height: calc(100vh - 40px);\n overflow: hidden; }\n #optimole-app .modal-card-head,\n #optimole-app .modal-card-foot {\n -ms-flex-align: center;\n align-items: center;\n background-color: whitesmoke;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding: 20px;\n position: relative; }\n #optimole-app .modal-card-head {\n border-bottom: 1px solid #dbdbdb;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px; }\n #optimole-app .modal-card-title {\n color: #363636;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n font-size: 1.5rem;\n line-height: 1; }\n #optimole-app .modal-card-foot {\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n border-top: 1px solid #dbdbdb; }\n #optimole-app .modal-card-foot .button:not(:last-child) {\n margin-right: 10px; }\n #optimole-app .modal-card-body {\n -webkit-overflow-scrolling: touch;\n background-color: white;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n overflow: auto;\n padding: 20px; }\n #optimole-app .navbar {\n background-color: white;\n min-height: 3.25rem;\n position: relative;\n z-index: 30; }\n #optimole-app .navbar.is-white {\n background-color: white;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link {\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-white .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-brand .navbar-link.is-active {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-brand .navbar-link::after {\n border-color: #0a0a0a; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-white .navbar-start > .navbar-item,\n #optimole-app .navbar.is-white .navbar-start .navbar-link,\n #optimole-app .navbar.is-white .navbar-end > .navbar-item,\n #optimole-app .navbar.is-white .navbar-end .navbar-link {\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-white .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-white .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-white .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-white .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-white .navbar-end .navbar-link.is-active {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-white .navbar-end .navbar-link::after {\n border-color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #f2f2f2;\n color: #0a0a0a; }\n #optimole-app .navbar.is-white .navbar-dropdown a.navbar-item.is-active {\n background-color: white;\n color: #0a0a0a; } }\n #optimole-app .navbar.is-black {\n background-color: #0a0a0a;\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link {\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-black .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-brand .navbar-link.is-active {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-brand .navbar-link::after {\n border-color: white; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-black .navbar-start > .navbar-item,\n #optimole-app .navbar.is-black .navbar-start .navbar-link,\n #optimole-app .navbar.is-black .navbar-end > .navbar-item,\n #optimole-app .navbar.is-black .navbar-end .navbar-link {\n color: white; }\n #optimole-app .navbar.is-black .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-black .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-black .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-black .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-black .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-black .navbar-end .navbar-link.is-active {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-black .navbar-end .navbar-link::after {\n border-color: white; }\n #optimole-app .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: black;\n color: white; }\n #optimole-app .navbar.is-black .navbar-dropdown a.navbar-item.is-active {\n background-color: #0a0a0a;\n color: white; } }\n #optimole-app .navbar.is-light {\n background-color: whitesmoke;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link {\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-light .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-brand .navbar-link.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-brand .navbar-link::after {\n border-color: #363636; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-light .navbar-start > .navbar-item,\n #optimole-app .navbar.is-light .navbar-start .navbar-link,\n #optimole-app .navbar.is-light .navbar-end > .navbar-item,\n #optimole-app .navbar.is-light .navbar-end .navbar-link {\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-light .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-light .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-light .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-light .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-light .navbar-end .navbar-link.is-active {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-light .navbar-end .navbar-link::after {\n border-color: #363636; }\n #optimole-app .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #e8e8e8;\n color: #363636; }\n #optimole-app .navbar.is-light .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #363636; } }\n #optimole-app .navbar.is-dark {\n background-color: #363636;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link {\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-dark .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link.is-active {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-brand .navbar-link::after {\n border-color: whitesmoke; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-dark .navbar-start > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link,\n #optimole-app .navbar.is-dark .navbar-end > .navbar-item,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link {\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-dark .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-dark .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-dark .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link.is-active {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-dark .navbar-end .navbar-link::after {\n border-color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #292929;\n color: whitesmoke; }\n #optimole-app .navbar.is-dark .navbar-dropdown a.navbar-item.is-active {\n background-color: #363636;\n color: whitesmoke; } }\n #optimole-app .navbar.is-primary {\n background-color: #e7602a;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-primary .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link.is-active {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-primary .navbar-start > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link,\n #optimole-app .navbar.is-primary .navbar-end > .navbar-item,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-primary .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-primary .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-primary .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link.is-active {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-primary .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #de5119;\n color: #fff; }\n #optimole-app .navbar.is-primary .navbar-dropdown a.navbar-item.is-active {\n background-color: #e7602a;\n color: #fff; } }\n #optimole-app .navbar.is-link {\n background-color: #3273dc;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-link .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-brand .navbar-link.is-active {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-link .navbar-start > .navbar-item,\n #optimole-app .navbar.is-link .navbar-start .navbar-link,\n #optimole-app .navbar.is-link .navbar-end > .navbar-item,\n #optimole-app .navbar.is-link .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-link .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-link .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-link .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-link .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-link .navbar-end .navbar-link.is-active {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-link .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #2366d1;\n color: #fff; }\n #optimole-app .navbar.is-link .navbar-dropdown a.navbar-item.is-active {\n background-color: #3273dc;\n color: #fff; } }\n #optimole-app .navbar.is-info {\n background-color: #008ec2;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-info .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-brand .navbar-link.is-active {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-info .navbar-start > .navbar-item,\n #optimole-app .navbar.is-info .navbar-start .navbar-link,\n #optimole-app .navbar.is-info .navbar-end > .navbar-item,\n #optimole-app .navbar.is-info .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-info .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-info .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-info .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-info .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-info .navbar-end .navbar-link.is-active {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-info .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #007ba9;\n color: #fff; }\n #optimole-app .navbar.is-info .navbar-dropdown a.navbar-item.is-active {\n background-color: #008ec2;\n color: #fff; } }\n #optimole-app .navbar.is-success {\n background-color: #34a85e;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-success .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-brand .navbar-link.is-active {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-success .navbar-start > .navbar-item,\n #optimole-app .navbar.is-success .navbar-start .navbar-link,\n #optimole-app .navbar.is-success .navbar-end > .navbar-item,\n #optimole-app .navbar.is-success .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-success .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-success .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-success .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-success .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-success .navbar-end .navbar-link.is-active {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-success .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #2e9553;\n color: #fff; }\n #optimole-app .navbar.is-success .navbar-dropdown a.navbar-item.is-active {\n background-color: #34a85e;\n color: #fff; } }\n #optimole-app .navbar.is-warning {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-warning .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link.is-active {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-brand .navbar-link::after {\n border-color: rgba(0, 0, 0, 0.7); }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-warning .navbar-start > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link,\n #optimole-app .navbar.is-warning .navbar-end > .navbar-item,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link {\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-warning .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-warning .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-warning .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link.is-active {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-warning .navbar-end .navbar-link::after {\n border-color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #ffd83d;\n color: rgba(0, 0, 0, 0.7); }\n #optimole-app .navbar.is-warning .navbar-dropdown a.navbar-item.is-active {\n background-color: #ffdd57;\n color: rgba(0, 0, 0, 0.7); } }\n #optimole-app .navbar.is-danger {\n background-color: #d54222;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand > a.navbar-item:hover, #optimole-app .navbar.is-danger .navbar-brand > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link.is-active {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-brand .navbar-link::after {\n border-color: #fff; }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar.is-danger .navbar-start > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link,\n #optimole-app .navbar.is-danger .navbar-end > .navbar-item,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link {\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-start > a.navbar-item:hover, #optimole-app .navbar.is-danger .navbar-start > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-start .navbar-link.is-active,\n #optimole-app .navbar.is-danger .navbar-end > a.navbar-item:hover,\n #optimole-app .navbar.is-danger .navbar-end > a.navbar-item.is-active,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link:hover,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link.is-active {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-start .navbar-link::after,\n #optimole-app .navbar.is-danger .navbar-end .navbar-link::after {\n border-color: #fff; }\n #optimole-app .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,\n #optimole-app .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #bf3b1e;\n color: #fff; }\n #optimole-app .navbar.is-danger .navbar-dropdown a.navbar-item.is-active {\n background-color: #d54222;\n color: #fff; } }\n #optimole-app .navbar > .container {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n min-height: 3.25rem;\n width: 100%; }\n #optimole-app .navbar.has-shadow {\n box-shadow: 0 2px 0 0 whitesmoke; }\n #optimole-app .navbar.is-fixed-bottom, #optimole-app .navbar.is-fixed-top {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom.has-shadow {\n box-shadow: 0 -2px 0 0 whitesmoke; }\n #optimole-app .navbar.is-fixed-top {\n top: 0; }\n #optimole-app html.has-navbar-fixed-top,\n #optimole-app body.has-navbar-fixed-top {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom,\n #optimole-app body.has-navbar-fixed-bottom {\n padding-bottom: 3.25rem; }\n #optimole-app .navbar-brand,\n #optimole-app .navbar-tabs {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n min-height: 3.25rem; }\n #optimole-app .navbar-brand a.navbar-item:hover {\n background-color: transparent; }\n #optimole-app .navbar-tabs {\n -webkit-overflow-scrolling: touch;\n max-width: 100vw;\n overflow-x: auto;\n overflow-y: hidden; }\n #optimole-app .navbar-burger {\n cursor: pointer;\n display: block;\n height: 3.25rem;\n position: relative;\n width: 3.25rem;\n margin-left: auto; }\n #optimole-app .navbar-burger span {\n background-color: currentColor;\n display: block;\n height: 1px;\n left: calc(50% - 8px);\n position: absolute;\n transform-origin: center;\n transition-duration: 86ms;\n transition-property: background-color, opacity, transform;\n transition-timing-function: ease-out;\n width: 16px; }\n #optimole-app .navbar-burger span:nth-child(1) {\n top: calc(50% - 6px); }\n #optimole-app .navbar-burger span:nth-child(2) {\n top: calc(50% - 1px); }\n #optimole-app .navbar-burger span:nth-child(3) {\n top: calc(50% + 4px); }\n #optimole-app .navbar-burger:hover {\n background-color: rgba(0, 0, 0, 0.05); }\n #optimole-app .navbar-burger.is-active span:nth-child(1) {\n transform: translateY(5px) rotate(45deg); }\n #optimole-app .navbar-burger.is-active span:nth-child(2) {\n opacity: 0; }\n #optimole-app .navbar-burger.is-active span:nth-child(3) {\n transform: translateY(-5px) rotate(-45deg); }\n #optimole-app .navbar-menu {\n display: none; }\n #optimole-app .navbar-item,\n #optimole-app .navbar-link {\n color: #4a4a4a;\n display: block;\n line-height: 1.5;\n padding: 0.5rem 0.75rem;\n position: relative; }\n #optimole-app .navbar-item .icon:only-child,\n #optimole-app .navbar-link .icon:only-child {\n margin-left: -0.25rem;\n margin-right: -0.25rem; }\n #optimole-app a.navbar-item,\n #optimole-app .navbar-link {\n cursor: pointer; }\n #optimole-app a.navbar-item:hover, #optimole-app a.navbar-item.is-active,\n #optimole-app .navbar-link:hover,\n #optimole-app .navbar-link.is-active {\n background-color: #fafafa;\n color: #3273dc; }\n #optimole-app .navbar-item {\n display: block;\n -ms-flex-positive: 0;\n flex-grow: 0;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .navbar-item img {\n max-height: 1.75rem; }\n #optimole-app .navbar-item.has-dropdown {\n padding: 0; }\n #optimole-app .navbar-item.is-expanded {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .navbar-item.is-tab {\n border-bottom: 1px solid transparent;\n min-height: 3.25rem;\n padding-bottom: calc(0.5rem - 1px); }\n #optimole-app .navbar-item.is-tab:hover {\n background-color: transparent;\n border-bottom-color: #3273dc; }\n #optimole-app .navbar-item.is-tab.is-active {\n background-color: transparent;\n border-bottom-color: #3273dc;\n border-bottom-style: solid;\n border-bottom-width: 3px;\n color: #3273dc;\n padding-bottom: calc(0.5rem - 3px); }\n #optimole-app .navbar-content {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .navbar-link {\n padding-right: 2.5em; }\n #optimole-app .navbar-link::after {\n border-color: #3273dc;\n margin-top: -0.375em;\n right: 1.125em; }\n #optimole-app .navbar-dropdown {\n font-size: 0.875rem;\n padding-bottom: 0.5rem;\n padding-top: 0.5rem; }\n #optimole-app .navbar-dropdown .navbar-item {\n padding-left: 1.5rem;\n padding-right: 1.5rem; }\n #optimole-app .navbar-divider {\n background-color: whitesmoke;\n border: none;\n display: none;\n height: 2px;\n margin: 0.5rem 0; }\n @media screen and (max-width: 1087px) {\n #optimole-app .navbar > .container {\n display: block; }\n #optimole-app .navbar-brand .navbar-item,\n #optimole-app .navbar-tabs .navbar-item {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-link::after {\n display: none; }\n #optimole-app .navbar-menu {\n background-color: white;\n box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);\n padding: 0.5rem 0; }\n #optimole-app .navbar-menu.is-active {\n display: block; }\n #optimole-app .navbar.is-fixed-bottom-touch, #optimole-app .navbar.is-fixed-top-touch {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom-touch {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom-touch.has-shadow {\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\n #optimole-app .navbar.is-fixed-top-touch {\n top: 0; }\n #optimole-app .navbar.is-fixed-top .navbar-menu, #optimole-app .navbar.is-fixed-top-touch .navbar-menu {\n -webkit-overflow-scrolling: touch;\n max-height: calc(100vh - 3.25rem);\n overflow: auto; }\n #optimole-app html.has-navbar-fixed-top-touch,\n #optimole-app body.has-navbar-fixed-top-touch {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom-touch,\n #optimole-app body.has-navbar-fixed-bottom-touch {\n padding-bottom: 3.25rem; } }\n @media screen and (min-width: 1088px) {\n #optimole-app .navbar,\n #optimole-app .navbar-menu,\n #optimole-app .navbar-start,\n #optimole-app .navbar-end {\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar {\n min-height: 3.25rem; }\n #optimole-app .navbar.is-spaced {\n padding: 1rem 2rem; }\n #optimole-app .navbar.is-spaced .navbar-start,\n #optimole-app .navbar.is-spaced .navbar-end {\n -ms-flex-align: center;\n align-items: center; }\n #optimole-app .navbar.is-spaced a.navbar-item,\n #optimole-app .navbar.is-spaced .navbar-link {\n border-radius: 4px; }\n #optimole-app .navbar.is-transparent a.navbar-item:hover, #optimole-app .navbar.is-transparent a.navbar-item.is-active,\n #optimole-app .navbar.is-transparent .navbar-link:hover,\n #optimole-app .navbar.is-transparent .navbar-link.is-active {\n background-color: transparent !important; }\n #optimole-app .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, #optimole-app .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link {\n background-color: transparent !important; }\n #optimole-app .navbar.is-transparent .navbar-dropdown a.navbar-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #3273dc; }\n #optimole-app .navbar-burger {\n display: none; }\n #optimole-app .navbar-item,\n #optimole-app .navbar-link {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-item {\n display: -ms-flexbox;\n display: flex; }\n #optimole-app .navbar-item.has-dropdown {\n -ms-flex-align: stretch;\n align-items: stretch; }\n #optimole-app .navbar-item.has-dropdown-up .navbar-link::after {\n transform: rotate(135deg) translate(0.25em, -0.25em); }\n #optimole-app .navbar-item.has-dropdown-up .navbar-dropdown {\n border-bottom: 2px solid #dbdbdb;\n border-radius: 6px 6px 0 0;\n border-top: none;\n bottom: 100%;\n box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1);\n top: auto; }\n #optimole-app .navbar-item.is-active .navbar-dropdown, #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown {\n display: block; }\n .navbar.is-spaced #optimole-app .navbar-item.is-active .navbar-dropdown, #optimole-app .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown, #optimole-app .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {\n opacity: 1;\n pointer-events: auto;\n transform: translateY(0); }\n #optimole-app .navbar-menu {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .navbar-start {\n -ms-flex-pack: start;\n justify-content: flex-start;\n margin-right: auto; }\n #optimole-app .navbar-end {\n -ms-flex-pack: end;\n justify-content: flex-end;\n margin-left: auto; }\n #optimole-app .navbar-dropdown {\n background-color: white;\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n border-top: 2px solid #dbdbdb;\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1);\n display: none;\n font-size: 0.875rem;\n left: 0;\n min-width: 100%;\n position: absolute;\n top: 100%;\n z-index: 20; }\n #optimole-app .navbar-dropdown .navbar-item {\n padding: 0.375rem 1rem;\n white-space: nowrap; }\n #optimole-app .navbar-dropdown a.navbar-item {\n padding-right: 3rem; }\n #optimole-app .navbar-dropdown a.navbar-item:hover {\n background-color: whitesmoke;\n color: #0a0a0a; }\n #optimole-app .navbar-dropdown a.navbar-item.is-active {\n background-color: whitesmoke;\n color: #3273dc; }\n .navbar.is-spaced #optimole-app .navbar-dropdown, #optimole-app .navbar-dropdown.is-boxed {\n border-radius: 6px;\n border-top: none;\n box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n display: block;\n opacity: 0;\n pointer-events: none;\n top: calc(100% + (-4px));\n transform: translateY(-5px);\n transition-duration: 86ms;\n transition-property: opacity, transform; }\n #optimole-app .navbar-dropdown.is-right {\n left: auto;\n right: 0; }\n #optimole-app .navbar-divider {\n display: block; }\n #optimole-app .navbar > .container .navbar-brand,\n #optimole-app .container > .navbar .navbar-brand {\n margin-left: -1rem; }\n #optimole-app .navbar > .container .navbar-menu,\n #optimole-app .container > .navbar .navbar-menu {\n margin-right: -1rem; }\n #optimole-app .navbar.is-fixed-bottom-desktop, #optimole-app .navbar.is-fixed-top-desktop {\n left: 0;\n position: fixed;\n right: 0;\n z-index: 30; }\n #optimole-app .navbar.is-fixed-bottom-desktop {\n bottom: 0; }\n #optimole-app .navbar.is-fixed-bottom-desktop.has-shadow {\n box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }\n #optimole-app .navbar.is-fixed-top-desktop {\n top: 0; }\n #optimole-app html.has-navbar-fixed-top-desktop,\n #optimole-app body.has-navbar-fixed-top-desktop {\n padding-top: 3.25rem; }\n #optimole-app html.has-navbar-fixed-bottom-desktop,\n #optimole-app body.has-navbar-fixed-bottom-desktop {\n padding-bottom: 3.25rem; }\n #optimole-app html.has-spaced-navbar-fixed-top,\n #optimole-app body.has-spaced-navbar-fixed-top {\n padding-top: 5.25rem; }\n #optimole-app html.has-spaced-navbar-fixed-bottom,\n #optimole-app body.has-spaced-navbar-fixed-bottom {\n padding-bottom: 5.25rem; }\n #optimole-app a.navbar-item.is-active,\n #optimole-app .navbar-link.is-active {\n color: #0a0a0a; }\n #optimole-app a.navbar-item.is-active:not(:hover),\n #optimole-app .navbar-link.is-active:not(:hover) {\n background-color: transparent; }\n #optimole-app .navbar-item.has-dropdown:hover .navbar-link, #optimole-app .navbar-item.has-dropdown.is-active .navbar-link {\n background-color: #fafafa; } }\n #optimole-app .pagination {\n font-size: 1rem;\n margin: -0.25rem; }\n #optimole-app .pagination.is-small {\n font-size: 0.75rem; }\n #optimole-app .pagination.is-medium {\n font-size: 1.25rem; }\n #optimole-app .pagination.is-large {\n font-size: 1.5rem; }\n #optimole-app .pagination.is-rounded .pagination-previous,\n #optimole-app .pagination.is-rounded .pagination-next {\n padding-left: 1em;\n padding-right: 1em;\n border-radius: 290486px; }\n #optimole-app .pagination.is-rounded .pagination-link {\n border-radius: 290486px; }\n #optimole-app .pagination,\n #optimole-app .pagination-list {\n -ms-flex-align: center;\n align-items: center;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n text-align: center; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link,\n #optimole-app .pagination-ellipsis {\n font-size: 1em;\n padding-left: 0.5em;\n padding-right: 0.5em;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0.25rem;\n text-align: center; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next,\n #optimole-app .pagination-link {\n border-color: #dbdbdb;\n color: #363636;\n min-width: 2.25em; }\n #optimole-app .pagination-previous:hover,\n #optimole-app .pagination-next:hover,\n #optimole-app .pagination-link:hover {\n border-color: #b5b5b5;\n color: #363636; }\n #optimole-app .pagination-previous:focus,\n #optimole-app .pagination-next:focus,\n #optimole-app .pagination-link:focus {\n border-color: #3273dc; }\n #optimole-app .pagination-previous:active,\n #optimole-app .pagination-next:active,\n #optimole-app .pagination-link:active {\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); }\n #optimole-app .pagination-previous[disabled],\n #optimole-app .pagination-next[disabled],\n #optimole-app .pagination-link[disabled] {\n background-color: #dbdbdb;\n border-color: #dbdbdb;\n box-shadow: none;\n color: #7a7a7a;\n opacity: 0.5; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next {\n padding-left: 0.75em;\n padding-right: 0.75em;\n white-space: nowrap; }\n #optimole-app .pagination-link.is-current {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff; }\n #optimole-app .pagination-ellipsis {\n color: #b5b5b5;\n pointer-events: none; }\n #optimole-app .pagination-list {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n @media screen and (max-width: 768px) {\n #optimole-app .pagination {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .pagination-previous,\n #optimole-app .pagination-next {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; }\n #optimole-app .pagination-list li {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1; } }\n @media screen and (min-width: 769px), print {\n #optimole-app .pagination-list {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n -ms-flex-pack: start;\n justify-content: flex-start;\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination-previous {\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination-next {\n -ms-flex-order: 3;\n order: 3; }\n #optimole-app .pagination {\n -ms-flex-pack: justify;\n justify-content: space-between; }\n #optimole-app .pagination.is-centered .pagination-previous {\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination.is-centered .pagination-list {\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination.is-centered .pagination-next {\n -ms-flex-order: 3;\n order: 3; }\n #optimole-app .pagination.is-right .pagination-previous {\n -ms-flex-order: 1;\n order: 1; }\n #optimole-app .pagination.is-right .pagination-next {\n -ms-flex-order: 2;\n order: 2; }\n #optimole-app .pagination.is-right .pagination-list {\n -ms-flex-pack: end;\n justify-content: flex-end;\n -ms-flex-order: 3;\n order: 3; } }\n #optimole-app .panel {\n font-size: 1rem; }\n #optimole-app .panel:not(:last-child) {\n margin-bottom: 1.5rem; }\n #optimole-app .panel-heading,\n #optimole-app .panel-tabs,\n #optimole-app .panel-block {\n border-bottom: 1px solid #dbdbdb;\n border-left: 1px solid #dbdbdb;\n border-right: 1px solid #dbdbdb; }\n #optimole-app .panel-heading:first-child,\n #optimole-app .panel-tabs:first-child,\n #optimole-app .panel-block:first-child {\n border-top: 1px solid #dbdbdb; }\n #optimole-app .panel-heading {\n background-color: whitesmoke;\n border-radius: 4px 4px 0 0;\n color: #363636;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1.25;\n padding: 0.5em 0.75em; }\n #optimole-app .panel-tabs {\n -ms-flex-align: end;\n align-items: flex-end;\n display: -ms-flexbox;\n display: flex;\n font-size: 0.875em;\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .panel-tabs a {\n border-bottom: 1px solid #dbdbdb;\n margin-bottom: -1px;\n padding: 0.5em; }\n #optimole-app .panel-tabs a.is-active {\n border-bottom-color: #4a4a4a;\n color: #363636; }\n #optimole-app .panel-list a {\n color: #4a4a4a; }\n #optimole-app .panel-list a:hover {\n color: #3273dc; }\n #optimole-app .panel-block {\n -ms-flex-align: center;\n align-items: center;\n color: #363636;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: start;\n justify-content: flex-start;\n padding: 0.5em 0.75em; }\n #optimole-app .panel-block input[type="checkbox"] {\n margin-right: 0.75em; }\n #optimole-app .panel-block > .control {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n width: 100%; }\n #optimole-app .panel-block.is-wrapped {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap; }\n #optimole-app .panel-block.is-active {\n border-left-color: #3273dc;\n color: #363636; }\n #optimole-app .panel-block.is-active .panel-icon {\n color: #3273dc; }\n #optimole-app a.panel-block,\n #optimole-app label.panel-block {\n cursor: pointer; }\n #optimole-app a.panel-block:hover,\n #optimole-app label.panel-block:hover {\n background-color: whitesmoke; }\n #optimole-app .panel-icon {\n display: inline-block;\n font-size: 14px;\n height: 1em;\n line-height: 1em;\n text-align: center;\n vertical-align: top;\n width: 1em;\n color: #7a7a7a;\n margin-right: 0.75em; }\n #optimole-app .panel-icon .fa {\n font-size: inherit;\n line-height: inherit; }\n #optimole-app .tabs {\n -webkit-overflow-scrolling: touch;\n -ms-flex-align: stretch;\n align-items: stretch;\n display: -ms-flexbox;\n display: flex;\n font-size: 1rem;\n -ms-flex-pack: justify;\n justify-content: space-between;\n overflow: hidden;\n overflow-x: auto;\n white-space: nowrap; }\n #optimole-app .tabs a {\n -ms-flex-align: center;\n align-items: center;\n border-bottom-color: #dbdbdb;\n border-bottom-style: solid;\n border-bottom-width: 1px;\n color: #4a4a4a;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: -1px;\n padding: 0.5em 1em;\n vertical-align: top; }\n #optimole-app .tabs a:hover {\n border-bottom-color: #363636;\n color: #363636; }\n #optimole-app .tabs li {\n display: block; }\n #optimole-app .tabs li.is-active a {\n border-bottom-color: #3273dc;\n color: #3273dc; }\n #optimole-app .tabs ul {\n -ms-flex-align: center;\n align-items: center;\n border-bottom-color: #dbdbdb;\n border-bottom-style: solid;\n border-bottom-width: 1px;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n #optimole-app .tabs ul.is-left {\n padding-right: 0.75em; }\n #optimole-app .tabs ul.is-center {\n -ms-flex: none;\n flex: none;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0.75em;\n padding-right: 0.75em; }\n #optimole-app .tabs ul.is-right {\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding-left: 0.75em; }\n #optimole-app .tabs .icon:first-child {\n margin-right: 0.5em; }\n #optimole-app .tabs .icon:last-child {\n margin-left: 0.5em; }\n #optimole-app .tabs.is-centered ul {\n -ms-flex-pack: center;\n justify-content: center; }\n #optimole-app .tabs.is-right ul {\n -ms-flex-pack: end;\n justify-content: flex-end; }\n #optimole-app .tabs.is-boxed a {\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0; }\n #optimole-app .tabs.is-boxed a:hover {\n background-color: whitesmoke;\n border-bottom-color: #dbdbdb; }\n #optimole-app .tabs.is-boxed li.is-active a {\n background-color: white;\n border-color: #dbdbdb;\n border-bottom-color: transparent !important; }\n #optimole-app .tabs.is-fullwidth li {\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 0;\n flex-shrink: 0; }\n #optimole-app .tabs.is-toggle a {\n border-color: #dbdbdb;\n border-style: solid;\n border-width: 1px;\n margin-bottom: 0;\n position: relative; }\n #optimole-app .tabs.is-toggle a:hover {\n background-color: whitesmoke;\n border-color: #b5b5b5;\n z-index: 2; }\n #optimole-app .tabs.is-toggle li + li {\n margin-left: -1px; }\n #optimole-app .tabs.is-toggle li:first-child a {\n border-radius: 4px 0 0 4px; }\n #optimole-app .tabs.is-toggle li:last-child a {\n border-radius: 0 4px 4px 0; }\n #optimole-app .tabs.is-toggle li.is-active a {\n background-color: #3273dc;\n border-color: #3273dc;\n color: #fff;\n z-index: 1; }\n #optimole-app .tabs.is-toggle ul {\n border-bottom: none; }\n #optimole-app .tabs.is-toggle.is-toggle-rounded li:first-child a {\n border-bottom-left-radius: 290486px;\n border-top-left-radius: 290486px;\n padding-left: 1.25em; }\n #optimole-app .tabs.is-toggle.is-toggle-rounded li:last-child a {\n border-bottom-right-radius: 290486px;\n border-top-right-radius: 290486px;\n padding-right: 1.25em; }\n #optimole-app .tabs.is-small {\n font-size: 0.75rem; }\n #optimole-app .tabs.is-medium {\n font-size: 1.25rem; }\n #optimole-app .tabs.is-large {\n font-size: 1.5rem; }\n #optimole-app .column {\n display: block;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-negative: 1;\n flex-shrink: 1;\n padding: 0.75rem; }\n .columns.is-mobile > #optimole-app .column.is-narrow {\n -ms-flex: none;\n flex: none; }\n .columns.is-mobile > #optimole-app .column.is-full {\n -ms-flex: none;\n flex: none;\n width: 100%; }\n .columns.is-mobile > #optimole-app .column.is-three-quarters {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n .columns.is-mobile > #optimole-app .column.is-two-thirds {\n -ms-flex: none;\n flex: none;\n width: 66.6666%; }\n .columns.is-mobile > #optimole-app .column.is-half {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n .columns.is-mobile > #optimole-app .column.is-one-third {\n -ms-flex: none;\n flex: none;\n width: 33.3333%; }\n .columns.is-mobile > #optimole-app .column.is-one-quarter {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n .columns.is-mobile > #optimole-app .column.is-one-fifth {\n -ms-flex: none;\n flex: none;\n width: 20%; }\n .columns.is-mobile > #optimole-app .column.is-two-fifths {\n -ms-flex: none;\n flex: none;\n width: 40%; }\n .columns.is-mobile > #optimole-app .column.is-three-fifths {\n -ms-flex: none;\n flex: none;\n width: 60%; }\n .columns.is-mobile > #optimole-app .column.is-four-fifths {\n -ms-flex: none;\n flex: none;\n width: 80%; }\n .columns.is-mobile > #optimole-app .column.is-offset-three-quarters {\n margin-left: 75%; }\n .columns.is-mobile > #optimole-app .column.is-offset-two-thirds {\n margin-left: 66.6666%; }\n .columns.is-mobile > #optimole-app .column.is-offset-half {\n margin-left: 50%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-third {\n margin-left: 33.3333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-quarter {\n margin-left: 25%; }\n .columns.is-mobile > #optimole-app .column.is-offset-one-fifth {\n margin-left: 20%; }\n .columns.is-mobile > #optimole-app .column.is-offset-two-fifths {\n margin-left: 40%; }\n .columns.is-mobile > #optimole-app .column.is-offset-three-fifths {\n margin-left: 60%; }\n .columns.is-mobile > #optimole-app .column.is-offset-four-fifths {\n margin-left: 80%; }\n .columns.is-mobile > #optimole-app .column.is-1 {\n -ms-flex: none;\n flex: none;\n width: 8.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-1 {\n margin-left: 8.33333%; }\n .columns.is-mobile > #optimole-app .column.is-2 {\n -ms-flex: none;\n flex: none;\n width: 16.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-2 {\n margin-left: 16.66667%; }\n .columns.is-mobile > #optimole-app .column.is-3 {\n -ms-flex: none;\n flex: none;\n width: 25%; }\n .columns.is-mobile > #optimole-app .column.is-offset-3 {\n margin-left: 25%; }\n .columns.is-mobile > #optimole-app .column.is-4 {\n -ms-flex: none;\n flex: none;\n width: 33.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-4 {\n margin-left: 33.33333%; }\n .columns.is-mobile > #optimole-app .column.is-5 {\n -ms-flex: none;\n flex: none;\n width: 41.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-5 {\n margin-left: 41.66667%; }\n .columns.is-mobile > #optimole-app .column.is-6 {\n -ms-flex: none;\n flex: none;\n width: 50%; }\n .columns.is-mobile > #optimole-app .column.is-offset-6 {\n margin-left: 50%; }\n .columns.is-mobile > #optimole-app .column.is-7 {\n -ms-flex: none;\n flex: none;\n width: 58.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-7 {\n margin-left: 58.33333%; }\n .columns.is-mobile > #optimole-app .column.is-8 {\n -ms-flex: none;\n flex: none;\n width: 66.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-8 {\n margin-left: 66.66667%; }\n .columns.is-mobile > #optimole-app .column.is-9 {\n -ms-flex: none;\n flex: none;\n width: 75%; }\n .columns.is-mobile > #optimole-app .column.is-offset-9 {\n margin-left: 75%; }\n .columns.is-mobile > #optimole-app .column.is-10 {\n -ms-flex: none;\n flex: none;\n width: 83.33333%; }\n .columns.is-mobile > #optimole-app .column.is-offset-10 {\n margin-left: 83.33333%; }\n .columns.is-mobile > #optimole-app .column.is-11 {\n -ms-flex: none;\n flex: none;\n width: 91.66667%; }\n .columns.is-mobile > #optimole-app .column.is-offset-11 {\n margin-left: 91.66667%; }\n .columns.is-mobile > #optimole-app .column.is-12 {\n
|