diff --git a/Makefile b/Makefile index bdd0befa..3275aed2 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION=0.75 +VERSION=0.76 BINARY_NAME=statup GOPATH:=$(GOPATH) GOCMD=go diff --git a/core/notifier/notifiers.go b/core/notifier/notifiers.go index c746afc6..c684eaf3 100644 --- a/core/notifier/notifiers.go +++ b/core/notifier/notifiers.go @@ -243,6 +243,9 @@ func Init(n Notifier) (*Notification, error) { var notify *Notification if err == nil { notify, _ = SelectNotification(n) + if notify.Delay.Seconds() == 0 { + notify.Delay = time.Duration(60 * time.Second) + } notify.testable = isType(n, new(Tester)) notify.Form = n.Select().Form } diff --git a/dev/COVERAGE.html b/dev/COVERAGE.html index 8d79cceb..e8d4bbea 100644 --- a/dev/COVERAGE.html +++ b/dev/COVERAGE.html @@ -128,114 +128,117 @@
Coverage Report
-
Generated on 10 Oct 18 20:45 -0700 with gocov-html
Report Overview
- - +
Generated on 15 Oct 18 15:22 -0700 with gocov-html
Report Overview
github.com/hunterlong/statup/cmd31.37%48/153
github.com/hunterlong/statup/core54.29%519/956
+ + - - - + + + - - + +
github.com/hunterlong/statup/cmd31.08%46/148
github.com/hunterlong/statup/core52.58%510/970
github.com/hunterlong/statup/core/notifier72.73%152/209
github.com/hunterlong/statup/handlers67.61%643/951
github.com/hunterlong/statup/notifiers38.52%99/257
github.com/hunterlong/statup/plugin4.00%2/50
github.com/hunterlong/statup/handlers67.41%635/942
github.com/hunterlong/statup/notifiers7.00%18/257
github.com/hunterlong/statup/plugin4.08%2/49
github.com/hunterlong/statup/source77.71%136/175
github.com/hunterlong/statup/utils54.98%116/211
Report Total57.90%1715/2962
github.com/hunterlong/statup/utils54.76%115/210
Report Total54.53%1614/2960
-
Package Overview: github.com/hunterlong/statup/cmd 31.37%

This is a coverage report created after analysis of the github.com/hunterlong/statup/cmd package. It +

Package Overview: github.com/hunterlong/statup/cmd 31.08%

This is a coverage report created after analysis of the github.com/hunterlong/statup/cmd package. It has been generated with the following command:

gocov test github.com/hunterlong/statup/cmd | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

- - + + - - + + - +
HelpEcho(...)github.com/hunterlong/statup/cmd/cli.go100.00%17/17
init(...)github.com/hunterlong/statup/cmd/main.go100.00%1/1
LoadDotEnvs(...)github.com/hunterlong/statup/cmd/main.go60.00%3/5
CatchCLI(...)github.com/hunterlong/statup/cmd/cli.go44.26%27/61
loadDotEnvs(...)github.com/hunterlong/statup/cmd/main.go60.00%3/5
catchCLI(...)github.com/hunterlong/statup/cmd/cli.go42.37%25/59
main(...)github.com/hunterlong/statup/cmd/main.go0.00%0/22
RunOnce(...)github.com/hunterlong/statup/cmd/cli.go0.00%0/17
mainProcess(...)github.com/hunterlong/statup/cmd/main.go0.00%0/14
CheckGithubUpdates(...)github.com/hunterlong/statup/cmd/cli.go0.00%0/10
mainProcess(...)github.com/hunterlong/statup/cmd/main.go0.00%0/11
checkGithubUpdates(...)github.com/hunterlong/statup/cmd/cli.go0.00%0/10
parseFlags(...)github.com/hunterlong/statup/cmd/main.go0.00%0/5
ForEachPlugin(...)github.com/hunterlong/statup/cmd/main.go0.00%0/1
github.com/hunterlong/statup/cmd31.37%48/153
github.com/hunterlong/statup/cmd31.08%46/148
func HelpEcho
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

-
153
func HelpEcho() {
154
        fmt.Printf("Statup v%v - Statup.io\n", VERSION)
155
        fmt.Printf("A simple Application Status Monitor that is opensource and lightweight.\n")
156
        fmt.Printf("Commands:\n")
157
        fmt.Println("     statup                    - Main command to run Statup server")
158
        fmt.Println("     statup version            - Returns the current version of Statup")
159
        fmt.Println("     statup run                - Check all services 1 time and then quit")
160
        fmt.Println("     statup test plugins       - Test all plugins for required information")
161
        fmt.Println("     statup assets             - Dump all assets used locally to be edited.")
162
        fmt.Println("     statup sass               - Compile .scss files into the css directory")
163
        fmt.Println("     statup env                - Show all environment variables being used for Statup")
164
        fmt.Println("     statup export             - Exports the index page as a static HTML for pushing")
165
        fmt.Println("     statup update             - Attempts to update to the latest version")
166
        fmt.Println("     statup help               - Shows the user basic information about Statup")
167
        fmt.Printf("Flags:\n")
168
        fmt.Println("     -ip 127.0.0.1             - Run HTTP server on specific IP address (default: localhost)")
169
        fmt.Println("     -port 8080                - Run HTTP server on Port (default: 8080)")
170
        fmt.Println("Give Statup a Star at https://github.com/hunterlong/statup")
171
}
+151
func HelpEcho() {
152
        fmt.Printf("Statup v%v - Statup.io\n", VERSION)
153
        fmt.Printf("A simple Application Status Monitor that is opensource and lightweight.\n")
154
        fmt.Printf("Commands:\n")
155
        fmt.Println("     statup                    - Main command to run Statup server")
156
        fmt.Println("     statup version            - Returns the current version of Statup")
157
        fmt.Println("     statup run                - Check all services 1 time and then quit")
158
        fmt.Println("     statup test plugins       - Test all plugins for required information")
159
        fmt.Println("     statup assets             - Dump all assets used locally to be edited.")
160
        fmt.Println("     statup sass               - Compile .scss files into the css directory")
161
        fmt.Println("     statup env                - Show all environment variables being used for Statup")
162
        fmt.Println("     statup export             - Exports the index page as a static HTML for pushing")
163
        fmt.Println("     statup update             - Attempts to update to the latest version")
164
        fmt.Println("     statup help               - Shows the user basic information about Statup")
165
        fmt.Printf("Flags:\n")
166
        fmt.Println("     -ip 127.0.0.1             - Run HTTP server on specific IP address (default: localhost)")
167
        fmt.Println("     -port 8080                - Run HTTP server on Port (default: 8080)")
168
        fmt.Println("Give Statup a Star at https://github.com/hunterlong/statup")
169
}
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

41
func init() {
42
        core.VERSION = VERSION
43
}
-
func LoadDotEnvs
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

-
88
func LoadDotEnvs() error {
89
        err := godotenv.Load()
90
        if err == nil {
91
                utils.Log(1, "Environment file '.env' Loaded")
92
                UsingDotEnv = true
93
        }
94
        return err
95
}
+
func loadDotEnvs
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

+
88
func loadDotEnvs() error {
89
        err := godotenv.Load()
90
        if err == nil {
91
                utils.Log(1, "Environment file '.env' Loaded")
92
                UsingDotEnv = true
93
        }
94
        return err
95
}
-
func CatchCLI
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

-
34
func CatchCLI(args []string) error {
35
        dir := utils.Directory
36
        utils.InitLogs()
37
        source.Assets()
38
        LoadDotEnvs()
39
40
        switch args[0] {
41
        case "app":
42
                handlers.DesktopInit(ipAddress, port)
43
        case "version":
44
                if COMMIT != "" {
45
                        fmt.Printf("Statup v%v (%v)\n", VERSION, COMMIT)
46
                } else {
47
                        fmt.Printf("Statup v%v\n", VERSION)
48
                }
49
                return errors.New("end")
50
        case "assets":
51
                err := source.CreateAllAssets(dir)
52
                if err != nil {
53
                        return err
54
                } else {
55
                        return errors.New("end")
56
                }
57
        case "sass":
58
                utils.InitLogs()
59
                source.Assets()
60
                err := source.CompileSASS(dir)
61
                if err == nil {
62
                        return errors.New("end")
63
                }
64
                return err
65
        case "update":
66
                gitCurrent, err := CheckGithubUpdates()
67
                if err != nil {
68
                        return nil
69
                }
70
                fmt.Printf("Statup Version: v%v\nLatest Version: %v\n", VERSION, gitCurrent.TagName)
71
                if VERSION != gitCurrent.TagName[1:] {
72
                        fmt.Printf("You don't have the latest version v%v!\nDownload the latest release at: https://github.com/hunterlong/statup\n", gitCurrent.TagName[1:])
73
                } else {
74
                        fmt.Printf("You have the latest version of Statup!\n")
75
                }
76
                if err == nil {
77
                        return errors.New("end")
78
                }
79
                return nil
80
        case "test":
81
                cmd := args[1]
82
                switch cmd {
83
                case "plugins":
84
                        plugin.LoadPlugins()
85
                }
86
                return errors.New("end")
87
        case "export":
88
                var err error
89
                fmt.Printf("Statup v%v Exporting Static 'index.html' page...\n", VERSION)
90
                core.Configs, err = core.LoadConfig(dir)
91
                if err != nil {
92
                        utils.Log(4, "config.yml file not found")
93
                        return err
94
                }
95
                indexSource := core.ExportIndexHTML()
96
                err = utils.SaveFile("./index.html", []byte(indexSource))
97
                if err != nil {
98
                        utils.Log(4, err)
99
                        return err
100
                }
101
                utils.Log(1, "Exported Statup index page: 'index.html'")
102
        case "help":
103
                HelpEcho()
104
                return errors.New("end")
105
        case "run":
106
                utils.Log(1, "Running 1 time and saving to database...")
107
                RunOnce()
108
                fmt.Println("Check is complete.")
109
                return errors.New("end")
110
        case "env":
111
                fmt.Println("Statup Environment Variable")
112
                envs, err := godotenv.Read(".env")
113
                if err != nil {
114
                        utils.Log(4, "No .env file found in current directory.")
115
                        return err
116
                }
117
                for k, e := range envs {
118
                        fmt.Printf("%v=%v\n", k, e)
119
                }
120
        default:
121
                return nil
122
        }
123
        return errors.New("end")
124
}
+
func catchCLI
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

+
34
func catchCLI(args []string) error {
35
        dir := utils.Directory
36
        utils.InitLogs()
37
        source.Assets()
38
        loadDotEnvs()
39
40
        switch args[0] {
41
        case "app":
42
                handlers.DesktopInit(ipAddress, port)
43
        case "version":
44
                if COMMIT != "" {
45
                        fmt.Printf("Statup v%v (%v)\n", VERSION, COMMIT)
46
                } else {
47
                        fmt.Printf("Statup v%v\n", VERSION)
48
                }
49
                return errors.New("end")
50
        case "assets":
51
                err := source.CreateAllAssets(dir)
52
                if err != nil {
53
                        return err
54
                } else {
55
                        return errors.New("end")
56
                }
57
        case "sass":
58
                err := source.CompileSASS(dir)
59
                if err == nil {
60
                        return errors.New("end")
61
                }
62
                return err
63
        case "update":
64
                gitCurrent, err := checkGithubUpdates()
65
                if err != nil {
66
                        return nil
67
                }
68
                fmt.Printf("Statup Version: v%v\nLatest Version: %v\n", VERSION, gitCurrent.TagName)
69
                if VERSION != gitCurrent.TagName[1:] {
70
                        fmt.Printf("You don't have the latest version v%v!\nDownload the latest release at: https://github.com/hunterlong/statup\n", gitCurrent.TagName[1:])
71
                } else {
72
                        fmt.Printf("You have the latest version of Statup!\n")
73
                }
74
                if err == nil {
75
                        return errors.New("end")
76
                }
77
                return nil
78
        case "test":
79
                cmd := args[1]
80
                switch cmd {
81
                case "plugins":
82
                        plugin.LoadPlugins()
83
                }
84
                return errors.New("end")
85
        case "export":
86
                var err error
87
                fmt.Printf("Statup v%v Exporting Static 'index.html' page...\n", VERSION)
88
                core.Configs, err = core.LoadConfigFile(dir)
89
                if err != nil {
90
                        utils.Log(4, "config.yml file not found")
91
                        return err
92
                }
93
                indexSource := core.ExportIndexHTML()
94
                err = utils.SaveFile("./index.html", []byte(indexSource))
95
                if err != nil {
96
                        utils.Log(4, err)
97
                        return err
98
                }
99
                utils.Log(1, "Exported Statup index page: 'index.html'")
100
        case "help":
101
                HelpEcho()
102
                return errors.New("end")
103
        case "run":
104
                utils.Log(1, "Running 1 time and saving to database...")
105
                RunOnce()
106
                fmt.Println("Check is complete.")
107
                return errors.New("end")
108
        case "env":
109
                fmt.Println("Statup Environment Variable")
110
                envs, err := godotenv.Read(".env")
111
                if err != nil {
112
                        utils.Log(4, "No .env file found in current directory.")
113
                        return err
114
                }
115
                for k, e := range envs {
116
                        fmt.Printf("%v=%v\n", k, e)
117
                }
118
        default:
119
                return nil
120
        }
121
        return errors.New("end")
122
}
func main
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

-
57
func main() {
58
        var err error
59
        parseFlags()
60
        LoadDotEnvs()
61
        source.Assets()
62
        utils.InitLogs()
63
        args := flag.Args()
64
65
        if len(args) >= 1 {
66
                err := CatchCLI(args)
67
                if err != nil {
68
                        if err.Error() == "end" {
69
                                os.Exit(0)
70
                        }
71
                        fmt.Println(err)
72
                        os.Exit(1)
73
                }
74
        }
75
        utils.Log(1, fmt.Sprintf("Starting Statup v%v", VERSION))
76
        core.Configs, err = core.LoadConfig(utils.Directory)
77
        if err != nil {
78
                utils.Log(3, err)
79
                core.SetupMode = true
80
                fmt.Println(handlers.RunHTTPServer(ipAddress, port))
81
                os.Exit(1)
82
        }
83
        defer core.CloseDB()
84
        mainProcess()
85
}
+57
func main() {
58
        var err error
59
        parseFlags()
60
        loadDotEnvs()
61
        source.Assets()
62
        utils.InitLogs()
63
        args := flag.Args()
64
65
        if len(args) >= 1 {
66
                err := catchCLI(args)
67
                if err != nil {
68
                        if err.Error() == "end" {
69
                                os.Exit(0)
70
                        }
71
                        fmt.Println(err)
72
                        os.Exit(1)
73
                }
74
        }
75
        utils.Log(1, fmt.Sprintf("Starting Statup v%v", VERSION))
76
        core.Configs, err = core.LoadConfigFile(utils.Directory)
77
        if err != nil {
78
                utils.Log(3, err)
79
                core.SetupMode = true
80
                fmt.Println(handlers.RunHTTPServer(ipAddress, port))
81
                os.Exit(1)
82
        }
83
        defer core.CloseDB()
84
        mainProcess()
85
}
func RunOnce
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

-
127
func RunOnce() {
128
        var err error
129
        core.Configs, err = core.LoadConfig(utils.Directory)
130
        if err != nil {
131
                utils.Log(4, "config.yml file not found")
132
        }
133
        err = core.Configs.Connect(false, utils.Directory)
134
        if err != nil {
135
                utils.Log(4, err)
136
        }
137
        core.CoreApp, err = core.SelectCore()
138
        if err != nil {
139
                fmt.Println("Core database was not found, Statup is not setup yet.")
140
        }
141
        core.CoreApp.SelectAllServices()
142
        if err != nil {
143
                utils.Log(4, err)
144
        }
145
        for _, out := range core.CoreApp.Services {
146
                service := out.Select()
147
                out.Check(true)
148
                fmt.Printf("    Service %v | URL: %v | Latency: %0.0fms | Online: %v\n", service.Name, service.Domain, (service.Latency * 1000), service.Online)
149
        }
150
}
+125
func RunOnce() {
126
        var err error
127
        core.Configs, err = core.LoadConfigFile(utils.Directory)
128
        if err != nil {
129
                utils.Log(4, "config.yml file not found")
130
        }
131
        err = core.Configs.Connect(false, utils.Directory)
132
        if err != nil {
133
                utils.Log(4, err)
134
        }
135
        core.CoreApp, err = core.SelectCore()
136
        if err != nil {
137
                fmt.Println("Core database was not found, Statup is not setup yet.")
138
        }
139
        _, err = core.CoreApp.SelectAllServices(true)
140
        if err != nil {
141
                utils.Log(4, err)
142
        }
143
        for _, out := range core.CoreApp.Services {
144
                service := out.Select()
145
                out.Check(true)
146
                fmt.Printf("    Service %v | URL: %v | Latency: %0.0fms | Online: %v\n", service.Name, service.Domain, (service.Latency * 1000), service.Online)
147
        }
148
}
func mainProcess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

-
98
func mainProcess() {
99
        dir := utils.Directory
100
        var err error
101
        core.Configs, err = core.LoadConfig(dir)
102
        if err != nil {
103
                utils.Log(4, fmt.Sprintf("could not load config.yml %v", err))
104
        }
105
        err = core.Configs.Connect(false, dir)
106
        if err != nil {
107
                utils.Log(4, fmt.Sprintf("could not connect to database: %v", err))
108
        }
109
        core.Configs.MigrateDatabase()
110
        core.InitApp()
111
        if !core.SetupMode {
112
                plugin.LoadPlugins()
113
                fmt.Println(handlers.RunHTTPServer(ipAddress, port))
114
                os.Exit(1)
115
        }
116
}
+98
func mainProcess() {
99
        dir := utils.Directory
100
        var err error
101
        err = core.Configs.Connect(false, dir)
102
        if err != nil {
103
                utils.Log(4, fmt.Sprintf("could not connect to database: %v", err))
104
        }
105
        core.Configs.MigrateDatabase()
106
        core.InitApp()
107
        if !core.SetupMode {
108
                plugin.LoadPlugins()
109
                fmt.Println(handlers.RunHTTPServer(ipAddress, port))
110
                os.Exit(1)
111
        }
112
}
-
func CheckGithubUpdates
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

-
307
func CheckGithubUpdates() (GithubResponse, error) {
308
        var gitResp GithubResponse
309
        response, err := http.Get("https://api.github.com/repos/hunterlong/statup/releases/latest")
310
        if err != nil {
311
                return GithubResponse{}, err
312
        }
313
        defer response.Body.Close()
314
        contents, err := ioutil.ReadAll(response.Body)
315
        if err != nil {
316
                return GithubResponse{}, err
317
        }
318
        err = json.Unmarshal(contents, &gitResp)
319
        return gitResp, err
320
}
+
func checkGithubUpdates
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/cli.go:

+
171
func checkGithubUpdates() (githubResponse, error) {
172
        var gitResp githubResponse
173
        response, err := http.Get("https://api.github.com/repos/hunterlong/statup/releases/latest")
174
        if err != nil {
175
                return githubResponse{}, err
176
        }
177
        defer response.Body.Close()
178
        contents, err := ioutil.ReadAll(response.Body)
179
        if err != nil {
180
                return githubResponse{}, err
181
        }
182
        err = json.Unmarshal(contents, &gitResp)
183
        return gitResp, err
184
}
func parseFlags
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

48
func parseFlags() {
49
        ip := flag.String("ip", "0.0.0.0", "IP address to run the Statup HTTP server")
50
        p := flag.Int("port", 8080, "Port to run the HTTP server")
51
        flag.Parse()
52
        ipAddress = *ip
53
        port = *p
54
}
func ForEachPlugin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/cmd/main.go:

-
118
func ForEachPlugin() {
119
        if len(core.CoreApp.Plugins) > 0 {
120
                //for _, p := range core.Plugins {
121
                //        p.OnShutdown()
122
                //}
123
        }
124
}
+114
func ForEachPlugin() {
115
        if len(core.CoreApp.Plugins) > 0 {
116
                //for _, p := range core.Plugins {
117
                //        p.OnShutdown()
118
                //}
119
        }
120
}
-
Package Overview: github.com/hunterlong/statup/core 54.29%

This is a coverage report created after analysis of the github.com/hunterlong/statup/core package. It +

Package Overview: github.com/hunterlong/statup/core 52.58%

This is a coverage report created after analysis of the github.com/hunterlong/statup/core package. It has been generated with the following command:

gocov test github.com/hunterlong/statup/core | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

- + - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - + + + + + + + - - - - + - + + + + + + + + + + + + + + @@ -244,20 +247,14 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 - - - - - - + - - + @@ -268,116 +265,120 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 - + - + + + - + - - - - + + + + - + - + + - - + + + - + + - + - - - - - + + + - - - - + + + + + + + + + + + - - - - - + - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + +
InsertLargeSampleData(...)github.com/hunterlong/statup/core/sample.go100.00%28/28
Service.CheckQueue(...)github.com/hunterlong/statup/core/checker.go100.00%13/13
InsertSampleData(...)github.com/hunterlong/statup/core/sample.go100.00%13/13
Service.CheckQueue(...)github.com/hunterlong/statup/core/checker.go100.00%13/13
insertSampleCheckins(...)github.com/hunterlong/statup/core/sample.go100.00%12/12
Service.dnsCheck(...)github.com/hunterlong/statup/core/checker.go100.00%11/11
DbConfig.CreateDatabase(...)github.com/hunterlong/statup/core/database.go100.00%11/11
insertHitRecords(...)github.com/hunterlong/statup/core/sample.go100.00%10/10
DbConfig.DropDatabase(...)github.com/hunterlong/statup/core/database.go100.00%10/10
insertFailureRecords(...)github.com/hunterlong/statup/core/sample.go100.00%8/8
recordSuccess(...)github.com/hunterlong/statup/core/checker.go100.00%6/6
Core.CountOnline(...)github.com/hunterlong/statup/core/services.go100.00%5/5
recordFailure(...)github.com/hunterlong/statup/core/checker.go100.00%5/5
Checkin.Expected(...)github.com/hunterlong/statup/core/checkin.go100.00%5/5
Service.TotalHitsSince(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
NewCore(...)github.com/hunterlong/statup/core/core.go100.00%4/4
Checkin.CreateFailure(...)github.com/hunterlong/statup/core/checkin.go100.00%4/4
insertSampleUsers(...)github.com/hunterlong/statup/core/sample.go100.00%4/4
Service.LimitedHits(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
Service.TotalFailuresSince(...)github.com/hunterlong/statup/core/failures.go100.00%4/4
Service.TotalHits(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
Service.CheckinProcess(...)github.com/hunterlong/statup/core/services.go100.00%4/4
Service.LimitedFailures(...)github.com/hunterlong/statup/core/failures.go100.00%4/4
user.Update(...)github.com/hunterlong/statup/core/users.go100.00%4/4
SelectUsername(...)github.com/hunterlong/statup/core/users.go100.00%4/4
Service.Hits(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
Service.Check(...)github.com/hunterlong/statup/core/checker.go100.00%3/3
Checkin.Last(...)github.com/hunterlong/statup/core/checkin.go100.00%3/3
SelectUser(...)github.com/hunterlong/statup/core/users.go100.00%3/3
Checkin.BeforeCreate(...)github.com/hunterlong/statup/core/database.go100.00%3/3
Service.Checkins(...)github.com/hunterlong/statup/core/services.go100.00%3/3
Checkin.Hits(...)github.com/hunterlong/statup/core/checkin.go100.00%3/3
insertSampleCore(...)github.com/hunterlong/statup/core/sample.go100.00%3/3
insertSampleUsers(...)github.com/hunterlong/statup/core/sample.go100.00%4/4
NewCore(...)github.com/hunterlong/statup/core/core.go100.00%4/4
Checkin.CreateFailure(...)github.com/hunterlong/statup/core/checkin.go100.00%4/4
Service.LimitedHits(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
user.Update(...)github.com/hunterlong/statup/core/users.go100.00%4/4
Service.LimitedFailures(...)github.com/hunterlong/statup/core/failures.go100.00%4/4
Service.TotalHits(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
Service.TotalFailuresSince(...)github.com/hunterlong/statup/core/failures.go100.00%4/4
Service.TotalHitsSince(...)github.com/hunterlong/statup/core/hits.go100.00%4/4
reverseHits(...)github.com/hunterlong/statup/core/hits.go100.00%3/3
updateService(...)github.com/hunterlong/statup/core/services.go100.00%2/2
Checkin.Service(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
user.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
Checkin.Period(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
Checkin.Hits(...)github.com/hunterlong/statup/core/checkin.go100.00%3/3
Checkin.Last(...)github.com/hunterlong/statup/core/checkin.go100.00%3/3
Service.Checkins(...)github.com/hunterlong/statup/core/services.go100.00%3/3
insertSampleCore(...)github.com/hunterlong/statup/core/sample.go100.00%3/3
Service.Check(...)github.com/hunterlong/statup/core/checker.go100.00%3/3
Checkin.BeforeCreate(...)github.com/hunterlong/statup/core/database.go100.00%3/3
SelectUser(...)github.com/hunterlong/statup/core/users.go100.00%3/3
Service.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
checkinHit.Ago(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
checkinHit.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
Checkin.Grace(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
CheckHash(...)github.com/hunterlong/statup/core/users.go100.00%2/2
Checkin.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
user.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
failure.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
reorderServices(...)github.com/hunterlong/statup/core/services.go100.00%1/1
Checkin.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
Checkin.Grace(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
Checkin.Period(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
Checkin.Service(...)github.com/hunterlong/statup/core/checkin.go100.00%2/2
updateService(...)github.com/hunterlong/statup/core/services.go100.00%2/2
CheckHash(...)github.com/hunterlong/statup/core/users.go100.00%2/2
checkinHit.AfterFind(...)github.com/hunterlong/statup/core/database.go100.00%2/2
checkinHitsDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
user.Delete(...)github.com/hunterlong/statup/core/users.go100.00%1/1
init(...)github.com/hunterlong/statup/core/core.go100.00%1/1
ReturnCheckin(...)github.com/hunterlong/statup/core/checkin.go100.00%1/1
reorderServices(...)github.com/hunterlong/statup/core/services.go100.00%1/1
ReturnService(...)github.com/hunterlong/statup/core/services.go100.00%1/1
checkinDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
ReturnCheckinHit(...)github.com/hunterlong/statup/core/checkin.go100.00%1/1
ServiceOrder.Len(...)github.com/hunterlong/statup/core/core.go100.00%1/1
ServiceOrder.Swap(...)github.com/hunterlong/statup/core/core.go100.00%1/1
ServiceOrder.Less(...)github.com/hunterlong/statup/core/core.go100.00%1/1
servicesDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
coreDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
usersDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
checkinDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
checkinHitsDB(...)github.com/hunterlong/statup/core/database.go100.00%1/1
ReturnUser(...)github.com/hunterlong/statup/core/users.go100.00%1/1
user.Delete(...)github.com/hunterlong/statup/core/users.go100.00%1/1
ReturnCheckinHit(...)github.com/hunterlong/statup/core/checkin.go100.00%1/1
ReturnCheckin(...)github.com/hunterlong/statup/core/checkin.go100.00%1/1
ReturnService(...)github.com/hunterlong/statup/core/services.go100.00%1/1
Service.Select(...)github.com/hunterlong/statup/core/services.go100.00%1/1
Service.parseHost(...)github.com/hunterlong/statup/core/checker.go90.91%10/11
Service.dnsCheck(...)github.com/hunterlong/statup/core/checker.go90.91%10/11
Service.Sum(...)github.com/hunterlong/statup/core/hits.go85.71%6/7
Service.Update(...)github.com/hunterlong/statup/core/services.go84.62%11/13
Core.SelectAllServices(...)github.com/hunterlong/statup/core/services.go84.62%11/13
Service.Create(...)github.com/hunterlong/statup/core/services.go81.82%9/11
Service.Delete(...)github.com/hunterlong/statup/core/services.go81.82%9/11
Service.Create(...)github.com/hunterlong/statup/core/services.go81.82%9/11
Checkin.Routine(...)github.com/hunterlong/statup/core/checkin.go80.00%12/15
Service.OnlineSince(...)github.com/hunterlong/statup/core/services.go80.00%12/15
Service.duration(...)github.com/hunterlong/statup/core/checker.go80.00%4/5
Checkin.Create(...)github.com/hunterlong/statup/core/checkin.go75.00%6/8
Service.index(...)github.com/hunterlong/statup/core/services.go75.00%3/4
SelectService(...)github.com/hunterlong/statup/core/services.go75.00%3/4
Service.checkHttp(...)github.com/hunterlong/statup/core/checker.go74.47%35/47
user.Create(...)github.com/hunterlong/statup/core/users.go72.73%8/11
Service.checkTcp(...)github.com/hunterlong/statup/core/checker.go72.00%18/25
Core.SelectAllServices(...)github.com/hunterlong/statup/core/services.go71.43%10/14
DbConfig.Save(...)github.com/hunterlong/statup/core/database.go71.43%10/14
AuthUser(...)github.com/hunterlong/statup/core/users.go71.43%5/7
Service.CreateFailure(...)github.com/hunterlong/statup/core/failures.go71.43%5/7
SelectCore(...)github.com/hunterlong/statup/core/core.go69.23%9/13
LoadConfig(...)github.com/hunterlong/statup/core/configs.go66.67%8/12
Service.checkHttp(...)github.com/hunterlong/statup/core/checker.go68.09%32/47
DbConfig.MigrateDatabase(...)github.com/hunterlong/statup/core/database.go66.67%8/12
LoadConfigFile(...)github.com/hunterlong/statup/core/configs.go66.67%8/12
user.BeforeCreate(...)github.com/hunterlong/statup/core/database.go66.67%2/3
Service.BeforeCreate(...)github.com/hunterlong/statup/core/database.go66.67%2/3
checkinHit.BeforeCreate(...)github.com/hunterlong/statup/core/database.go66.67%2/3
user.BeforeCreate(...)github.com/hunterlong/statup/core/database.go66.67%2/3
DbConfig.Connect(...)github.com/hunterlong/statup/core/database.go65.38%17/26
Service.CreateHit(...)github.com/hunterlong/statup/core/hits.go60.00%3/5
Checkin.Update(...)github.com/hunterlong/statup/core/checkin.go60.00%3/5
checkinHit.Create(...)github.com/hunterlong/statup/core/checkin.go57.14%4/7
Service.SmallText(...)github.com/hunterlong/statup/core/services.go50.00%6/12
insertNotifierDB(...)github.com/hunterlong/statup/core/core.go50.00%3/6
@363:8(...)github.com/hunterlong/statup/core/database.go50.00%1/2
DbConfig.Connect(...)github.com/hunterlong/statup/core/database.go46.67%14/30
LoadUsingEnv(...)github.com/hunterlong/statup/core/configs.go0.00%0/40
InsertNotifierDB(...)github.com/hunterlong/statup/core/core.go50.00%3/6
@356:8(...)github.com/hunterlong/statup/core/database.go50.00%1/2
DefaultPort(...)github.com/hunterlong/statup/core/configs.go40.00%2/5
LoadUsingEnv(...)github.com/hunterlong/statup/core/configs.go0.00%0/35
failure.ParseError(...)github.com/hunterlong/statup/core/failures.go0.00%0/30
ExportIndexHTML(...)github.com/hunterlong/statup/core/export.go0.00%0/23
GraphDataRaw(...)github.com/hunterlong/statup/core/services.go0.00%0/16
InsertSampleHits(...)github.com/hunterlong/statup/core/sample.go0.00%0/14
Dbtimestamp(...)github.com/hunterlong/statup/core/services.go0.00%0/12
DbConfig.Update(...)github.com/hunterlong/statup/core/database.go0.00%0/12
Dbtimestamp(...)github.com/hunterlong/statup/core/services.go0.00%0/12
ExportChartsJs(...)github.com/hunterlong/statup/core/export.go0.00%0/11
Service.TotalUptime(...)github.com/hunterlong/statup/core/services.go0.00%0/10
Service.GraphData(...)github.com/hunterlong/statup/core/services.go0.00%0/8
EnvToConfig(...)github.com/hunterlong/statup/core/configs.go0.00%0/9
Checkin.RecheckCheckinFailure(...)github.com/hunterlong/statup/core/checkin.go0.00%0/8
DbConfig.CreateCore(...)github.com/hunterlong/statup/core/database.go0.00%0/8
Service.AvgTime(...)github.com/hunterlong/statup/core/services.go0.00%0/8
Service.GraphData(...)github.com/hunterlong/statup/core/services.go0.00%0/8
CountFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/6
Core.Count24HFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/6
InitApp(...)github.com/hunterlong/statup/core/core.go0.00%0/6
DateScanObj.ToString(...)github.com/hunterlong/statup/core/services.go0.00%0/5
Core.Count24HFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/6
SampleData(...)github.com/hunterlong/statup/core/configs.go0.00%0/5
recordFailure(...)github.com/hunterlong/statup/core/checker.go0.00%0/5
Service.lastFailure(...)github.com/hunterlong/statup/core/services.go0.00%0/5
DatabaseMaintence(...)github.com/hunterlong/statup/core/database.go0.00%0/5
Service.TotalFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/4
DateScanObj.ToString(...)github.com/hunterlong/statup/core/services.go0.00%0/5
DeleteConfig(...)github.com/hunterlong/statup/core/configs.go0.00%0/5
Core.CurrentTime(...)github.com/hunterlong/statup/core/core.go0.00%0/4
DeleteAllSince(...)github.com/hunterlong/statup/core/database.go0.00%0/4
Service.TotalFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/4
Service.DeleteFailures(...)github.com/hunterlong/statup/core/failures.go0.00%0/4
Core.AllOnline(...)github.com/hunterlong/statup/core/core.go0.00%0/4
DbConfig.InsertCore(...)github.com/hunterlong/statup/core/database.go0.00%0/4
DeleteConfig(...)github.com/hunterlong/statup/core/configs.go0.00%0/3
Checkin.Delete(...)github.com/hunterlong/statup/core/checkin.go0.00%0/3
Hit.BeforeCreate(...)github.com/hunterlong/statup/core/database.go0.00%0/3
Core.SassVars(...)github.com/hunterlong/statup/core/core.go0.00%0/3
Core.AllOnline(...)github.com/hunterlong/statup/core/core.go0.00%0/4
DeleteAllSince(...)github.com/hunterlong/statup/core/database.go0.00%0/4
Service.CheckinProcess(...)github.com/hunterlong/statup/core/services.go0.00%0/4
SelectCheckinId(...)github.com/hunterlong/statup/core/checkin.go0.00%0/3
Service.LimitedCheckins(...)github.com/hunterlong/statup/core/services.go0.00%0/3
failure.BeforeCreate(...)github.com/hunterlong/statup/core/database.go0.00%0/3
Core.MobileSASS(...)github.com/hunterlong/statup/core/core.go0.00%0/3
SelectCheckin(...)github.com/hunterlong/statup/core/checkin.go0.00%0/3
checkServices(...)github.com/hunterlong/statup/core/checker.go0.00%0/3
Hit.BeforeCreate(...)github.com/hunterlong/statup/core/database.go0.00%0/3
failure.BeforeCreate(...)github.com/hunterlong/statup/core/database.go0.00%0/3
Checkin.Delete(...)github.com/hunterlong/statup/core/checkin.go0.00%0/3
Service.LimitedCheckins(...)github.com/hunterlong/statup/core/services.go0.00%0/3
Core.MobileSASS(...)github.com/hunterlong/statup/core/core.go0.00%0/3
Core.BaseSASS(...)github.com/hunterlong/statup/core/core.go0.00%0/3
Core.SassVars(...)github.com/hunterlong/statup/core/core.go0.00%0/3
checkServices(...)github.com/hunterlong/statup/core/checker.go0.00%0/3
Service.AvgUptime24(...)github.com/hunterlong/statup/core/services.go0.00%0/2
Service.ToJSON(...)github.com/hunterlong/statup/core/services.go0.00%0/2
Service.HitsBetween(...)github.com/hunterlong/statup/core/database.go0.00%0/2
failure.Ago(...)github.com/hunterlong/statup/core/failures.go0.00%0/2
Service.TotalFailures24(...)github.com/hunterlong/statup/core/failures.go0.00%0/2
Service.Online24(...)github.com/hunterlong/statup/core/services.go0.00%0/2
Service.ToJSON(...)github.com/hunterlong/statup/core/services.go0.00%0/2
failure.Ago(...)github.com/hunterlong/statup/core/failures.go0.00%0/2
Service.HitsBetween(...)github.com/hunterlong/statup/core/database.go0.00%0/2
CloseDB(...)github.com/hunterlong/statup/core/database.go0.00%0/2
Hit.AfterFind(...)github.com/hunterlong/statup/core/database.go0.00%0/2
DbConfig.waitForDb(...)github.com/hunterlong/statup/core/database.go0.00%0/2
failure.Delete(...)github.com/hunterlong/statup/core/failures.go0.00%0/2
Service.AvgUptime24(...)github.com/hunterlong/statup/core/services.go0.00%0/2
UpdateCore(...)github.com/hunterlong/statup/core/core.go0.00%0/2
failure.Delete(...)github.com/hunterlong/statup/core/failures.go0.00%0/2
DbConfig.Close(...)github.com/hunterlong/statup/core/database.go0.00%0/1
injectDatabase(...)github.com/hunterlong/statup/core/export.go0.00%0/1
Core.UsingAssets(...)github.com/hunterlong/statup/core/core.go0.00%0/1
Service.DowntimeText(...)github.com/hunterlong/statup/core/services.go0.00%0/1
Service.UpdateSingle(...)github.com/hunterlong/statup/core/services.go0.00%0/1
Core.ToCore(...)github.com/hunterlong/statup/core/core.go0.00%0/1
@50:9(...)github.com/hunterlong/statup/core/export.go0.00%0/1
Core.ServicesCount(...)github.com/hunterlong/statup/core/services.go0.00%0/1
@53:11(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@94:11(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@71:17(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@68:10(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@65:17(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@62:14(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@59:14(...)github.com/hunterlong/statup/core/export.go0.00%0/1
Checkin.String(...)github.com/hunterlong/statup/core/checkin.go0.00%0/1
Core.ToCore(...)github.com/hunterlong/statup/core/core.go0.00%0/1
Services(...)github.com/hunterlong/statup/core/services.go0.00%0/1
Service.UpdateSingle(...)github.com/hunterlong/statup/core/services.go0.00%0/1
@53:11(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@56:14(...)github.com/hunterlong/statup/core/export.go0.00%0/1
github.com/hunterlong/statup/core54.29%519/956
Core.ServicesCount(...)github.com/hunterlong/statup/core/services.go0.00%0/1
Service.DowntimeText(...)github.com/hunterlong/statup/core/services.go0.00%0/1
Core.UsingAssets(...)github.com/hunterlong/statup/core/core.go0.00%0/1
@59:14(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@62:14(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@65:17(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@94:11(...)github.com/hunterlong/statup/core/export.go0.00%0/1
Checkin.String(...)github.com/hunterlong/statup/core/checkin.go0.00%0/1
@71:17(...)github.com/hunterlong/statup/core/export.go0.00%0/1
@50:9(...)github.com/hunterlong/statup/core/export.go0.00%0/1
github.com/hunterlong/statup/core52.58%510/970
func InsertLargeSampleData
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

185
func InsertLargeSampleData() error {
186
        insertSampleCore()
187
        InsertSampleData()
188
        insertSampleUsers()
189
        insertSampleCheckins()
190
        s6 := ReturnService(&types.Service{
191
                Name:           "JSON Lint",
192
                Domain:         "https://jsonlint.com",
193
                ExpectedStatus: 200,
194
                Interval:       15,
195
                Type:           "http",
196
                Method:         "GET",
197
                Timeout:        10,
198
                Order:          6,
199
        })
200
201
        s7 := ReturnService(&types.Service{
202
                Name:           "Demo Page",
203
                Domain:         "https://demo.statup.io",
204
                ExpectedStatus: 200,
205
                Interval:       30,
206
                Type:           "http",
207
                Method:         "GET",
208
                Timeout:        15,
209
                Order:          7,
210
        })
211
212
        s8 := ReturnService(&types.Service{
213
                Name:           "Golang",
214
                Domain:         "https://golang.org",
215
                ExpectedStatus: 200,
216
                Interval:       15,
217
                Type:           "http",
218
                Method:         "GET",
219
                Timeout:        10,
220
                Order:          8,
221
        })
222
223
        s9 := ReturnService(&types.Service{
224
                Name:           "Santa Monica",
225
                Domain:         "https://www.santamonica.com",
226
                ExpectedStatus: 200,
227
                Interval:       15,
228
                Type:           "http",
229
                Method:         "GET",
230
                Timeout:        10,
231
                Order:          9,
232
        })
233
234
        s10 := ReturnService(&types.Service{
235
                Name:           "Oeschs Die Dritten",
236
                Domain:         "https://www.oeschs-die-dritten.ch/en/",
237
                ExpectedStatus: 200,
238
                Interval:       15,
239
                Type:           "http",
240
                Method:         "GET",
241
                Timeout:        10,
242
                Order:          10,
243
        })
244
245
        s11 := ReturnService(&types.Service{
246
                Name:           "XS Project - Bochka, Bass, Kolbaser",
247
                Domain:         "https://www.youtube.com/watch?v=VLW1ieY4Izw",
248
                ExpectedStatus: 200,
249
                Interval:       60,
250
                Type:           "http",
251
                Method:         "GET",
252
                Timeout:        20,
253
                Order:          11,
254
        })
255
256
        s12 := ReturnService(&types.Service{
257
                Name:           "Github",
258
                Domain:         "https://github.com/hunterlong",
259
                ExpectedStatus: 200,
260
                Interval:       60,
261
                Type:           "http",
262
                Method:         "GET",
263
                Timeout:        20,
264
                Order:          12,
265
        })
266
267
        s13 := ReturnService(&types.Service{
268
                Name:           "Failing URL",
269
                Domain:         "http://thisdomainisfakeanditsgoingtofail.com",
270
                ExpectedStatus: 200,
271
                Interval:       45,
272
                Type:           "http",
273
                Method:         "GET",
274
                Timeout:        10,
275
                Order:          13,
276
        })
277
278
        s14 := ReturnService(&types.Service{
279
                Name:           "Oesch's die Dritten - Die Jodelsprache",
280
                Domain:         "https://www.youtube.com/watch?v=k3GTxRt4iao",
281
                ExpectedStatus: 200,
282
                Interval:       60,
283
                Type:           "http",
284
                Method:         "GET",
285
                Timeout:        12,
286
                Order:          14,
287
        })
288
289
        s15 := ReturnService(&types.Service{
290
                Name:           "Gorm",
291
                Domain:         "http://gorm.io/",
292
                ExpectedStatus: 200,
293
                Interval:       30,
294
                Type:           "http",
295
                Method:         "GET",
296
                Timeout:        12,
297
                Order:          15,
298
        })
299
300
        s6.Create(false)
301
        s7.Create(false)
302
        s8.Create(false)
303
        s9.Create(false)
304
        s10.Create(false)
305
        s11.Create(false)
306
        s12.Create(false)
307
        s13.Create(false)
308
        s14.Create(false)
309
        s15.Create(false)
310
311
        var dayAgo = time.Now().Add(-24 * time.Hour).Add(-10 * time.Minute)
312
313
        insertHitRecords(dayAgo, 1450)
314
315
        insertFailureRecords(dayAgo, 730)
316
317
        return nil
318
}
-
func Service.CheckQueue
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

-
43
func (s *Service) CheckQueue(record bool) {
44
        s.Checkpoint = time.Now()
45
        s.SleepDuration = time.Duration((time.Duration(s.Id) * 100) * time.Millisecond)
46
CheckLoop:
47
        for {
48
                select {
49
                case <-s.Running:
50
                        utils.Log(1, fmt.Sprintf("Stopping service: %v", s.Name))
51
                        break CheckLoop
52
                case <-time.After(s.SleepDuration):
53
                        s.Check(record)
54
                        s.Checkpoint = s.Checkpoint.Add(s.duration())
55
                        sleep := s.Checkpoint.Sub(time.Now())
56
                        if !s.Online {
57
                                s.SleepDuration = s.duration()
58
                        } else {
59
                                s.SleepDuration = sleep
60
                        }
61
                }
62
                continue
63
        }
64
}
-
func InsertSampleData
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

27
func InsertSampleData() error {
28
        utils.Log(1, "Inserting Sample Data...")
29
        s1 := ReturnService(&types.Service{
30
                Name:           "Google",
31
                Domain:         "https://google.com",
32
                ExpectedStatus: 200,
33
                Interval:       10,
34
                Type:           "http",
35
                Method:         "GET",
36
                Timeout:        10,
37
                Order:          1,
38
        })
39
        s2 := ReturnService(&types.Service{
40
                Name:           "Statup Github",
41
                Domain:         "https://github.com/hunterlong/statup",
42
                ExpectedStatus: 200,
43
                Interval:       30,
44
                Type:           "http",
45
                Method:         "GET",
46
                Timeout:        20,
47
                Order:          2,
48
        })
49
        s3 := ReturnService(&types.Service{
50
                Name:           "JSON Users Test",
51
                Domain:         "https://jsonplaceholder.typicode.com/users",
52
                ExpectedStatus: 200,
53
                Interval:       60,
54
                Type:           "http",
55
                Method:         "GET",
56
                Timeout:        30,
57
                Order:          3,
58
        })
59
        s4 := ReturnService(&types.Service{
60
                Name:           "JSON API Tester",
61
                Domain:         "https://jsonplaceholder.typicode.com/posts",
62
                ExpectedStatus: 201,
63
                Expected:       `(title)": "((\\"|[statup])*)"`,
64
                Interval:       30,
65
                Type:           "http",
66
                Method:         "POST",
67
                PostData:       `{ "title": "statup", "body": "bar", "userId": 19999 }`,
68
                Timeout:        30,
69
                Order:          4,
70
        })
71
        s5 := ReturnService(&types.Service{
72
                Name:     "Google DNS",
73
                Domain:   "8.8.8.8",
74
                Interval: 20,
75
                Type:     "tcp",
76
                Port:     53,
77
                Timeout:  120,
78
                Order:    5,
79
        })
80
81
        s1.Create(false)
82
        s2.Create(false)
83
        s3.Create(false)
84
        s4.Create(false)
85
        s5.Create(false)
86
87
        utils.Log(1, "Sample data has finished importing")
88
89
        return nil
90
}
+
func Service.CheckQueue
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

+
43
func (s *Service) CheckQueue(record bool) {
44
        s.Checkpoint = time.Now()
45
        s.SleepDuration = time.Duration((time.Duration(s.Id) * 100) * time.Millisecond)
46
CheckLoop:
47
        for {
48
                select {
49
                case <-s.Running:
50
                        utils.Log(1, fmt.Sprintf("Stopping service: %v", s.Name))
51
                        break CheckLoop
52
                case <-time.After(s.SleepDuration):
53
                        s.Check(record)
54
                        s.Checkpoint = s.Checkpoint.Add(s.duration())
55
                        sleep := s.Checkpoint.Sub(time.Now())
56
                        if !s.Online {
57
                                s.SleepDuration = s.duration()
58
                        } else {
59
                                s.SleepDuration = sleep
60
                        }
61
                }
62
                continue
63
        }
64
}
+
func insertSampleCheckins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

93
func insertSampleCheckins() error {
94
        s1 := SelectService(1)
95
        checkin1 := ReturnCheckin(&types.Checkin{
96
                ServiceId:   s1.Id,
97
                Interval:    300,
98
                GracePeriod: 300,
99
        })
100
        checkin1.Update()
101
102
        s2 := SelectService(1)
103
        checkin2 := ReturnCheckin(&types.Checkin{
104
                ServiceId:   s2.Id,
105
                Interval:    900,
106
                GracePeriod: 300,
107
        })
108
        checkin2.Update()
109
110
        checkTime := time.Now().Add(-24 * time.Hour)
111
        for i := 0; i <= 60; i++ {
112
                checkHit := ReturnCheckinHit(&types.CheckinHit{
113
                        Checkin:   checkin1.Id,
114
                        From:      "192.168.0.1",
115
                        CreatedAt: checkTime.UTC(),
116
                })
117
                checkHit.Create()
118
                checkTime = checkTime.Add(10 * time.Minute)
119
        }
120
        return nil
121
}
-
func Service.dnsCheck
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

-
96
func (s *Service) dnsCheck() (float64, error) {
97
        var err error
98
        t1 := time.Now()
99
        host := s.parseHost()
100
        if s.Type == "tcp" {
101
                _, err = net.LookupHost(host)
102
        } else {
103
                _, err = net.LookupIP(host)
104
        }
105
        if err != nil {
106
                return 0, err
107
        }
108
        t2 := time.Now()
109
        subTime := t2.Sub(t1).Seconds()
110
        return subTime, err
111
}
-
func DbConfig.CreateDatabase
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
342
func (db *DbConfig) CreateDatabase() error {
343
        utils.Log(1, "Creating Database Tables...")
344
        err := DbSession.CreateTable(&types.Checkin{})
345
        err = DbSession.CreateTable(&types.CheckinHit{})
346
        err = DbSession.CreateTable(&notifier.Notification{})
347
        err = DbSession.Table("core").CreateTable(&types.Core{})
348
        err = DbSession.CreateTable(&types.Failure{})
349
        err = DbSession.CreateTable(&types.Hit{})
350
        err = DbSession.CreateTable(&types.Service{})
351
        err = DbSession.CreateTable(&types.User{})
352
        utils.Log(1, "Statup Database Created")
353
        return err.Error
354
}
+336
func (db *DbConfig) CreateDatabase() error {
337
        utils.Log(1, "Creating Database Tables...")
338
        err := DbSession.CreateTable(&types.Checkin{})
339
        err = DbSession.CreateTable(&types.CheckinHit{})
340
        err = DbSession.CreateTable(&notifier.Notification{})
341
        err = DbSession.Table("core").CreateTable(&types.Core{})
342
        err = DbSession.CreateTable(&types.Failure{})
343
        err = DbSession.CreateTable(&types.Hit{})
344
        err = DbSession.CreateTable(&types.Service{})
345
        err = DbSession.CreateTable(&types.User{})
346
        utils.Log(1, "Statup Database Created")
347
        return err.Error
348
}
func insertHitRecords
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

342
func insertHitRecords(since time.Time, amount int64) {
343
        for i := int64(1); i <= 15; i++ {
344
                service := SelectService(i)
345
                utils.Log(1, fmt.Sprintf("Adding %v hit records to service %v", amount, service.Name))
346
                createdAt := since
347
348
                for hi := int64(1); hi <= amount; hi++ {
349
                        rand.Seed(time.Now().UnixNano())
350
                        latency := rand.Float64()
351
                        createdAt = createdAt.Add(1 * time.Minute)
352
                        hit := &types.Hit{
353
                                Service:   service.Id,
354
                                CreatedAt: createdAt,
355
                                Latency:   latency,
356
                        }
357
                        service.CreateHit(hit)
358
                }
359
360
        }
361
362
}
func DbConfig.DropDatabase
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
328
func (db *DbConfig) DropDatabase() error {
329
        utils.Log(1, "Dropping Database Tables...")
330
        err := DbSession.DropTableIfExists("checkins")
331
        err = DbSession.DropTableIfExists("checkin_hits")
332
        err = DbSession.DropTableIfExists("notifications")
333
        err = DbSession.DropTableIfExists("core")
334
        err = DbSession.DropTableIfExists("failures")
335
        err = DbSession.DropTableIfExists("hits")
336
        err = DbSession.DropTableIfExists("services")
337
        err = DbSession.DropTableIfExists("users")
338
        return err.Error
339
}
+322
func (db *DbConfig) DropDatabase() error {
323
        utils.Log(1, "Dropping Database Tables...")
324
        err := DbSession.DropTableIfExists("checkins")
325
        err = DbSession.DropTableIfExists("checkin_hits")
326
        err = DbSession.DropTableIfExists("notifications")
327
        err = DbSession.DropTableIfExists("core")
328
        err = DbSession.DropTableIfExists("failures")
329
        err = DbSession.DropTableIfExists("hits")
330
        err = DbSession.DropTableIfExists("services")
331
        err = DbSession.DropTableIfExists("users")
332
        return err.Error
333
}
func insertFailureRecords
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

321
func insertFailureRecords(since time.Time, amount int64) {
322
        for i := int64(14); i <= 15; i++ {
323
                service := SelectService(i)
324
                utils.Log(1, fmt.Sprintf("Adding %v failure records to service %v", amount, service.Name))
325
                createdAt := since
326
327
                for fi := int64(1); fi <= amount; fi++ {
328
                        createdAt = createdAt.Add(2 * time.Minute)
329
330
                        failure := &types.Failure{
331
                                Service:   service.Id,
332
                                Issue:     "testing right here",
333
                                CreatedAt: createdAt,
334
                        }
335
336
                        service.CreateFailure(failure)
337
                }
338
        }
339
}
@@ -386,85 +387,67 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 232
func recordSuccess(s *Service) {
233
        s.Online = true
234
        s.LastOnline = time.Now()
235
        hit := &types.Hit{
236
                Service:   s.Id,
237
                Latency:   s.Latency,
238
                PingTime:  s.PingTime,
239
                CreatedAt: time.Now(),
240
        }
241
        utils.Log(1, fmt.Sprintf("Service %v Successful Response: %0.2f ms | Lookup in: %0.2f ms", s.Name, hit.Latency*1000, hit.PingTime*1000))
242
        s.CreateHit(hit)
243
        notifier.OnSuccess(s.Service)
244
}
func Core.CountOnline
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
402
func (c *Core) CountOnline() int {
403
        amount := 0
404
        for _, s := range CoreApp.Services {
405
                if s.Select().Online {
406
                        amount++
407
                }
408
        }
409
        return amount
410
}
- -
func recordFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

-
247
func recordFailure(s *Service, issue string) {
248
        s.Online = false
249
        fail := &types.Failure{
250
                Service:   s.Id,
251
                Issue:     issue,
252
                PingTime:  s.PingTime,
253
                CreatedAt: time.Now(),
254
        }
255
        utils.Log(2, fmt.Sprintf("Service %v Failing: %v | Lookup in: %0.2f ms", s.Name, issue, fail.PingTime*1000))
256
        s.CreateFailure(fail)
257
        notifier.OnFailure(s.Service, fail)
258
}
+408
func (c *Core) CountOnline() int {
409
        amount := 0
410
        for _, s := range CoreApp.Services {
411
                if s.Select().Online {
412
                        amount++
413
                }
414
        }
415
        return amount
416
}
func Checkin.Expected
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

120
func (c *Checkin) Expected() time.Duration {
121
        last := c.Last().CreatedAt
122
        now := time.Now()
123
        lastDir := now.Sub(last)
124
        sub := time.Duration(c.Period() - lastDir)
125
        return sub
126
}
-
func Service.TotalHitsSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

-
71
func (s *Service) TotalHitsSince(ago time.Time) (uint64, error) {
72
        var count uint64
73
        rows := hitsDB().Where("service = ? AND created_at > ?", s.Id, ago.UTC().Format("2006-01-02 15:04:05"))
74
        err := rows.Count(&count)
75
        return count, err.Error
76
}
- -
func NewCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
47
func NewCore() *Core {
48
        CoreApp = new(Core)
49
        CoreApp.Core = new(types.Core)
50
        CoreApp.Started = time.Now()
51
        return CoreApp
52
}
- -
func Checkin.CreateFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
80
func (c *Checkin) CreateFailure() (int64, error) {
81
        service := c.Service()
82
        fail := &types.Failure{
83
                Issue:    fmt.Sprintf("Checkin %v was not reported %v ago, it expects a request every %v", c.Name, utils.FormatDuration(c.Expected()), utils.FormatDuration(c.Period())),
84
                Method:   "checkin",
85
                MethodId: c.Id,
86
                Service:  service.Id,
87
                PingTime: c.Expected().Seconds() * 0.001,
88
        }
89
        row := failuresDB().Create(&fail)
90
        return fail.Id, row.Error
91
}
- -
func insertSampleUsers
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

-
165
func insertSampleUsers() {
166
        u2 := ReturnUser(&types.User{
167
                Username: "testadmin",
168
                Password: "password123",
169
                Email:    "info@betatude.com",
170
                Admin:    true,
171
        })
172
173
        u3 := ReturnUser(&types.User{
174
                Username: "testadmin2",
175
                Password: "password123",
176
                Email:    "info@adminhere.com",
177
                Admin:    true,
178
        })
179
180
        u2.Create()
181
        u3.Create()
182
}
- -
func Service.LimitedHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

-
47
func (s *Service) LimitedHits() ([]*types.Hit, error) {
48
        var hits []*types.Hit
49
        col := hitsDB().Where("service = ?", s.Id).Order("id desc").Limit(1024)
50
        err := col.Find(&hits)
51
        return reverseHits(hits), err.Error
52
}
- -
func Service.TotalFailuresSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

-
124
func (s *Service) TotalFailuresSince(ago time.Time) (uint64, error) {
125
        var count uint64
126
        rows := failuresDB().Where("service = ? AND created_at > ?", s.Id, ago.UTC().Format("2006-01-02 15:04:05")).Not("method = 'checkin'")
127
        err := rows.Count(&count)
128
        return count, err.Error
129
}
- -
func Service.TotalHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

-
63
func (s *Service) TotalHits() (uint64, error) {
64
        var count uint64
65
        col := hitsDB().Where("service = ?", s.Id)
66
        err := col.Count(&count)
67
        return count, err.Error
68
}
- -
func Service.CheckinProcess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
55
func (s *Service) CheckinProcess() {
56
        checkins := s.Checkins()
57
        for _, c := range checkins {
58
                c.Start()
59
                go c.Routine()
60
        }
61
}
- -
func Service.LimitedFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

-
68
func (s *Service) LimitedFailures() []*failure {
69
        var failArr []*failure
70
        col := failuresDB().Where("service = ?", s.Id).Order("id desc").Limit(10)
71
        col.Find(&failArr)
72
        return failArr
73
}
- -
func user.Update
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

-
56
func (u *user) Update() error {
57
        u.Password = utils.HashPassword(u.Password)
58
        u.ApiKey = utils.NewSHA1Hash(5)
59
        u.ApiSecret = utils.NewSHA1Hash(10)
60
        return usersDB().Update(u).Error
61
}
-
func SelectUsername
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

43
func SelectUsername(username string) (*user, error) {
44
        var user user
45
        res := usersDB().Where("username = ?", username)
46
        err := res.First(&user)
47
        return &user, err.Error
48
}
func Service.Hits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

39
func (s *Service) Hits() ([]*types.Hit, error) {
40
        var hits []*types.Hit
41
        col := hitsDB().Where("service = ?", s.Id).Order("id desc")
42
        err := col.Find(&hits)
43
        return hits, err.Error
44
}
-
func Service.Check
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

-
222
func (s *Service) Check(record bool) {
223
        switch s.Type {
224
        case "http":
225
                s.checkHttp(record)
226
        case "tcp", "udp":
227
                s.checkTcp(record)
228
        }
229
}
+
func insertSampleUsers
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

+
165
func insertSampleUsers() {
166
        u2 := ReturnUser(&types.User{
167
                Username: "testadmin",
168
                Password: "password123",
169
                Email:    "info@betatude.com",
170
                Admin:    true,
171
        })
172
173
        u3 := ReturnUser(&types.User{
174
                Username: "testadmin2",
175
                Password: "password123",
176
                Email:    "info@adminhere.com",
177
                Admin:    true,
178
        })
179
180
        u2.Create()
181
        u3.Create()
182
}
-
func Checkin.Last
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
129
func (c *Checkin) Last() *checkinHit {
130
        var hit checkinHit
131
        checkinHitsDB().Where("checkin = ?", c.Id).Last(&hit)
132
        return &hit
133
}
+
func NewCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
47
func NewCore() *Core {
48
        CoreApp = new(Core)
49
        CoreApp.Core = new(types.Core)
50
        CoreApp.Started = time.Now()
51
        return CoreApp
52
}
-
func SelectUser
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

-
36
func SelectUser(id int64) (*user, error) {
37
        var user user
38
        err := usersDB().First(&user, id)
39
        return &user, err.Error
40
}
+
func Checkin.CreateFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
80
func (c *Checkin) CreateFailure() (int64, error) {
81
        service := c.Service()
82
        fail := &types.Failure{
83
                Issue:    fmt.Sprintf("Checkin %v was not reported %v ago, it expects a request every %v", c.Name, utils.FormatDuration(c.Expected()), utils.FormatDuration(c.Period())),
84
                Method:   "checkin",
85
                MethodId: c.Id,
86
                Service:  service.Id,
87
                PingTime: c.Expected().Seconds() * 0.001,
88
        }
89
        row := failuresDB().Create(&fail)
90
        return fail.Id, row.Error
91
}
-
func Checkin.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
163
func (c *Checkin) BeforeCreate() (err error) {
164
        if c.CreatedAt.IsZero() {
165
                c.CreatedAt = time.Now().UTC()
166
        }
167
        return
168
}
+
func Service.LimitedHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

+
47
func (s *Service) LimitedHits() ([]*types.Hit, error) {
48
        var hits []*types.Hit
49
        col := hitsDB().Where("service = ?", s.Id).Order("id desc").Limit(1024)
50
        err := col.Find(&hits)
51
        return reverseHits(hits), err.Error
52
}
-
func Service.Checkins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
64
func (s *Service) Checkins() []*Checkin {
65
        var checkin []*Checkin
66
        checkinDB().Where("service = ?", s.Id).Find(&checkin)
67
        return checkin
68
}
+
func user.Update
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

+
56
func (u *user) Update() error {
57
        u.Password = utils.HashPassword(u.Password)
58
        u.ApiKey = utils.NewSHA1Hash(5)
59
        u.ApiSecret = utils.NewSHA1Hash(10)
60
        return usersDB().Update(u).Error
61
}
-
func Checkin.Hits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
140
func (c *Checkin) Hits() []*checkinHit {
141
        var checkins []*checkinHit
142
        checkinHitsDB().Where("checkin = ?", c.Id).Order("id DESC").Find(&checkins)
143
        return checkins
144
}
+
func Service.LimitedFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

+
68
func (s *Service) LimitedFailures() []*failure {
69
        var failArr []*failure
70
        col := failuresDB().Where("service = ?", s.Id).Order("id desc").Limit(10)
71
        col.Find(&failArr)
72
        return failArr
73
}
-
func insertSampleCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

-
149
func insertSampleCore() error {
150
        core := &types.Core{
151
                Name:        "Statup Sample Data",
152
                Description: "This data is only used to testing",
153
                ApiKey:      "sample",
154
                ApiSecret:   "samplesecret",
155
                Domain:      "http://localhost:8080",
156
                Version:     "test",
157
                CreatedAt:   time.Now(),
158
                UseCdn:      false,
159
        }
160
        query := coreDB().Create(core)
161
        return query.Error
162
}
+
func Service.TotalHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

+
63
func (s *Service) TotalHits() (uint64, error) {
64
        var count uint64
65
        col := hitsDB().Where("service = ?", s.Id)
66
        err := col.Count(&count)
67
        return count, err.Error
68
}
+ +
func Service.TotalFailuresSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

+
124
func (s *Service) TotalFailuresSince(ago time.Time) (uint64, error) {
125
        var count uint64
126
        rows := failuresDB().Where("service = ? AND created_at > ?", s.Id, ago.UTC().Format("2006-01-02 15:04:05")).Not("method = 'checkin'")
127
        err := rows.Count(&count)
128
        return count, err.Error
129
}
+ +
func Service.TotalHitsSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

+
71
func (s *Service) TotalHitsSince(ago time.Time) (uint64, error) {
72
        var count uint64
73
        rows := hitsDB().Where("service = ? AND created_at > ?", s.Id, ago.UTC().Format("2006-01-02 15:04:05"))
74
        err := rows.Count(&count)
75
        return count, err.Error
76
}
func reverseHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

55
func reverseHits(input []*types.Hit) []*types.Hit {
56
        if len(input) == 0 {
57
                return input
58
        }
59
        return append(reverseHits(input[1:]), input[0])
60
}
-
func updateService
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
335
func updateService(service *Service) {
336
        index := service.index()
337
        CoreApp.Services[index] = service
338
}
+
func Checkin.Hits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
140
func (c *Checkin) Hits() []*checkinHit {
141
        var checkins []*checkinHit
142
        checkinHitsDB().Where("checkin = ?", c.Id).Order("id DESC").Find(&checkins)
143
        return checkins
144
}
-
func Checkin.Service
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
75
func (c *Checkin) Service() *Service {
76
        service := SelectService(c.ServiceId)
77
        return service
78
}
+
func Checkin.Last
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
129
func (c *Checkin) Last() *checkinHit {
130
        var hit checkinHit
131
        checkinHitsDB().Where("checkin = ?", c.Id).Last(&hit)
132
        return &hit
133
}
-
func user.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
113
func (u *user) AfterFind() (err error) {
114
        u.CreatedAt = utils.Timezoner(u.CreatedAt, CoreApp.Timezone)
115
        return
116
}
+
func Service.Checkins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
68
func (s *Service) Checkins() []*Checkin {
69
        var checkin []*Checkin
70
        checkinDB().Where("service = ?", s.Id).Find(&checkin)
71
        return checkin
72
}
-
func Checkin.Period
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
108
func (c *Checkin) Period() time.Duration {
109
        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", c.Interval))
110
        return duration
111
}
+
func insertSampleCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

+
149
func insertSampleCore() error {
150
        core := &types.Core{
151
                Name:        "Statup Sample Data",
152
                Description: "This data is only used to testing",
153
                ApiKey:      "sample",
154
                ApiSecret:   "samplesecret",
155
                Domain:      "http://localhost:8080",
156
                Version:     "test",
157
                CreatedAt:   time.Now(),
158
                UseCdn:      false,
159
        }
160
        query := coreDB().Create(core)
161
        return query.Error
162
}
+ +
func Service.Check
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

+
222
func (s *Service) Check(record bool) {
223
        switch s.Type {
224
        case "http":
225
                s.checkHttp(record)
226
        case "tcp", "udp":
227
                s.checkTcp(record)
228
        }
229
}
+ +
func Checkin.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
163
func (c *Checkin) BeforeCreate() (err error) {
164
        if c.CreatedAt.IsZero() {
165
                c.CreatedAt = time.Now().UTC()
166
        }
167
        return
168
}
+ +
func SelectUser
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

+
36
func SelectUser(id int64) (*user, error) {
37
        var user user
38
        err := usersDB().First(&user, id)
39
        return &user, err.Error
40
}
func Service.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

95
func (s *Service) AfterFind() (err error) {
96
        s.CreatedAt = utils.Timezoner(s.CreatedAt, CoreApp.Timezone)
97
        return
98
}
@@ -472,27 +455,57 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37
func checkinHit.Ago
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

190
func (c *checkinHit) Ago() string {
191
        got, _ := timeago.TimeAgoWithTime(time.Now(), c.CreatedAt)
192
        return got
193
}
-
func checkinHit.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
125
func (c *checkinHit) AfterFind() (err error) {
126
        c.CreatedAt = utils.Timezoner(c.CreatedAt, CoreApp.Timezone)
127
        return
128
}
- -
func Checkin.Grace
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
114
func (c *Checkin) Grace() time.Duration {
115
        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", c.GracePeriod))
116
        return duration
117
}
- -
func CheckHash
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

-
105
func CheckHash(password, hash string) bool {
106
        err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
107
        return err == nil
108
}
- -
func Checkin.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
119
func (c *Checkin) AfterFind() (err error) {
120
        c.CreatedAt = utils.Timezoner(c.CreatedAt, CoreApp.Timezone)
121
        return
122
}
+
func user.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
113
func (u *user) AfterFind() (err error) {
114
        u.CreatedAt = utils.Timezoner(u.CreatedAt, CoreApp.Timezone)
115
        return
116
}
func failure.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

107
func (f *failure) AfterFind() (err error) {
108
        f.CreatedAt = utils.Timezoner(f.CreatedAt, CoreApp.Timezone)
109
        return
110
}
-
func reorderServices
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
97
func reorderServices() {
98
        sort.Sort(ServiceOrder(CoreApp.Services))
99
}
+
func Checkin.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
119
func (c *Checkin) AfterFind() (err error) {
120
        c.CreatedAt = utils.Timezoner(c.CreatedAt, CoreApp.Timezone)
121
        return
122
}
+ +
func Checkin.Grace
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
114
func (c *Checkin) Grace() time.Duration {
115
        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", c.GracePeriod))
116
        return duration
117
}
+ +
func Checkin.Period
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
108
func (c *Checkin) Period() time.Duration {
109
        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", c.Interval))
110
        return duration
111
}
+ +
func Checkin.Service
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
75
func (c *Checkin) Service() *Service {
76
        service := SelectService(c.ServiceId)
77
        return service
78
}
+ +
func updateService
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
341
func updateService(service *Service) {
342
        index := service.index()
343
        CoreApp.Services[index] = service
344
}
+ +
func CheckHash
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

+
105
func CheckHash(password, hash string) bool {
106
        err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
107
        return err == nil
108
}
+ +
func checkinHit.AfterFind
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
125
func (c *checkinHit) AfterFind() (err error) {
126
        c.CreatedAt = utils.Timezoner(c.CreatedAt, CoreApp.Timezone)
127
        return
128
}
+ +
func checkinHitsDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
72
func checkinHitsDB() *gorm.DB {
73
        return DbSession.Model(&types.CheckinHit{})
74
}
+ +
func user.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

+
51
func (u *user) Delete() error {
52
        return usersDB().Delete(u).Error
53
}
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

42
func init() {
43
        CoreApp = NewCore()
44
}
+
func ReturnCheckin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
66
func ReturnCheckin(c *types.Checkin) *Checkin {
67
        return &Checkin{Checkin: c}
68
}
+ +
func reorderServices
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
103
func reorderServices() {
104
        sort.Sort(ServiceOrder(CoreApp.Services))
105
}
+ +
func ReturnService
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
40
func ReturnService(s *types.Service) *Service {
41
        return &Service{s}
42
}
+ +
func checkinDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
67
func checkinDB() *gorm.DB {
68
        return DbSession.Model(&types.Checkin{})
69
}
+ +
func ReturnCheckinHit
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
71
func ReturnCheckinHit(c *types.CheckinHit) *checkinHit {
72
        return &checkinHit{CheckinHit: c}
73
}
+
func ServiceOrder.Len
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

160
func (c ServiceOrder) Len() int           { return len(c) }
@@ -517,53 +530,35 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37
func usersDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

62
func usersDB() *gorm.DB {
63
        return DbSession.Model(&types.User{})
64
}
-
func checkinDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
67
func checkinDB() *gorm.DB {
68
        return DbSession.Model(&types.Checkin{})
69
}
- -
func checkinHitsDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
72
func checkinHitsDB() *gorm.DB {
73
        return DbSession.Model(&types.CheckinHit{})
74
}
-
func ReturnUser
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

31
func ReturnUser(u *types.User) *user {
32
        return &user{u}
33
}
-
func user.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

-
51
func (u *user) Delete() error {
52
        return usersDB().Delete(u).Error
53
}
- -
func ReturnCheckinHit
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
71
func ReturnCheckinHit(c *types.CheckinHit) *checkinHit {
72
        return &checkinHit{CheckinHit: c}
73
}
- -
func ReturnCheckin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
66
func ReturnCheckin(c *types.Checkin) *Checkin {
67
        return &Checkin{Checkin: c}
68
}
- -
func ReturnService
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
40
func ReturnService(s *types.Service) *Service {
41
        return &Service{s}
42
}
-
func Service.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

35
func (s *Service) Select() *types.Service {
36
        return s.Service
37
}
func Service.parseHost
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

77
func (s *Service) parseHost() string {
78
        if s.Type == "tcp" || s.Type == "udp" {
79
                return s.Domain
80
        } else {
81
                domain := s.Domain
82
                hasPort, _ := regexp.MatchString(`\:([0-9]+)`, domain)
83
                if hasPort {
84
                        splitDomain := strings.Split(s.Domain, ":")
85
                        domain = splitDomain[len(splitDomain)-2]
86
                }
87
                host, err := url.Parse(domain)
88
                if err != nil {
89
                        return s.Domain
90
                }
91
                return host.Host
92
        }
93
}
+
func Service.dnsCheck
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

+
96
func (s *Service) dnsCheck() (float64, error) {
97
        var err error
98
        t1 := time.Now()
99
        host := s.parseHost()
100
        if s.Type == "tcp" {
101
                _, err = net.LookupHost(host)
102
        } else {
103
                _, err = net.LookupIP(host)
104
        }
105
        if err != nil {
106
                return 0, err
107
        }
108
        t2 := time.Now()
109
        subTime := t2.Sub(t1).Seconds()
110
        return subTime, err
111
}
+
func Service.Sum
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

79
func (s *Service) Sum() (float64, error) {
80
        var amount float64
81
        hits, err := s.Hits()
82
        if err != nil {
83
                utils.Log(2, err)
84
        }
85
        for _, h := range hits {
86
                amount += h.Latency
87
        }
88
        return amount, err
89
}
func Service.Update
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
362
func (s *Service) Update(restart bool) error {
363
        err := servicesDB().Update(s)
364
        if err.Error != nil {
365
                utils.Log(3, fmt.Sprintf("Failed to update service %v. %v", s.Name, err))
366
                return err.Error
367
        }
368
        if restart {
369
                s.Close()
370
                s.Start()
371
                s.SleepDuration = time.Duration(s.Interval) * time.Second
372
                go s.CheckQueue(true)
373
        }
374
        reorderServices()
375
        updateService(s)
376
        notifier.OnUpdatedService(s.Service)
377
        return err.Error
378
}
- -
func Core.SelectAllServices
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
78
func (c *Core) SelectAllServices() ([]*Service, error) {
79
        var services []*Service
80
        db := servicesDB().Find(&services).Order("order_id desc")
81
        if db.Error != nil {
82
                utils.Log(3, fmt.Sprintf("service error: %v", db.Error))
83
                return nil, db.Error
84
        }
85
        CoreApp.Services = nil
86
        for _, service := range services {
87
                service.Start()
88
                service.CheckinProcess()
89
                service.AllFailures()
90
                CoreApp.Services = append(CoreApp.Services, service)
91
        }
92
        sort.Sort(ServiceOrder(CoreApp.Services))
93
        return services, db.Error
94
}
- -
func Service.Create
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
381
func (s *Service) Create(check bool) (int64, error) {
382
        s.CreatedAt = time.Now()
383
        db := servicesDB().Create(s)
384
        if db.Error != nil {
385
                utils.Log(3, fmt.Sprintf("Failed to create service %v #%v: %v", s.Name, s.Id, db.Error))
386
                return 0, db.Error
387
        }
388
        s.Start()
389
        go s.CheckQueue(check)
390
        CoreApp.Services = append(CoreApp.Services, s)
391
        reorderServices()
392
        notifier.OnNewService(s.Service)
393
        return s.Id, nil
394
}
+368
func (s *Service) Update(restart bool) error {
369
        err := servicesDB().Update(s)
370
        if err.Error != nil {
371
                utils.Log(3, fmt.Sprintf("Failed to update service %v. %v", s.Name, err))
372
                return err.Error
373
        }
374
        if restart {
375
                s.Close()
376
                s.Start()
377
                s.SleepDuration = time.Duration(s.Interval) * time.Second
378
                go s.CheckQueue(true)
379
        }
380
        reorderServices()
381
        updateService(s)
382
        notifier.OnUpdatedService(s.Service)
383
        return err.Error
384
}
func Service.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
341
func (s *Service) Delete() error {
342
        i := s.index()
343
        err := servicesDB().Delete(s)
344
        if err.Error != nil {
345
                utils.Log(3, fmt.Sprintf("Failed to delete service %v. %v", s.Name, err.Error))
346
                return err.Error
347
        }
348
        s.Close()
349
        slice := CoreApp.Services
350
        CoreApp.Services = append(slice[:i], slice[i+1:]...)
351
        reorderServices()
352
        notifier.OnDeletedService(s.Service)
353
        return err.Error
354
}
+347
func (s *Service) Delete() error {
348
        i := s.index()
349
        err := servicesDB().Delete(s)
350
        if err.Error != nil {
351
                utils.Log(3, fmt.Sprintf("Failed to delete service %v. %v", s.Name, err.Error))
352
                return err.Error
353
        }
354
        s.Close()
355
        slice := CoreApp.Services
356
        CoreApp.Services = append(slice[:i], slice[i+1:]...)
357
        reorderServices()
358
        notifier.OnDeletedService(s.Service)
359
        return err.Error
360
}
+ +
func Service.Create
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
387
func (s *Service) Create(check bool) (int64, error) {
388
        s.CreatedAt = time.Now()
389
        db := servicesDB().Create(s)
390
        if db.Error != nil {
391
                utils.Log(3, fmt.Sprintf("Failed to create service %v #%v: %v", s.Name, s.Id, db.Error))
392
                return 0, db.Error
393
        }
394
        s.Start()
395
        go s.CheckQueue(check)
396
        CoreApp.Services = append(CoreApp.Services, s)
397
        reorderServices()
398
        notifier.OnNewService(s.Service)
399
        return s.Id, nil
400
}
func Checkin.Routine
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

35
func (c *Checkin) Routine() {
36
        if c.Last() == nil {
37
                return
38
        }
39
        reCheck := c.Period()
40
CheckinLoop:
41
        for {
42
                select {
43
                case <-c.Running:
44
                        utils.Log(1, fmt.Sprintf("Stopping checkin routine: %v", c.Name))
45
                        break CheckinLoop
46
                case <-time.After(reCheck):
47
                        utils.Log(1, fmt.Sprintf("Checkin %v is expected at %v, checking every %v", c.Name, utils.FormatDuration(c.Expected()), utils.FormatDuration(c.Period())))
48
                        if c.Expected().Seconds() <= 0 {
49
                                issue := fmt.Sprintf("Checkin %v is failing, no request since %v", c.Name, c.Last().CreatedAt)
50
                                utils.Log(3, issue)
51
                                c.Service()
52
                                c.CreateFailure()
53
                        }
54
                        reCheck = c.Period()
55
                }
56
                continue
57
        }
58
}
func Service.OnlineSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
127
func (s *Service) OnlineSince(ago time.Time) float32 {
128
        failed, _ := s.TotalFailuresSince(ago)
129
        if failed == 0 {
130
                s.Online24Hours = 100.00
131
                return s.Online24Hours
132
        }
133
        total, _ := s.TotalHitsSince(ago)
134
        if total == 0 {
135
                s.Online24Hours = 0
136
                return s.Online24Hours
137
        }
138
        avg := float64(failed) / float64(total) * 100
139
        avg = 100 - avg
140
        if avg < 0 {
141
                avg = 0
142
        }
143
        amount, _ := strconv.ParseFloat(fmt.Sprintf("%0.2f", avg), 10)
144
        s.Online24Hours = float32(amount)
145
        return s.Online24Hours
146
}
+133
func (s *Service) OnlineSince(ago time.Time) float32 {
134
        failed, _ := s.TotalFailuresSince(ago)
135
        if failed == 0 {
136
                s.Online24Hours = 100.00
137
                return s.Online24Hours
138
        }
139
        total, _ := s.TotalHitsSince(ago)
140
        if total == 0 {
141
                s.Online24Hours = 0
142
                return s.Online24Hours
143
        }
144
        avg := float64(failed) / float64(total) * 100
145
        avg = 100 - avg
146
        if avg < 0 {
147
                avg = 0
148
        }
149
        amount, _ := strconv.ParseFloat(fmt.Sprintf("%0.2f", avg), 10)
150
        s.Online24Hours = float32(amount)
151
        return s.Online24Hours
152
}
func Service.duration
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

67
func (s *Service) duration() time.Duration {
68
        var amount time.Duration
69
        if s.Interval >= 10000 {
70
                amount = time.Duration(s.Interval) * time.Microsecond
71
        } else {
72
                amount = time.Duration(s.Interval) * time.Second
73
        }
74
        return amount
75
}
@@ -572,25 +567,22 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 81
func SelectAllUsers() ([]*user, error) {
82
        var users []*user
83
        db := usersDB().Find(&users)
84
        if db.Error != nil {
85
                utils.Log(3, fmt.Sprintf("Failed to load all users. %v", db.Error))
86
        }
87
        return users, db.Error
88
}
func Service.AvgUptime
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
287
func (s *Service) AvgUptime(ago time.Time) string {
288
        failed, _ := s.TotalFailuresSince(ago)
289
        if failed == 0 {
290
                return "100"
291
        }
292
        total, _ := s.TotalHitsSince(ago)
293
        if total == 0 {
294
                return "0.00"
295
        }
296
        percent := float64(failed) / float64(total) * 100
297
        percent = 100 - percent
298
        if percent < 0 {
299
                percent = 0
300
        }
301
        amount := fmt.Sprintf("%0.2f", percent)
302
        if amount == "100.00" {
303
                amount = "100"
304
        }
305
        return amount
306
}
+293
func (s *Service) AvgUptime(ago time.Time) string {
294
        failed, _ := s.TotalFailuresSince(ago)
295
        if failed == 0 {
296
                return "100"
297
        }
298
        total, _ := s.TotalHitsSince(ago)
299
        if total == 0 {
300
                return "0.00"
301
        }
302
        percent := float64(failed) / float64(total) * 100
303
        percent = 100 - percent
304
        if percent < 0 {
305
                percent = 0
306
        }
307
        amount := fmt.Sprintf("%0.2f", percent)
308
        if amount == "100.00" {
309
                amount = "100"
310
        }
311
        return amount
312
}
func Service.AllFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

44
func (s *Service) AllFailures() []*failure {
45
        var fails []*failure
46
        col := failuresDB().Where("service = ?", s.Id).Not("method = 'checkin'").Order("id desc")
47
        err := col.Find(&fails)
48
        if err.Error != nil {
49
                utils.Log(3, fmt.Sprintf("Issue getting failures for service %v, %v", s.Name, err))
50
                return nil
51
        }
52
        for _, f := range fails {
53
                s.Failures = append(s.Failures, f)
54
        }
55
        return fails
56
}
func Service.Downtime
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
222
func (s *Service) Downtime() time.Duration {
223
        hits, _ := s.Hits()
224
        fails := s.LimitedFailures()
225
        if len(fails) == 0 {
226
                return time.Duration(0)
227
        }
228
        if len(hits) == 0 {
229
                return time.Now().UTC().Sub(fails[len(fails)-1].CreatedAt.UTC())
230
        }
231
        since := fails[0].CreatedAt.UTC().Sub(hits[0].CreatedAt.UTC())
232
        return since
233
}
+228
func (s *Service) Downtime() time.Duration {
229
        hits, _ := s.Hits()
230
        fails := s.LimitedFailures()
231
        if len(fails) == 0 {
232
                return time.Duration(0)
233
        }
234
        if len(hits) == 0 {
235
                return time.Now().UTC().Sub(fails[len(fails)-1].CreatedAt.UTC())
236
        }
237
        since := fails[0].CreatedAt.UTC().Sub(hits[0].CreatedAt.UTC())
238
        return since
239
}
func Checkin.Create
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

154
func (c *Checkin) Create() (int64, error) {
155
        c.ApiKey = utils.RandomString(7)
156
        row := checkinDB().Create(&c)
157
        c.Start()
158
        go c.Routine()
159
        if row.Error != nil {
160
                utils.Log(2, row.Error)
161
                return 0, row.Error
162
        }
163
        return c.Id, row.Error
164
}
func Service.index
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
325
func (s *Service) index() int {
326
        for k, service := range CoreApp.Services {
327
                if s.Id == service.(*Service).Id {
328
                        return k
329
                }
330
        }
331
        return 0
332
}
+331
func (s *Service) index() int {
332
        for k, service := range CoreApp.Services {
333
                if s.Id == service.(*Service).Id {
334
                        return k
335
                }
336
        }
337
        return 0
338
}
func SelectService
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
45
func SelectService(id int64) *Service {
46
        for _, s := range CoreApp.Services {
47
                if s.Select().Id == id {
48
                        return s.(*Service)
49
                }
50
        }
51
        return nil
52
}
- -
func Service.checkHttp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

-
151
func (s *Service) checkHttp(record bool) *Service {
152
        dnsLookup, err := s.dnsCheck()
153
        if err != nil {
154
                if record {
155
                        recordFailure(s, fmt.Sprintf("Could not get IP address for domain %v, %v", s.Domain, err))
156
                }
157
                return s
158
        }
159
        s.PingTime = dnsLookup
160
        t1 := time.Now()
161
        timeout := time.Duration(s.Timeout)
162
        client := http.Client{
163
                Timeout: timeout * time.Second,
164
        }
165
166
        var response *http.Response
167
        if s.Method == "POST" {
168
                response, err = client.Post(s.Domain, "application/json", bytes.NewBuffer([]byte(s.PostData)))
169
        } else {
170
                response, err = client.Get(s.Domain)
171
        }
172
        if err != nil {
173
                if record {
174
                        recordFailure(s, fmt.Sprintf("HTTP Error %v", err))
175
                }
176
                return s
177
        }
178
        response.Header.Set("Connection", "close")
179
        response.Header.Set("user-Agent", "StatupMonitor")
180
        t2 := time.Now()
181
        s.Latency = t2.Sub(t1).Seconds()
182
        if err != nil {
183
                if record {
184
                        recordFailure(s, fmt.Sprintf("HTTP Error %v", err))
185
                }
186
                return s
187
        }
188
        defer response.Body.Close()
189
        contents, err := ioutil.ReadAll(response.Body)
190
        s.LastResponse = string(contents)
191
        s.LastStatusCode = response.StatusCode
192
193
        if s.Expected != "" {
194
                if err != nil {
195
                        utils.Log(2, err)
196
                }
197
                match, err := regexp.MatchString(s.Expected, string(contents))
198
                if err != nil {
199
                        utils.Log(2, err)
200
                }
201
                if !match {
202
                        if record {
203
                                recordFailure(s, fmt.Sprintf("HTTP Response Body did not match '%v'", s.Expected))
204
                        }
205
                        return s
206
                }
207
        }
208
        if s.ExpectedStatus != response.StatusCode {
209
                if record {
210
                        recordFailure(s, fmt.Sprintf("HTTP Status Code %v did not match %v", response.StatusCode, s.ExpectedStatus))
211
                }
212
                return s
213
        }
214
        s.Online = true
215
        if record {
216
                recordSuccess(s)
217
        }
218
        return s
219
}
+49
func SelectService(id int64) *Service {
50
        for _, s := range CoreApp.Services {
51
                if s.Select().Id == id {
52
                        return s.(*Service)
53
                }
54
        }
55
        return nil
56
}
func user.Create
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

64
func (u *user) Create() (int64, error) {
65
        u.CreatedAt = time.Now()
66
        u.Password = utils.HashPassword(u.Password)
67
        u.ApiKey = utils.NewSHA1Hash(5)
68
        u.ApiSecret = utils.NewSHA1Hash(10)
69
        db := usersDB().Create(u)
70
        if db.Error != nil {
71
                return 0, db.Error
72
        }
73
        if u.Id == 0 {
74
                utils.Log(3, fmt.Sprintf("Failed to create user %v. %v", u.Username, db.Error))
75
                return 0, db.Error
76
        }
77
        return u.Id, db.Error
78
}
@@ -598,8 +590,11 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37
func Service.checkTcp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

114
func (s *Service) checkTcp(record bool) *Service {
115
        dnsLookup, err := s.dnsCheck()
116
        if err != nil {
117
                if record {
118
                        recordFailure(s, fmt.Sprintf("Could not get IP address for TCP service %v, %v", s.Domain, err))
119
                }
120
                return s
121
        }
122
        s.PingTime = dnsLookup
123
        t1 := time.Now()
124
        domain := fmt.Sprintf("%v", s.Domain)
125
        if s.Port != 0 {
126
                domain = fmt.Sprintf("%v:%v", s.Domain, s.Port)
127
        }
128
        conn, err := net.DialTimeout(s.Type, domain, time.Duration(s.Timeout)*time.Second)
129
        if err != nil {
130
                if record {
131
                        recordFailure(s, fmt.Sprintf("%v Dial Error %v", s.Type, err))
132
                }
133
                return s
134
        }
135
        if err := conn.Close(); err != nil {
136
                if record {
137
                        recordFailure(s, fmt.Sprintf("TCP Socket Close Error %v", err))
138
                }
139
                return s
140
        }
141
        t2 := time.Now()
142
        s.Latency = t2.Sub(t1).Seconds()
143
        s.LastResponse = ""
144
        if record {
145
                recordSuccess(s)
146
        }
147
        return s
148
}
+
func Core.SelectAllServices
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
82
func (c *Core) SelectAllServices(start bool) ([]*Service, error) {
83
        var services []*Service
84
        db := servicesDB().Find(&services).Order("order_id desc")
85
        if db.Error != nil {
86
                utils.Log(3, fmt.Sprintf("service error: %v", db.Error))
87
                return nil, db.Error
88
        }
89
        CoreApp.Services = nil
90
        for _, service := range services {
91
                if start {
92
                        service.Start()
93
                        service.CheckinProcess()
94
                }
95
                service.AllFailures()
96
                CoreApp.Services = append(CoreApp.Services, service)
97
        }
98
        sort.Sort(ServiceOrder(CoreApp.Services))
99
        return services, db.Error
100
}
+
func DbConfig.Save
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
286
func (db *DbConfig) Save() (*DbConfig, error) {
287
        var err error
288
        config, err := os.Create(utils.Directory + "/config.yml")
289
        if err != nil {
290
                utils.Log(4, err)
291
                return nil, err
292
        }
293
        db.ApiKey = utils.NewSHA1Hash(16)
294
        db.ApiSecret = utils.NewSHA1Hash(16)
295
        data, err := yaml.Marshal(db)
296
        if err != nil {
297
                utils.Log(3, err)
298
                return nil, err
299
        }
300
        config.WriteString(string(data))
301
        defer config.Close()
302
        return db, err
303
}
+280
func (db *DbConfig) Save() (*DbConfig, error) {
281
        var err error
282
        config, err := os.Create(utils.Directory + "/config.yml")
283
        if err != nil {
284
                utils.Log(4, err)
285
                return nil, err
286
        }
287
        db.ApiKey = utils.NewSHA1Hash(16)
288
        db.ApiSecret = utils.NewSHA1Hash(16)
289
        data, err := yaml.Marshal(db)
290
        if err != nil {
291
                utils.Log(3, err)
292
                return nil, err
293
        }
294
        config.WriteString(string(data))
295
        defer config.Close()
296
        return db, err
297
}
func AuthUser
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/users.go:

92
func AuthUser(username, password string) (*user, bool) {
93
        user, err := SelectUsername(username)
94
        if err != nil {
95
                utils.Log(2, err)
96
                return nil, false
97
        }
98
        if CheckHash(password, user.Password) {
99
                return user, true
100
        }
101
        return nil, false
102
}
@@ -610,11 +605,17 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37
func SelectCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

136
func SelectCore() (*Core, error) {
137
        if DbSession == nil {
138
                return nil, errors.New("database has not been initiated yet.")
139
        }
140
        exists := DbSession.HasTable("core")
141
        if !exists {
142
                return nil, errors.New("core database has not been setup yet.")
143
        }
144
        db := coreDB().First(&CoreApp)
145
        if db.Error != nil {
146
                return nil, db.Error
147
        }
148
        CoreApp.DbConnection = Configs.DbConn
149
        CoreApp.Version = VERSION
150
        if os.Getenv("USE_CDN") == "true" {
151
                CoreApp.UseCdn = true
152
        }
153
        return CoreApp, db.Error
154
}
-
func LoadConfig
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

-
34
func LoadConfig(directory string) (*DbConfig, error) {
35
        var configs *DbConfig
36
        if os.Getenv("DB_CONN") != "" {
37
                utils.Log(1, "DB_CONN environment variable was found, waiting for database...")
38
                return LoadUsingEnv()
39
        }
40
        file, err := ioutil.ReadFile(directory + "/config.yml")
41
        if err != nil {
42
                return nil, errors.New("config.yml file not found at " + directory + "/config.yml - starting in setup mode")
43
        }
44
        err = yaml.Unmarshal(file, &configs)
45
        if err != nil {
46
                return nil, err
47
        }
48
        Configs = configs
49
        return Configs, err
50
}
+
func Service.checkHttp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

+
151
func (s *Service) checkHttp(record bool) *Service {
152
        dnsLookup, err := s.dnsCheck()
153
        if err != nil {
154
                if record {
155
                        recordFailure(s, fmt.Sprintf("Could not get IP address for domain %v, %v", s.Domain, err))
156
                }
157
                return s
158
        }
159
        s.PingTime = dnsLookup
160
        t1 := time.Now()
161
        timeout := time.Duration(s.Timeout)
162
        client := http.Client{
163
                Timeout: timeout * time.Second,
164
        }
165
166
        var response *http.Response
167
        if s.Method == "POST" {
168
                response, err = client.Post(s.Domain, "application/json", bytes.NewBuffer([]byte(s.PostData)))
169
        } else {
170
                response, err = client.Get(s.Domain)
171
        }
172
        if err != nil {
173
                if record {
174
                        recordFailure(s, fmt.Sprintf("HTTP Error %v", err))
175
                }
176
                return s
177
        }
178
        response.Header.Set("Connection", "close")
179
        response.Header.Set("user-Agent", "StatupMonitor")
180
        t2 := time.Now()
181
        s.Latency = t2.Sub(t1).Seconds()
182
        if err != nil {
183
                if record {
184
                        recordFailure(s, fmt.Sprintf("HTTP Error %v", err))
185
                }
186
                return s
187
        }
188
        defer response.Body.Close()
189
        contents, err := ioutil.ReadAll(response.Body)
190
        s.LastResponse = string(contents)
191
        s.LastStatusCode = response.StatusCode
192
193
        if s.Expected != "" {
194
                if err != nil {
195
                        utils.Log(2, err)
196
                }
197
                match, err := regexp.MatchString(s.Expected, string(contents))
198
                if err != nil {
199
                        utils.Log(2, err)
200
                }
201
                if !match {
202
                        if record {
203
                                recordFailure(s, fmt.Sprintf("HTTP Response Body did not match '%v'", s.Expected))
204
                        }
205
                        return s
206
                }
207
        }
208
        if s.ExpectedStatus != response.StatusCode {
209
                if record {
210
                        recordFailure(s, fmt.Sprintf("HTTP Status Code %v did not match %v", response.StatusCode, s.ExpectedStatus))
211
                }
212
                return s
213
        }
214
        s.Online = true
215
        if record {
216
                recordSuccess(s)
217
        }
218
        return s
219
}
func DbConfig.MigrateDatabase
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
359
func (db *DbConfig) MigrateDatabase() error {
360
        utils.Log(1, "Migrating Database Tables...")
361
362
        tx := DbSession.Begin()
363
        defer func() {
364
                if r := recover(); r != nil {
365
                        tx.Rollback()
366
                }
367
        }()
368
        if tx.Error != nil {
369
                return tx.Error
370
        }
371
        tx = tx.AutoMigrate(&types.Service{}, &types.User{}, &types.Hit{}, &types.Failure{}, &types.Checkin{}, &types.CheckinHit{}, &notifier.Notification{}).Table("core").AutoMigrate(&types.Core{})
372
        if tx.Error != nil {
373
                tx.Rollback()
374
                utils.Log(3, fmt.Sprintf("Statup Database could not be migrated: %v", tx.Error))
375
                return tx.Error
376
        }
377
        utils.Log(1, "Statup Database Migrated")
378
        return tx.Commit().Error
379
}
+353
func (db *DbConfig) MigrateDatabase() error {
354
        utils.Log(1, "Migrating Database Tables...")
355
        tx := DbSession.Begin()
356
        defer func() {
357
                if r := recover(); r != nil {
358
                        tx.Rollback()
359
                }
360
        }()
361
        if tx.Error != nil {
362
                return tx.Error
363
        }
364
        tx = tx.AutoMigrate(&types.Service{}, &types.User{}, &types.Hit{}, &types.Failure{}, &types.Checkin{}, &types.CheckinHit{}, &notifier.Notification{}).Table("core").AutoMigrate(&types.Core{})
365
        if tx.Error != nil {
366
                tx.Rollback()
367
                utils.Log(3, fmt.Sprintf("Statup Database could not be migrated: %v", tx.Error))
368
                return tx.Error
369
        }
370
        utils.Log(1, "Statup Database Migrated")
371
        return tx.Commit().Error
372
}
+ +
func LoadConfigFile
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

+
34
func LoadConfigFile(directory string) (*DbConfig, error) {
35
        var configs *DbConfig
36
        if os.Getenv("DB_CONN") != "" {
37
                utils.Log(1, "DB_CONN environment variable was found, waiting for database...")
38
                return LoadUsingEnv()
39
        }
40
        file, err := ioutil.ReadFile(directory + "/config.yml")
41
        if err != nil {
42
                return nil, errors.New("config.yml file not found at " + directory + "/config.yml - starting in setup mode")
43
        }
44
        err = yaml.Unmarshal(file, &configs)
45
        if err != nil {
46
                return nil, err
47
        }
48
        Configs = configs
49
        return Configs, err
50
}
+ +
func user.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
147
func (u *user) BeforeCreate() (err error) {
148
        if u.CreatedAt.IsZero() {
149
                u.CreatedAt = time.Now().UTC()
150
        }
151
        return
152
}
func Service.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

155
func (s *Service) BeforeCreate() (err error) {
156
        if s.CreatedAt.IsZero() {
157
                s.CreatedAt = time.Now().UTC()
158
        }
159
        return
160
}
@@ -622,8 +623,8 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37
func checkinHit.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

171
func (c *checkinHit) BeforeCreate() (err error) {
172
        if c.CreatedAt.IsZero() {
173
                c.CreatedAt = time.Now().UTC()
174
        }
175
        return
176
}
-
func user.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
147
func (u *user) BeforeCreate() (err error) {
148
        if u.CreatedAt.IsZero() {
149
                u.CreatedAt = time.Now().UTC()
150
        }
151
        return
152
}
+
func DbConfig.Connect
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
195
func (db *DbConfig) Connect(retry bool, location string) error {
196
        if DbSession != nil {
197
                return nil
198
        }
199
        var conn, dbType string
200
        var err error
201
        dbType = Configs.DbConn
202
        if Configs.DbPort == 0 {
203
                Configs.DbPort = DefaultPort(dbType)
204
        }
205
        switch dbType {
206
        case "sqlite":
207
                conn = location + "/statup.db"
208
                dbType = "sqlite3"
209
        case "mysql":
210
                host := fmt.Sprintf("%v:%v", Configs.DbHost, Configs.DbPort)
211
                conn = fmt.Sprintf("%v:%v@tcp(%v)/%v?charset=utf8&parseTime=True&loc=UTC", Configs.DbUser, Configs.DbPass, host, Configs.DbData)
212
        case "postgres":
213
                conn = fmt.Sprintf("host=%v port=%v user=%v dbname=%v password=%v sslmode=disable", Configs.DbHost, Configs.DbPort, Configs.DbUser, Configs.DbData, Configs.DbPass)
214
        case "mssql":
215
                host := fmt.Sprintf("%v:%v", Configs.DbHost, Configs.DbPort)
216
                conn = fmt.Sprintf("sqlserver://%v:%v@%v?database=%v", Configs.DbUser, Configs.DbPass, host, Configs.DbData)
217
        }
218
        dbSession, err := gorm.Open(dbType, conn)
219
        if err != nil {
220
                if retry {
221
                        utils.Log(1, fmt.Sprintf("Database connection to '%v' is not available, trying again in 5 seconds...", conn))
222
                        return db.waitForDb()
223
                } else {
224
                        return err
225
                }
226
        }
227
        err = dbSession.DB().Ping()
228
        if err == nil {
229
                DbSession = dbSession
230
                utils.Log(1, fmt.Sprintf("Database %v connection '%v@%v' at %v was successful.", dbType, Configs.DbUser, Configs.DbHost, Configs.DbData))
231
        }
232
        return err
233
}
func Service.CreateHit
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/hits.go:

29
func (s *Service) CreateHit(h *types.Hit) (int64, error) {
30
        db := hitsDB().Create(&h)
31
        if db.Error != nil {
32
                utils.Log(2, db.Error)
33
                return 0, db.Error
34
        }
35
        return h.Id, db.Error
36
}
@@ -635,139 +636,154 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 177
func (c *checkinHit) Create() (int64, error) {
178
        if c.CreatedAt.IsZero() {
179
                c.CreatedAt = time.Now()
180
        }
181
        row := checkinHitsDB().Create(c)
182
        if row.Error != nil {
183
                utils.Log(2, row.Error)
184
                return 0, row.Error
185
        }
186
        return c.Id, row.Error
187
}
func Service.SmallText
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
172
func (s *Service) SmallText() string {
173
        last := s.LimitedFailures()
174
        hits, _ := s.LimitedHits()
175
        zone := CoreApp.Timezone
176
        if s.Online {
177
                if len(last) == 0 {
178
                        return fmt.Sprintf("Online since %v", utils.Timezoner(s.CreatedAt, zone).Format("Monday 3:04:05PM, Jan _2 2006"))
179
                } else {
180
                        return fmt.Sprintf("Online, last failure was %v", utils.Timezoner(hits[0].CreatedAt, zone).Format("Monday 3:04:05PM, Jan _2 2006"))
181
                }
182
        }
183
        if len(last) > 0 {
184
                lastFailure := s.lastFailure()
185
                got, _ := timeago.TimeAgoWithTime(time.Now().Add(s.Downtime()), time.Now())
186
                return fmt.Sprintf("Reported offline %v, %v", got, lastFailure.ParseError())
187
        } else {
188
                return fmt.Sprintf("%v is currently offline", s.Name)
189
        }
190
}
+178
func (s *Service) SmallText() string {
179
        last := s.LimitedFailures()
180
        hits, _ := s.LimitedHits()
181
        zone := CoreApp.Timezone
182
        if s.Online {
183
                if len(last) == 0 {
184
                        return fmt.Sprintf("Online since %v", utils.Timezoner(s.CreatedAt, zone).Format("Monday 3:04:05PM, Jan _2 2006"))
185
                } else {
186
                        return fmt.Sprintf("Online, last failure was %v", utils.Timezoner(hits[0].CreatedAt, zone).Format("Monday 3:04:05PM, Jan _2 2006"))
187
                }
188
        }
189
        if len(last) > 0 {
190
                lastFailure := s.lastFailure()
191
                got, _ := timeago.TimeAgoWithTime(time.Now().Add(s.Downtime()), time.Now())
192
                return fmt.Sprintf("Reported offline %v, %v", got, lastFailure.ParseError())
193
        } else {
194
                return fmt.Sprintf("%v is currently offline", s.Name)
195
        }
196
}
-
func insertNotifierDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
70
func insertNotifierDB() error {
71
        if DbSession == nil {
72
                err := Configs.Connect(false, utils.Directory)
73
                if err != nil {
74
                        return errors.New("database connection has not been created")
75
                }
76
        }
77
        notifier.SetDB(DbSession)
78
        return nil
79
}
+
func InsertNotifierDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
70
func InsertNotifierDB() error {
71
        if DbSession == nil {
72
                err := Configs.Connect(false, utils.Directory)
73
                if err != nil {
74
                        return errors.New("database connection has not been created")
75
                }
76
        }
77
        notifier.SetDB(DbSession)
78
        return nil
79
}
-
func @363:8
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
363
func() {
364
                if r := recover(); r != nil {
365
                        tx.Rollback()
366
                }
367
        }
+
func @356:8
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
356
func() {
357
                if r := recover(); r != nil {
358
                        tx.Rollback()
359
                }
360
        }
-
func DbConfig.Connect
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
195
func (db *DbConfig) Connect(retry bool, location string) error {
196
        var err error
197
        if DbSession != nil {
198
                DbSession = nil
199
        }
200
        var conn, dbType string
201
        dbType = Configs.DbConn
202
        switch dbType {
203
        case "sqlite":
204
                conn = utils.Directory + "/statup.db"
205
                dbType = "sqlite3"
206
        case "mysql":
207
                if Configs.DbPort == 0 {
208
                        Configs.DbPort = 3306
209
                }
210
                host := fmt.Sprintf("%v:%v", Configs.DbHost, Configs.DbPort)
211
                conn = fmt.Sprintf("%v:%v@tcp(%v)/%v?charset=utf8&parseTime=True&loc=UTC", Configs.DbUser, Configs.DbPass, host, Configs.DbData)
212
        case "postgres":
213
                if Configs.DbPort == 0 {
214
                        Configs.DbPort = 5432
215
                }
216
                conn = fmt.Sprintf("host=%v port=%v user=%v dbname=%v password=%v sslmode=disable", Configs.DbHost, Configs.DbPort, Configs.DbUser, Configs.DbData, Configs.DbPass)
217
        case "mssql":
218
                if Configs.DbPort == 0 {
219
                        Configs.DbPort = 1433
220
                }
221
                host := fmt.Sprintf("%v:%v", Configs.DbHost, Configs.DbPort)
222
                conn = fmt.Sprintf("sqlserver://%v:%v@%v?database=%v", Configs.DbUser, Configs.DbPass, host, Configs.DbData)
223
        }
224
        DbSession, err = gorm.Open(dbType, conn)
225
        if err != nil {
226
                if retry {
227
                        utils.Log(1, fmt.Sprintf("Database connection to '%v' is not available, trying again in 5 seconds...", conn))
228
                        return db.waitForDb()
229
                } else {
230
                        fmt.Println("ERROR:", err)
231
                        return err
232
                }
233
        }
234
        err = DbSession.DB().Ping()
235
        if err == nil {
236
                utils.Log(1, fmt.Sprintf("Database connection to '%v' was successful.", Configs.DbData))
237
        }
238
        return err
239
}
+
func DefaultPort
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

+
108
func DefaultPort(db string) int64 {
109
        switch db {
110
        case "mysql":
111
                return 3306
112
        case "postgres":
113
                return 5432
114
        case "mssql":
115
                return 1433
116
        default:
117
                return 0
118
        }
119
}
func LoadUsingEnv
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

-
53
func LoadUsingEnv() (*DbConfig, error) {
54
        Configs = new(DbConfig)
55
        if os.Getenv("DB_CONN") == "" {
56
                return nil, errors.New("Missing DB_CONN environment variable")
57
        }
58
        if os.Getenv("DB_HOST") == "" {
59
                return nil, errors.New("Missing DB_HOST environment variable")
60
        }
61
        if os.Getenv("DB_USER") == "" {
62
                return nil, errors.New("Missing DB_USER environment variable")
63
        }
64
        if os.Getenv("DB_PASS") == "" {
65
                return nil, errors.New("Missing DB_PASS environment variable")
66
        }
67
        if os.Getenv("DB_DATABASE") == "" {
68
                return nil, errors.New("Missing DB_DATABASE environment variable")
69
        }
70
        Configs.DbConn = os.Getenv("DB_CONN")
71
        Configs.DbHost = os.Getenv("DB_HOST")
72
        Configs.DbPort = int(utils.StringInt(os.Getenv("DB_PORT")))
73
        Configs.DbUser = os.Getenv("DB_USER")
74
        Configs.DbPass = os.Getenv("DB_PASS")
75
        Configs.DbData = os.Getenv("DB_DATABASE")
76
        CoreApp.DbConnection = os.Getenv("DB_CONN")
77
        CoreApp.Name = os.Getenv("NAME")
78
        CoreApp.Domain = os.Getenv("DOMAIN")
79
        if os.Getenv("USE_CDN") == "true" {
80
                CoreApp.UseCdn = true
81
        }
82
83
        dbConfig := &DbConfig{
84
                DbConn:      os.Getenv("DB_CONN"),
85
                DbHost:      os.Getenv("DB_HOST"),
86
                DbUser:      os.Getenv("DB_USER"),
87
                DbPass:      os.Getenv("DB_PASS"),
88
                DbData:      os.Getenv("DB_DATABASE"),
89
                DbPort:      5432,
90
                Project:     "Statup - " + os.Getenv("NAME"),
91
                Description: "New Statup Installation",
92
                Domain:      os.Getenv("DOMAIN"),
93
                Username:    "admin",
94
                Password:    "admin",
95
                Email:       "info@localhost.com",
96
        }
97
98
        err := dbConfig.Connect(true, utils.Directory)
99
        if err != nil {
100
                utils.Log(4, err)
101
                return nil, err
102
        }
103
104
        exists := DbSession.HasTable("core")
105
        if !exists {
106
                utils.Log(1, fmt.Sprintf("Core database does not exist, creating now!"))
107
                dbConfig.DropDatabase()
108
                dbConfig.CreateDatabase()
109
110
                CoreApp, err = dbConfig.InsertCore()
111
                if err != nil {
112
                        utils.Log(3, err)
113
                }
114
115
                admin := &types.User{
116
                        Username: "admin",
117
                        Password: "admin",
118
                        Email:    "info@admin.com",
119
                        Admin:    true,
120
                }
121
                admin.Create()
122
123
                InsertSampleData()
124
125
                return Configs, err
126
127
        }
128
129
        return Configs, nil
130
}
+53
func LoadUsingEnv() (*DbConfig, error) {
54
        Configs = new(DbConfig)
55
        if os.Getenv("DB_CONN") == "" {
56
                return nil, errors.New("Missing DB_CONN environment variable")
57
        }
58
        if os.Getenv("DB_HOST") == "" {
59
                return nil, errors.New("Missing DB_HOST environment variable")
60
        }
61
        if os.Getenv("DB_USER") == "" {
62
                return nil, errors.New("Missing DB_USER environment variable")
63
        }
64
        if os.Getenv("DB_PASS") == "" {
65
                return nil, errors.New("Missing DB_PASS environment variable")
66
        }
67
        if os.Getenv("DB_DATABASE") == "" {
68
                return nil, errors.New("Missing DB_DATABASE environment variable")
69
        }
70
        Configs = EnvToConfig()
71
        CoreApp.Name = os.Getenv("NAME")
72
        CoreApp.Domain = os.Getenv("DOMAIN")
73
        CoreApp.DbConnection = Configs.DbConn
74
        if os.Getenv("USE_CDN") == "true" {
75
                CoreApp.UseCdn = true
76
        }
77
        err := Configs.Connect(true, utils.Directory)
78
        if err != nil {
79
                utils.Log(4, err)
80
                return nil, err
81
        }
82
        Configs.Save()
83
        exists := DbSession.HasTable("core")
84
        if !exists {
85
                utils.Log(1, fmt.Sprintf("Core database does not exist, creating now!"))
86
                Configs.DropDatabase()
87
                Configs.CreateDatabase()
88
                CoreApp, err = Configs.InsertCore()
89
                if err != nil {
90
                        utils.Log(3, err)
91
                }
92
93
                admin := ReturnUser(&types.User{
94
                        Username: "admin",
95
                        Password: "admin",
96
                        Email:    "info@admin.com",
97
                        Admin:    true,
98
                })
99
                _, err := admin.Create()
100
101
                SampleData()
102
                return Configs, err
103
        }
104
        return Configs, nil
105
}
func failure.ParseError
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

132
func (f *failure) ParseError() string {
133
        if f.Method == "checkin" {
134
                return fmt.Sprintf("Checkin is Offline")
135
        }
136
        err := strings.Contains(f.Issue, "connection reset by peer")
137
        if err {
138
                return fmt.Sprintf("Connection Reset")
139
        }
140
        err = strings.Contains(f.Issue, "operation timed out")
141
        if err {
142
                return fmt.Sprintf("HTTP Request Timed Out")
143
        }
144
        err = strings.Contains(f.Issue, "x509: certificate is valid")
145
        if err {
146
                return fmt.Sprintf("SSL Certificate invalid")
147
        }
148
        err = strings.Contains(f.Issue, "Client.Timeout exceeded while awaiting headers")
149
        if err {
150
                return fmt.Sprintf("Connection Timed Out")
151
        }
152
        err = strings.Contains(f.Issue, "no such host")
153
        if err {
154
                return fmt.Sprintf("Domain is offline or not found")
155
        }
156
        err = strings.Contains(f.Issue, "HTTP Status Code")
157
        if err {
158
                return fmt.Sprintf("Incorrect HTTP Status Code")
159
        }
160
        err = strings.Contains(f.Issue, "connection refused")
161
        if err {
162
                return fmt.Sprintf("Connection Failed")
163
        }
164
        err = strings.Contains(f.Issue, "can't assign requested address")
165
        if err {
166
                return fmt.Sprintf("Unable to Request Address")
167
        }
168
        err = strings.Contains(f.Issue, "no route to host")
169
        if err {
170
                return fmt.Sprintf("Domain is offline or not found")
171
        }
172
        return f.Issue
173
}
func ExportIndexHTML
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
31
func ExportIndexHTML() string {
32
        source.Assets()
33
        injectDatabase()
34
        CoreApp.SelectAllServices()
35
        CoreApp.UseCdn = true
36
        for _, srv := range CoreApp.Services {
37
                service := srv.(*Service)
38
                service.Check(true)
39
                fmt.Println(service.Name, service.Online, service.Latency)
40
        }
41
        nav, _ := source.TmplBox.String("nav.html")
42
        footer, _ := source.TmplBox.String("footer.html")
43
        render, err := source.TmplBox.String("index.html")
44
        if err != nil {
45
                utils.Log(3, err)
46
        }
47
48
        t := template.New("message")
49
        t.Funcs(template.FuncMap{
50
                "js": func(html string) template.JS {
51
                        return template.JS(html)
52
                },
53
                "safe": func(html string) template.HTML {
54
                        return template.HTML(html)
55
                },
56
                "VERSION": func() string {
57
                        return VERSION
58
                },
59
                "CoreApp": func() *Core {
60
                        return CoreApp
61
                },
62
                "USE_CDN": func() bool {
63
                        return CoreApp.UseCdn
64
                },
65
                "underscore": func(html string) string {
66
                        return utils.UnderScoreString(html)
67
                },
68
                "URL": func() string {
69
                        return "/"
70
                },
71
                "CHART_DATA": func() string {
72
                        return ExportChartsJs()
73
                },
74
        })
75
        t, _ = t.Parse(nav)
76
        t, _ = t.Parse(footer)
77
        t.Parse(render)
78
        var tpl bytes.Buffer
79
        if err := t.Execute(&tpl, CoreApp); err != nil {
80
                utils.Log(3, err)
81
        }
82
        result := tpl.String()
83
        return result
84
}
+31
func ExportIndexHTML() string {
32
        source.Assets()
33
        injectDatabase()
34
        CoreApp.SelectAllServices(false)
35
        CoreApp.UseCdn = true
36
        for _, srv := range CoreApp.Services {
37
                service := srv.(*Service)
38
                service.Check(true)
39
                fmt.Println(service.Name, service.Online, service.Latency)
40
        }
41
        nav, _ := source.TmplBox.String("nav.html")
42
        footer, _ := source.TmplBox.String("footer.html")
43
        render, err := source.TmplBox.String("index.html")
44
        if err != nil {
45
                utils.Log(3, err)
46
        }
47
48
        t := template.New("message")
49
        t.Funcs(template.FuncMap{
50
                "js": func(html string) template.JS {
51
                        return template.JS(html)
52
                },
53
                "safe": func(html string) template.HTML {
54
                        return template.HTML(html)
55
                },
56
                "VERSION": func() string {
57
                        return VERSION
58
                },
59
                "CoreApp": func() *Core {
60
                        return CoreApp
61
                },
62
                "USE_CDN": func() bool {
63
                        return CoreApp.UseCdn
64
                },
65
                "underscore": func(html string) string {
66
                        return utils.UnderScoreString(html)
67
                },
68
                "URL": func() string {
69
                        return "/"
70
                },
71
                "CHART_DATA": func() string {
72
                        return ExportChartsJs()
73
                },
74
        })
75
        t, _ = t.Parse(nav)
76
        t, _ = t.Parse(footer)
77
        t.Parse(render)
78
        var tpl bytes.Buffer
79
        if err := t.Execute(&tpl, CoreApp); err != nil {
80
                utils.Log(3, err)
81
        }
82
        result := tpl.String()
83
        return result
84
}
func GraphDataRaw
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
236
func GraphDataRaw(service types.ServiceInterface, start, end time.Time, group string, column string) *DateScanObj {
237
        var d []DateScan
238
        model := service.(*Service).HitsBetween(start, end, group, column)
239
        rows, _ := model.Rows()
240
        for rows.Next() {
241
                var gd DateScan
242
                var createdAt string
243
                var value float64
244
                var createdTime time.Time
245
                rows.Scan(&createdAt, &value)
246
                createdTime, _ = time.Parse(types.TIME, createdAt)
247
                if CoreApp.DbConnection == "postgres" {
248
                        createdTime, _ = time.Parse(types.TIME_NANO, createdAt)
249
                }
250
                gd.CreatedAt = utils.Timezoner(createdTime, CoreApp.Timezone).Format(types.TIME)
251
                gd.Value = int64(value * 1000)
252
                d = append(d, gd)
253
        }
254
        return &DateScanObj{d}
255
}
+242
func GraphDataRaw(service types.ServiceInterface, start, end time.Time, group string, column string) *DateScanObj {
243
        var d []DateScan
244
        model := service.(*Service).HitsBetween(start, end, group, column)
245
        rows, _ := model.Rows()
246
        for rows.Next() {
247
                var gd DateScan
248
                var createdAt string
249
                var value float64
250
                var createdTime time.Time
251
                rows.Scan(&createdAt, &value)
252
                createdTime, _ = time.Parse(types.TIME, createdAt)
253
                if CoreApp.DbConnection == "postgres" {
254
                        createdTime, _ = time.Parse(types.TIME_NANO, createdAt)
255
                }
256
                gd.CreatedAt = utils.Timezoner(createdTime, CoreApp.Timezone).Format(types.TIME)
257
                gd.Value = int64(value * 1000)
258
                d = append(d, gd)
259
        }
260
        return &DateScanObj{d}
261
}
func InsertSampleHits
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/sample.go:

124
func InsertSampleHits() error {
125
        since := time.Now().Add((-24 * 7) * time.Hour).UTC()
126
        for i := int64(1); i <= 5; i++ {
127
                service := SelectService(i)
128
                utils.Log(1, fmt.Sprintf("Adding %v sample hit records to service %v", 360, service.Name))
129
                createdAt := since
130
                alpha := float64(1.05)
131
132
                for hi := int64(1); hi <= 168; hi++ {
133
                        alpha += 0.01
134
                        rand.Seed(time.Now().UnixNano())
135
                        latency := rand.Float64() * alpha
136
                        createdAt = createdAt.Add(1 * time.Hour)
137
                        hit := &types.Hit{
138
                                Service:   service.Id,
139
                                CreatedAt: createdAt,
140
                                Latency:   latency,
141
                        }
142
                        service.CreateHit(hit)
143
                }
144
        }
145
        return nil
146
}
-
func Dbtimestamp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
200
func Dbtimestamp(group string, column string) string {
201
        seconds := 60
202
        if group == "second" {
203
                seconds = 60
204
        } else if group == "hour" {
205
                seconds = 3600
206
        } else if group == "day" {
207
                seconds = 86400
208
        }
209
        switch CoreApp.DbConnection {
210
        case "mysql":
211
                return fmt.Sprintf("CONCAT(date_format(created_at, '%%Y-%%m-%%d %%H:00:00')) AS timeframe, AVG(%v) AS value", column)
212
        case "sqlite":
213
                return fmt.Sprintf("datetime((strftime('%%s', created_at) / %v) * %v, 'unixepoch') AS timeframe, AVG(%v) as value", seconds, seconds, column)
214
        case "postgres":
215
                return fmt.Sprintf("date_trunc('%v', created_at) AS timeframe, AVG(%v) AS value", group, column)
216
        default:
217
                return ""
218
        }
219
}
-
func DbConfig.Update
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
268
func (db *DbConfig) Update() error {
269
        var err error
270
        config, err := os.Create(utils.Directory + "/config.yml")
271
        if err != nil {
272
                utils.Log(4, err)
273
                return err
274
        }
275
        data, err := yaml.Marshal(db)
276
        if err != nil {
277
                utils.Log(3, err)
278
                return err
279
        }
280
        config.WriteString(string(data))
281
        config.Close()
282
        return err
283
}
+262
func (db *DbConfig) Update() error {
263
        var err error
264
        config, err := os.Create(utils.Directory + "/config.yml")
265
        if err != nil {
266
                utils.Log(4, err)
267
                return err
268
        }
269
        data, err := yaml.Marshal(db)
270
        if err != nil {
271
                utils.Log(3, err)
272
                return err
273
        }
274
        config.WriteString(string(data))
275
        config.Close()
276
        return err
277
}
+ +
func Dbtimestamp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
206
func Dbtimestamp(group string, column string) string {
207
        seconds := 60
208
        if group == "second" {
209
                seconds = 60
210
        } else if group == "hour" {
211
                seconds = 3600
212
        } else if group == "day" {
213
                seconds = 86400
214
        }
215
        switch CoreApp.DbConnection {
216
        case "mysql":
217
                return fmt.Sprintf("CONCAT(date_format(created_at, '%%Y-%%m-%%d %%H:00:00')) AS timeframe, AVG(%v) AS value", column)
218
        case "sqlite":
219
                return fmt.Sprintf("datetime((strftime('%%s', created_at) / %v) * %v, 'unixepoch') AS timeframe, AVG(%v) as value", seconds, seconds, column)
220
        case "postgres":
221
                return fmt.Sprintf("date_trunc('%v', created_at) AS timeframe, AVG(%v) AS value", group, column)
222
        default:
223
                return ""
224
        }
225
}
func ExportChartsJs
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

87
func ExportChartsJs() string {
88
        render, err := source.JsBox.String("charts.js")
89
        if err != nil {
90
                utils.Log(4, err)
91
        }
92
        t := template.New("charts")
93
        t.Funcs(template.FuncMap{
94
                "safe": func(html string) template.HTML {
95
                        return template.HTML(html)
96
                },
97
        })
98
        t.Parse(render)
99
        var tpl bytes.Buffer
100
        if err := t.Execute(&tpl, CoreApp.Services); err != nil {
101
                utils.Log(3, err)
102
        }
103
        result := tpl.String()
104
        return result
105
}
func Service.TotalUptime
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
309
func (s *Service) TotalUptime() string {
310
        hits, _ := s.TotalHits()
311
        failures, _ := s.TotalFailures()
312
        percent := float64(failures) / float64(hits) * 100
313
        percent = 100 - percent
314
        if percent < 0 {
315
                percent = 0
316
        }
317
        amount := fmt.Sprintf("%0.2f", percent)
318
        if amount == "100.00" {
319
                amount = "100"
320
        }
321
        return amount
322
}
+315
func (s *Service) TotalUptime() string {
316
        hits, _ := s.TotalHits()
317
        failures, _ := s.TotalFailures()
318
        percent := float64(failures) / float64(hits) * 100
319
        percent = 100 - percent
320
        if percent < 0 {
321
                percent = 0
322
        }
323
        amount := fmt.Sprintf("%0.2f", percent)
324
        if amount == "100.00" {
325
                amount = "100"
326
        }
327
        return amount
328
}
-
func Service.GraphData
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
268
func (s *Service) GraphData() string {
269
        start := time.Now().Add((-24 * 7) * time.Hour)
270
        end := time.Now()
271
        obj := GraphDataRaw(s, start, end, "hour", "latency")
272
        data, err := json.Marshal(obj)
273
        if err != nil {
274
                utils.Log(2, err)
275
                return ""
276
        }
277
        return string(data)
278
}
+
func EnvToConfig
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

+
122
func EnvToConfig() *DbConfig {
123
        port := DefaultPort(os.Getenv("DB_PORT"))
124
        name := os.Getenv("NAME")
125
        if name == "" {
126
                name = "Statup"
127
        }
128
        description := os.Getenv("DESCRIPTION")
129
        if description == "" {
130
                description = "Statup Monitoring Sample Data"
131
        }
132
        data := &DbConfig{
133
                DbConn:      os.Getenv("DB_CONN"),
134
                DbHost:      os.Getenv("DB_HOST"),
135
                DbUser:      os.Getenv("DB_USER"),
136
                DbPass:      os.Getenv("DB_PASS"),
137
                DbData:      os.Getenv("DB_DATABASE"),
138
                DbPort:      port,
139
                Project:     name,
140
                Description: description,
141
                Domain:      os.Getenv("DOMAIN"),
142
                Email:       "",
143
                Username:    "admin",
144
                Password:    "admin",
145
                Error:       nil,
146
                Location:    utils.Directory,
147
        }
148
        return data
149
}
func Checkin.RecheckCheckinFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

196
func (c *Checkin) RecheckCheckinFailure(guard chan struct{}) {
197
        between := time.Now().Sub(time.Now()).Seconds()
198
        if between > float64(c.Interval) {
199
                fmt.Println("rechecking every 15 seconds!")
200
                time.Sleep(15 * time.Second)
201
                guard <- struct{}{}
202
                c.RecheckCheckinFailure(guard)
203
        } else {
204
                fmt.Println("i recovered!!")
205
        }
206
        <-guard
207
}
func DbConfig.CreateCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
306
func (c *DbConfig) CreateCore() *Core {
307
        newCore := &types.Core{
308
                Name:        c.Project,
309
                Description: c.Description,
310
                Config:      "config.yml",
311
                ApiKey:      c.ApiKey,
312
                ApiSecret:   c.ApiSecret,
313
                Domain:      c.Domain,
314
                MigrationId: time.Now().Unix(),
315
        }
316
        db := coreDB().Create(&newCore)
317
        if db.Error == nil {
318
                CoreApp = &Core{Core: newCore}
319
        }
320
        CoreApp, err := SelectCore()
321
        if err != nil {
322
                utils.Log(4, err)
323
        }
324
        return CoreApp
325
}
+300
func (c *DbConfig) CreateCore() *Core {
301
        newCore := &types.Core{
302
                Name:        c.Project,
303
                Description: c.Description,
304
                Config:      "config.yml",
305
                ApiKey:      c.ApiKey,
306
                ApiSecret:   c.ApiSecret,
307
                Domain:      c.Domain,
308
                MigrationId: time.Now().Unix(),
309
        }
310
        db := coreDB().Create(&newCore)
311
        if db.Error == nil {
312
                CoreApp = &Core{Core: newCore}
313
        }
314
        CoreApp, err := SelectCore()
315
        if err != nil {
316
                utils.Log(4, err)
317
        }
318
        return CoreApp
319
}
func Service.AvgTime
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
108
func (s *Service) AvgTime() float64 {
109
        total, _ := s.TotalHits()
110
        if total == 0 {
111
                return float64(0)
112
        }
113
        sum, _ := s.Sum()
114
        avg := sum / float64(total) * 100
115
        amount := fmt.Sprintf("%0.0f", avg*10)
116
        val, _ := strconv.ParseFloat(amount, 10)
117
        return val
118
}
+114
func (s *Service) AvgTime() float64 {
115
        total, _ := s.TotalHits()
116
        if total == 0 {
117
                return float64(0)
118
        }
119
        sum, _ := s.Sum()
120
        avg := sum / float64(total) * 100
121
        amount := fmt.Sprintf("%0.0f", avg*10)
122
        val, _ := strconv.ParseFloat(amount, 10)
123
        return val
124
}
+ +
func Service.GraphData
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
274
func (s *Service) GraphData() string {
275
        start := time.Now().Add((-24 * 7) * time.Hour)
276
        end := time.Now()
277
        obj := GraphDataRaw(s, start, end, "hour", "latency")
278
        data, err := json.Marshal(obj)
279
        if err != nil {
280
                utils.Log(2, err)
281
                return ""
282
        }
283
        return string(data)
284
}
func CountFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

99
func CountFailures() uint64 {
100
        var count uint64
101
        err := failuresDB().Count(&count)
102
        if err.Error != nil {
103
                utils.Log(2, err.Error)
104
                return 0
105
        }
106
        return count
107
}
+
func InitApp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
60
func InitApp() {
61
        SelectCore()
62
        InsertNotifierDB()
63
        CoreApp.SelectAllServices(true)
64
        checkServices()
65
        CoreApp.Notifications = notifier.Load()
66
        go DatabaseMaintence()
67
}
+
func Core.Count24HFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

88
func (c *Core) Count24HFailures() uint64 {
89
        var count uint64
90
        for _, s := range CoreApp.Services {
91
                service := s.(*Service)
92
                fails, _ := service.TotalFailures24()
93
                count += fails
94
        }
95
        return count
96
}
-
func InitApp
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
60
func InitApp() {
61
        SelectCore()
62
        insertNotifierDB()
63
        CoreApp.SelectAllServices()
64
        checkServices()
65
        CoreApp.Notifications = notifier.Load()
66
        go DatabaseMaintence()
67
}
+
func SampleData
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

+
152
func SampleData() error {
153
        if err := InsertSampleData(); err != nil {
154
                return err
155
        }
156
        if err := InsertSampleHits(); err != nil {
157
                return err
158
        }
159
        return nil
160
}
-
func DateScanObj.ToString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
258
func (d *DateScanObj) ToString() string {
259
        data, err := json.Marshal(d.Array)
260
        if err != nil {
261
                utils.Log(2, err)
262
                return "{}"
263
        }
264
        return string(data)
265
}
+
func recordFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

+
247
func recordFailure(s *Service, issue string) {
248
        s.Online = false
249
        fail := &types.Failure{
250
                Service:   s.Id,
251
                Issue:     issue,
252
                PingTime:  s.PingTime,
253
                CreatedAt: time.Now(),
254
        }
255
        utils.Log(2, fmt.Sprintf("Service %v Failing: %v | Lookup in: %0.2f ms", s.Name, issue, fail.PingTime*1000))
256
        s.CreateFailure(fail)
257
        notifier.OnFailure(s.Service, fail)
258
}
func Service.lastFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
160
func (s *Service) lastFailure() *failure {
161
        limited := s.LimitedFailures()
162
        if len(limited) == 0 {
163
                return nil
164
        }
165
        last := limited[len(limited)-1]
166
        return last
167
}
+166
func (s *Service) lastFailure() *failure {
167
        limited := s.LimitedFailures()
168
        if len(limited) == 0 {
169
                return nil
170
        }
171
        last := limited[len(limited)-1]
172
        return last
173
}
func DatabaseMaintence
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
249
func DatabaseMaintence() {
250
        for range time.Tick(60 * time.Minute) {
251
                utils.Log(1, "Checking for database records older than 3 months...")
252
                since := time.Now().AddDate(0, -3, 0).UTC()
253
                DeleteAllSince("failures", since)
254
                DeleteAllSince("hits", since)
255
        }
256
}
+243
func DatabaseMaintence() {
244
        for range time.Tick(60 * time.Minute) {
245
                utils.Log(1, "Checking for database records older than 3 months...")
246
                since := time.Now().AddDate(0, -3, 0).UTC()
247
                DeleteAllSince("failures", since)
248
                DeleteAllSince("hits", since)
249
        }
250
}
-
func Service.TotalFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

-
116
func (s *Service) TotalFailures() (uint64, error) {
117
        var count uint64
118
        rows := failuresDB().Where("service = ?", s.Id)
119
        err := rows.Count(&count)
120
        return count, err.Error
121
}
+
func DateScanObj.ToString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
264
func (d *DateScanObj) ToString() string {
265
        data, err := json.Marshal(d.Array)
266
        if err != nil {
267
                utils.Log(2, err)
268
                return "{}"
269
        }
270
        return string(data)
271
}
+ +
func DeleteConfig
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

+
163
func DeleteConfig() error {
164
        err := os.Remove(utils.Directory + "/config.yml")
165
        if err != nil {
166
                utils.Log(3, err)
167
                return err
168
        }
169
        return nil
170
}
func Core.CurrentTime
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

88
func (c Core) CurrentTime() string {
89
        t := time.Now().UTC()
90
        current := utils.Timezoner(t, c.Timezone)
91
        ansic := "Monday 03:04:05 PM"
92
        return current.Format(ansic)
93
}
-
func DeleteAllSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
259
func DeleteAllSince(table string, date time.Time) {
260
        sql := fmt.Sprintf("DELETE FROM %v WHERE created_at < '%v';", table, date.Format("2006-01-02"))
261
        db := DbSession.Raw(sql)
262
        if db.Error != nil {
263
                utils.Log(2, db.Error)
264
        }
265
}
+
func Service.TotalFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

+
116
func (s *Service) TotalFailures() (uint64, error) {
117
        var count uint64
118
        rows := failuresDB().Where("service = ?", s.Id)
119
        err := rows.Count(&count)
120
        return count, err.Error
121
}
func Service.DeleteFailures
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

59
func (s *Service) DeleteFailures() {
60
        err := DbSession.Exec(`DELETE FROM failures WHERE service = ?`, s.Id)
61
        if err.Error != nil {
62
                utils.Log(3, fmt.Sprintf("failed to delete all failures: %v", err))
63
        }
64
        s.Failures = nil
65
}
-
func Core.AllOnline
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
126
func (c Core) AllOnline() bool {
127
        for _, s := range CoreApp.Services {
128
                if !s.Select().Online {
129
                        return false
130
                }
131
        }
132
        return true
133
}
-
func DbConfig.InsertCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

179
func (db *DbConfig) InsertCore() (*Core, error) {
180
        CoreApp = &Core{Core: &types.Core{
181
                Name:        db.Project,
182
                Description: db.Description,
183
                Config:      "config.yml",
184
                ApiKey:      utils.NewSHA1Hash(9),
185
                ApiSecret:   utils.NewSHA1Hash(16),
186
                Domain:      db.Domain,
187
                MigrationId: time.Now().Unix(),
188
        }}
189
        CoreApp.DbConnection = db.DbConn
190
        query := coreDB().Create(&CoreApp)
191
        return CoreApp, query.Error
192
}
-
func DeleteConfig
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/configs.go:

-
133
func DeleteConfig() {
134
        err := os.Remove(utils.Directory + "/config.yml")
135
        if err != nil {
136
                utils.Log(3, err)
137
        }
138
}
+
func Core.AllOnline
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
126
func (c Core) AllOnline() bool {
127
        for _, s := range CoreApp.Services {
128
                if !s.Select().Online {
129
                        return false
130
                }
131
        }
132
        return true
133
}
-
func Checkin.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
147
func (c *Checkin) Delete() error {
148
        c.Close()
149
        row := checkinDB().Delete(&c)
150
        return row.Error
151
}
+
func DeleteAllSince
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
253
func DeleteAllSince(table string, date time.Time) {
254
        sql := fmt.Sprintf("DELETE FROM %v WHERE created_at < '%v';", table, date.Format("2006-01-02"))
255
        db := DbSession.Raw(sql)
256
        if db.Error != nil {
257
                utils.Log(2, db.Error)
258
        }
259
}
-
func Hit.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
131
func (h *Hit) BeforeCreate() (err error) {
132
        if h.CreatedAt.IsZero() {
133
                h.CreatedAt = time.Now().UTC()
134
        }
135
        return
136
}
- -
func Core.SassVars
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
101
func (c Core) SassVars() string {
102
        if !source.UsingAssets(utils.Directory) {
103
                return ""
104
        }
105
        return source.OpenAsset(utils.Directory, "scss/variables.scss")
106
}
+
func Service.CheckinProcess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
59
func (s *Service) CheckinProcess() {
60
        checkins := s.Checkins()
61
        for _, c := range checkins {
62
                c.Start()
63
                go c.Routine()
64
        }
65
}
func SelectCheckinId
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

101
func SelectCheckinId(id int64) *Checkin {
102
        var checkin Checkin
103
        checkinDB().Where("id = ?", id).First(&checkin)
104
        return &checkin
105
}
-
func Service.LimitedCheckins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
71
func (s *Service) LimitedCheckins() []*Checkin {
72
        var checkin []*Checkin
73
        checkinDB().Where("service = ?", s.Id).Limit(10).Find(&checkin)
74
        return checkin
75
}
+
func SelectCheckin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
94
func SelectCheckin(api string) *Checkin {
95
        var checkin Checkin
96
        checkinDB().Where("api_key = ?", api).First(&checkin)
97
        return &checkin
98
}
+ +
func Hit.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
131
func (h *Hit) BeforeCreate() (err error) {
132
        if h.CreatedAt.IsZero() {
133
                h.CreatedAt = time.Now().UTC()
134
        }
135
        return
136
}
func failure.BeforeCreate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

139
func (f *failure) BeforeCreate() (err error) {
140
        if f.CreatedAt.IsZero() {
141
                f.CreatedAt = time.Now().UTC()
142
        }
143
        return
144
}
+
func Checkin.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
147
func (c *Checkin) Delete() error {
148
        c.Close()
149
        row := checkinDB().Delete(&c)
150
        return row.Error
151
}
+ +
func Service.LimitedCheckins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
75
func (s *Service) LimitedCheckins() []*Checkin {
76
        var checkin []*Checkin
77
        checkinDB().Where("service = ?", s.Id).Limit(10).Find(&checkin)
78
        return checkin
79
}
+
func Core.MobileSASS
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

118
func (c Core) MobileSASS() string {
119
        if !source.UsingAssets(utils.Directory) {
120
                return ""
121
        }
122
        return source.OpenAsset(utils.Directory, "scss/mobile.scss")
123
}
-
func SelectCheckin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
94
func SelectCheckin(api string) *Checkin {
95
        var checkin Checkin
96
        checkinDB().Where("api_key = ?", api).First(&checkin)
97
        return &checkin
98
}
+
func Core.BaseSASS
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
109
func (c Core) BaseSASS() string {
110
        if !source.UsingAssets(utils.Directory) {
111
                return ""
112
        }
113
        return source.OpenAsset(utils.Directory, "scss/base.scss")
114
}
+ +
func Core.SassVars
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
101
func (c Core) SassVars() string {
102
        if !source.UsingAssets(utils.Directory) {
103
                return ""
104
        }
105
        return source.OpenAsset(utils.Directory, "scss/variables.scss")
106
}
func checkServices
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checker.go:

34
func checkServices() {
35
        utils.Log(1, fmt.Sprintf("Starting monitoring process for %v Services", len(CoreApp.Services)))
36
        for _, ser := range CoreApp.Services {
37
                //go obj.StartCheckins()
38
                go ser.CheckQueue(true)
39
        }
40
}
-
func Core.BaseSASS
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
109
func (c Core) BaseSASS() string {
110
        if !source.UsingAssets(utils.Directory) {
111
                return ""
112
        }
113
        return source.OpenAsset(utils.Directory, "scss/base.scss")
114
}
+
func Service.AvgUptime24
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
287
func (s *Service) AvgUptime24() string {
288
        ago := time.Now().Add(-24 * time.Hour)
289
        return s.AvgUptime(ago)
290
}
+ +
func Service.ToJSON
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
108
func (s *Service) ToJSON() string {
109
        data, _ := json.Marshal(s)
110
        return string(data)
111
}
+ +
func Service.HitsBetween
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

+
77
func (s *Service) HitsBetween(t1, t2 time.Time, group string, column string) *gorm.DB {
78
        selector := Dbtimestamp(group, column)
79
        return DbSession.Model(&types.Hit{}).Select(selector).Where("service = ? AND created_at BETWEEN ? AND ?", s.Id, t1.Format(types.TIME_DAY), t2.Format(types.TIME_DAY)).Order("timeframe asc", false).Group("timeframe")
80
}
+ +
func failure.Ago
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

+
76
func (f *failure) Ago() string {
77
        got, _ := timeago.TimeAgoWithTime(time.Now(), f.CreatedAt)
78
        return got
79
}
func Service.TotalFailures24
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

110
func (s *Service) TotalFailures24() (uint64, error) {
111
        ago := time.Now().Add(-24 * time.Hour)
112
        return s.TotalFailuresSince(ago)
113
}
func Service.Online24
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
121
func (s *Service) Online24() float32 {
122
        ago := time.Now().Add(-24 * time.Hour)
123
        return s.OnlineSince(ago)
124
}
- -
func Service.ToJSON
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
102
func (s *Service) ToJSON() string {
103
        data, _ := json.Marshal(s)
104
        return string(data)
105
}
- -
func failure.Ago
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

-
76
func (f *failure) Ago() string {
77
        got, _ := timeago.TimeAgoWithTime(time.Now(), f.CreatedAt)
78
        return got
79
}
- -
func Service.HitsBetween
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
77
func (s *Service) HitsBetween(t1, t2 time.Time, group string, column string) *gorm.DB {
78
        selector := Dbtimestamp(group, column)
79
        return DbSession.Model(&types.Hit{}).Select(selector).Where("service = ? AND created_at BETWEEN ? AND ?", s.Id, t1.Format(types.TIME_DAY), t2.Format(types.TIME_DAY)).Order("timeframe asc", false).Group("timeframe")
80
}
+127
func (s *Service) Online24() float32 {
128
        ago := time.Now().Add(-24 * time.Hour)
129
        return s.OnlineSince(ago)
130
}
func CloseDB
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

83
func CloseDB() {
84
        if DbSession != nil {
85
                DbSession.DB().Close()
86
        }
87
}
@@ -776,73 +792,73 @@ PACKAGE:github.com/hunterlong/statup/cmd DONE:31.37 101
func (h *Hit) AfterFind() (err error) {
102
        h.CreatedAt = utils.Timezoner(h.CreatedAt, CoreApp.Timezone)
103
        return
104
}
func DbConfig.waitForDb
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

-
242
func (db *DbConfig) waitForDb() error {
243
        time.Sleep(5 * time.Second)
244
        return db.Connect(true, utils.Directory)
245
}
- -
func failure.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

-
82
func (f *failure) Delete() error {
83
        db := failuresDB().Delete(f)
84
        return db.Error
85
}
- -
func Service.AvgUptime24
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
281
func (s *Service) AvgUptime24() string {
282
        ago := time.Now().Add(-24 * time.Hour)
283
        return s.AvgUptime(ago)
284
}
+236
func (db *DbConfig) waitForDb() error {
237
        time.Sleep(5 * time.Second)
238
        return db.Connect(true, utils.Directory)
239
}
func UpdateCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

82
func UpdateCore(c *Core) (*Core, error) {
83
        db := coreDB().Update(&c)
84
        return c, db.Error
85
}
+
func failure.Delete
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/failures.go:

+
82
func (f *failure) Delete() error {
83
        db := failuresDB().Delete(f)
84
        return db.Error
85
}
+
func DbConfig.Close
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/database.go:

90
func (db *DbConfig) Close() error {
91
        return DbSession.DB().Close()
92
}
func injectDatabase
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

26
func injectDatabase() {
27
        Configs.Connect(false, utils.Directory)
28
}
-
func Core.UsingAssets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

-
96
func (c Core) UsingAssets() bool {
97
        return source.UsingAssets(utils.Directory)
98
}
- -
func Service.DowntimeText
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
195
func (s *Service) DowntimeText() string {
196
        return fmt.Sprintf("%v has been offline for %v", s.Name, utils.DurationReadable(s.Downtime()))
197
}
- -
func Service.UpdateSingle
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
357
func (s *Service) UpdateSingle(attr ...interface{}) error {
358
        return servicesDB().Model(s).Update(attr).Error
359
}
+
func @68:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
68
func() string {
69
                        return "/"
70
                }
func Core.ToCore
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

55
func (c *Core) ToCore() *types.Core {
56
        return c.Core
57
}
-
func @50:9
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
50
func(html string) template.JS {
51
                        return template.JS(html)
52
                }
+
func Services
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
44
func Services() []types.ServiceInterface {
45
        return CoreApp.Services
46
}
-
func Core.ServicesCount
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

-
397
func (c *Core) ServicesCount() int {
398
        return len(c.Services)
399
}
+
func Service.UpdateSingle
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
363
func (s *Service) UpdateSingle(attr ...interface{}) error {
364
        return servicesDB().Model(s).Update(attr).Error
365
}
func @53:11
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

53
func(html string) template.HTML {
54
                        return template.HTML(html)
55
                }
-
func @94:11
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
94
func(html string) template.HTML {
95
                        return template.HTML(html)
96
                }
+
func @56:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
56
func() string {
57
                        return VERSION
58
                }
-
func @71:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
71
func() string {
72
                        return ExportChartsJs()
73
                }
+
func Core.ServicesCount
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
403
func (c *Core) ServicesCount() int {
404
        return len(c.Services)
405
}
-
func @68:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
68
func() string {
69
                        return "/"
70
                }
+
func Service.DowntimeText
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/services.go:

+
201
func (s *Service) DowntimeText() string {
202
        return fmt.Sprintf("%v has been offline for %v", s.Name, utils.DurationReadable(s.Downtime()))
203
}
-
func @65:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
65
func(html string) string {
66
                        return utils.UnderScoreString(html)
67
                }
- -
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

-
135
func (c *Checkin) Link() string {
136
        return fmt.Sprintf("%v/checkin/%v", CoreApp.Domain, c.ApiKey)
137
}
- -
func @62:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
62
func() bool {
63
                        return CoreApp.UseCdn
64
                }
+
func Core.UsingAssets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/core.go:

+
96
func (c Core) UsingAssets() bool {
97
        return source.UsingAssets(utils.Directory)
98
}
func @59:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

59
func() *Core {
60
                        return CoreApp
61
                }
+
func @62:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
62
func() bool {
63
                        return CoreApp.UseCdn
64
                }
+ +
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

+
135
func (c *Checkin) Link() string {
136
        return fmt.Sprintf("%v/checkin/%v", CoreApp.Domain, c.ApiKey)
137
}
+ +
func @65:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
65
func(html string) string {
66
                        return utils.UnderScoreString(html)
67
                }
+ +
func @94:11
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
94
func(html string) template.HTML {
95
                        return template.HTML(html)
96
                }
+
func Checkin.String
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/checkin.go:

61
func (c *Checkin) String() string {
62
        return c.ApiKey
63
}
-
func @56:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

-
56
func() string {
57
                        return VERSION
58
                }
+
func @71:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
71
func() string {
72
                        return ExportChartsJs()
73
                }
+ +
func @50:9
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/core/export.go:

+
50
func(html string) template.JS {
51
                        return template.JS(html)
52
                }
Package Overview: github.com/hunterlong/statup/core/notifier 72.73%

This is a coverage report created after analysis of the github.com/hunterlong/statup/core/notifier package. It @@ -1050,7 +1066,7 @@ PACKAGE:github.com/hunterlong/statup/core DONE:54.29 PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73 --> -

Package Overview: github.com/hunterlong/statup/handlers 67.61%

This is a coverage report created after analysis of the github.com/hunterlong/statup/handlers package. It +

Package Overview: github.com/hunterlong/statup/handlers 67.41%

This is a coverage report created after analysis of the github.com/hunterlong/statup/handlers package. It has been generated with the following command:

gocov test github.com/hunterlong/statup/handlers | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

@@ -1063,41 +1079,41 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73 - + - + - - - - + + + + + - - + - + + - @@ -1111,11 +1127,11 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73 - - + + @@ -1134,16 +1150,16 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73 - - - + + + + + - - - +
Router(...)github.com/hunterlong/statup/handlers/routes.go100.00%68/68
prometheusHandler(...)github.com/hunterlong/statup/handlers/prometheus.go100.00%22/22
usersEditHandler(...)github.com/hunterlong/statup/handlers/users.go100.00%7/7
deleteAssetsHandler(...)github.com/hunterlong/statup/handlers/settings.go100.00%6/6
RunHTTPServer(...)github.com/hunterlong/statup/handlers/handlers.go100.00%6/6
logsLineHandler(...)github.com/hunterlong/statup/handlers/dashboard.go100.00%5/5
usersHandler(...)github.com/hunterlong/statup/handlers/users.go100.00%5/5
logsLineHandler(...)github.com/hunterlong/statup/handlers/dashboard.go100.00%5/5
helpHandler(...)github.com/hunterlong/statup/handlers/dashboard.go100.00%5/5
servicesHandler(...)github.com/hunterlong/statup/handlers/services.go100.00%4/4
settingsHandler(...)github.com/hunterlong/statup/handlers/settings.go100.00%4/4
servicesHandler(...)github.com/hunterlong/statup/handlers/services.go100.00%4/4
logoutHandler(...)github.com/hunterlong/statup/handlers/dashboard.go100.00%4/4
resetRouter(...)github.com/hunterlong/statup/handlers/routes.go100.00%2/2
error404Handler(...)github.com/hunterlong/statup/handlers/handlers.go100.00%2/2
parseForm(...)github.com/hunterlong/statup/handlers/settings.go100.00%2/2
parseGet(...)github.com/hunterlong/statup/handlers/settings.go100.00%2/2
@157:14(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
error404Handler(...)github.com/hunterlong/statup/handlers/handlers.go100.00%2/2
resetRouter(...)github.com/hunterlong/statup/handlers/routes.go100.00%2/2
parseForm(...)github.com/hunterlong/statup/handlers/settings.go100.00%2/2
@126:17(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@129:10(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@138:15(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@135:12(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@151:15(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@88:20(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@129:10(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@135:12(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@93:11(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@96:11(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@99:14(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@102:14(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@105:15(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@108:14(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@126:17(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@154:17(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
@157:14(...)github.com/hunterlong/statup/handlers/handlers.go100.00%1/1
saveSettingsHandler(...)github.com/hunterlong/statup/handlers/settings.go96.15%25/26
servicesUpdateHandler(...)github.com/hunterlong/statup/handlers/services.go93.55%29/31
loginHandler(...)github.com/hunterlong/statup/handlers/dashboard.go92.86%13/14
createUserHandler(...)github.com/hunterlong/statup/handlers/users.go92.31%12/13
createServiceHandler(...)github.com/hunterlong/statup/handlers/services.go90.91%20/22
servicesViewHandler(...)github.com/hunterlong/statup/handlers/services.go88.24%15/17
setupHandler(...)github.com/hunterlong/statup/handlers/setup.go87.50%7/8
saveNotificationHandler(...)github.com/hunterlong/statup/handlers/settings.go86.96%40/46
apiIndexHandler(...)github.com/hunterlong/statup/handlers/api.go84.62%11/13
apiServiceDataHandler(...)github.com/hunterlong/statup/handlers/api.go83.33%10/12
apiAllServicesHandler(...)github.com/hunterlong/statup/handlers/api.go81.82%9/11
setupHandler(...)github.com/hunterlong/statup/handlers/setup.go81.82%9/11
executeResponse(...)github.com/hunterlong/statup/handlers/handlers.go80.00%24/30
servicesDeleteHandler(...)github.com/hunterlong/statup/handlers/services.go80.00%8/10
usersDeleteHandler(...)github.com/hunterlong/statup/handlers/users.go76.92%10/13
apiUserUpdateHandler(...)github.com/hunterlong/statup/handlers/api.go68.42%13/19
IsAuthenticated(...)github.com/hunterlong/statup/handlers/handlers.go66.67%8/12
apiAllUsersHandler(...)github.com/hunterlong/statup/handlers/api.go66.67%4/6
processSetupHandler(...)github.com/hunterlong/statup/handlers/setup.go66.07%37/56
apiCreateUsersHandler(...)github.com/hunterlong/statup/handlers/api.go64.71%11/17
apiCreateServiceHandler(...)github.com/hunterlong/statup/handlers/api.go62.50%10/16
apiServiceDeleteHandler(...)github.com/hunterlong/statup/handlers/api.go60.00%9/15
processSetupHandler(...)github.com/hunterlong/statup/handlers/setup.go62.00%31/50
apiUserDeleteHandler(...)github.com/hunterlong/statup/handlers/api.go60.00%9/15
apiServiceDeleteHandler(...)github.com/hunterlong/statup/handlers/api.go60.00%9/15
apiUserHandler(...)github.com/hunterlong/statup/handlers/api.go60.00%6/10
apiServiceHandler(...)github.com/hunterlong/statup/handlers/api.go60.00%6/10
dashboardHandler(...)github.com/hunterlong/statup/handlers/dashboard.go60.00%3/5
parseId(...)github.com/hunterlong/statup/handlers/settings.go0.00%0/2
@122:13(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/2
@144:15(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/2
@90:9(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@148:13(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@132:17(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
setupResponseError(...)github.com/hunterlong/statup/handlers/setup.go0.00%0/1
@90:9(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@132:17(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@148:13(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
trayHandler(...)github.com/hunterlong/statup/handlers/index.go0.00%0/1
@141:10(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@235:15(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@160:17(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
@141:10(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
trayHandler(...)github.com/hunterlong/statup/handlers/index.go0.00%0/1
@232:11(...)github.com/hunterlong/statup/handlers/handlers.go0.00%0/1
github.com/hunterlong/statup/handlers67.61%643/951
github.com/hunterlong/statup/handlers67.41%635/942
func Router
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/routes.go:

@@ -1179,53 +1195,53 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func RunHTTPServer
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

43
func RunHTTPServer(ip string, port int) error {
44
        host := fmt.Sprintf("%v:%v", ip, port)
45
        utils.Log(1, "Statup HTTP Server running on http://"+host)
46
        //for _, p := range core.CoreApp.AllPlugins {
47
        //        info := p.GetInfo()
48
        //        for _, route := range p.Routes() {
49
        //                path := fmt.Sprintf("%v", route.URL)
50
        //                router.Handle(path, http.HandlerFunc(route.Handler)).Methods(route.Method)
51
        //                utils.Log(1, fmt.Sprintf("Added Route %v for plugin %v\n", path, info.Name))
52
        //        }
53
        //}
54
        router = Router()
55
        httpServer = &http.Server{
56
                Addr:         host,
57
                WriteTimeout: time.Second * 60,
58
                ReadTimeout:  time.Second * 60,
59
                IdleTimeout:  time.Second * 60,
60
                Handler:      router,
61
        }
62
        resetCookies()
63
        return httpServer.ListenAndServe()
64
}
-
func logsLineHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/dashboard.go:

-
94
func logsLineHandler(w http.ResponseWriter, r *http.Request) {
95
        if !IsAuthenticated(r) {
96
                w.WriteHeader(http.StatusInternalServerError)
97
                return
98
        }
99
        if lastLine := utils.GetLastLine(); lastLine != nil {
100
                w.Write([]byte(lastLine.FormatForHtml()))
101
        }
102
}
-
func usersHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/users.go:

28
func usersHandler(w http.ResponseWriter, r *http.Request) {
29
        if !IsAuthenticated(r) {
30
                http.Redirect(w, r, "/", http.StatusSeeOther)
31
                return
32
        }
33
        users, _ := core.SelectAllUsers()
34
        executeResponse(w, r, "users.html", users, nil)
35
}
+
func logsLineHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/dashboard.go:

+
94
func logsLineHandler(w http.ResponseWriter, r *http.Request) {
95
        if !IsAuthenticated(r) {
96
                w.WriteHeader(http.StatusInternalServerError)
97
                return
98
        }
99
        if lastLine := utils.GetLastLine(); lastLine != nil {
100
                w.Write([]byte(lastLine.FormatForHtml()))
101
        }
102
}
+
func helpHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/dashboard.go:

69
func helpHandler(w http.ResponseWriter, r *http.Request) {
70
        if !IsAuthenticated(r) {
71
                http.Redirect(w, r, "/", http.StatusSeeOther)
72
                return
73
        }
74
        help := source.HelpMarkdown()
75
        executeResponse(w, r, "help.html", help, nil)
76
}
-
func servicesHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/services.go:

-
52
func servicesHandler(w http.ResponseWriter, r *http.Request) {
53
        if !IsAuthenticated(r) {
54
                http.Redirect(w, r, "/", http.StatusSeeOther)
55
                return
56
        }
57
        executeResponse(w, r, "services.html", core.CoreApp.Services, nil)
58
}
-
func settingsHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

30
func settingsHandler(w http.ResponseWriter, r *http.Request) {
31
        if !IsAuthenticated(r) {
32
                http.Redirect(w, r, "/", http.StatusSeeOther)
33
                return
34
        }
35
        executeResponse(w, r, "settings.html", core.CoreApp, nil)
36
}
+
func servicesHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/services.go:

+
52
func servicesHandler(w http.ResponseWriter, r *http.Request) {
53
        if !IsAuthenticated(r) {
54
                http.Redirect(w, r, "/", http.StatusSeeOther)
55
                return
56
        }
57
        executeResponse(w, r, "services.html", core.CoreApp.Services, nil)
58
}
+
func logoutHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/dashboard.go:

62
func logoutHandler(w http.ResponseWriter, r *http.Request) {
63
        session, _ := sessionStore.Get(r, cookieKey)
64
        session.Values["authenticated"] = false
65
        session.Save(r, w)
66
        http.Redirect(w, r, "/", http.StatusSeeOther)
67
}
-
func resetRouter
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/routes.go:

-
119
func resetRouter() {
120
        router = Router()
121
        httpServer.Handler = router
122
}
+
func parseGet
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

+
132
func parseGet(r *http.Request) url.Values {
133
        r.ParseForm()
134
        return r.Form
135
}
func error404Handler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

251
func error404Handler(w http.ResponseWriter, r *http.Request) {
252
        w.WriteHeader(http.StatusNotFound)
253
        executeResponse(w, r, "error_404.html", nil, nil)
254
}
+
func resetRouter
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/routes.go:

+
119
func resetRouter() {
120
        router = Router()
121
        httpServer.Handler = router
122
}
+
func parseForm
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

127
func parseForm(r *http.Request) url.Values {
128
        r.ParseForm()
129
        return r.PostForm
130
}
-
func parseGet
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

-
132
func parseGet(r *http.Request) url.Values {
133
        r.ParseForm()
134
        return r.Form
135
}
+
func @126:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
126
func(html string) string {
127
                        return utils.UnderScoreString(html)
128
                }
-
func @157:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
157
func() *types.User {
158
                        return new(types.User)
159
                }
+
func @129:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
129
func() string {
130
                        return r.URL.String()
131
                }
func @138:15
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

138
func(v interface{}) string {
139
                        return utils.ToString(v)
140
                }
-
func @135:12
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
135
func() string {
136
                        return ""
137
                }
-
func @151:15
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

151
func(t int64) string {
152
                        return utils.Timezoner(time.Unix(t, 0), core.CoreApp.Timezone).Format("Monday, January 02")
153
                }
func @88:20
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

88
func(w http.ResponseWriter, r *http.Request) template.FuncMap {
89
        return template.FuncMap{
90
                "js": func(html interface{}) template.JS {
91
                        return template.JS(utils.ToString(html))
92
                },
93
                "safe": func(html string) template.HTML {
94
                        return template.HTML(html)
95
                },
96
                "Auth": func() bool {
97
                        return IsAuthenticated(r)
98
                },
99
                "VERSION": func() string {
100
                        return core.VERSION
101
                },
102
                "CoreApp": func() *core.Core {
103
                        return core.CoreApp
104
                },
105
                "Services": func() []types.ServiceInterface {
106
                        return core.CoreApp.Services
107
                },
108
                "USE_CDN": func() bool {
109
                        return core.CoreApp.UseCdn
110
                },
111
                "Type": func(g interface{}) []string {
112
                        fooType := reflect.TypeOf(g)
113
                        var methods []string
114
                        methods = append(methods, fooType.String())
115
                        for i := 0; i < fooType.NumMethod(); i++ {
116
                                method := fooType.Method(i)
117
                                fmt.Println(method.Name)
118
                                methods = append(methods, method.Name)
119
                        }
120
                        return methods
121
                },
122
                "ToJSON": func(g interface{}) template.HTML {
123
                        data, _ := json.Marshal(g)
124
                        return template.HTML(string(data))
125
                },
126
                "underscore": func(html string) string {
127
                        return utils.UnderScoreString(html)
128
                },
129
                "URL": func() string {
130
                        return r.URL.String()
131
                },
132
                "CHART_DATA": func() string {
133
                        return ""
134
                },
135
                "Error": func() string {
136
                        return ""
137
                },
138
                "ToString": func(v interface{}) string {
139
                        return utils.ToString(v)
140
                },
141
                "Ago": func(t time.Time) string {
142
                        return utils.Timestamp(t).Ago()
143
                },
144
                "Duration": func(t time.Duration) string {
145
                        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", t.Seconds()))
146
                        return utils.FormatDuration(duration)
147
                },
148
                "ToUnix": func(t time.Time) int64 {
149
                        return t.UTC().Unix()
150
                },
151
                "FromUnix": func(t int64) string {
152
                        return utils.Timezoner(time.Unix(t, 0), core.CoreApp.Timezone).Format("Monday, January 02")
153
                },
154
                "NewService": func() *types.Service {
155
                        return new(types.Service)
156
                },
157
                "NewUser": func() *types.User {
158
                        return new(types.User)
159
                },
160
                "NewCheckin": func() *types.Checkin {
161
                        return new(types.Checkin)
162
                },
163
        }
164
}
-
func @129:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
129
func() string {
130
                        return r.URL.String()
131
                }
+
func @135:12
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
135
func() string {
136
                        return ""
137
                }
func @93:11
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

93
func(html string) template.HTML {
94
                        return template.HTML(html)
95
                }
@@ -1245,12 +1261,12 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func @108:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

108
func() bool {
109
                        return core.CoreApp.UseCdn
110
                }
-
func @126:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
126
func(html string) string {
127
                        return utils.UnderScoreString(html)
128
                }
-
func @154:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

154
func() *types.Service {
155
                        return new(types.Service)
156
                }
+
func @157:14
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
157
func() *types.User {
158
                        return new(types.User)
159
                }
+
func saveSettingsHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

38
func saveSettingsHandler(w http.ResponseWriter, r *http.Request) {
39
        if !IsAuthenticated(r) {
40
                http.Redirect(w, r, "/", http.StatusSeeOther)
41
                return
42
        }
43
        r.ParseForm()
44
        app := core.CoreApp
45
        name := r.PostForm.Get("project")
46
        if name != "" {
47
                app.Name = name
48
        }
49
        description := r.PostForm.Get("description")
50
        if description != app.Description {
51
                app.Description = description
52
        }
53
        style := r.PostForm.Get("style")
54
        if style != app.Style {
55
                app.Style = style
56
        }
57
        footer := r.PostForm.Get("footer")
58
        if footer != app.Footer {
59
                app.Footer = footer
60
        }
61
        domain := r.PostForm.Get("domain")
62
        if domain != app.Domain {
63
                app.Domain = domain
64
        }
65
        timezone := r.PostForm.Get("timezone")
66
        timeFloat, _ := strconv.ParseFloat(timezone, 10)
67
        app.Timezone = float32(timeFloat)
68
69
        app.UseCdn = (r.PostForm.Get("enable_cdn") == "on")
70
        core.CoreApp, _ = core.UpdateCore(app)
71
        //notifiers.OnSettingsSaved(core.CoreApp.ToCore())
72
        executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
73
}
@@ -1269,6 +1285,9 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func servicesViewHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/services.go:

139
func servicesViewHandler(w http.ResponseWriter, r *http.Request) {
140
        vars := mux.Vars(r)
141
        fields := parseGet(r)
142
        startField := utils.StringInt(fields.Get("start"))
143
        endField := utils.StringInt(fields.Get("end"))
144
        serv := core.SelectService(utils.StringInt(vars["id"]))
145
        if serv == nil {
146
                w.WriteHeader(http.StatusNotFound)
147
                return
148
        }
149
150
        end := time.Now().UTC()
151
        start := end.Add((-24 * 7) * time.Hour).UTC()
152
153
        if startField != 0 {
154
                start = time.Unix(startField, 0)
155
        }
156
        if endField != 0 {
157
                end = time.Unix(endField, 0)
158
        }
159
160
        data := core.GraphDataRaw(serv, start, end, "hour", "latency")
161
162
        out := struct {
163
                Service *core.Service
164
                Start   int64
165
                End     int64
166
                Data    string
167
        }{serv, start.Unix(), end.Unix(), data.ToString()}
168
169
        executeResponse(w, r, "service.html", out, nil)
170
}
+
func setupHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

+
27
func setupHandler(w http.ResponseWriter, r *http.Request) {
28
        if core.CoreApp.Services != nil {
29
                http.Redirect(w, r, "/", http.StatusSeeOther)
30
                return
31
        }
32
        w.WriteHeader(http.StatusOK)
33
        var data interface{}
34
        if os.Getenv("DB_CONN") != "" {
35
                data, _ = core.LoadUsingEnv()
36
        }
37
        executeResponse(w, r, "setup.html", data, nil)
38
}
+
func saveNotificationHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/settings.go:

137
func saveNotificationHandler(w http.ResponseWriter, r *http.Request) {
138
        var err error
139
        if !IsAuthenticated(r) {
140
                http.Redirect(w, r, "/", http.StatusSeeOther)
141
                return
142
        }
143
        form := parseForm(r)
144
        vars := mux.Vars(r)
145
        method := vars["method"]
146
        enabled := form.Get("enable")
147
        host := form.Get("host")
148
        port := int(utils.StringInt(form.Get("port")))
149
        username := form.Get("username")
150
        password := form.Get("password")
151
        var1 := form.Get("var1")
152
        var2 := form.Get("var2")
153
        apiKey := form.Get("api_key")
154
        apiSecret := form.Get("api_secret")
155
        limits := int(utils.StringInt(form.Get("limits")))
156
157
        notifer, notif, err := notifier.SelectNotifier(method)
158
        if err != nil {
159
                utils.Log(3, fmt.Sprintf("issue saving notifier %v: %v", method, err))
160
                executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
161
                return
162
        }
163
164
        if host != "" {
165
                notifer.Host = host
166
        }
167
        if port != 0 {
168
                notifer.Port = port
169
        }
170
        if username != "" {
171
                notifer.Username = username
172
        }
173
        if password != "" && password != "##########" {
174
                notifer.Password = password
175
        }
176
        if var1 != "" {
177
                notifer.Var1 = var1
178
        }
179
        if var2 != "" {
180
                notifer.Var2 = var2
181
        }
182
        if apiKey != "" {
183
                notifer.ApiKey = apiKey
184
        }
185
        if apiSecret != "" {
186
                notifer.ApiSecret = apiSecret
187
        }
188
        if limits != 0 {
189
                notifer.Limits = limits
190
        }
191
        notifer.Enabled = enabled == "on"
192
        _, err = notifier.Update(notif, notifer)
193
        if err != nil {
194
                utils.Log(3, fmt.Sprintf("issue updating notifier: %v", err))
195
        }
196
        notifier.OnSave(notifer.Method)
197
        executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
198
}
@@ -1281,9 +1300,6 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func apiAllServicesHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

205
func apiAllServicesHandler(w http.ResponseWriter, r *http.Request) {
206
        if !isAPIAuthorized(r) {
207
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
208
                return
209
        }
210
        allServices := core.CoreApp.Services
211
        var services []types.ServiceInterface
212
        for _, s := range allServices {
213
                service := s.Select()
214
                service.Failures = nil
215
                services = append(services, core.ReturnService(service))
216
        }
217
        w.Header().Set("Content-Type", "application/json")
218
        json.NewEncoder(w).Encode(services)
219
}
-
func setupHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

-
28
func setupHandler(w http.ResponseWriter, r *http.Request) {
29
        if core.CoreApp.Services != nil {
30
                http.Redirect(w, r, "/", http.StatusSeeOther)
31
                return
32
        }
33
        w.WriteHeader(http.StatusOK)
34
        port := 5432
35
        if os.Getenv("DB_CONN") == "mysql" {
36
                port = 3306
37
        }
38
        var data interface{}
39
        if os.Getenv("DB_CONN") != "" {
40
                data = &types.DbConfig{
41
                        DbConn:      os.Getenv("DB_CONN"),
42
                        DbHost:      os.Getenv("DB_HOST"),
43
                        DbUser:      os.Getenv("DB_USER"),
44
                        DbPass:      os.Getenv("DB_PASS"),
45
                        DbData:      os.Getenv("DB_DATABASE"),
46
                        DbPort:      port,
47
                        Project:     os.Getenv("NAME"),
48
                        Description: os.Getenv("DESCRIPTION"),
49
                        Email:       "",
50
                        Username:    "admin",
51
                        Password:    "",
52
                }
53
        }
54
        executeResponse(w, r, "setup.html", data, nil)
55
}
-
func executeResponse
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

169
func executeResponse(w http.ResponseWriter, r *http.Request, file string, data interface{}, redirect interface{}) {
170
        utils.Http(r)
171
        if url, ok := redirect.(string); ok {
172
                http.Redirect(w, r, url, http.StatusSeeOther)
173
                return
174
        }
175
176
        templates := []string{"base.html", "head.html", "nav.html", "footer.html", "scripts.html", "form_service.html", "form_notifier.html", "form_user.html", "form_checkin.html"}
177
178
        javascripts := []string{"charts.js", "chart_index.js"}
179
180
        render, err := source.TmplBox.String(file)
181
        if err != nil {
182
                utils.Log(4, err)
183
        }
184
185
        // setup the main template and handler funcs
186
        t := template.New("main")
187
        t.Funcs(handlerFuncs(w, r))
188
        t, err = t.Parse(mainTmpl)
189
        if err != nil {
190
                utils.Log(4, err)
191
        }
192
193
        // render all templates
194
        for _, temp := range templates {
195
                tmp, _ := source.TmplBox.String(temp)
196
                t, err = t.Parse(tmp)
197
                if err != nil {
198
                        utils.Log(4, err)
199
                }
200
        }
201
202
        // render all javascript files
203
        for _, temp := range javascripts {
204
                tmp, _ := source.JsBox.String(temp)
205
                t, err = t.Parse(tmp)
206
                if err != nil {
207
                        utils.Log(4, err)
208
                }
209
        }
210
211
        // render the page requested
212
        _, err = t.Parse(render)
213
        if err != nil {
214
                utils.Log(4, err)
215
        }
216
217
        // execute the template
218
        err = t.Execute(w, data)
219
        if err != nil {
220
                utils.Log(4, err)
221
        }
222
}
@@ -1323,21 +1339,21 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func apiAllUsersHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

287
func apiAllUsersHandler(w http.ResponseWriter, r *http.Request) {
288
        if !isAPIAuthorized(r) {
289
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
290
                return
291
        }
292
        users, _ := core.SelectAllUsers()
293
        w.Header().Set("Content-Type", "application/json")
294
        json.NewEncoder(w).Encode(users)
295
}
-
func processSetupHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

-
57
func processSetupHandler(w http.ResponseWriter, r *http.Request) {
58
        var err error
59
        if core.CoreApp.Services != nil {
60
                http.Redirect(w, r, "/", http.StatusSeeOther)
61
                return
62
        }
63
        r.ParseForm()
64
        dbHost := r.PostForm.Get("db_host")
65
        dbUser := r.PostForm.Get("db_user")
66
        dbPass := r.PostForm.Get("db_password")
67
        dbDatabase := r.PostForm.Get("db_database")
68
        dbConn := r.PostForm.Get("db_connection")
69
        dbPort, _ := strconv.Atoi(r.PostForm.Get("db_port"))
70
        project := r.PostForm.Get("project")
71
        username := r.PostForm.Get("username")
72
        password := r.PostForm.Get("password")
73
        sample := r.PostForm.Get("sample_data")
74
        description := r.PostForm.Get("description")
75
        domain := r.PostForm.Get("domain")
76
        email := r.PostForm.Get("email")
77
78
        dir := utils.Directory
79
80
        config := &core.DbConfig{
81
                DbConn:      dbConn,
82
                DbHost:      dbHost,
83
                DbUser:      dbUser,
84
                DbPass:      dbPass,
85
                DbData:      dbDatabase,
86
                DbPort:      dbPort,
87
                Project:     project,
88
                Description: description,
89
                Domain:      domain,
90
                Username:    username,
91
                Password:    password,
92
                Email:       email,
93
                Error:       nil,
94
                Location:    utils.Directory,
95
        }
96
97
        core.Configs, err = config.Save()
98
        if err != nil {
99
                utils.Log(4, err)
100
                config.Error = err
101
                setupResponseError(w, r, config)
102
                return
103
        }
104
105
        core.Configs, err = core.LoadConfig(dir)
106
        if err != nil {
107
                utils.Log(3, err)
108
                config.Error = err
109
                setupResponseError(w, r, config)
110
                return
111
        }
112
113
        err = core.Configs.Connect(false, dir)
114
        if err != nil {
115
                utils.Log(4, err)
116
                core.DeleteConfig()
117
                config.Error = err
118
                setupResponseError(w, r, config)
119
                return
120
        }
121
122
        config.DropDatabase()
123
        config.CreateDatabase()
124
125
        core.CoreApp, err = config.InsertCore()
126
        if err != nil {
127
                utils.Log(4, err)
128
                config.Error = err
129
                setupResponseError(w, r, config)
130
                return
131
        }
132
133
        admin := core.ReturnUser(&types.User{
134
                Username: config.Username,
135
                Password: config.Password,
136
                Email:    config.Email,
137
                Admin:    true,
138
        })
139
        admin.Create()
140
141
        if sample == "on" {
142
                core.InsertSampleData()
143
                core.InsertSampleHits()
144
        }
145
146
        core.InitApp()
147
        resetCookies()
148
        time.Sleep(2 * time.Second)
149
        http.Redirect(w, r, "/", http.StatusSeeOther)
150
}
-
func apiCreateUsersHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

297
func apiCreateUsersHandler(w http.ResponseWriter, r *http.Request) {
298
        if !isAPIAuthorized(r) {
299
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
300
                return
301
        }
302
        var user *types.User
303
        decoder := json.NewDecoder(r.Body)
304
        err := decoder.Decode(&user)
305
        if err != nil {
306
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
307
                return
308
        }
309
        newUser := core.ReturnUser(user)
310
        uId, err := newUser.Create()
311
        if err != nil {
312
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
313
                return
314
        }
315
        output := apiResponse{
316
                Object: "user",
317
                Method: "create",
318
                Id:     uId,
319
                Status: "success",
320
        }
321
        w.Header().Set("Content-Type", "application/json")
322
        json.NewEncoder(w).Encode(output)
323
}
func apiCreateServiceHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

131
func apiCreateServiceHandler(w http.ResponseWriter, r *http.Request) {
132
        if !isAPIAuthorized(r) {
133
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
134
                return
135
        }
136
        var service *types.Service
137
        decoder := json.NewDecoder(r.Body)
138
        err := decoder.Decode(&service)
139
        if err != nil {
140
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
141
                return
142
        }
143
        newService := core.ReturnService(service)
144
        _, err = newService.Create(true)
145
        if err != nil {
146
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
147
                return
148
        }
149
        w.Header().Set("Content-Type", "application/json")
150
        json.NewEncoder(w).Encode(service)
151
}
-
func apiServiceDeleteHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

-
179
func apiServiceDeleteHandler(w http.ResponseWriter, r *http.Request) {
180
        if !isAPIAuthorized(r) {
181
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
182
                return
183
        }
184
        vars := mux.Vars(r)
185
        service := core.SelectService(utils.StringInt(vars["id"]))
186
        if service == nil {
187
                http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
188
                return
189
        }
190
        err := service.Delete()
191
        if err != nil {
192
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
193
                return
194
        }
195
        output := apiResponse{
196
                Object: "service",
197
                Method: "delete",
198
                Id:     service.Id,
199
                Status: "success",
200
        }
201
        w.Header().Set("Content-Type", "application/json")
202
        json.NewEncoder(w).Encode(output)
203
}
+
func processSetupHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

+
40
func processSetupHandler(w http.ResponseWriter, r *http.Request) {
41
        var err error
42
        if core.Services() != nil {
43
                http.Redirect(w, r, "/", http.StatusSeeOther)
44
                return
45
        }
46
        r.ParseForm()
47
        dbHost := r.PostForm.Get("db_host")
48
        dbUser := r.PostForm.Get("db_user")
49
        dbPass := r.PostForm.Get("db_password")
50
        dbDatabase := r.PostForm.Get("db_database")
51
        dbConn := r.PostForm.Get("db_connection")
52
        dbPort := utils.StringInt(r.PostForm.Get("db_port"))
53
        project := r.PostForm.Get("project")
54
        username := r.PostForm.Get("username")
55
        password := r.PostForm.Get("password")
56
        //sample := r.PostForm.Get("sample_data")
57
        description := r.PostForm.Get("description")
58
        domain := r.PostForm.Get("domain")
59
        email := r.PostForm.Get("email")
60
        dir := utils.Directory
61
62
        config := &core.DbConfig{
63
                DbConn:      dbConn,
64
                DbHost:      dbHost,
65
                DbUser:      dbUser,
66
                DbPass:      dbPass,
67
                DbData:      dbDatabase,
68
                DbPort:      dbPort,
69
                Project:     project,
70
                Description: description,
71
                Domain:      domain,
72
                Username:    username,
73
                Password:    password,
74
                Email:       email,
75
                Error:       nil,
76
                Location:    utils.Directory,
77
        }
78
79
        if core.Configs, err = config.Save(); err != nil {
80
                utils.Log(4, err)
81
                config.Error = err
82
                setupResponseError(w, r, config)
83
                return
84
        }
85
86
        if core.Configs, err = core.LoadConfigFile(dir); err != nil {
87
                utils.Log(3, err)
88
                config.Error = err
89
                setupResponseError(w, r, config)
90
                return
91
        }
92
93
        if err = core.Configs.Connect(false, dir); err != nil {
94
                utils.Log(4, err)
95
                core.DeleteConfig()
96
                config.Error = err
97
                setupResponseError(w, r, config)
98
                return
99
        }
100
101
        config.DropDatabase()
102
        config.CreateDatabase()
103
104
        core.CoreApp, err = config.InsertCore()
105
        if err != nil {
106
                utils.Log(4, err)
107
                config.Error = err
108
                setupResponseError(w, r, config)
109
                return
110
        }
111
112
        admin := core.ReturnUser(&types.User{
113
                Username: config.Username,
114
                Password: config.Password,
115
                Email:    config.Email,
116
                Admin:    true,
117
        })
118
        admin.Create()
119
120
        core.SampleData()
121
        core.InitApp()
122
        resetCookies()
123
        time.Sleep(2 * time.Second)
124
        http.Redirect(w, r, "/", http.StatusSeeOther)
125
}
func apiUserDeleteHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

261
func apiUserDeleteHandler(w http.ResponseWriter, r *http.Request) {
262
        if !isAPIAuthorized(r) {
263
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
264
                return
265
        }
266
        vars := mux.Vars(r)
267
        user, err := core.SelectUser(utils.StringInt(vars["id"]))
268
        if err != nil {
269
                http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
270
                return
271
        }
272
        err = user.Delete()
273
        if err != nil {
274
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
275
                return
276
        }
277
        output := apiResponse{
278
                Object: "user",
279
                Method: "delete",
280
                Id:     user.Id,
281
                Status: "success",
282
        }
283
        w.Header().Set("Content-Type", "application/json")
284
        json.NewEncoder(w).Encode(output)
285
}
+
func apiServiceDeleteHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

+
179
func apiServiceDeleteHandler(w http.ResponseWriter, r *http.Request) {
180
        if !isAPIAuthorized(r) {
181
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
182
                return
183
        }
184
        vars := mux.Vars(r)
185
        service := core.SelectService(utils.StringInt(vars["id"]))
186
        if service == nil {
187
                http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
188
                return
189
        }
190
        err := service.Delete()
191
        if err != nil {
192
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
193
                return
194
        }
195
        output := apiResponse{
196
                Object: "service",
197
                Method: "delete",
198
                Id:     service.Id,
199
                Status: "success",
200
        }
201
        w.Header().Set("Content-Type", "application/json")
202
        json.NewEncoder(w).Encode(output)
203
}
+
func apiUserHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/api.go:

221
func apiUserHandler(w http.ResponseWriter, r *http.Request) {
222
        if !isAPIAuthorized(r) {
223
                http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
224
                return
225
        }
226
        vars := mux.Vars(r)
227
        user, err := core.SelectUser(utils.StringInt(vars["id"]))
228
        if err != nil {
229
                http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
230
                return
231
        }
232
        w.Header().Set("Content-Type", "application/json")
233
        json.NewEncoder(w).Encode(user)
234
}
@@ -1357,7 +1373,7 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73 200
func testNotificationHandler(w http.ResponseWriter, r *http.Request) {
201
        var err error
202
        if !IsAuthenticated(r) {
203
                http.Redirect(w, r, "/", http.StatusSeeOther)
204
                return
205
        }
206
        form := parseForm(r)
207
        vars := mux.Vars(r)
208
        method := vars["method"]
209
        enabled := form.Get("enable")
210
        host := form.Get("host")
211
        port := int(utils.StringInt(form.Get("port")))
212
        username := form.Get("username")
213
        password := form.Get("password")
214
        var1 := form.Get("var1")
215
        var2 := form.Get("var2")
216
        apiKey := form.Get("api_key")
217
        apiSecret := form.Get("api_secret")
218
        limits := int(utils.StringInt(form.Get("limits")))
219
220
        fakeNotifer, notif, err := notifier.SelectNotifier(method)
221
        if err != nil {
222
                utils.Log(3, fmt.Sprintf("issue saving notifier %v: %v", method, err))
223
                executeResponse(w, r, "settings.html", core.CoreApp, "/settings")
224
                return
225
        }
226
227
        notifer := *fakeNotifer
228
229
        if host != "" {
230
                notifer.Host = host
231
        }
232
        if port != 0 {
233
                notifer.Port = port
234
        }
235
        if username != "" {
236
                notifer.Username = username
237
        }
238
        if password != "" && password != "##########" {
239
                notifer.Password = password
240
        }
241
        if var1 != "" {
242
                notifer.Var1 = var1
243
        }
244
        if var2 != "" {
245
                notifer.Var2 = var2
246
        }
247
        if apiKey != "" {
248
                notifer.ApiKey = apiKey
249
        }
250
        if apiSecret != "" {
251
                notifer.ApiSecret = apiSecret
252
        }
253
        if limits != 0 {
254
                notifer.Limits = limits
255
        }
256
        notifer.Enabled = enabled == "on"
257
258
        err = notif.(notifier.Tester).OnTest()
259
        if err == nil {
260
                w.Write([]byte("ok"))
261
        } else {
262
                w.Write([]byte(err.Error()))
263
        }
264
}
func DesktopInit
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/index.go:

-
38
func DesktopInit(ip string, port int) {
39
        var err error
40
        exists := utils.FileExists(utils.Directory + "/statup.db")
41
        if exists {
42
                core.Configs, err = core.LoadConfig(utils.Directory)
43
                if err != nil {
44
                        utils.Log(3, err)
45
                        return
46
                }
47
                err = core.Configs.Connect(false, utils.Directory)
48
                if err != nil {
49
                        utils.Log(3, err)
50
                        return
51
                }
52
                core.InitApp()
53
                RunHTTPServer(ip, port)
54
        }
55
56
        config := &core.DbConfig{
57
                DbConn:      "sqlite",
58
                Project:     "Statup",
59
                Description: "Statup running as an App!",
60
                Domain:      "http://localhost",
61
                Username:    "admin",
62
                Password:    "admin",
63
                Email:       "user@email.com",
64
                Error:       nil,
65
                Location:    utils.Directory,
66
        }
67
68
        config, err = config.Save()
69
        if err != nil {
70
                utils.Log(4, err)
71
        }
72
73
        config.DropDatabase()
74
        config.CreateDatabase()
75
        core.CoreApp = config.CreateCore()
76
77
        if err != nil {
78
                utils.Log(3, err)
79
                return
80
        }
81
82
        core.Configs, err = core.LoadConfig(utils.Directory)
83
        if err != nil {
84
                utils.Log(3, err)
85
                config.Error = err
86
                return
87
        }
88
89
        err = core.Configs.Connect(false, utils.Directory)
90
        if err != nil {
91
                utils.Log(3, err)
92
                core.DeleteConfig()
93
                config.Error = err
94
                return
95
        }
96
97
        admin := core.ReturnUser(&types.User{
98
                Username: config.Username,
99
                Password: config.Password,
100
                Email:    config.Email,
101
                Admin:    true,
102
        })
103
        admin.Create()
104
105
        core.InsertSampleData()
106
107
        config.ApiKey = core.CoreApp.ApiKey
108
        config.ApiSecret = core.CoreApp.ApiSecret
109
        config.Update()
110
111
        core.InitApp()
112
        RunHTTPServer(ip, port)
113
}
+38
func DesktopInit(ip string, port int) {
39
        var err error
40
        exists := utils.FileExists(utils.Directory + "/statup.db")
41
        if exists {
42
                core.Configs, err = core.LoadConfigFile(utils.Directory)
43
                if err != nil {
44
                        utils.Log(3, err)
45
                        return
46
                }
47
                err = core.Configs.Connect(false, utils.Directory)
48
                if err != nil {
49
                        utils.Log(3, err)
50
                        return
51
                }
52
                core.InitApp()
53
                RunHTTPServer(ip, port)
54
        }
55
56
        config := &core.DbConfig{
57
                DbConn:      "sqlite",
58
                Project:     "Statup",
59
                Description: "Statup running as an App!",
60
                Domain:      "http://localhost",
61
                Username:    "admin",
62
                Password:    "admin",
63
                Email:       "user@email.com",
64
                Error:       nil,
65
                Location:    utils.Directory,
66
        }
67
68
        config, err = config.Save()
69
        if err != nil {
70
                utils.Log(4, err)
71
        }
72
73
        config.DropDatabase()
74
        config.CreateDatabase()
75
        core.CoreApp = config.CreateCore()
76
77
        if err != nil {
78
                utils.Log(3, err)
79
                return
80
        }
81
82
        core.Configs, err = core.LoadConfigFile(utils.Directory)
83
        if err != nil {
84
                utils.Log(3, err)
85
                config.Error = err
86
                return
87
        }
88
89
        err = core.Configs.Connect(false, utils.Directory)
90
        if err != nil {
91
                utils.Log(3, err)
92
                core.DeleteConfig()
93
                config.Error = err
94
                return
95
        }
96
97
        admin := core.ReturnUser(&types.User{
98
                Username: config.Username,
99
                Password: config.Password,
100
                Email:    config.Email,
101
                Admin:    true,
102
        })
103
        admin.Create()
104
105
        core.InsertSampleData()
106
107
        config.ApiKey = core.CoreApp.ApiKey
108
        config.ApiSecret = core.CoreApp.ApiSecret
109
        config.Update()
110
111
        core.InitApp()
112
        RunHTTPServer(ip, port)
113
}
func checkinCreateHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/services.go:

233
func checkinCreateHandler(w http.ResponseWriter, r *http.Request) {
234
        if !IsAuthenticated(r) {
235
                http.Redirect(w, r, "/", http.StatusSeeOther)
236
                return
237
        }
238
        vars := mux.Vars(r)
239
        r.ParseForm()
240
        service := core.SelectService(utils.StringInt(vars["id"]))
241
        fmt.Println(service.Name)
242
        name := r.PostForm.Get("name")
243
        interval := utils.StringInt(r.PostForm.Get("interval"))
244
        grace := utils.StringInt(r.PostForm.Get("grace"))
245
        checkin := core.ReturnCheckin(&types.Checkin{
246
                Name:        name,
247
                ServiceId:   service.Id,
248
                Interval:    interval,
249
                GracePeriod: grace,
250
        })
251
        checkin.Create()
252
        executeResponse(w, r, "service.html", service, fmt.Sprintf("/service/%v", service.Id))
253
}
@@ -1392,17 +1408,23 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func @144:15
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

144
func(t time.Duration) string {
145
                        duration, _ := time.ParseDuration(fmt.Sprintf("%vs", t.Seconds()))
146
                        return utils.FormatDuration(duration)
147
                }
+
func setupResponseError
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

+
127
func setupResponseError(w http.ResponseWriter, r *http.Request, a interface{}) {
128
        executeResponse(w, r, "setup.html", a, nil)
129
}
+
func @90:9
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

90
func(html interface{}) template.JS {
91
                        return template.JS(utils.ToString(html))
92
                }
-
func @148:13
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
148
func(t time.Time) int64 {
149
                        return t.UTC().Unix()
150
                }
-
func @132:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

132
func() string {
133
                        return ""
134
                }
-
func setupResponseError
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/setup.go:

-
152
func setupResponseError(w http.ResponseWriter, r *http.Request, a interface{}) {
153
        executeResponse(w, r, "setup.html", a, nil)
154
}
+
func @148:13
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
148
func(t time.Time) int64 {
149
                        return t.UTC().Unix()
150
                }
+ +
func trayHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/index.go:

+
33
func trayHandler(w http.ResponseWriter, r *http.Request) {
34
        executeResponse(w, r, "tray.html", core.CoreApp, nil)
35
}
+ +
func @141:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

+
141
func(t time.Time) string {
142
                        return utils.Timestamp(t).Ago()
143
                }
func @235:15
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

235
func() []types.ServiceInterface {
236
                        return core.CoreApp.Services
237
                }
@@ -1410,172 +1432,145 @@ PACKAGE:github.com/hunterlong/statup/core/notifier DONE:72.73
func @160:17
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

160
func() *types.Checkin {
161
                        return new(types.Checkin)
162
                }
-
func @141:10
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

-
141
func(t time.Time) string {
142
                        return utils.Timestamp(t).Ago()
143
                }
- -
func trayHandler
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/index.go:

-
33
func trayHandler(w http.ResponseWriter, r *http.Request) {
34
        executeResponse(w, r, "tray.html", core.CoreApp, nil)
35
}
-
func @232:11
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/handlers/handlers.go:

232
func(html string) template.HTML {
233
                        return template.HTML(html)
234
                }
-
Package Overview: github.com/hunterlong/statup/notifiers 38.52%

This is a coverage report created after analysis of the github.com/hunterlong/statup/notifiers package. It +

Package Overview: github.com/hunterlong/statup/notifiers 7.00%

This is a coverage report created after analysis of the github.com/hunterlong/statup/notifiers package. It has been generated with the following command:

gocov test github.com/hunterlong/statup/notifiers | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

- - - - - - - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + - + + + - - + - + + - + + + + + + - +
slack.OnSuccess(...)github.com/hunterlong/statup/notifiers/slack.go100.00%4/4
email.OnSuccess(...)github.com/hunterlong/statup/notifiers/email.go100.00%4/4
discord.OnSuccess(...)github.com/hunterlong/statup/notifiers/discord.go100.00%4/4
email.OnFailure(...)github.com/hunterlong/statup/notifiers/email.go100.00%3/3
discord.OnFailure(...)github.com/hunterlong/statup/notifiers/discord.go100.00%3/3
slack.OnFailure(...)github.com/hunterlong/statup/notifiers/slack.go100.00%3/3
emailSource(...)github.com/hunterlong/statup/notifiers/email.go100.00%2/2
webhooker.Select(...)github.com/hunterlong/statup/notifiers/webhook.go100.00%1/1
twilio.Select(...)github.com/hunterlong/statup/notifiers/twilio.go100.00%1/1
slack.Select(...)github.com/hunterlong/statup/notifiers/slack.go100.00%1/1
discord.Select(...)github.com/hunterlong/statup/notifiers/discord.go100.00%1/1
email.Select(...)github.com/hunterlong/statup/notifiers/email.go100.00%1/1
lineNotifier.Select(...)github.com/hunterlong/statup/notifiers/line_notify.go100.00%1/1
discord.Send(...)github.com/hunterlong/statup/notifiers/discord.go87.50%7/8
parseSlackMessage(...)github.com/hunterlong/statup/notifiers/slack.go85.71%6/7
slack.Send(...)github.com/hunterlong/statup/notifiers/slack.go85.71%6/7
email.dialSend(...)github.com/hunterlong/statup/notifiers/email.go83.33%10/12
emailTemplate(...)github.com/hunterlong/statup/notifiers/email.go77.78%7/9
slack.OnTest(...)github.com/hunterlong/statup/notifiers/slack.go77.78%7/9
email.Send(...)github.com/hunterlong/statup/notifiers/email.go66.67%4/6
discord.Select(...)github.com/hunterlong/statup/notifiers/discord.go100.00%1/1
webhooker.Select(...)github.com/hunterlong/statup/notifiers/webhook.go100.00%1/1
slack.Select(...)github.com/hunterlong/statup/notifiers/slack.go100.00%1/1
email.Select(...)github.com/hunterlong/statup/notifiers/email.go100.00%1/1
init(...)github.com/hunterlong/statup/notifiers/line_notify.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/slack.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/twilio.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/webhook.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/email.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/discord.go66.67%2/3
discord.OnTest(...)github.com/hunterlong/statup/notifiers/discord.go55.00%11/20
init(...)github.com/hunterlong/statup/notifiers/twilio.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/webhook.go66.67%2/3
init(...)github.com/hunterlong/statup/notifiers/slack.go66.67%2/3
twilio.Send(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/25
webhooker.run(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/21
discord.OnTest(...)github.com/hunterlong/statup/notifiers/discord.go0.00%0/20
lineNotifier.Send(...)github.com/hunterlong/statup/notifiers/line_notify.go0.00%0/14
email.dialSend(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/12
emailTemplate(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/9
webhooker.OnTest(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/9
slack.OnTest(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/9
email.OnTest(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/8
discord.Send(...)github.com/hunterlong/statup/notifiers/discord.go0.00%0/8
replaceBodyText(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/7
slack.Send(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/7
parseSlackMessage(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/7
email.Send(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/6
twilioSuccess(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/5
lineNotifier.OnSuccess(...)github.com/hunterlong/statup/notifiers/line_notify.go0.00%0/4
webhooker.Send(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/4
twilio.OnSuccess(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/4
discord.OnSuccess(...)github.com/hunterlong/statup/notifiers/discord.go0.00%0/4
slack.OnSuccess(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/4
email.OnSuccess(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/4
webhooker.OnSuccess(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/4
webhooker.OnFailure(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/3
twilioError(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/3
twilio.OnSuccess(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/4
twilio.OnFailure(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/3
lineNotifier.OnFailure(...)github.com/hunterlong/statup/notifiers/line_notify.go0.00%0/3
discord.OnSave(...)github.com/hunterlong/statup/notifiers/discord.go0.00%0/3
lineNotifier.OnFailure(...)github.com/hunterlong/statup/notifiers/line_notify.go0.00%0/3
email.OnFailure(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/3
slack.OnSave(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/3
email.OnSave(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/2
twilioError(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/3
slack.OnFailure(...)github.com/hunterlong/statup/notifiers/slack.go0.00%0/3
webhooker.OnFailure(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/3
discord.OnFailure(...)github.com/hunterlong/statup/notifiers/discord.go0.00%0/3
twilio.OnTest(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/2
lineNotifier.OnSave(...)github.com/hunterlong/statup/notifiers/line_notify.go0.00%0/2
emailSource(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/2
email.OnSave(...)github.com/hunterlong/statup/notifiers/email.go0.00%0/2
twilio.OnSave(...)github.com/hunterlong/statup/notifiers/twilio.go0.00%0/2
webhooker.OnSave(...)github.com/hunterlong/statup/notifiers/webhook.go0.00%0/1
github.com/hunterlong/statup/notifiers38.52%99/257
github.com/hunterlong/statup/notifiers7.00%18/257
-
func slack.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
127
func (u *slack) OnSuccess(s *types.Service) {
128
        if !u.Online {
129
                message := slackMessage{
130
                        Service:  s,
131
                        Template: successTemplate,
132
                        Time:     time.Now().Unix(),
133
                }
134
                parseSlackMessage(successTemplate, message)
135
        }
136
        u.Online = true
137
}
- -
func email.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
195
func (u *email) OnSuccess(s *types.Service) {
196
        if !u.Online {
197
                email := &emailOutgoing{
198
                        To:       emailer.GetValue("var2"),
199
                        Subject:  fmt.Sprintf("Service %v is Back Online", s.Name),
200
                        Template: mainEmailTemplate,
201
                        Data:     interface{}(s),
202
                        From:     emailer.GetValue("var1"),
203
                }
204
                u.AddQueue(email)
205
        }
206
        u.Online = true
207
}
- -
func discord.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

-
83
func (u *discord) OnSuccess(s *types.Service) {
84
        if !u.Online {
85
                msg := fmt.Sprintf(`{"content": "Your service '%v' is back online!"}`, s.Name)
86
                u.AddQueue(msg)
87
        }
88
        u.Online = true
89
}
- -
func email.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
182
func (u *email) OnFailure(s *types.Service, f *types.Failure) {
183
        email := &emailOutgoing{
184
                To:       emailer.GetValue("var2"),
185
                Subject:  fmt.Sprintf("Service %v is Failing", s.Name),
186
                Template: mainEmailTemplate,
187
                Data:     interface{}(s),
188
                From:     emailer.GetValue("var1"),
189
        }
190
        u.AddQueue(email)
191
        u.Online = false
192
}
- -
func discord.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

-
76
func (u *discord) OnFailure(s *types.Service, f *types.Failure) {
77
        msg := fmt.Sprintf(`{"content": "Your service '%v' is currently failing! Reason: %v"}`, s.Name, f.Issue)
78
        u.AddQueue(msg)
79
        u.Online = false
80
}
- -
func slack.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
116
func (u *slack) OnFailure(s *types.Service, f *types.Failure) {
117
        message := slackMessage{
118
                Service:  s,
119
                Template: failingTemplate,
120
                Time:     time.Now().Unix(),
121
        }
122
        parseSlackMessage(failingTemplate, message)
123
        u.Online = false
124
}
- -
func emailSource
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
249
func emailSource(email *emailOutgoing) {
250
        source := emailTemplate(email.Template, email.Data)
251
        email.Source = source
252
}
- -
func webhooker.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

-
97
func (w *webhooker) Select() *notifier.Notification {
98
        return w.Notification
99
}
-
func twilio.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

78
func (u *twilio) Select() *notifier.Notification {
79
        return u.Notification
80
}
-
func slack.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
97
func (u *slack) Select() *notifier.Notification {
98
        return u.Notification
99
}
+
func lineNotifier.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

+
78
func (u *lineNotifier) Select() *notifier.Notification {
79
        return u.Notification
80
}
func discord.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

71
func (u *discord) Select() *notifier.Notification {
72
        return u.Notification
73
}
+
func webhooker.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

+
97
func (w *webhooker) Select() *notifier.Notification {
98
        return w.Notification
99
}
+ +
func slack.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
97
func (u *slack) Select() *notifier.Notification {
98
        return u.Notification
99
}
+
func email.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

209
func (u *email) Select() *notifier.Notification {
210
        return u.Notification
211
}
-
func lineNotifier.Select
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

-
78
func (u *lineNotifier) Select() *notifier.Notification {
79
        return u.Notification
80
}
- -
func discord.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

-
59
func (u *discord) Send(msg interface{}) error {
60
        message := msg.(string)
61
        req, _ := http.NewRequest("POST", discorder.GetValue("host"), bytes.NewBuffer([]byte(message)))
62
        req.Header.Set("Content-Type", "application/json")
63
        client := &http.Client{}
64
        resp, err := client.Do(req)
65
        if err != nil {
66
                return err
67
        }
68
        return resp.Body.Close()
69
}
- -
func parseSlackMessage
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
59
func parseSlackMessage(temp string, data interface{}) error {
60
        buf := new(bytes.Buffer)
61
        slackTemp, _ := template.New("slack").Parse(temp)
62
        err := slackTemp.Execute(buf, data)
63
        if err != nil {
64
                return err
65
        }
66
        slacker.AddQueue(buf.String())
67
        return nil
68
}
- -
func slack.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
85
func (u *slack) Send(msg interface{}) error {
86
        message := msg.(string)
87
        client := new(http.Client)
88
        res, err := client.Post(u.Host, "application/json", bytes.NewBuffer([]byte(message)))
89
        if err != nil {
90
                return err
91
        }
92
        defer res.Body.Close()
93
        //contents, _ := ioutil.ReadAll(res.Body)
94
        return nil
95
}
- -
func email.dialSend
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
233
func (u *email) dialSend(email *emailOutgoing) error {
234
        mailer = mail.NewDialer(emailer.Host, emailer.Port, emailer.Username, emailer.Password)
235
        mailer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
236
        emailSource(email)
237
        m := mail.NewMessage()
238
        m.SetHeader("From", email.From)
239
        m.SetHeader("To", email.To)
240
        m.SetHeader("Subject", email.Subject)
241
        m.SetBody("text/html", email.Source)
242
        if err := mailer.DialAndSend(m); err != nil {
243
                utils.Log(3, fmt.Sprintf("email '%v' sent to: %v using the %v template (size: %v) %v", email.Subject, email.To, email.Template, len([]byte(email.Source)), err))
244
                return err
245
        }
246
        return nil
247
}
- -
func emailTemplate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
254
func emailTemplate(contents string, data interface{}) string {
255
        t := template.New("email")
256
        t, err := t.Parse(contents)
257
        if err != nil {
258
                utils.Log(3, err)
259
        }
260
        var tpl bytes.Buffer
261
        if err := t.Execute(&tpl, data); err != nil {
262
                utils.Log(2, err)
263
        }
264
        result := tpl.String()
265
        return result
266
}
- -
func slack.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
101
func (u *slack) OnTest() error {
102
        client := new(http.Client)
103
        res, err := client.Post(u.Host, "application/json", bytes.NewBuffer([]byte(`{"text":"testing message"}`)))
104
        if err != nil {
105
                return err
106
        }
107
        defer res.Body.Close()
108
        contents, _ := ioutil.ReadAll(res.Body)
109
        if string(contents) != "ok" {
110
                return errors.New("The slack response was incorrect, check the URL")
111
        }
112
        return err
113
}
- -
func email.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
161
func (u *email) Send(msg interface{}) error {
162
        email := msg.(*emailOutgoing)
163
        err := u.dialSend(email)
164
        if err != nil {
165
                utils.Log(3, fmt.Sprintf("email Notifier could not send email: %v", err))
166
                return err
167
        }
168
        return nil
169
}
-
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

51
func init() {
52
        err := notifier.AddNotifier(lineNotify)
53
        if err != nil {
54
                panic(err)
55
        }
56
}
-
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

-
77
func init() {
78
        err := notifier.AddNotifier(slacker)
79
        if err != nil {
80
                panic(err)
81
        }
82
}
- -
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

-
71
func init() {
72
        err := notifier.AddNotifier(twilioNotifier)
73
        if err != nil {
74
                panic(err)
75
        }
76
}
- -
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

-
81
func init() {
82
        err := notifier.AddNotifier(webhook)
83
        if err != nil {
84
                panic(err)
85
        }
86
}
-
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

153
func init() {
154
        err := notifier.AddNotifier(emailer)
155
        if err != nil {
156
                panic(err)
157
        }
158
}
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

51
func init() {
52
        err := notifier.AddNotifier(discorder)
53
        if err != nil {
54
                panic(err)
55
        }
56
}
-
func discord.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

-
99
func (u *discord) OnTest() error {
100
        outError := errors.New("Incorrect discord URL, please confirm URL is correct")
101
        message := `{"content": "Testing the discord notifier"}`
102
        req, _ := http.NewRequest("POST", discorder.Host, bytes.NewBuffer([]byte(message)))
103
        req.Header.Set("Content-Type", "application/json")
104
        client := &http.Client{}
105
        resp, err := client.Do(req)
106
        if err != nil {
107
                return err
108
        }
109
        defer resp.Body.Close()
110
        contents, _ := ioutil.ReadAll(resp.Body)
111
        if string(contents) == "" {
112
                return nil
113
        }
114
        var d discordTestJson
115
        err = json.Unmarshal(contents, &d)
116
        if err != nil {
117
                return outError
118
        }
119
        if d.Code == 0 {
120
                return outError
121
        }
122
        fmt.Println("discord: ", string(contents))
123
        return nil
124
}
+
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

+
71
func init() {
72
        err := notifier.AddNotifier(twilioNotifier)
73
        if err != nil {
74
                panic(err)
75
        }
76
}
+ +
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

+
81
func init() {
82
        err := notifier.AddNotifier(webhook)
83
        if err != nil {
84
                panic(err)
85
        }
86
}
+ +
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
77
func init() {
78
        err := notifier.AddNotifier(slacker)
79
        if err != nil {
80
                panic(err)
81
        }
82
}
func twilio.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

83
func (u *twilio) Send(msg interface{}) error {
84
        message := msg.(string)
85
        twilioUrl := fmt.Sprintf("https://api.twilio.com/2010-04-01/Accounts/%v/Messages.json", u.GetValue("api_key"))
86
        client := &http.Client{}
87
        v := url.Values{}
88
        v.Set("To", "+"+u.Var1)
89
        v.Set("From", "+"+u.Var2)
90
        v.Set("Body", message)
91
        rb := *strings.NewReader(v.Encode())
92
        req, err := http.NewRequest("POST", twilioUrl, &rb)
93
        if err != nil {
94
                return err
95
        }
96
        req.SetBasicAuth(u.ApiKey, u.ApiSecret)
97
        req.Header.Add("Accept", "application/json")
98
        req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
99
        res, err := client.Do(req)
100
        if err != nil {
101
                return err
102
        }
103
        defer res.Body.Close()
104
        contents, _ := ioutil.ReadAll(res.Body)
105
        success, _ := twilioSuccess(contents)
106
        if !success {
107
                errorOut := twilioError(contents)
108
                out := fmt.Sprintf("Error code %v - %v", errorOut.Code, errorOut.Message)
109
                return errors.New(out)
110
        }
111
        return nil
112
}
func webhooker.run
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

-
113
func (w *webhooker) run(body string) (*http.Response, error) {
114
        utils.Log(1, fmt.Sprintf("sending body: '%v' to %v as a %v request", body, w.Host, w.Var1))
115
        client := new(http.Client)
116
        client.Timeout = time.Duration(10 * time.Second)
117
        var buf *bytes.Buffer
118
        buf = bytes.NewBuffer(nil)
119
        if w.Var2 != "" {
120
                buf = bytes.NewBuffer([]byte(w.Var2))
121
        }
122
        req, err := http.NewRequest(w.Var1, w.Host, buf)
123
        if err != nil {
124
                return nil, err
125
        }
126
        if w.ApiSecret != "" {
127
                splitArray := strings.Split(w.ApiSecret, ",")
128
                for _, a := range splitArray {
129
                        split := strings.Split(a, "=")
130
                        req.Header.Add(split[0], split[1])
131
                }
132
        }
133
        if w.ApiSecret != "" {
134
                req.Header.Add("Content-Type", w.ApiSecret)
135
        }
136
        resp, err := client.Do(req)
137
        if err != nil {
138
                return nil, err
139
        }
140
        return resp, err
141
}
+113
func (w *webhooker) run(body string) (*http.Response, error) {
114
        utils.Log(1, fmt.Sprintf("sending body: '%v' to %v as a %v request", body, w.Host, w.Var1))
115
        client := new(http.Client)
116
        client.Timeout = time.Duration(10 * time.Second)
117
        var buf *bytes.Buffer
118
        buf = bytes.NewBuffer(nil)
119
        if w.Var2 != "" {
120
                buf = bytes.NewBuffer([]byte(w.Var2))
121
        }
122
        req, err := http.NewRequest(w.Var1, w.Host, buf)
123
        if err != nil {
124
                return nil, err
125
        }
126
        if w.ApiSecret != "" {
127
                splitArray := strings.Split(w.ApiSecret, ",")
128
                for _, a := range splitArray {
129
                        split := strings.Split(a, "=")
130
                        req.Header.Add(split[0], split[1])
131
                }
132
        }
133
        if w.ApiKey != "" {
134
                req.Header.Add("Content-Type", w.ApiKey)
135
        }
136
        resp, err := client.Do(req)
137
        if err != nil {
138
                return nil, err
139
        }
140
        return resp, err
141
}
+ +
func discord.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

+
99
func (u *discord) OnTest() error {
100
        outError := errors.New("Incorrect discord URL, please confirm URL is correct")
101
        message := `{"content": "Testing the discord notifier"}`
102
        req, _ := http.NewRequest("POST", discorder.Host, bytes.NewBuffer([]byte(message)))
103
        req.Header.Set("Content-Type", "application/json")
104
        client := &http.Client{}
105
        resp, err := client.Do(req)
106
        if err != nil {
107
                return err
108
        }
109
        defer resp.Body.Close()
110
        contents, _ := ioutil.ReadAll(resp.Body)
111
        if string(contents) == "" {
112
                return nil
113
        }
114
        var d discordTestJson
115
        err = json.Unmarshal(contents, &d)
116
        if err != nil {
117
                return outError
118
        }
119
        if d.Code == 0 {
120
                return outError
121
        }
122
        fmt.Println("discord: ", string(contents))
123
        return nil
124
}
func lineNotifier.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

59
func (u *lineNotifier) Send(msg interface{}) error {
60
        message := msg.(string)
61
        client := new(http.Client)
62
        v := url.Values{}
63
        v.Set("message", message)
64
        req, err := http.NewRequest("POST", "https://notify-api.line.me/api/notify", strings.NewReader(v.Encode()))
65
        if err != nil {
66
                return err
67
        }
68
        req.Header.Add("Authorization", fmt.Sprintf("Bearer %v", u.GetValue("api_secret")))
69
        req.Header.Add("Accept", "application/json")
70
        req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
71
        _, err = client.Do(req)
72
        if err != nil {
73
                return err
74
        }
75
        return nil
76
}
+
func email.dialSend
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
233
func (u *email) dialSend(email *emailOutgoing) error {
234
        mailer = mail.NewDialer(emailer.Host, emailer.Port, emailer.Username, emailer.Password)
235
        mailer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
236
        emailSource(email)
237
        m := mail.NewMessage()
238
        m.SetHeader("From", email.From)
239
        m.SetHeader("To", email.To)
240
        m.SetHeader("Subject", email.Subject)
241
        m.SetBody("text/html", email.Source)
242
        if err := mailer.DialAndSend(m); err != nil {
243
                utils.Log(3, fmt.Sprintf("email '%v' sent to: %v using the %v template (size: %v) %v", email.Subject, email.To, email.Template, len([]byte(email.Source)), err))
244
                return err
245
        }
246
        return nil
247
}
+ +
func emailTemplate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
254
func emailTemplate(contents string, data interface{}) string {
255
        t := template.New("email")
256
        t, err := t.Parse(contents)
257
        if err != nil {
258
                utils.Log(3, err)
259
        }
260
        var tpl bytes.Buffer
261
        if err := t.Execute(&tpl, data); err != nil {
262
                utils.Log(2, err)
263
        }
264
        result := tpl.String()
265
        return result
266
}
+
func webhooker.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

143
func (w *webhooker) OnTest() error {
144
        service := &types.Service{
145
                Id:             1,
146
                Name:           "Interpol - All The Rage Back Home",
147
                Domain:         "https://www.youtube.com/watch?v=-u6DvRyyKGU",
148
                ExpectedStatus: 200,
149
                Interval:       30,
150
                Type:           "http",
151
                Method:         "GET",
152
                Timeout:        20,
153
                LastStatusCode: 404,
154
                Expected:       "test example",
155
                LastResponse:   "<html>this is an example response</html>",
156
                CreatedAt:      time.Now().Add(-24 * time.Hour),
157
        }
158
        body := replaceBodyText(w.Var2, service, nil)
159
        resp, err := w.run(body)
160
        if err != nil {
161
                return err
162
        }
163
        defer resp.Body.Close()
164
        content, err := ioutil.ReadAll(resp.Body)
165
        utils.Log(1, fmt.Sprintf("webhook notifier received: '%v'", string(content)))
166
        return err
167
}
+
func slack.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
101
func (u *slack) OnTest() error {
102
        client := new(http.Client)
103
        res, err := client.Post(u.Host, "application/json", bytes.NewBuffer([]byte(`{"text":"testing message"}`)))
104
        if err != nil {
105
                return err
106
        }
107
        defer res.Body.Close()
108
        contents, _ := ioutil.ReadAll(res.Body)
109
        if string(contents) != "ok" {
110
                return errors.New("The slack response was incorrect, check the URL")
111
        }
112
        return err
113
}
+
func email.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

221
func (u *email) OnTest() error {
222
        host := fmt.Sprintf("%v:%v", u.Host, u.Port)
223
        dial, err := smtp.Dial(host)
224
        dial.StartTLS(&tls.Config{InsecureSkipVerify: true})
225
        if err != nil {
226
                utils.Log(3, err)
227
                return err
228
        }
229
        auth := smtp.PlainAuth("", u.Username, u.Password, host)
230
        return dial.Auth(auth)
231
}
+
func discord.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

+
59
func (u *discord) Send(msg interface{}) error {
60
        message := msg.(string)
61
        req, _ := http.NewRequest("POST", discorder.GetValue("host"), bytes.NewBuffer([]byte(message)))
62
        req.Header.Set("Content-Type", "application/json")
63
        client := &http.Client{}
64
        resp, err := client.Do(req)
65
        if err != nil {
66
                return err
67
        }
68
        return resp.Body.Close()
69
}
+
func replaceBodyText
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

101
func replaceBodyText(body string, s *types.Service, f *types.Failure) string {
102
        if s != nil {
103
                body = strings.Replace(body, "%service.Name", s.Name, -1)
104
                body = strings.Replace(body, "%service.Id", utils.ToString(s.Id), -1)
105
                body = strings.Replace(body, "%service.Online", utils.ToString(s.Online), -1)
106
        }
107
        if f != nil {
108
                body = strings.Replace(body, "%failure.Issue", f.Issue, -1)
109
        }
110
        return body
111
}
+
func slack.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
85
func (u *slack) Send(msg interface{}) error {
86
        message := msg.(string)
87
        client := new(http.Client)
88
        res, err := client.Post(u.Host, "application/json", bytes.NewBuffer([]byte(message)))
89
        if err != nil {
90
                return err
91
        }
92
        defer res.Body.Close()
93
        //contents, _ := ioutil.ReadAll(res.Body)
94
        return nil
95
}
+ +
func parseSlackMessage
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
59
func parseSlackMessage(temp string, data interface{}) error {
60
        buf := new(bytes.Buffer)
61
        slackTemp, _ := template.New("slack").Parse(temp)
62
        err := slackTemp.Execute(buf, data)
63
        if err != nil {
64
                return err
65
        }
66
        slacker.AddQueue(buf.String())
67
        return nil
68
}
+ +
func email.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
161
func (u *email) Send(msg interface{}) error {
162
        email := msg.(*emailOutgoing)
163
        err := u.dialSend(email)
164
        if err != nil {
165
                utils.Log(3, fmt.Sprintf("email Notifier could not send email: %v", err))
166
                return err
167
        }
168
        return nil
169
}
+
func twilioSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

145
func twilioSuccess(res []byte) (bool, twilioResponse) {
146
        var obj twilioResponse
147
        json.Unmarshal(res, &obj)
148
        if obj.Status == "queued" {
149
                return true, obj
150
        }
151
        return false, obj
152
}
@@ -1585,32 +1580,47 @@ PACKAGE:github.com/hunterlong/statup/handlers DONE:67.61
func webhooker.Send
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

89
func (w *webhooker) Send(msg interface{}) error {
90
        resp, err := w.run(msg.(string))
91
        if err == nil {
92
                resp.Body.Close()
93
        }
94
        return err
95
}
-
func twilio.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

-
122
func (u *twilio) OnSuccess(s *types.Service) {
123
        if !u.Online {
124
                msg := fmt.Sprintf("Your service '%v' is back online!", s.Name)
125
                u.AddQueue(msg)
126
        }
127
        u.Online = true
128
}
+
func discord.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

+
83
func (u *discord) OnSuccess(s *types.Service) {
84
        if !u.Online {
85
                msg := fmt.Sprintf(`{"content": "Your service '%v' is back online!"}`, s.Name)
86
                u.AddQueue(msg)
87
        }
88
        u.Online = true
89
}
+ +
func slack.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
127
func (u *slack) OnSuccess(s *types.Service) {
128
        if !u.Online {
129
                message := slackMessage{
130
                        Service:  s,
131
                        Template: successTemplate,
132
                        Time:     time.Now().Unix(),
133
                }
134
                parseSlackMessage(successTemplate, message)
135
        }
136
        u.Online = true
137
}
+ +
func email.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
195
func (u *email) OnSuccess(s *types.Service) {
196
        if !u.Online {
197
                email := &emailOutgoing{
198
                        To:       emailer.GetValue("var2"),
199
                        Subject:  fmt.Sprintf("Service %v is Back Online", s.Name),
200
                        Template: mainEmailTemplate,
201
                        Data:     interface{}(s),
202
                        From:     emailer.GetValue("var1"),
203
                }
204
                u.AddQueue(email)
205
        }
206
        u.Online = true
207
}
func webhooker.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

177
func (w *webhooker) OnSuccess(s *types.Service) {
178
        if !w.Online {
179
                msg := replaceBodyText(w.Var2, s, nil)
180
                webhook.AddQueue(msg)
181
        }
182
        w.Online = true
183
}
-
func webhooker.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

-
170
func (w *webhooker) OnFailure(s *types.Service, f *types.Failure) {
171
        msg := replaceBodyText(w.Var2, s, f)
172
        webhook.AddQueue(msg)
173
        w.Online = false
174
}
- -
func twilioError
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

-
154
func twilioError(res []byte) twilioErrorObj {
155
        var obj twilioErrorObj
156
        json.Unmarshal(res, &obj)
157
        return obj
158
}
+
func twilio.OnSuccess
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

+
122
func (u *twilio) OnSuccess(s *types.Service) {
123
        if !u.Online {
124
                msg := fmt.Sprintf("Your service '%v' is back online!", s.Name)
125
                u.AddQueue(msg)
126
        }
127
        u.Online = true
128
}
func twilio.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

115
func (u *twilio) OnFailure(s *types.Service, f *types.Failure) {
116
        msg := fmt.Sprintf("Your service '%v' is currently offline!", s.Name)
117
        u.AddQueue(msg)
118
        u.Online = false
119
}
+
func discord.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

+
92
func (u *discord) OnSave() error {
93
        msg := fmt.Sprintf(`{"content": "The discord notifier on Statup was just updated."}`)
94
        u.AddQueue(msg)
95
        return nil
96
}
+
func lineNotifier.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

83
func (u *lineNotifier) OnFailure(s *types.Service, f *types.Failure) {
84
        msg := fmt.Sprintf("Your service '%v' is currently offline!", s.Name)
85
        u.AddQueue(msg)
86
        u.Online = false
87
}
-
func discord.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

-
92
func (u *discord) OnSave() error {
93
        msg := fmt.Sprintf(`{"content": "The discord notifier on Statup was just updated."}`)
94
        u.AddQueue(msg)
95
        return nil
96
}
+
func email.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
182
func (u *email) OnFailure(s *types.Service, f *types.Failure) {
183
        email := &emailOutgoing{
184
                To:       emailer.GetValue("var2"),
185
                Subject:  fmt.Sprintf("Service %v is Failing", s.Name),
186
                Template: mainEmailTemplate,
187
                Data:     interface{}(s),
188
                From:     emailer.GetValue("var1"),
189
        }
190
        u.AddQueue(email)
191
        u.Online = false
192
}
func slack.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

140
func (u *slack) OnSave() error {
141
        message := fmt.Sprintf("Notification %v is receiving updated information.", u.Method)
142
        u.AddQueue(message)
143
        return nil
144
}
-
func email.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

-
214
func (u *email) OnSave() error {
215
        utils.Log(1, fmt.Sprintf("Notification %v is receiving updated information.", u.Method))
216
        // Do updating stuff here
217
        return nil
218
}
+
func twilioError
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

+
154
func twilioError(res []byte) twilioErrorObj {
155
        var obj twilioErrorObj
156
        json.Unmarshal(res, &obj)
157
        return obj
158
}
+ +
func slack.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/slack.go:

+
116
func (u *slack) OnFailure(s *types.Service, f *types.Failure) {
117
        message := slackMessage{
118
                Service:  s,
119
                Template: failingTemplate,
120
                Time:     time.Now().Unix(),
121
        }
122
        parseSlackMessage(failingTemplate, message)
123
        u.Online = false
124
}
+ +
func webhooker.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/webhook.go:

+
170
func (w *webhooker) OnFailure(s *types.Service, f *types.Failure) {
171
        msg := replaceBodyText(w.Var2, s, f)
172
        webhook.AddQueue(msg)
173
        w.Online = false
174
}
+ +
func discord.OnFailure
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/discord.go:

+
76
func (u *discord) OnFailure(s *types.Service, f *types.Failure) {
77
        msg := fmt.Sprintf(`{"content": "Your service '%v' is currently failing! Reason: %v"}`, s.Name, f.Issue)
78
        u.AddQueue(msg)
79
        u.Online = false
80
}
func twilio.OnTest
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

140
func (u *twilio) OnTest() error {
141
        msg := fmt.Sprintf("Testing the Twilio SMS Notifier")
142
        return u.Send(msg)
143
}
@@ -1618,6 +1628,12 @@ PACKAGE:github.com/hunterlong/statup/handlers DONE:67.61
func lineNotifier.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/line_notify.go:

99
func (u *lineNotifier) OnSave() error {
100
        utils.Log(1, fmt.Sprintf("Notification %v is receiving updated information.", u.Method))
101
        // Do updating stuff here
102
        return nil
103
}
+
func emailSource
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
249
func emailSource(email *emailOutgoing) {
250
        source := emailTemplate(email.Template, email.Data)
251
        email.Source = source
252
}
+ +
func email.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/email.go:

+
214
func (u *email) OnSave() error {
215
        utils.Log(1, fmt.Sprintf("Notification %v is receiving updated information.", u.Method))
216
        // Do updating stuff here
217
        return nil
218
}
+
func twilio.OnSave
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/notifiers/twilio.go:

131
func (u *twilio) OnSave() error {
132
        utils.Log(1, fmt.Sprintf("Notification %v is receiving updated information.", u.Method))
133
134
        // Do updating stuff here
135
136
        return nil
137
}
@@ -1625,28 +1641,28 @@ PACKAGE:github.com/hunterlong/statup/handlers DONE:67.61 186
func (w *webhooker) OnSave() error {
187
        return nil
188
}
-
Package Overview: github.com/hunterlong/statup/plugin 4.00%

This is a coverage report created after analysis of the github.com/hunterlong/statup/plugin package. It +

Package Overview: github.com/hunterlong/statup/plugin 4.08%

This is a coverage report created after analysis of the github.com/hunterlong/statup/plugin package. It has been generated with the following command:

gocov test github.com/hunterlong/statup/plugin | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

- + - +
init(...)github.com/hunterlong/statup/plugin/plugin.go100.00%2/2
LoadPlugin(...)github.com/hunterlong/statup/plugin/plugin.go0.00%0/34
LoadPlugin(...)github.com/hunterlong/statup/plugin/plugin.go0.00%0/33
LoadPlugins(...)github.com/hunterlong/statup/plugin/plugin.go0.00%0/14
github.com/hunterlong/statup/plugin4.00%2/50
github.com/hunterlong/statup/plugin4.08%2/49
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/plugin/plugin.go:

46
func init() {
47
        utils.InitLogs()
48
        dir = utils.Directory
49
}
func LoadPlugin
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/plugin/plugin.go:

-
51
func LoadPlugin(file string) error {
52
        utils.Log(1, fmt.Sprintf("opening file %v", file))
53
        f, err := os.Open(file)
54
        if err != nil {
55
                return err
56
        }
57
58
        fSplit := strings.Split(f.Name(), "/")
59
        fileBin := fSplit[len(fSplit)-1]
60
61
        utils.Log(1, fmt.Sprintf("Attempting to load plugin '%v'", fileBin))
62
        ext := strings.Split(fileBin, ".")
63
        if len(ext) != 2 {
64
                utils.Log(3, fmt.Sprintf("Plugin '%v' must end in .so extension", fileBin))
65
                return fmt.Errorf("Plugin '%v' must end in .so extension %v", fileBin, len(ext))
66
        }
67
        if ext[1] != "so" {
68
                utils.Log(3, fmt.Sprintf("Plugin '%v' must end in .so extension", fileBin))
69
                return fmt.Errorf("Plugin '%v' must end in .so extension", fileBin)
70
        }
71
        plug, err := plugin.Open(file)
72
        if err != nil {
73
                utils.Log(3, fmt.Sprintf("Plugin '%v' could not load correctly. %v", fileBin, err))
74
                return err
75
        }
76
        symPlugin, err := plug.Lookup("Plugin")
77
        if err != nil {
78
                utils.Log(3, fmt.Sprintf("Plugin '%v' could not locate Plugin variable. %v", fileBin, err))
79
                return err
80
        }
81
        var plugActions types.PluginActions
82
        plugActions, ok := symPlugin.(types.PluginActions)
83
        if !ok {
84
                utils.Log(3, fmt.Sprintf("Plugin %v was not type PluginObject", f.Name()))
85
                return fmt.Errorf("Plugin %v was not type PluginActions, %v", f.Name(), plugActions.GetInfo())
86
        }
87
        info := plugActions.GetInfo()
88
        err = plugActions.OnLoad()
89
        if err != nil {
90
                return err
91
        }
92
        utils.Log(1, fmt.Sprintf("Plugin %v loaded from %v", info.Name, f.Name()))
93
        core.CoreApp.AllPlugins = append(core.CoreApp.AllPlugins, plugActions)
94
        return nil
95
}
+51
func LoadPlugin(file string) error {
52
        utils.Log(1, fmt.Sprintf("opening file %v", file))
53
        f, err := os.Open(file)
54
        if err != nil {
55
                return err
56
        }
57
58
        fSplit := strings.Split(f.Name(), "/")
59
        fileBin := fSplit[len(fSplit)-1]
60
61
        utils.Log(1, fmt.Sprintf("Attempting to load plugin '%v'", fileBin))
62
        ext := strings.Split(fileBin, ".")
63
        if len(ext) != 2 {
64
                utils.Log(3, fmt.Sprintf("Plugin '%v' must end in .so extension", fileBin))
65
                return fmt.Errorf("Plugin '%v' must end in .so extension %v", fileBin, len(ext))
66
        }
67
        if ext[1] != "so" {
68
                utils.Log(3, fmt.Sprintf("Plugin '%v' must end in .so extension", fileBin))
69
                return fmt.Errorf("Plugin '%v' must end in .so extension", fileBin)
70
        }
71
        plug, err := plugin.Open(file)
72
        if err != nil {
73
                utils.Log(3, fmt.Sprintf("Plugin '%v' could not load correctly. %v", fileBin, err))
74
                return err
75
        }
76
        symPlugin, err := plug.Lookup("Plugin")
77
        if err != nil {
78
                utils.Log(3, fmt.Sprintf("Plugin '%v' could not locate Plugin variable. %v", fileBin, err))
79
                return err
80
        }
81
        plugActions, ok := symPlugin.(types.PluginActions)
82
        if !ok {
83
                utils.Log(3, fmt.Sprintf("Plugin %v was not type PluginObject", f.Name()))
84
                return fmt.Errorf("Plugin %v was not type PluginActions %v", f.Name(), plugActions.GetInfo())
85
        }
86
        info := plugActions.GetInfo()
87
        err = plugActions.OnLoad()
88
        if err != nil {
89
                return err
90
        }
91
        utils.Log(1, fmt.Sprintf("Plugin %v loaded from %v", info.Name, f.Name()))
92
        core.CoreApp.AllPlugins = append(core.CoreApp.AllPlugins, plugActions)
93
        return nil
94
}
func LoadPlugins
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/plugin/plugin.go:

-
97
func LoadPlugins() {
98
        pluginDir := dir + "/plugins"
99
        utils.Log(1, fmt.Sprintf("Loading any available Plugins from /plugins directory"))
100
        if _, err := os.Stat(pluginDir); os.IsNotExist(err) {
101
                os.Mkdir(pluginDir, os.ModePerm)
102
        }
103
        files, err := ioutil.ReadDir(pluginDir)
104
        if err != nil {
105
                utils.Log(2, fmt.Sprintf("Plugins directory was not found. Error: %v\n", err))
106
                return
107
        }
108
        for _, f := range files {
109
                err := LoadPlugin(f.Name())
110
                if err != nil {
111
                        utils.Log(3, err)
112
                        continue
113
                }
114
        }
115
        utils.Log(1, fmt.Sprintf("Loaded %v Plugins\n", len(core.CoreApp.Plugins)))
116
}
+96
func LoadPlugins() {
97
        pluginDir := dir + "/plugins"
98
        utils.Log(1, fmt.Sprintf("Loading any available Plugins from /plugins directory"))
99
        if _, err := os.Stat(pluginDir); os.IsNotExist(err) {
100
                os.Mkdir(pluginDir, os.ModePerm)
101
        }
102
        files, err := ioutil.ReadDir(pluginDir)
103
        if err != nil {
104
                utils.Log(2, fmt.Sprintf("Plugins directory was not found. Error: %v", err))
105
                return
106
        }
107
        for _, f := range files {
108
                err := LoadPlugin(f.Name())
109
                if err != nil {
110
                        utils.Log(3, err)
111
                        continue
112
                }
113
        }
114
        utils.Log(1, fmt.Sprintf("Loaded %v Plugins", len(core.CoreApp.Plugins)))
115
}
Package Overview: github.com/hunterlong/statup/source 77.71%

This is a coverage report created after analysis of the github.com/hunterlong/statup/source package. It @@ -1672,13 +1688,198 @@ PACKAGE:github.com/hunterlong/statup/plugin DONE:4.00

func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/rice-box.go:

-
124
e)[0],this.tip},r.setContent=function(){var t=we(this.getTipElement());this.setElementContent(t.find(xe),this.getTitle());var e=this._getContent();\"function\"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ue),e),t.removeClass(We+\" \"+Me)},r._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},r._cleanTipClass=function(){var t=we(this.getTipElement()),e=t.attr(\"class\").match(je);null!==e&&0<e.length&&t.removeClass(e.join(\"\"))},i._jQueryInterface=function(n){return this.each(function(){var t=we(this).data(Oe),e=\"object\"==typeof n?n:null;if((t||!/destroy|hide/.test(n))&&(t||(t=new i(this,e),we(this).data(Oe,t)),\"string\"==typeof n)){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Re}},{key:\"NAME\",get:function(){return Ne}},{key:\"DATA_KEY\",get:function(){return Oe}},{key:\"Event\",get:function(){return Ke}},{key:\"EVENT_KEY\",get:function(){return ke}},{key:\"DefaultType\",get:function(){return He}}]),i}(Nn),we.fn[Ne]=Fe._jQueryInterface,we.fn[Ne].Constructor=Fe,we.fn[Ne].noConflict=function(){return we.fn[Ne]=Pe,Fe._jQueryInterface},Fe),kn=(Qe=\"scrollspy\",Ye=\".\"+(Be=\"bs.scrollspy\"),Ge=(Ve=e).fn[Qe],qe={offset:10,method:\"auto\",target:\"\"},ze={offset:\"number\",method:\"string\",target:\"(string|element)\"},Xe={ACTIVATE:\"activate\"+Ye,SCROLL:\"scroll\"+Ye,LOAD_DATA_API:\"load\"+Ye+\".data-api\"},Je=\"dropdown-item\",Ze=\"active\",$e={DATA_SPY:'[data-spy=\"scroll\"]',ACTIVE:\".active\",NAV_LIST_GROUP:\".nav, .list-group\",NAV_LINKS:\".nav-link\",NAV_ITEMS:\".nav-item\",LIST_ITEMS:\".list-group-item\",DROPDOWN:\".dropdown\",DROPDOWN_ITEMS:\".dropdown-item\",DROPDOWN_TOGGLE:\".dropdown-toggle\"},tn=\"offset\",en=\"position\",nn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement=\"BODY\"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+\" \"+$e.NAV_LINKS+\",\"+this._config.target+\" \"+$e.LIST_ITEMS+\",\"+this._config.target+\" \"+$e.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Ve(this._scrollElement).on(Xe.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?tn:en,r=\"auto\"===this._config.method?t:this._config.method,s=r===en?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),Ve.makeArray(Ve(this._selector)).map(function(t){var e,n=Cn.getSelectorFromElement(t);if(n&&(e=Ve(n)[0]),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[Ve(e)[r]().top+s,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){Ve.removeData(this._element,Be),Ve(this._scrollElement).off(Ye),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if(\"string\"!=typeof(t=h({},qe,t)).target){var e=Ve(t.target).attr(\"id\");e||(e=Cn.getUID(Qe),Ve(t.target).attr(\"id\",e)),t.target=\"#\"+e}return Cn.typeCheckConfig(Qe,t,ze),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&(\"undefined\"==typeof this._offsets[r+1]||t<this._offsets[r+1])&&this._activate(this._targets[r])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(\",\");t=t.map(function(t){return t+'[data-target=\"'+e+'\"],'+t+'[href=\"'+e+'\"]'});var n=Ve(t.join(\",\"));n.hasClass(Je)?(n.closest($e.DROPDOWN).find($e.DROPDOWN_TOGGLE).addClass(Ze),n.addClass(Ze)):(n.addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_LINKS+\", \"+$e.LIST_ITEMS).addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_ITEMS).children($e.NAV_LINKS).addClass(Ze)),Ve(this._scrollElement).trigger(Xe.ACTIVATE,{relatedTarget:e})},t._clear=function(){Ve(this._selector).filter($e.ACTIVE).removeClass(Ze)},n._jQueryInterface=function(e){return this.each(function(){var t=Ve(this).data(Be);if(t||(t=new n(this,\"object\"==typeof e&&e),Ve(this).data(Be,t)),\"string\"==typeof e){if(\"undefined\"==typeof t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},o(n,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return qe}}]),n}(),Ve(window).on(Xe.LOAD_DATA_API,function(){for(var t=Ve.makeArray(Ve($e.DATA_SPY)),e=t.length;e--;){var n=Ve(t[e]);nn._jQueryInterface.call(n,n.data())}}),Ve.fn[Qe]=nn._jQueryInterface,Ve.fn[Qe].Constructor=nn,Ve.fn[Qe].noConflict=function(){return Ve.fn[Qe]=Ge,nn._jQueryInterface},nn),Pn=(on=\".\"+(sn=\"bs.tab\"),an=(rn=e).fn.tab,ln={HIDE:\"hide\"+on,HIDDEN:\"hidden\"+on,SHOW:\"show\"+on,SHOWN:\"shown\"+on,CLICK_DATA_API:\"click\"+on+\".data-api\"},hn=\"dropdown-menu\",cn=\"active\",un=\"disabled\",fn=\"fade\",dn=\"show\",_n=\".dropdown\",gn=\".nav, .list-group\",mn=\".active\",pn=\"> li > .active\",vn='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',En=\".dropdown-toggle\",yn=\"> .dropdown-menu .active\",Tn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&rn(this._element).hasClass(cn)||rn(this._element).hasClass(un))){var t,i,e=rn(this._element).closest(gn)[0],r=Cn.getSelectorFromElement(this._element);if(e){var s=\"UL\"===e.nodeName?pn:mn;i=(i=rn.makeArray(rn(e).find(s)))[i.length-1]}var o=rn.Event(ln.HIDE,{relatedTarget:this._element}),a=rn.Event(ln.SHOW,{relatedTarget:i});if(i&&rn(i).trigger(o),rn(this._element).trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){r&&(t=rn(r)[0]),this._activate(this._element,e);var l=function(){var t=rn.Event(ln.HIDDEN,{relatedTarget:n._element}),e=rn.Event(ln.SHOWN,{relatedTarget:i});rn(i).trigger(t),rn(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){rn.removeData(this._element,sn),this._element=null},t._activate=function(t,e,n){var i=this,r=(\"UL\"===e.nodeName?rn(e).find(pn):rn(e).children(mn))[0],s=n&&r&&rn(r).hasClass(fn),o=function(){return i._transitionComplete(t,r,n)};if(r&&s){var a=Cn.getTransitionDurationFromElement(r);rn(r).one(Cn.TRANSITION_END,o).emulateTransitionEnd(a)}else o()},t._transitionComplete=function(t,e,n){if(e){rn(e).removeClass(dn+\" \"+cn);var i=rn(e.parentNode).find(yn)[0];i&&rn(i).removeClass(cn),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}if(rn(t).addClass(cn),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),Cn.reflow(t),rn(t).addClass(dn),t.parentNode&&rn(t.parentNode).hasClass(hn)){var r=rn(t).closest(_n)[0];r&&rn(r).find(En).addClass(cn),t.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=rn(this),e=t.data(sn);if(e||(e=new i(this),t.data(sn,e)),\"string\"==typeof n){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),i}(),rn(document).on(ln.CLICK_DATA_API,vn,function(t){t.preventDefault(),Tn._jQueryInterface.call(rn(this),\"show\")}),rn.fn.tab=Tn._jQueryInterface,rn.fn.tab.Constructor=Tn,rn.fn.tab.noConflict=function(){return rn.fn.tab=an,Tn._jQueryInterface},Tn);!function(t){if(\"undefined\"==typeof t)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var e=t.fn.jquery.split(\" \")[0].split(\".\");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}(e),t.Util=Cn,t.Alert=In,t.Button=An,t.Carousel=Dn,t.Collapse=bn,t.Dropdown=Sn,t.Modal=wn,t.Popover=On,t.Scrollspy=kn,t.Tab=Pn,t.Tooltip=Nn,Object.defineProperty(t,\"__esModule\",{value:!0})});\n//# sourceMappingURL=bootstrap.min.js.map"),
125
        }
126
        filed := &embedded.EmbeddedFile{
127
                Filename:    "chart_index.js",
128
                FileModTime: time.Unix(1538702348, 0),
129
                Content:     string("{{define \"chartIndex\"}}\nvar ctx_{{js .Id}} = document.getElementById(\"service_{{js .Id}}\").getContext('2d');\nvar chartdata_{{js .Id}} = new Chart(ctx_{{js .Id}}, {\n  type: 'line',\n    data: {\n    datasets: [{\n      label: 'Response Time (Milliseconds)',\n      data: [],\n      backgroundColor: ['{{if .Online}}rgba(47, 206, 30, 0.92){{else}}rgb(221, 53, 69){{end}}'],\n      borderColor: ['{{if .Online}}rgb(47, 171, 34){{else}}rgb(183, 32, 47){{end}}'],\n      borderWidth: 1\n    }]\n  },\n  options: {\n    maintainAspectRatio: !1,\n      scaleShowValues: !0,\n      layout: {\n      padding: {\n        left: 0,\n          right: 0,\n          top: 0,\n          bottom: -10\n      }\n    },\n    hover: {\n      animationDuration: 0,\n    },\n    responsiveAnimationDuration: 0,\n      animation: {\n      duration: 3500,\n        onComplete: function() {\n        var chartInstance = this.chart,\n          ctx = chartInstance.ctx;\n        var controller = this.chart.controller;\n        var xAxis = controller.scales['x-axis-0'];\n        var yAxis = controller.scales['y-axis-0'];\n        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n        ctx.textAlign = 'center';\n        ctx.textBaseline = 'bottom';\n        var numTicks = xAxis.ticks.length;\n        var yOffsetStart = xAxis.width / numTicks;\n        var halfBarWidth = (xAxis.width / (numTicks * 2));\n        xAxis.ticks.forEach(function(value, index) {\n          var xOffset = 20;\n          var yOffset = (yOffsetStart * index) + halfBarWidth;\n          ctx.fillStyle = '#e2e2e2';\n          ctx.fillText(value, yOffset, xOffset)\n        });\n        this.data.datasets.forEach(function(dataset, i) {\n          var meta = chartInstance.controller.getDatasetMeta(i);\n          var hxH = 0;\n          var hyH = 0;\n          var hxL = 0;\n          var hyL = 0;\n          var highestNum = 0;\n          var lowestnum = 999999999999;\n          meta.data.forEach(function(bar, index) {\n            var data = dataset.data[index];\n            if (lowestnum > data.y) {\n              lowestnum = data.y;\n              hxL = bar._model.x;\n              hyL = bar._model.y\n            }\n            if (data.y > highestNum) {\n              highestNum = data.y;\n              hxH = bar._model.x;\n              hyH = bar._model.y\n            }\n          });\n          if (hxH >= 820) {\n            hxH = 820\n          } else if (50 >= hxH) {\n            hxH = 50\n          }\n          if (hxL >= 820) {\n            hxL = 820\n          } else if (70 >= hxL) {\n            hxL = 70\n          }\n          ctx.fillStyle = '#ffa7a2';\n          ctx.fillText(highestNum + \"ms\", hxH - 40, hyH + 15);\n          ctx.fillStyle = '#45d642';\n          ctx.fillText(lowestnum + \"ms\", hxL, hyL + 10);\n        })\n      }\n    },\n    legend: {\n      display: !1\n    },\n    tooltips: {\n      enabled: !1\n    },\n    scales: {\n      yAxes: [{\n        display: !1,\n        ticks: {\n          fontSize: 20,\n          display: !1,\n          beginAtZero: !1\n        },\n        gridLines: {\n          display: !1\n        }\n      }],\n        xAxes: [{\n        type: 'time',\n        distribution: 'series',\n        autoSkip: !1,\n        time: {\n          displayFormats: {\n            'hour': 'MMM DD hA'\n          },\n          source: 'auto'\n        },\n        gridLines: {\n          display: !1\n        },\n        ticks: {\n          source: 'auto',\n          stepSize: 1,\n          min: 0,\n          fontColor: \"white\",\n          fontSize: 20,\n          display: !1\n        }\n      }]\n    },\n    elements: {\n      point: {\n        radius: 0\n      }\n    }\n  }\n});\n\nAjaxChart(chartdata_{{js .Id}},{{js .Id}},0,99999999999,\"hour\");\n{{end}}\n"),
130
        }
131
        filee := &embedded.EmbeddedFile{
132
                Filename:    "charts.js",
133
                FileModTime: time.Unix(1538702348, 0),
134
                Content:     string("{{define \"charts\"}}\n{{$start := .Start}}\n{{$end := .End}}\n{{ range .Services }}\nvar ctx_{{js .Id}} = document.getElementById(\"service_{{js .Id}}\").getContext('2d');\nvar chartdata_{{js .Id}} = new Chart(ctx_{{js .Id}}, {\n  type: 'line',\n    data: {\n    datasets: [{\n      label: 'Response Time (Milliseconds)',\n      data: [],\n      backgroundColor: ['{{if .Online}}rgba(47, 206, 30, 0.92){{else}}rgb(221, 53, 69){{end}}'],\n      borderColor: ['{{if .Online}}rgb(47, 171, 34){{else}}rgb(183, 32, 47){{end}}'],\n      borderWidth: 1\n    }]\n  },\n  options: {\n    maintainAspectRatio: !1,\n      scaleShowValues: !0,\n      layout: {\n      padding: {\n        left: 0,\n          right: 0,\n          top: 0,\n          bottom: -10\n      }\n    },\n    hover: {\n      animationDuration: 0,\n    },\n    responsiveAnimationDuration: 0,\n      animation: {\n      duration: 3500,\n        onComplete: function() {\n        var chartInstance = this.chart,\n          ctx = chartInstance.ctx;\n        var controller = this.chart.controller;\n        var xAxis = controller.scales['x-axis-0'];\n        var yAxis = controller.scales['y-axis-0'];\n        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n        ctx.textAlign = 'center';\n        ctx.textBaseline = 'bottom';\n        var numTicks = xAxis.ticks.length;\n        var yOffsetStart = xAxis.width / numTicks;\n        var halfBarWidth = (xAxis.width / (numTicks * 2));\n        xAxis.ticks.forEach(function(value, index) {\n          var xOffset = 20;\n          var yOffset = (yOffsetStart * index) + halfBarWidth;\n          ctx.fillStyle = '#e2e2e2';\n          ctx.fillText(value, yOffset, xOffset)\n        });\n        this.data.datasets.forEach(function(dataset, i) {\n          var meta = chartInstance.controller.getDatasetMeta(i);\n          var hxH = 0;\n          var hyH = 0;\n          var hxL = 0;\n          var hyL = 0;\n          var highestNum = 0;\n          var lowestnum = 999999999999;\n          meta.data.forEach(function(bar, index) {\n            var data = dataset.data[index];\n            if (lowestnum > data.y) {\n              lowestnum = data.y;\n              hxL = bar._model.x;\n              hyL = bar._model.y\n            }\n            if (data.y > highestNum) {\n              highestNum = data.y;\n              hxH = bar._model.x;\n              hyH = bar._model.y\n            }\n          });\n          if (hxH >= 820) {\n            hxH = 820\n          } else if (50 >= hxH) {\n            hxH = 50\n          }\n          if (hxL >= 820) {\n            hxL = 820\n          } else if (70 >= hxL) {\n            hxL = 70\n          }\n          ctx.fillStyle = '#ffa7a2';\n          ctx.fillText(highestNum + \"ms\", hxH - 40, hyH + 15);\n          ctx.fillStyle = '#45d642';\n          ctx.fillText(lowestnum + \"ms\", hxL, hyL + 10);\n        })\n      }\n    },\n    legend: {\n      display: !1\n    },\n    tooltips: {\n      enabled: !1\n    },\n    scales: {\n      yAxes: [{\n        display: !1,\n        ticks: {\n          fontSize: 20,\n          display: !1,\n          beginAtZero: !1\n        },\n        gridLines: {\n          display: !1\n        }\n      }],\n        xAxes: [{\n        type: 'time',\n        distribution: 'series',\n        autoSkip: !1,\n        time: {\n          displayFormats: {\n            'hour': 'MMM DD hA'\n          },\n          source: 'auto'\n        },\n        gridLines: {\n          display: !1\n        },\n        ticks: {\n          source: 'auto',\n          stepSize: 1,\n          min: 0,\n          fontColor: \"white\",\n          fontSize: 20,\n          display: !1\n        }\n      }]\n    },\n    elements: {\n      point: {\n        radius: 0\n      }\n    }\n  }\n});\n\nAjaxChart(chartdata_{{js .Id}},{{js .Id}},{{$start}},{{$end}},\"hour\");\n{{end}}{{end}}\n"),
135
        }
136
        filef := &embedded.EmbeddedFile{
137
                Filename:    "jquery-3.3.1.min.js",
138
                FileModTime: time.Unix(1537914115, 0),
139
                Content:     string("/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){\"use strict\";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return\"function\"==typeof t&&\"number\"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement(\"script\");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?l[c.call(e)]||\"object\":typeof e}var b=\"3.3.1\",w=function(e,t){return new w.fn.init(e,t)},T=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;w.fn=w.prototype={jquery:\"3.3.1\",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:\"jQuery\"+(\"3.3.1\"+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==c.call(e))&&(!(t=i(e))||\"function\"==typeof(n=f.call(t,\"constructor\")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(T,\"\")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,\"string\"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),\"function\"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){l[\"[object \"+t+\"]\"]=t.toLowerCase()});function C(e){var t=!!e&&\"length\"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b=\"sizzle\"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",R=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",I=\"\\\\[\"+M+\"*(\"+R+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+R+\"))|)\"+M+\"*\\\\]\",W=\":(\"+R+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+I+\")*)|.*)\\\\)|)\",$=new RegExp(M+\"+\",\"g\"),B=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),F=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),_=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),z=new RegExp(\"=\"+M+\"*([^\\\\]'\\\"]*?)\"+M+\"*\\\\]\",\"g\"),X=new RegExp(W),U=new RegExp(\"^\"+R+\"$\"),V={ID:new RegExp(\"^#(\"+R+\")\"),CLASS:new RegExp(\"^\\\\.(\"+R+\")\"),TAG:new RegExp(\"^(\"+R+\"|[*])\"),ATTR:new RegExp(\"^\"+I),PSEUDO:new RegExp(\"^\"+W),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+P+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\\d$/i,Q=/^[^{]+\\{\\s*\\[native \\w/,J=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,K=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ee=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+\" \"]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if(\"object\"!==t.nodeName.toLowerCase()){(c=t.getAttribute(\"id\"))?c=c.replace(te,ne):t.setAttribute(\"id\",c=b),s=(h=a(e)).length;while(s--)h[s]=\"#\"+c+\" \"+ve(h[s]);v=h.join(\",\"),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace(B,\"$1\"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split(\"|\"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function de(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",re,!1):i.attachEvent&&i.attachEvent(\"onunload\",re)),n.attributes=ue(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML=\"<a id='\"+b+\"'></a><select id='\"+b+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&y.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||y.push(\"\\\\[\"+M+\"*(?:value|\"+P+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||y.push(\"~=\"),e.querySelectorAll(\":checked\").length||y.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||y.push(\".#.+[+~]\")}),ue(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&y.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&y.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&y.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),y.push(\",.*:\")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),v.push(\"!=\",W)}),y=y.length&&new RegExp(y.join(\"|\")),v=v.length&&new RegExp(v.join(\"|\")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,\"='$1']\"),n.matchesSelector&&g&&!S[t+\" \"]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+\"\").replace(te,ne)},oe.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace($,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,\"$1\"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||\"\")||oe.error(\"unsupported lang: \"+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+\" \"];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B,\" \")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&\"parentNode\"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||\"*\",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(B,\"$1\"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+\" \"];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(D).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))}),ue(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||le(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||le(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute(\"disabled\")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,\"string\"==typeof e){if(!(i=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,\"parentNode\")},parentsUntil:function(e,t,n){return k(e,\"parentNode\",n)},next:function(e){return P(e,\"nextSibling\")},prev:function(e){return P(e,\"previousSibling\")},nextAll:function(e){return k(e,\"nextSibling\")},prevAll:function(e){return k(e,\"previousSibling\")},nextUntil:function(e,t,n){return k(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return k(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,\"iframe\")?e.contentDocument:(N(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e=\"string\"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:\"\")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&\"string\"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},\"catch\":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError(\"Thenable self-resolution\");l=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener(\"DOMContentLoaded\",_),e.removeEventListener(\"load\",_),w.ready()}\"complete\"===r.readyState||\"loading\"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener(\"DOMContentLoaded\",_),e.addEventListener(\"load\",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,\"ms-\").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,ee=/[A-Z]/g;function te(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(ee,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,\"hasDataAttrs\"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf(\"data-\")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks(\"once memory\").add(function(){J.remove(e,[t+\"queue\",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=J.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+re+\")([a-z%]*)$\",\"i\"),oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&w.contains(e.ownerDocument,e)&&\"none\"===w.css(e,\"display\")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,\"\")},u=s(),l=n&&n[3]||(w.cssNumber[t]?\"\":\"px\"),c=(w.cssNumber[t]||\"px\"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===i&&(i=\"block\"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?(\"none\"===n&&(i[o]=J.get(r,\"display\")||null,i[o]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(i[o]=ce(r))):\"none\"!==n&&(i[o]=\"none\",J.set(r,\"display\",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],\"globalEval\",!t||J.get(t[n],\"globalEval\"))}var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),\"script\"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement(\"div\")),t=r.createElement(\"input\");t.setAttribute(\"type\",\"radio\"),t.setAttribute(\"checked\",\"checked\"),t.setAttribute(\"name\",\"t\"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML=\"<textarea>x</textarea>\",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return\"undefined\"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||\"\").split(\".\").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,\"handle events\")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,\"events\")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&N(this,\"input\"))return this.click(),!1},_default:function(e){return N(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Ae=/<script|<style|<link/i,je=/checked\\s*(?:[^=]|=\\s*.checked.)/i,qe=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Le(e,t){return N(e,\"table\")&&N(11!==t.nodeType?t:t.firstChild,\"tr\")?w(e).children(\"tbody\")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Oe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();\"input\"===n&&pe.test(e.type)?t.checked=e.checked:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&\"string\"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,\"script\"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,\"script\"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||\"\")&&!J.access(l,\"globalEval\")&&w.contains(c,l)&&(l.src&&\"module\"!==(l.type||\"\").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,\"\"),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,\"script\")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,\"script\")).length>0&&ve(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp(\"^(\"+re+\")(?!px)[a-z%]+$\",\"i\"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join(\"|\"),\"i\");!function(){function t(){if(c){l.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",c.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i=\"1%\"!==t.top,u=12===n(t.marginLeft),c.style.right=\"60%\",s=36===n(t.right),o=36===n(t.width),c.style.position=\"absolute\",a=36===c.offsetWidth||\"absolute\",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement(\"div\"),c=r.createElement(\"div\");c.style&&(c.style.backgroundClip=\"content-box\",c.cloneNode(!0).style.backgroundClip=\"\",h.clearCloneStyle=\"content-box\"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ve={letterSpacing:\"0\",fontWeight:\"400\"},Ge=[\"Webkit\",\"Moz\",\"ms\"],Ye=r.createElement(\"div\").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?(\"content\"===n&&(u-=w.css(e,\"padding\"+oe[a],!0,i)),\"margin\"!==n&&(u-=w.css(e,\"border\"+oe[a]+\"Width\",!0,i))):(u+=w.css(e,\"padding\"+oe[a],!0,i),\"padding\"!==n?u+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i):s+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o=\"border-box\"===w.css(e,\"boxSizing\",!1,r),a=o;if(We.test(i)){if(!n)return i;i=\"auto\"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),(\"auto\"===i||!parseFloat(i)&&\"inline\"===w.css(e,\"display\",!1,r))&&(i=e[\"offset\"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?\"border\":\"content\"),a,r,i)+\"px\"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),h.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),\"normal\"===i&&t in Ve&&(i=Ve[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a=\"border-box\"===w.css(e,\"boxSizing\",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),s&&(i=ie.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,\"marginLeft\"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),w.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=oe[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,\"fxshow\");n.queue||(null==(a=w._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,\"fx\").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,\"display\")),\"none\"===(c=w.css(e,\"display\"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,\"display\"),fe([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===w.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?\"hidden\"in y&&(g=y.hidden):y=J.access(e,\"fxshow\",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,\"fxshow\");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=[\"*\"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&\"object\"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each(function(){var t,n=J.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut(\"show\"),slideUp:ut(\"hide\"),slideToggle:ut(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement(\"input\"),t=r.createElement(\"select\").appendChild(r.createElement(\"option\"));e.type=\"checkbox\",h.checkOn=\"\"!==e.value,h.optSelected=t.selected,(e=r.createElement(\"input\")).value=\"t\",e.type=\"radio\",h.radioValue=\"t\"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&\"radio\"===t&&N(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(\" \")}function mt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function xt(e){return Array.isArray(e)?e:\"string\"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])while(r.indexOf(\" \"+o+\" \")>-1)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&\"boolean\"!==n||((t=mt(this))&&J.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":J.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&(\" \"+vt(mt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var bt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?\"\":e+\"\"})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(bt,\"\"):null==n?\"\":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,\"optgroup\"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),h.focusin=\"onfocusin\"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,\"type\")?t.type:t,x=f.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(m=(x=m.split(\".\")).shift(),x.sort()),c=m.indexOf(\":\")<0&&\"on\"+m,t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,\"events\")||{})[t.type]&&J.get(s,\"handle\"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\\?/;w.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||w.error(\"Invalid XML: \"+t),n};var St=/\\[\\]$/,Dt=/\\r?\\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==x(t))r(e,t);else for(i in t)jt(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Dt,\"\\r\\n\")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\\/\\//,It={},Wt={},$t=\"*/\".concat(\"*\"),Bt=r.createElement(\"a\");Bt.href=Ct.href;function Ft(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:\"GET\",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":$t,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks(\"once memory\"),x=h.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+\"\").replace(Rt,Ct.protocol+\"//\"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||\"*\").toLowerCase().match(M)||[\"\"],null==h.crossDomain){l=r.createElement(\"a\");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+\"//\"+Bt.host!=l.protocol+\"//\"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&\"string\"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,\"\"),h.hasContent?h.data&&h.processData&&0===(h.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(h.data=h.data.replace(qt,\"+\")):(d=h.url.slice(o.length),h.data&&(h.processData||\"string\"==typeof h.data)&&(o+=(kt.test(o)?\"&\":\"?\")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,\"$1\"),d=(kt.test(o)?\"&\":\"?\")+\"_=\"+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[o]),w.etag[o]&&E.setRequestHeader(\"If-None-Match\",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",h.contentType),E.setRequestHeader(\"Accept\",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(\"*\"!==h.dataTypes[0]?\", \"+$t+\"; q=0.01\":\"\"):h.accepts[\"*\"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C=\"abort\",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger(\"ajaxSend\",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort(\"timeout\")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,\"No Transport\");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||\"\",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[o]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[o]=T)),204===t||\"HEAD\"===h.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?\"ajaxSuccess\":\"ajaxError\",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger(\"ajaxComplete\",[E,h]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&\"withCredentials\"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),w.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(\"<script>\").prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&o(\"error\"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\\?(?=&|$)|\\?\\?/;w.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Yt.pop()||w.expando+\"_\"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Qt.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,\"$1\"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||w.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),\"script\"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument(\"\").body;return e.innerHTML=\"<form></form><form></form>\",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if(\"string\"!=typeof e)return[];\"boolean\"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&w.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?w(\"<div>\").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,\"position\"),f=w(e),p={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=w.css(e,\"top\"),u=w.css(e,\"left\"),(l=(\"absolute\"===c||\"fixed\"===c)&&(o+u).indexOf(\"auto\")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),\"using\"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===w.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===w.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,\"borderTopWidth\",!0),i.left+=w.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-w.css(r,\"marginTop\",!0),left:t.left-i.left-w.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===w.css(e,\"position\"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=\"pageYOffset\"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each([\"top\",\"left\"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+\"px\":n})}),w.each({Height:\"height\",Width:\"width\"},function(e,t){w.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||\"boolean\"!=typeof i),s=n||(!0===i||!0===o?\"margin\":\"border\");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),w.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});"),
140
        }
141
        fileg := &embedded.EmbeddedFile{
142
                Filename:    "main.js",
143
                FileModTime: time.Unix(1539221145, 0),
144
                Content:     string("/*\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n$('.service_li').on('click', function() {\n    var id = $(this).attr('data-id');\n    var position = $('#service_id_' + id).offset();\n    window.scroll(0, position.top - 23);\n    return false;\n});\n\n$('.test_notifier').on('click', function(e) {\n    var btn = $(this);\n    var form = $(this).parents('form:first');\n    var values = form.serialize();\n    var notifier = form.find('input[name=notifier]').val();\n    var success = $('#'+notifier+'-success');\n    var error = $('#'+notifier+'-error');\n    btn.prop(\"disabled\", true);\n    $.ajax({\n        url: form.attr(\"action\")+\"/test\",\n        type: 'POST',\n        data: values,\n        success: function(data) {\n            if (data === 'ok') {\n                success.removeClass('d-none');\n                setTimeout(function() {\n                    success.addClass('d-none');\n                }, 5000)\n            } else {\n                error.removeClass('d-none');\n                error.html(data);\n                setTimeout(function() {\n                    error.addClass('d-none');\n                }, 8000)\n            }\n            btn.prop(\"disabled\", false);\n        }\n    });\n    e.preventDefault();\n});\n\n$('form').submit(function() {\n    console.log(this);\n    $(this).find('button[type=submit]').prop('disabled', true);\n});\n\n$('select#service_type').on('change', function() {\n    var selected = $('#service_type option:selected').val();\n        if (selected !== 'none') {\n            $('#check_auth_type').val('none');\n            $('select#check_auth_type').trigger('change');\n            var typeLabel = $('#service_type_label');\n            if (selected === 'tcp' || selected === 'udp') {\n                if (selected === 'tcp') {\n                    typeLabel.html('TCP Port')\n                } else {\n                    typeLabel.html('UDP Port')\n                }\n                $('#service_port').parent().parent().removeClass('d-none');\n                $('#service_check_type').parent().parent().addClass('d-none');\n                $('#service_url').attr('placeholder', 'localhost');\n                $('#post_data').parent().parent().addClass('d-none');\n                $('#service_response').parent().parent().addClass('d-none');\n                $('#service_response_code').parent().parent().addClass('d-none');\n                $('#auth_type').parent().parent().addClass('d-none');\n            } else {\n                $('#post_data').parent().parent().removeClass('d-none');\n                $('#service_response').parent().parent().removeClass('d-none');\n                $('#service_response_code').parent().parent().removeClass('d-none');\n                $('#service_check_type').parent().parent().removeClass('d-none');\n                $('#service_url').attr('placeholder', 'https://google.com');\n                $('#auth_type').parent().parent().removeClass('d-none');\n                $('#service_port').parent().parent().addClass('d-none');\n            }\n        }\n});\n\n$('select#check_auth_type').on('change', function() {\n    var selected = $('#check_auth_type option:selected').val();\n    if (selected === 'none') {\n        $('#user_name').parent().parent().addClass('d-none');\n        $('#user_password').parent().parent().addClass('d-none');\n    } else {\n        $('#user_name').parent().parent().removeClass('d-none');\n        $('#user_password').parent().parent().removeClass('d-none');\n    }\n\n});\n\n\n\nfunction AjaxChart(chart, service, start=0, end=9999999999, group=\"hour\") {\n    $.ajax({\n        url: \"/api/services/\"+service+\"/data?start=\"+start+\"&end=\"+end+\"&group=\"+group,\n        type: 'GET',\n        success: function(data) {\n            chart.data.labels.pop();\n            if ( ( typeof(data) !== \"undefined\" ) &&\n                ( 'data' in data ) &&\n                ( typeof(data.data) !== \"undefined\" ) &&\n                ( data.data !== null ) &&\n                ( 'length' in data.data) &&\n                (data.data.length > 0 ) ) {\n                data.data.forEach(function(d) {\n                    chart.data.datasets[0].data.push(d);\n                });\n            }\n            chart.update();\n        }\n    });\n}\n\nfunction PingAjaxChart(chart, service, start=0, end=9999999999, group=\"hour\") {\n    $.ajax({\n        url: \"/api/services/\"+service+\"/ping?start=\"+start+\"&end=\"+end+\"&group=\"+group,\n        type: 'GET',\n        success: function(data) {\n            chart.data.labels.pop();\n            chart.data.datasets.push({\n                label: \"Ping Time\",\n                backgroundColor: \"#bababa\"\n            });\n            chart.update();\n            data.data.forEach(function(d) {\n                chart.data.datasets[1].data.push(d);\n            });\n            chart.update();\n        }\n    });\n}\n\n$('select#service_check_type').on('change', function() {\n    var selected = $('#service_check_type option:selected').val();\n    if (selected === 'POST') {\n        $('#post_data').parent().parent().removeClass('d-none');\n    } else {\n        $('#post_data').parent().parent().addClass('d-none');\n    }\n});\n\n\n$(function() {\n    var pathname = window.location.pathname;\n    if (pathname === '/logs') {\n        var lastline;\n        var logArea = $('#live_logs');\n        setInterval(function() {\n            $.get('/logs/line', function(data, status) {\n                if (lastline !== data) {\n                    var curr = $.trim(logArea.text());\n                    var line = data.replace(/(\\r\\n|\\n|\\r)/gm, ' ');\n                    line = line + '\\n';\n                    logArea.text(line + curr);\n                    lastline = data;\n                }\n            });\n        }, 200);\n    }\n});\n\n\n$('.confirm-btn').on('click', function() {\n    var r = confirm('Are you sure you want to delete?');\n    if (r === true) {\n        return true;\n    } else {\n        return false;\n    }\n});\n\n\n$('.select-input').on('click', function() {\n    $(this).select();\n});\n\n\n// $('input[name=password], input[name=password_confirm]').on('change keyup input paste', function() {\n//     var password = $('input[name=password]'),\n//         repassword = $('input[name=password_confirm]'),\n//         both = password.add(repassword).removeClass('is-valid is-invalid');\n//\n//     var btn = $(this).parents('form:first').find('button[type=submit]');\n//     password.addClass(\n//         password.val().length > 0 ? 'is-valid' : 'is-invalid'\n//     );\n//     repassword.addClass(\n//         password.val().length > 0 ? 'is-valid' : 'is-invalid'\n//     );\n//\n//     if (password.val() !== repassword.val()) {\n//         both.addClass('is-invalid');\n//         btn.prop('disabled', true);\n//     } else {\n//         btn.prop('disabled', false);\n//     }\n// });\n\n\nvar ranVar = false;\nvar ranTheme = false;\nvar ranMobile = false;\n$('a[data-toggle=pill]').on('shown.bs.tab', function(e) {\n    var target = $(e.target).attr('href');\n    if (target === '#v-pills-style' && !ranVar) {\n        var sass_vars = CodeMirror.fromTextArea(document.getElementById('sass_vars'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        sass_vars.setSize(null, 900);\n        ranVar = true;\n    } else if (target === '#pills-theme' && !ranTheme) {\n        var theme_css = CodeMirror.fromTextArea(document.getElementById('theme_css'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        theme_css.setSize(null, 900);\n        ranTheme = true;\n    } else if (target === '#pills-mobile' && !ranMobile) {\n        var mobile_css = CodeMirror.fromTextArea(document.getElementById('mobile_css'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        mobile_css.setSize(null, 900);\n        ranMobile = true;\n    }\n});\n"),
145
        }
146
        fileh := &embedded.EmbeddedFile{
147
                Filename:    "pikaday.js",
148
                FileModTime: time.Unix(1537914115, 0),
149
                Content:     string("/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n */\n\n(function (root, factory)\n{\n  'use strict';\n\n  var moment;\n  if (typeof exports === 'object') {\n    // CommonJS module\n    // Load moment.js as an optional dependency\n    try { moment = require('moment'); } catch (e) {}\n    module.exports = factory(moment);\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(function (req)\n    {\n      // Load moment.js as an optional dependency\n      var id = 'moment';\n      try { moment = req(id); } catch (e) {}\n      return factory(moment);\n    });\n  } else {\n    root.Pikaday = factory(root.moment);\n  }\n}(this, function (moment)\n{\n  'use strict';\n\n  /**\n   * feature detection and helper functions\n   */\n  var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n      if (hasEventListeners) {\n        el.addEventListener(e, callback, !!capture);\n      } else {\n        el.attachEvent('on' + e, callback);\n      }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n      if (hasEventListeners) {\n        el.removeEventListener(e, callback, !!capture);\n      } else {\n        el.detachEvent('on' + e, callback);\n      }\n    },\n\n    trim = function(str)\n    {\n      return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n      return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n      if (!hasClass(el, cn)) {\n        el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n      }\n    },\n\n    removeClass = function(el, cn)\n    {\n      el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n      return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n      return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n      var day = date.getDay();\n      return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n      // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n      return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n      return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n      if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n      // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n      return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n      var prop, hasProp;\n      for (prop in from) {\n        hasProp = to[prop] !== undefined;\n        if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n          if (isDate(from[prop])) {\n            if (overwrite) {\n              to[prop] = new Date(from[prop].getTime());\n            }\n          }\n          else if (isArray(from[prop])) {\n            if (overwrite) {\n              to[prop] = from[prop].slice(0);\n            }\n          } else {\n            to[prop] = extend({}, from[prop], overwrite);\n          }\n        } else if (overwrite || !hasProp) {\n          to[prop] = from[prop];\n        }\n      }\n      return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n      var ev;\n\n      if (document.createEvent) {\n        ev = document.createEvent('HTMLEvents');\n        ev.initEvent(eventName, true, false);\n        ev = extend(ev, data);\n        el.dispatchEvent(ev);\n      } else if (document.createEventObject) {\n        ev = document.createEventObject();\n        ev = extend(ev, data);\n        el.fireEvent('on' + eventName, ev);\n      }\n    },\n\n    adjustCalendar = function(calendar) {\n      if (calendar.month < 0) {\n        calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n        calendar.month += 12;\n      }\n      if (calendar.month > 11) {\n        calendar.year += Math.floor(Math.abs(calendar.month)/12);\n        calendar.month -= 12;\n      }\n      return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n      // bind the picker to a form field\n      field: null,\n\n      // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n      bound: undefined,\n\n      // data-attribute on the input field with an aria assistance tekst (only applied when `bound` is set)\n      ariaLabel: 'Use the arrow keys to pick a date',\n\n      // position of the datepicker, relative to the field (default to bottom & left)\n      // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n      position: 'bottom left',\n\n      // automatically fit in the viewport even if it means repositioning from the position option\n      reposition: true,\n\n      // the default output format for `.toString()` and `field` value\n      format: 'YYYY-MM-DD',\n\n      // the toString function which gets passed a current date object and format\n      // and returns a string\n      toString: null,\n\n      // used to create date object from current input string\n      parse: null,\n\n      // the initial date to view when first opened\n      defaultDate: null,\n\n      // make the `defaultDate` the initial selected value\n      setDefaultDate: false,\n\n      // first day of week (0: Sunday, 1: Monday etc)\n      firstDay: 0,\n\n      // the default flag for moment's strict date parsing\n      formatStrict: false,\n\n      // the minimum/earliest date that can be selected\n      minDate: null,\n      // the maximum/latest date that can be selected\n      maxDate: null,\n\n      // number of years either side, or array of upper/lower range\n      yearRange: 10,\n\n      // show week numbers at head of row\n      showWeekNumber: false,\n\n      // Week picker mode\n      pickWholeWeek: false,\n\n      // used internally (don't config outside)\n      minYear: 0,\n      maxYear: 9999,\n      minMonth: undefined,\n      maxMonth: undefined,\n\n      startRange: null,\n      endRange: null,\n\n      isRTL: false,\n\n      // Additional text to append to the year in the calendar title\n      yearSuffix: '',\n\n      // Render the month after year in the calendar title\n      showMonthAfterYear: false,\n\n      // Render days of the calendar grid that fall in the next or previous month\n      showDaysInNextAndPreviousMonths: false,\n\n      // Allows user to select days that fall in the next or previous month\n      enableSelectionDaysInNextAndPreviousMonths: false,\n\n      // how many months are visible\n      numberOfMonths: 1,\n\n      // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n      // only used for the first display or when a selected date is not visible\n      mainCalendar: 'left',\n\n      // Specify a DOM element to render the calendar in\n      container: undefined,\n\n      // Blur field when date is selected\n      blurFieldOnSelect : true,\n\n      // internationalization\n      i18n: {\n        previousMonth : 'Previous Month',\n        nextMonth     : 'Next Month',\n        months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n        weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n        weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n      },\n\n      // Theme Classname\n      theme: null,\n\n      // events array\n      events: [],\n\n      // callback function\n      onSelect: null,\n      onOpen: null,\n      onClose: null,\n      onDraw: null,\n\n      // Enable keyboard input\n      keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n      day += opts.firstDay;\n      while (day >= 7) {\n        day -= 7;\n      }\n      return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n      var arr = [];\n      var ariaSelected = 'false';\n      if (opts.isEmpty) {\n        if (opts.showDaysInNextAndPreviousMonths) {\n          arr.push('is-outside-current-month');\n\n          if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n            arr.push('is-selection-disabled');\n          }\n\n        } else {\n          return '<td class=\"is-empty\"></td>';\n        }\n      }\n      if (opts.isDisabled) {\n        arr.push('is-disabled');\n      }\n      if (opts.isToday) {\n        arr.push('is-today');\n      }\n      if (opts.isSelected) {\n        arr.push('is-selected');\n        ariaSelected = 'true';\n      }\n      if (opts.hasEvent) {\n        arr.push('has-event');\n      }\n      if (opts.isInRange) {\n        arr.push('is-inrange');\n      }\n      if (opts.isStartRange) {\n        arr.push('is-startrange');\n      }\n      if (opts.isEndRange) {\n        arr.push('is-endrange');\n      }\n      return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n        '<button class=\"pika-button pika-day\" type=\"button\" ' +\n        'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n        opts.day +\n        '</button>' +\n        '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n      // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n      var onejan = new Date(y, 0, 1),\n        weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n      return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n      return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n      return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n      var i, arr = [];\n      if (opts.showWeekNumber) {\n        arr.push('<th></th>');\n      }\n      for (i = 0; i < 7; i++) {\n        arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n      }\n      return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n      var i, j, arr,\n        opts = instance._o,\n        isMinYear = year === opts.minYear,\n        isMaxYear = year === opts.maxYear,\n        html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n        monthHtml,\n        yearHtml,\n        prev = true,\n        next = true;\n\n      for (arr = [], i = 0; i < 12; i++) {\n        arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n          (i === month ? ' selected=\"selected\"': '') +\n          ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n          opts.i18n.months[i] + '</option>');\n      }\n\n      monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n      if (isArray(opts.yearRange)) {\n        i = opts.yearRange[0];\n        j = opts.yearRange[1] + 1;\n      } else {\n        i = year - opts.yearRange;\n        j = 1 + year + opts.yearRange;\n      }\n\n      for (arr = []; i < j && i <= opts.maxYear; i++) {\n        if (i >= opts.minYear) {\n          arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n        }\n      }\n      yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n      if (opts.showMonthAfterYear) {\n        html += yearHtml + monthHtml;\n      } else {\n        html += monthHtml + yearHtml;\n      }\n\n      if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n        prev = false;\n      }\n\n      if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n        next = false;\n      }\n\n      if (c === 0) {\n        html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n      }\n      if (c === (instance._o.numberOfMonths - 1) ) {\n        html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n      }\n\n      return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n      return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n      var self = this,\n        opts = self.config(options);\n\n      self._onMouseDown = function(e)\n      {\n        if (!self._v) {\n          return;\n        }\n        e = e || window.event;\n        var target = e.target || e.srcElement;\n        if (!target) {\n          return;\n        }\n\n        if (!hasClass(target, 'is-disabled')) {\n          if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n            self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n            if (opts.bound) {\n              sto(function() {\n                self.hide();\n                if (opts.blurFieldOnSelect && opts.field) {\n                  opts.field.blur();\n                }\n              }, 100);\n            }\n          }\n          else if (hasClass(target, 'pika-prev')) {\n            self.prevMonth();\n          }\n          else if (hasClass(target, 'pika-next')) {\n            self.nextMonth();\n          }\n        }\n        if (!hasClass(target, 'pika-select')) {\n          // if this is touch event prevent mouse events emulation\n          if (e.preventDefault) {\n            e.preventDefault();\n          } else {\n            e.returnValue = false;\n            return false;\n          }\n        } else {\n          self._c = true;\n        }\n      };\n\n      self._onChange = function(e)\n      {\n        e = e || window.event;\n        var target = e.target || e.srcElement;\n        if (!target) {\n          return;\n        }\n        if (hasClass(target, 'pika-select-month')) {\n          self.gotoMonth(target.value);\n        }\n        else if (hasClass(target, 'pika-select-year')) {\n          self.gotoYear(target.value);\n        }\n      };\n\n      self._onKeyChange = function(e)\n      {\n        e = e || window.event;\n\n        if (self.isVisible()) {\n\n          switch(e.keyCode){\n            case 13:\n            case 27:\n              if (opts.field) {\n                opts.field.blur();\n              }\n              break;\n            case 37:\n              e.preventDefault();\n              self.adjustDate('subtract', 1);\n              break;\n            case 38:\n              self.adjustDate('subtract', 7);\n              break;\n            case 39:\n              self.adjustDate('add', 1);\n              break;\n            case 40:\n              self.adjustDate('add', 7);\n              break;\n          }\n        }\n      };\n\n      self._onInputChange = function(e)\n      {\n        var date;\n\n        if (e.firedBy === self) {\n          return;\n        }\n        if (opts.parse) {\n          date = opts.parse(opts.field.value, opts.format);\n        } else if (hasMoment) {\n          date = moment(opts.field.value, opts.format, opts.formatStrict);\n          date = (date && date.isValid()) ? date.toDate() : null;\n        }\n        else {\n          date = new Date(Date.parse(opts.field.value));\n        }\n        if (isDate(date)) {\n          self.setDate(date);\n        }\n        if (!self._v) {\n          self.show();\n        }\n      };\n\n      self._onInputFocus = function()\n      {\n        self.show();\n      };\n\n      self._onInputClick = function()\n      {\n        self.show();\n      };\n\n      self._onInputBlur = function()\n      {\n        // IE allows pika div to gain focus; catch blur the input field\n        var pEl = document.activeElement;\n        do {\n          if (hasClass(pEl, 'pika-single')) {\n            return;\n          }\n        }\n        while ((pEl = pEl.parentNode));\n\n        if (!self._c) {\n          self._b = sto(function() {\n            self.hide();\n          }, 50);\n        }\n        self._c = false;\n      };\n\n      self._onClick = function(e)\n      {\n        e = e || window.event;\n        var target = e.target || e.srcElement,\n          pEl = target;\n        if (!target) {\n          return;\n        }\n        if (!hasEventListeners && hasClass(target, 'pika-select')) {\n          if (!target.onchange) {\n            target.setAttribute('onchange', 'return;');\n            addEvent(target, 'change', self._onChange);\n          }\n        }\n        do {\n          if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n            return;\n          }\n        }\n        while ((pEl = pEl.parentNode));\n        if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n          self.hide();\n        }\n      };\n\n      self.el = document.createElement('div');\n      self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n      addEvent(self.el, 'mousedown', self._onMouseDown, true);\n      addEvent(self.el, 'touchend', self._onMouseDown, true);\n      addEvent(self.el, 'change', self._onChange);\n\n      if (opts.keyboardInput) {\n        addEvent(document, 'keydown', self._onKeyChange);\n      }\n\n      if (opts.field) {\n        if (opts.container) {\n          opts.container.appendChild(self.el);\n        } else if (opts.bound) {\n          document.body.appendChild(self.el);\n        } else {\n          opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n        }\n        addEvent(opts.field, 'change', self._onInputChange);\n\n        if (!opts.defaultDate) {\n          if (hasMoment && opts.field.value) {\n            opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n          } else {\n            opts.defaultDate = new Date(Date.parse(opts.field.value));\n          }\n          opts.setDefaultDate = true;\n        }\n      }\n\n      var defDate = opts.defaultDate;\n\n      if (isDate(defDate)) {\n        if (opts.setDefaultDate) {\n          self.setDate(defDate, true);\n        } else {\n          self.gotoDate(defDate);\n        }\n      } else {\n        self.gotoDate(new Date());\n      }\n\n      if (opts.bound) {\n        this.hide();\n        self.el.className += ' is-bound';\n        addEvent(opts.trigger, 'click', self._onInputClick);\n        addEvent(opts.trigger, 'focus', self._onInputFocus);\n        addEvent(opts.trigger, 'blur', self._onInputBlur);\n      } else {\n        this.show();\n      }\n    };\n\n\n  /**\n   * public Pikaday API\n   */\n  Pikaday.prototype = {\n\n\n    /**\n     * configure functionality\n     */\n    config: function(options)\n    {\n      if (!this._o) {\n        this._o = extend({}, defaults, true);\n      }\n\n      var opts = extend(this._o, options, true);\n\n      opts.isRTL = !!opts.isRTL;\n\n      opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n      opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n      opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n      opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n      opts.disableWeekends = !!opts.disableWeekends;\n\n      opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n      var nom = parseInt(opts.numberOfMonths, 10) || 1;\n      opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n      if (!isDate(opts.minDate)) {\n        opts.minDate = false;\n      }\n      if (!isDate(opts.maxDate)) {\n        opts.maxDate = false;\n      }\n      if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n        opts.maxDate = opts.minDate = false;\n      }\n      if (opts.minDate) {\n        this.setMinDate(opts.minDate);\n      }\n      if (opts.maxDate) {\n        this.setMaxDate(opts.maxDate);\n      }\n\n      if (isArray(opts.yearRange)) {\n        var fallback = new Date().getFullYear() - 10;\n        opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n        opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n      } else {\n        opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n        if (opts.yearRange > 100) {\n          opts.yearRange = 100;\n        }\n      }\n\n      return opts;\n    },\n\n    /**\n     * return a formatted string of the current selection (using Moment.js if available)\n     */\n    toString: function(format)\n    {\n      format = format || this._o.format;\n      if (!isDate(this._d)) {\n        return '';\n      }\n      if (this._o.toString) {\n        return this._o.toString(this._d, format);\n      }\n      if (hasMoment) {\n        return moment(this._d).format(format);\n      }\n      return this._d.toDateString();\n    },\n\n    /**\n     * return a Moment.js object of the current selection (if available)\n     */\n    getMoment: function()\n    {\n      return hasMoment ? moment(this._d) : null;\n    },\n\n    /**\n     * set the current selection from a Moment.js object (if available)\n     */\n    setMoment: function(date, preventOnSelect)\n    {\n      if (hasMoment && moment.isMoment(date)) {\n        this.setDate(date.toDate(), preventOnSelect);\n      }\n    },\n\n    /**\n     * return a Date object of the current selection\n     */\n    getDate: function()\n    {\n      return isDate(this._d) ? new Date(this._d.getTime()) : null;\n    },\n\n    /**\n     * set the current selection\n     */\n    setDate: function(date, preventOnSelect)\n    {\n      if (!date) {\n        this._d = null;\n\n        if (this._o.field) {\n          this._o.field.value = '';\n          fireEvent(this._o.field, 'change', { firedBy: this });\n        }\n\n        return this.draw();\n      }\n      if (typeof date === 'string') {\n        date = new Date(Date.parse(date));\n      }\n      if (!isDate(date)) {\n        return;\n      }\n\n      var min = this._o.minDate,\n        max = this._o.maxDate;\n\n      if (isDate(min) && date < min) {\n        date = min;\n      } else if (isDate(max) && date > max) {\n        date = max;\n      }\n\n      this._d = new Date(date.getTime());\n      setToStartOfDay(this._d);\n      this.gotoDate(this._d);\n\n      if (this._o.field) {\n        this._o.field.value = this.toString();\n        fireEvent(this._o.field, 'change', { firedBy: this });\n      }\n      if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n        this._o.onSelect.call(this, this.getDate());\n      }\n    },\n\n    /**\n     * change view to a specific date\n     */\n    gotoDate: function(date)\n    {\n      var newCalendar = true;\n\n      if (!isDate(date)) {\n        return;\n      }\n\n      if (this.calendars) {\n        var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n          lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n          visibleDate = date.getTime();\n        // get the end of the month\n        lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n        lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n        newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n      }\n\n      if (newCalendar) {\n        this.calendars = [{\n          month: date.getMonth(),\n          year: date.getFullYear()\n        }];\n        if (this._o.mainCalendar === 'right') {\n          this.calendars[0].month += 1 - this._o.numberOfMonths;\n        }\n      }\n\n      this.adjustCalendars();\n    },\n\n    adjustDate: function(sign, days) {\n\n      var day = this.getDate() || new Date();\n      var difference = parseInt(days)*24*60*60*1000;\n\n      var newDay;\n\n      if (sign === 'add') {\n        newDay = new Date(day.valueOf() + difference);\n      } else if (sign === 'subtract') {\n        newDay = new Date(day.valueOf() - difference);\n      }\n\n      this.setDate(newDay);\n    },\n\n    adjustCalendars: function() {\n      this.calendars[0] = adjustCalendar(this.calendars[0]);\n      for (var c = 1; c < this._o.numberOfMonths; c++) {\n        this.calendars[c] = adjustCalendar({\n          month: this.calendars[0].month + c,\n          year: this.calendars[0].year\n        });\n      }\n      this.draw();\n    },\n\n    gotoToday: function()\n    {\n      this.gotoDate(new Date());\n    },\n\n    /**\n     * change view to a specific month (zero-index, e.g. 0: January)\n     */\n    gotoMonth: function(month)\n    {\n      if (!isNaN(month)) {\n        this.calendars[0].month = parseInt(month, 10);\n        this.adjustCalendars();\n      }\n    },\n\n    nextMonth: function()\n    {\n      this.calendars[0].month++;\n      this.adjustCalendars();\n    },\n\n    prevMonth: function()\n    {\n      this.calendars[0].month--;\n      this.adjustCalendars();\n    },\n\n    /**\n     * change view to a specific full year (e.g. \"2012\")\n     */\n    gotoYear: function(year)\n    {\n      if (!isNaN(year)) {\n        this.calendars[0].year = parseInt(year, 10);\n        this.adjustCalendars();\n      }\n    },\n\n    /**\n     * change the minDate\n     */\n    setMinDate: function(value)\n    {\n      if(value instanceof Date) {\n        setToStartOfDay(value);\n        this._o.minDate = value;\n        this._o.minYear  = value.getFullYear();\n        this._o.minMonth = value.getMonth();\n      } else {\n        this._o.minDate = defaults.minDate;\n        this._o.minYear  = defaults.minYear;\n        this._o.minMonth = defaults.minMonth;\n        this._o.startRange = defaults.startRange;\n      }\n\n      this.draw();\n    },\n\n    /**\n     * change the maxDate\n     */\n    setMaxDate: function(value)\n    {\n      if(value instanceof Date) {\n        setToStartOfDay(value);\n        this._o.maxDate = value;\n        this._o.maxYear = value.getFullYear();\n        this._o.maxMonth = value.getMonth();\n      } else {\n        this._o.maxDate = defaults.maxDate;\n        this._o.maxYear = defaults.maxYear;\n        this._o.maxMonth = defaults.maxMonth;\n        this._o.endRange = defaults.endRange;\n      }\n\n      this.draw();\n    },\n\n    setStartRange: function(value)\n    {\n      this._o.startRange = value;\n    },\n\n    setEndRange: function(value)\n    {\n      this._o.endRange = value;\n    },\n\n    /**\n     * refresh the HTML\n     */\n    draw: function(force)\n    {\n      if (!this._v && !force) {\n        return;\n      }\n      var opts = this._o,\n        minYear = opts.minYear,\n        maxYear = opts.maxYear,\n        minMonth = opts.minMonth,\n        maxMonth = opts.maxMonth,\n        html = '',\n        randId;\n\n      if (this._y <= minYear) {\n        this._y = minYear;\n        if (!isNaN(minMonth) && this._m < minMonth) {\n          this._m = minMonth;\n        }\n      }\n      if (this._y >= maxYear) {\n        this._y = maxYear;\n        if (!isNaN(maxMonth) && this._m > maxMonth) {\n          this._m = maxMonth;\n        }\n      }\n\n      randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n      for (var c = 0; c < opts.numberOfMonths; c++) {\n        html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n      }\n\n      this.el.innerHTML = html;\n\n      if (opts.bound) {\n        if(opts.field.type !== 'hidden') {\n          sto(function() {\n            opts.trigger.focus();\n          }, 1);\n        }\n      }\n\n      if (typeof this._o.onDraw === 'function') {\n        this._o.onDraw(this);\n      }\n\n      if (opts.bound) {\n        // let the screen reader user know to use arrow keys\n        opts.field.setAttribute('aria-label', opts.ariaLabel);\n      }\n    },\n\n    adjustPosition: function()\n    {\n      var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n      if (this._o.container) return;\n\n      this.el.style.position = 'absolute';\n\n      field = this._o.trigger;\n      pEl = field;\n      width = this.el.offsetWidth;\n      height = this.el.offsetHeight;\n      viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n      viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n      scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n      leftAligned = true;\n      bottomAligned = true;\n\n      if (typeof field.getBoundingClientRect === 'function') {\n        clientRect = field.getBoundingClientRect();\n        left = clientRect.left + window.pageXOffset;\n        top = clientRect.bottom + window.pageYOffset;\n      } else {\n        left = pEl.offsetLeft;\n        top  = pEl.offsetTop + pEl.offsetHeight;\n        while((pEl = pEl.offsetParent)) {\n          left += pEl.offsetLeft;\n          top  += pEl.offsetTop;\n        }\n      }\n\n      // default position is bottom & left\n      if ((this._o.reposition && left + width > viewportWidth) ||\n        (\n          this._o.position.indexOf('right') > -1 &&\n          left - width + field.offsetWidth > 0\n        )\n      ) {\n        left = left - width + field.offsetWidth;\n        leftAligned = false;\n      }\n      if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n        (\n          this._o.position.indexOf('top') > -1 &&\n          top - height - field.offsetHeight > 0\n        )\n      ) {\n        top = top - height - field.offsetHeight;\n        bottomAligned = false;\n      }\n\n      this.el.style.left = left + 'px';\n      this.el.style.top = top + 'px';\n\n      addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n      addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n      removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n      removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n    },\n\n    /**\n     * render HTML for a particular month\n     */\n    render: function(year, month, randId)\n    {\n      var opts   = this._o,\n        now    = new Date(),\n        days   = getDaysInMonth(year, month),\n        before = new Date(year, month, 1).getDay(),\n        data   = [],\n        row    = [];\n      setToStartOfDay(now);\n      if (opts.firstDay > 0) {\n        before -= opts.firstDay;\n        if (before < 0) {\n          before += 7;\n        }\n      }\n      var previousMonth = month === 0 ? 11 : month - 1,\n        nextMonth = month === 11 ? 0 : month + 1,\n        yearOfPreviousMonth = month === 0 ? year - 1 : year,\n        yearOfNextMonth = month === 11 ? year + 1 : year,\n        daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n      var cells = days + before,\n        after = cells;\n      while(after > 7) {\n        after -= 7;\n      }\n      cells += 7 - after;\n      var isWeekSelected = false;\n      for (var i = 0, r = 0; i < cells; i++)\n      {\n        var day = new Date(year, month, 1 + (i - before)),\n          isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n          isToday = compareDates(day, now),\n          hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n          isEmpty = i < before || i >= (days + before),\n          dayNumber = 1 + (i - before),\n          monthNumber = month,\n          yearNumber = year,\n          isStartRange = opts.startRange && compareDates(opts.startRange, day),\n          isEndRange = opts.endRange && compareDates(opts.endRange, day),\n          isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n          isDisabled = (opts.minDate && day < opts.minDate) ||\n            (opts.maxDate && day > opts.maxDate) ||\n            (opts.disableWeekends && isWeekend(day)) ||\n            (opts.disableDayFn && opts.disableDayFn(day));\n\n        if (isEmpty) {\n          if (i < before) {\n            dayNumber = daysInPreviousMonth + dayNumber;\n            monthNumber = previousMonth;\n            yearNumber = yearOfPreviousMonth;\n          } else {\n            dayNumber = dayNumber - days;\n            monthNumber = nextMonth;\n            yearNumber = yearOfNextMonth;\n          }\n        }\n\n        var dayConfig = {\n          day: dayNumber,\n          month: monthNumber,\n          year: yearNumber,\n          hasEvent: hasEvent,\n          isSelected: isSelected,\n          isToday: isToday,\n          isDisabled: isDisabled,\n          isEmpty: isEmpty,\n          isStartRange: isStartRange,\n          isEndRange: isEndRange,\n          isInRange: isInRange,\n          showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n          enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n        };\n\n        if (opts.pickWholeWeek && isSelected) {\n          isWeekSelected = true;\n        }\n\n        row.push(renderDay(dayConfig));\n\n        if (++r === 7) {\n          if (opts.showWeekNumber) {\n            row.unshift(renderWeek(i - before, month, year));\n          }\n          data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n          row = [];\n          r = 0;\n          isWeekSelected = false;\n        }\n      }\n      return renderTable(opts, data, randId);\n    },\n\n    isVisible: function()\n    {\n      return this._v;\n    },\n\n    show: function()\n    {\n      if (!this.isVisible()) {\n        this._v = true;\n        this.draw();\n        removeClass(this.el, 'is-hidden');\n        if (this._o.bound) {\n          addEvent(document, 'click', this._onClick);\n          this.adjustPosition();\n        }\n        if (typeof this._o.onOpen === 'function') {\n          this._o.onOpen.call(this);\n        }\n      }\n    },\n\n    hide: function()\n    {\n      var v = this._v;\n      if (v !== false) {\n        if (this._o.bound) {\n          removeEvent(document, 'click', this._onClick);\n        }\n        this.el.style.position = 'static'; // reset\n        this.el.style.left = 'auto';\n        this.el.style.top = 'auto';\n        addClass(this.el, 'is-hidden');\n        this._v = false;\n        if (v !== undefined && typeof this._o.onClose === 'function') {\n          this._o.onClose.call(this);\n        }\n      }\n    },\n\n    /**\n     * GAME OVER\n     */\n    destroy: function()\n    {\n      var opts = this._o;\n\n      this.hide();\n      removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n      removeEvent(this.el, 'touchend', this._onMouseDown, true);\n      removeEvent(this.el, 'change', this._onChange);\n      if (opts.keyboardInput) {\n        removeEvent(document, 'keydown', this._onKeyChange);\n      }\n      if (opts.field) {\n        removeEvent(opts.field, 'change', this._onInputChange);\n        if (opts.bound) {\n          removeEvent(opts.trigger, 'click', this._onInputClick);\n          removeEvent(opts.trigger, 'focus', this._onInputFocus);\n          removeEvent(opts.trigger, 'blur', this._onInputBlur);\n        }\n      }\n      if (this.el.parentNode) {\n        this.el.parentNode.removeChild(this.el);\n      }\n    }\n\n  };\n\n  return Pikaday;\n}));\n"),
150
        }
151
        filei := &embedded.EmbeddedFile{
152
                Filename:    "setup.js",
153
                FileModTime: time.Unix(1537914115, 0),
154
                Content:     string("/*\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\nvar currentLocation = window.location;\n$(\"#domain_input\").val(currentLocation.origin);\n\n$('select#database_type').on('change', function(){\n    var selected = $('#database_type option:selected').val();\n    if (selected==\"sqlite\") {\n        $(\"#db_host\").hide();\n        $(\"#db_password\").hide();\n        $(\"#db_port\").hide();\n        $(\"#db_user\").hide();\n        $(\"#db_database\").hide();\n    } else {\n        $(\"#db_host\").show();\n        $(\"#db_password\").show();\n        $(\"#db_port\").show();\n        $(\"#db_user\").show();\n        $(\"#db_database\").show();\n    }\n    if (selected==\"mysql\") {\n        $(\"#db_port_in\").val('3306');\n    } else if (selected==\"postgres\") {\n        $(\"#db_port_in\").val('5432');\n    }\n\n});\n\n$(\"#setup_form\").submit(function() {\n    $(\"#setup_button\").prop(\"disabled\", true);\n    $(\"#setup_button\").text(\"Creating Statup...\");\n    return true;\n});\n\n\n$('form').submit(function() {\n    $(this).find(\"button[type='submit']\").prop('disabled',true);\n    $(this).find(\"button[type='submit']\").text('Loading...');\n});"),
155
        }
156
        filej := &embedded.EmbeddedFile{
157
                Filename:    "sortable.min.js",
158
                FileModTime: time.Unix(1538702348, 0),
159
                Content:     string("var sortable=function(){\"use strict\";function d(e,t,n){if(void 0===n)return e&&e.h5s&&e.h5s.data&&e.h5s.data[t];e.h5s=e.h5s||{},e.h5s.data=e.h5s.data||{},e.h5s.data[t]=n}function u(e,t){if(!(e instanceof NodeList||e instanceof HTMLCollection||e instanceof Array))throw new Error(\"You must provide a nodeList/HTMLCollection/Array of elements to be filtered.\");return\"string\"!=typeof t?Array.from(e):Array.from(e).filter(function(e){return 1===e.nodeType&&e.matches(t)})}var p=new Map,t=function(){function e(){this._config=new Map,this._placeholder=void 0,this._data=new Map}return Object.defineProperty(e.prototype,\"config\",{get:function(){var n={};return this._config.forEach(function(e,t){n[t]=e}),n},set:function(e){if(\"object\"!=typeof e)throw new Error(\"You must provide a valid configuration object to the config setter.\");var t=Object.assign({},e);this._config=new Map(Object.entries(t))},enumerable:!0,configurable:!0}),e.prototype.setConfig=function(e,t){if(!this._config.has(e))throw new Error(\"Trying to set invalid configuration item: \"+e);this._config.set(e,t)},e.prototype.getConfig=function(e){if(!this._config.has(e))throw new Error(\"Invalid configuration item requested: \"+e);return this._config.get(e)},Object.defineProperty(e.prototype,\"placeholder\",{get:function(){return this._placeholder},set:function(e){if(!(e instanceof HTMLElement)&&null!==e)throw new Error(\"A placeholder must be an html element or null.\");this._placeholder=e},enumerable:!0,configurable:!0}),e.prototype.setData=function(e,t){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");this._data.set(e,t)},e.prototype.getData=function(e){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");return this._data.get(e)},e.prototype.deleteData=function(e){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");return this._data.delete(e)},e}();function m(e){if(!(e instanceof HTMLElement))throw new Error(\"Please provide a sortable to the store function.\");return p.has(e)||p.set(e,new t),p.get(e)}function g(e,t,n){if(e instanceof Array)for(var r=0;r<e.length;++r)g(e[r],t,n);else e.addEventListener(t,n),m(e).setData(\"event\"+t,n)}function l(e,t){if(e instanceof Array)for(var n=0;n<e.length;++n)l(e[n],t);else e.removeEventListener(t,m(e).getData(\"event\"+t)),m(e).deleteData(\"event\"+t)}function h(e,t,n){if(e instanceof Array)for(var r=0;r<e.length;++r)h(e[r],t,n);else e.setAttribute(t,n)}function s(e,t){if(e instanceof Array)for(var n=0;n<e.length;++n)s(e[n],t);else e.removeAttribute(t)}function v(e){if(!e.parentElement||0===e.getClientRects().length)throw new Error(\"target element must be part of the dom\");var t=e.getClientRects()[0];return{left:t.left+window.scrollX,right:t.right+window.scrollX,top:t.top+window.scrollY,bottom:t.bottom+window.scrollY}}function y(e,t){if(!(e instanceof HTMLElement&&(t instanceof NodeList||t instanceof HTMLCollection||t instanceof Array)))throw new Error(\"You must provide an element and a list of elements.\");return Array.from(t).indexOf(e)}function E(e){if(!(e instanceof HTMLElement))throw new Error(\"Element is not a node element.\");return null!==e.parentNode}var n=function(e,t,n){if(!(e instanceof HTMLElement&&e.parentElement instanceof HTMLElement))throw new Error(\"target and element must be a node\");e.parentElement.insertBefore(t,\"before\"===n?e:e.nextElementSibling)},b=function(e,t){return n(e,t,\"before\")},w=function(e,t){return n(e,t,\"after\")};function T(e){if(!(e instanceof HTMLElement))throw new Error(\"You must provide a valid dom element\");var n=window.getComputedStyle(e);return[\"height\",\"padding-top\",\"padding-bottom\"].map(function(e){var t=parseInt(n.getPropertyValue(e),10);return isNaN(t)?0:t}).reduce(function(e,t){return e+t})}function c(e,t){if(!(e instanceof Array))throw new Error(\"You must provide a Array of HTMLElements to be filtered.\");return\"string\"!=typeof t?e:e.filter(function(e){return e.querySelector(t)instanceof HTMLElement}).map(function(e){return e.querySelector(t)})}var C=function(e,t,n){return{element:e,posX:n.pageX-t.left,posY:n.pageY-t.top}};function L(e,t){if(!0===e.isSortable){var n=m(e).getConfig(\"acceptFrom\");if(null!==n&&!1!==n&&\"string\"!=typeof n)throw new Error('HTML5Sortable: Wrong argument, \"acceptFrom\" must be \"null\", \"false\", or a valid selector string.');if(null!==n)return!1!==n&&0<n.split(\",\").filter(function(e){return 0<e.length&&t.matches(e)}).length;if(e===t)return!0;if(void 0!==m(e).getConfig(\"connectWith\")&&null!==m(e).getConfig(\"connectWith\"))return m(e).getConfig(\"connectWith\")===m(t).getConfig(\"connectWith\")}return!1}var M,x,D,A,H,I,S,Y={items:null,connectWith:null,disableIEFix:null,acceptFrom:null,copy:!1,placeholder:null,placeholderClass:\"sortable-placeholder\",draggingClass:\"sortable-dragging\",hoverClass:!1,debounce:0,throttleTime:100,maxItems:0,itemSerializer:void 0,containerSerializer:void 0,customDragImage:null};function _(e,t){if(\"string\"==typeof m(e).getConfig(\"hoverClass\")){var o=m(e).getConfig(\"hoverClass\").split(\" \");!0===t?(g(e,\"mousemove\",function(r,o){var i=this;if(void 0===o&&(o=250),\"function\"!=typeof r)throw new Error(\"You must provide a function as the first argument for throttle.\");if(\"number\"!=typeof o)throw new Error(\"You must provide a number as the second argument for throttle.\");var a=null;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=Date.now();(null===a||o<=n-a)&&(a=n,r.apply(i,e))}}(function(r){0===r.buttons&&u(e.children,m(e).getConfig(\"items\")).forEach(function(e){var t,n;e!==r.target?(t=e.classList).remove.apply(t,o):(n=e.classList).add.apply(n,o)})},m(e).getConfig(\"throttleTime\"))),g(e,\"mouseleave\",function(){u(e.children,m(e).getConfig(\"items\")).forEach(function(e){var t;(t=e.classList).remove.apply(t,o)})})):(l(e,\"mousemove\"),l(e,\"mouseleave\"))}}var f=function(e){l(e,\"dragstart\"),l(e,\"dragend\"),l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\"),l(e,\"mouseenter\"),l(e,\"mouseleave\")},O=function(e,t){var n=e;return!0===m(t).getConfig(\"copy\")&&(h(n=e.cloneNode(!0),\"aria-copied\",\"true\"),e.parentElement.appendChild(n),n.style.display=\"none\",n.oldDisplay=e.style.display),n};function F(e){for(;!0!==e.isSortable;)e=e.parentElement;return e}function W(e,t){var n=d(e,\"opts\"),r=u(e.children,n.items).filter(function(e){return e.contains(t)});return 0<r.length?r[0]:t}var r=function(e){var t,n,r,o=d(e,\"opts\")||{},i=u(e.children,o.items),a=c(i,o.handle);l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\"),(n=t=e).h5s&&delete n.h5s.data,s(t,\"aria-dropeffect\"),l(a,\"mousedown\"),f(i),s(r=i,\"aria-grabbed\"),s(r,\"aria-copied\"),s(r,\"draggable\"),s(r,\"role\")},j=function(e){var t=d(e,\"opts\"),n=u(e.children,t.items),r=c(n,t.handle);(h(e,\"aria-dropeffect\",\"move\"),d(e,\"_disabled\",\"false\"),h(r,\"draggable\",\"true\"),!1===t.disableIEFix)&&(\"function\"==typeof(document||window.document).createElement(\"span\").dragDrop&&g(r,\"mousedown\",function(){if(-1!==n.indexOf(this))this.dragDrop();else{for(var e=this.parentElement;-1===n.indexOf(e);)e=e.parentElement;e.dragDrop()}}))},z=function(e){var t=d(e,\"opts\"),n=u(e.children,t.items),r=c(n,t.handle);d(e,\"_disabled\",\"false\"),f(n),l(r,\"mousedown\"),l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\")};function N(e,f){var c=String(f);return f=Object.assign({connectWith:null,acceptFrom:null,copy:!1,placeholder:null,disableIEFix:null,placeholderClass:\"sortable-placeholder\",draggingClass:\"sortable-dragging\",hoverClass:!1,debounce:0,maxItems:0,itemSerializer:void 0,containerSerializer:void 0,customDragImage:null,items:null},\"object\"==typeof f?f:{}),\"string\"==typeof e&&(e=document.querySelectorAll(e)),e instanceof HTMLElement&&(e=[e]),e=Array.prototype.slice.call(e),/serialize/.test(c)?e.map(function(e){var t=d(e,\"opts\");return function(t,n,e){if(void 0===n&&(n=function(e,t){return e}),void 0===e&&(e=function(e){return e}),!(t instanceof HTMLElement)||1==!t.isSortable)throw new Error(\"You need to provide a sortableContainer to be serialized.\");if(\"function\"!=typeof n||\"function\"!=typeof e)throw new Error(\"You need to provide a valid serializer for items and the container.\");var r=d(t,\"opts\").items,o=u(t.children,r),i=o.map(function(e){return{parent:t,node:e,html:e.outerHTML,index:y(e,o)}});return{container:e({node:t,itemCount:i.length}),items:i.map(function(e){return n(e,t)})}}(e,t.itemSerializer,t.containerSerializer)}):(e.forEach(function(s){if(/enable|disable|destroy/.test(c))return N[c](s);[\"connectWith\",\"disableIEFix\"].forEach(function(e){f.hasOwnProperty(e)&&null!==f[e]&&console.warn('HTML5Sortable: You are using the deprecated configuration \"'+e+'\". This will be removed in an upcoming version, make sure to migrate to the new options when updating.')}),f=Object.assign({},Y,f),m(s).config=f,f=d(s,\"opts\")||f,d(s,\"opts\",f),s.isSortable=!0,z(s);var e,t=u(s.children,f.items);if(null!==f.placeholder&&void 0!==f.placeholder){var n=document.createElement(s.tagName);n.innerHTML=f.placeholder,e=n.children[0]}m(s).placeholder=function(e,t,n){if(void 0===n&&(n=\"sortable-placeholder\"),!(e instanceof HTMLElement))throw new Error(\"You must prov
+155
func init() {
156
157
        // define files
158
        fileh := &embedded.EmbeddedFile{
159
                Filename:    "base.html",
160
                FileModTime: time.Unix(1538458071, 0),
161
                Content:     string("{{ define \"base\" }}\n<!doctype html>\n<html lang=\"en\">\n{{block \"head\" .}} {{end}}\n<body>\n    {{template \"content\" .}}\n</body>\n<footer>{{template \"footer\" .}}</footer>\n{{template \"scripts\" .}}\n</html>\n{{end}}\n"),
162
        }
163
        filei := &embedded.EmbeddedFile{
164
                Filename:    "dashboard.html",
165
                FileModTime: time.Unix(1538459427, 0),
166
                Content:     string("{{define \"title\"}}Statup | Dashboard{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{template \"nav\" }}\n    <div class=\"col-12 mt-3\">\n        <div class=\"row stats_area mb-5\">\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{ CoreApp.ServicesCount }}</span>\n                Total Services\n            </div>\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{ CoreApp.Count24HFailures }}</span>\n                Failures last 24 Hours\n            </div>\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{ CoreApp.CountOnline }}</span>\n                Online Services\n            </div>\n        </div>\n        <div class=\"row mt-4\">\n            <div class=\"col-12\">\n                <h3>Services</h3>\n                <div class=\"list-group mb-5 mt-3\">\n                {{ range Services }}\n                    <a href=\"#\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\n                        <div class=\"d-flex w-100 justify-content-between\">\n                            <h5 class=\"mb-1\">{{.Name}}</h5>\n                            <small>{{if .Online}} <span class=\"badge badge-success\">ONLINE</span> {{else}} <span class=\"badge badge-danger\">OFFLINE</span> {{end}}</small>\n                        </div>\n                        <p class=\"mb-1\">{{.SmallText}}</p>\n                    </a>\n                {{ end }}\n                </div>\n\n            {{ range Services }}\n            {{ if .LimitedFailures }}\n                <h4 class=\"text-truncate\">{{.Name}} Failures</h4>\n                <div class=\"list-group mt-3 mb-4\">\n                {{ range .LimitedFailures }}\n                    <a href=\"#\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\n                        <div class=\"d-flex w-100 justify-content-between\">\n                            <h5 class=\"mb-1\">{{.ParseError}}</h5>\n                            <small>{{.Ago}}</small>\n                        </div>\n                        <p class=\"mb-1\">{{.Issue}}</p>\n                    </a>\n                {{ end }}\n                </div>\n            {{ end }}\n            {{ end }}\n\n\n            </div>\n        </div>\n    </div>\n</div>\n{{end}}\n"),
167
        }
168
        filej := &embedded.EmbeddedFile{
169
                Filename:    "error_404.html",
170
                FileModTime: time.Unix(1538457906, 0),
171
                Content:     string("{{define \"title\"}}Statup Page Not Found{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n    <div class=\"col-12 mt-3\">\n        <div class=\"alert alert-danger\" role=\"alert\">\n            Sorry, this page doesn't seem to exist.\n        </div>\n    </div>\n</div>\n{{end}}\n"),
172
        }
173
        filek := &embedded.EmbeddedFile{
174
                Filename:    "favicon.ico",
175
                FileModTime: time.Unix(1530546686, 0),
176
                Content:     string("\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00@\x00\x00\x00@\b\x06\x00\x00\x00\xaaiq\xde\x00\x00\v\x92IDATx\x9c\xed\x9ak\x8c]Wu\xc7\u007fk\xed3w\xc6\xf3\xcexb\x1c)\t\x89\x89\xa8\t\xe6!C\xa3\xc8T\xd8q\x1d\x9a\x84\x14\xd1\b\x10\xad\xd4\x12\xb5\xa9P\x15\x12\xd3Z\x15TBB\x15\x1f\xe8\a\xaa\xe0\x98\xb4*\x16n\xfb\xa1T\x05җ҄\x94ď@R\nI_\xaa\"\xd7\x19\x9c4$\xe0Lf\xfc\x18\xcf\xe3νg\xaf\xd5\x0f\xe7\xee9\xe7\x9a\xca\xe9=3\xa6\xa8\x9d\xbfd\xcd\xf8\xdes\xd6\xde\xeb?k\xaf\xbd\xd6\u007foX\xc7:ֱ\x8eu\xac\xe3\xff-\xe4R\x0f\xf0\x86\u007f\x19gff\xeez\x11\xb9!\x04\xdeb\xe6W\xbb\xfb\xa6\x10t\xd0\xddUU\x9af,\xaa\xca)w^t\xb7\xe7@\x9f\x0e\xc1\x9e}\xf5\xddf\x97z~\x97\x84\x80\x81\xbf\x83\x91\x91\xb0Ý_\x8e\xd1\xdf\x0fl\x16\x01\x11\x05\fw\x10\x11D\x84\x18\rUp\aU!\xcf\x1dU\x018\v<\f<\xb8\xbc\xec\x0f-\xdcb\xadK1\xd75'`\xec1\xb9-\x04\xf9\x8c\x88l7s\n\xc7\x05w/\x06\x14A\xa4pجpֽ\xf8\x19\xa3\x93e\x82\x99\xe3^<g愠/\xb9\xfb\x01\x11\xff\xc2\xccN[\\\xcb\xf9\xae\x19\x01\x93\xc7t،\x83\xaa\xfaaw\xa7\xf0\xd7W\x9c\x17QD\x9c\x18\x8bϒ\xe3\xe9YU\xc1\xcd\xe1\x02\xc2\x121\xaa\x82\b/\xba\xf3볻\xe2߯ռׄ\x80\x8dG\xc3f3\xff\x06\xb0\r\x04\x91\xc2Ʉ\x14\t@\x85\x90\xee\xa8\x00V\xc8\bA\xc8s#\x04튒\xc26\x06\xfe\x89\xd9]\xf6\xb9\xb5\x98\xfb\xaa\t\x988\"\xa3\xaa\xe1Iw\xdf\xd6\xf1\a\x91\x14\x01e\xb8\x83\xaf\xbc\xa3\xaa]\xa4T\x89\xb0hhЕg\xdd\x1cQ\xadDDa\xcf\xdd\xef>}\x93\xfd\xc1j篯\xfd\xc8kA\x0e\xba\xfb\xb6\x18\x9d\"\xe4\x93äd\x86j\xf1\xbb H\x14l\xc9\xf0%\xc7\xe6\x1d_\x04\x96\x81\b\xe0\x1d\xe7\v\x03f\x8e(\xb8[\xc7\x06\xc4\xe8)\x89\xde7y,\xbb~\xb5\xb3\xcfV\xf3\xf2\xc4\x11\xbd͝\x0f\x81w&\xa8\xb8\x17;WJrn\x0e\x8b\x82\x9dwdA\x88MC\\P\x8adg\xe6H\x00\xed\x13\x18pd\xd4\xd1\x11\xa0Q,\x85\xb4\xfe\xcb\xe8\x12\n\x82\xa4a\xe6\a\x80\x9f]\x8d\x0f\xb5\x97\xc0\xa6o\x06b\xe4\x19w\xdf^]\xef\xe5\xfa\x06o9\xfeC!N;~\x8e\xdcs\x9e\x15\x93g\x89\x9cr\xf3y\\\x16\xdc=C٨\r\xb6H\x9f\xdc\xe0\xfd\xbeY& \\\x01ac\x99\x1b\xca\xe9zW\xceP\x95\x9f\x9e\xd9\x19\x9f\xae\xebG\xed\b\xc8snHΧDU\x9d\x1c9ؔ\xd0\xfe\xbeOiS>\xdb^\xb6\xbf\\\xfeC?{1\x9bW|jT\xcfN\x9f\xbf1\x9b\xd7}\xf1<wp\xad\xa3\xaf\x832\x978\xa1\x93\x1fR\x84\x89\xc8G\x81\xda\x04Ԏ\x80\x89#\xfa\x19U\xf9T\xda\xe2ܽ+c\xe7ρMɟ\xd8R\xfc\x8d\xc5\x034{\xb5?\xb8Wo\xd7I\xfe,\xbc\x99Q\x1d\xa7\xb3#XW\x01\x15\x82`\xe6\xd3ͦ]\xb1x+\xb5\xaa\xc6\xfaI\xd0y\xa7Y\xb15%\xe7W\xfe\xfam!\xfe'_c\xd9~\xad\x8e\xf3\x00\x8b\xfb\xed!='\xb7\xda\U000f4534\xee\v\x98\x19\xaa\xa9`b\xd3\xc0\x80\xbe\xb5\xae\x1b\xb5\t\x10\x917v\x19R]\xd9\xd6X\xa4is~\xf7\xfc~_U-?\xf7\xb9\xf8\x14\xb3\xf2i;\xeb\x95$\xd8]Mv\x8a\xaaw\xd6\x1d\xa36\x01\x16}2msE\x92\xaaD\xc1\b'\x96\x0e\xf8t]\xdbU\xc8R\xf6\xf98\xe3\xd3\ue38a\xe0m\xf0&\xe4s\x8e\x9e\x17|\xd6\xf1i\xa9\x9d\xcb\xeaG\x80\xc9p\n\xfd\xea\xbeo\xe6\xb8\xf8\xb6\xb1Ǻ#\xa4.\xe6\xee[n\xb2(_\xb1\xef\v\xed\x13N<\x01\xf19\x88\xff\x01\xf9\xb3\xd0\xfaWh\xfes\xfd@\xab͜\xb7ܤ!Z\x84\xa4w\xd6e\xc1\xa7\b\x1a\x82|i\xec1n>\xb7\xc7k\xe5\x80*\xe2)9\x12_\xf1;1Nb~\x92\\\xa6<\xe7{&\x9c\xcc\xdb~\xb2\u007f@_\xa8k\xbb\xf6.0\xf6U\xfda\xdf&ٜ\x12\xa1H\x99\x10)\x93\xd6S\xaa\xfa\x91\x99\x9d\xf9T\xddq\x00\x86\xf7\x065\x8b\xb6x`5V\xfe{\xd4&`\xfc\x90>\xa9\xd7ʎ\xb4?\v\x82h\x91\x94R##\x021ZKD\xbel\xc6_\x80\x1d>\xb3\xdb/I__\x17\xf5\x93\xe0\f\xdf\xf1\x96w\x1a\x13\xb0N'\x97j\x013'FÝ\x86\x88\xdc\t\xfe\x88\xaa\xbe:y,{p\xe3\xd1p\xd7ƣ\xe1\xea5\xf4\xa36jG\xc0\xd0o\xeb\x8e\xec-<\x19\xae\xaaV\x82\x1d\xa3\x9dv\xb8\xf8\xfcG;\xbfJ+|\x1c\xf8z\x9e\xfb\xa3\xfd\xfd}O\xbc\xfa\xee֚\x8a\x1d\xff\x13\xd4'\xe0^T^\xa7\xcf\xf4\xbd\x8d\xb73HE\xe0(\xbeO\xff/\x9dMy\x02̊F'EO\xa7\xa6o\xba\xfb\xb7@\x1e\rA\x1e\nA\x8e\x9fzW{-|\xbc(V\xa5\a\f\xed\xd3[\xb2k\xe5\x11\xbdΡ\xd1MB\x8a\b\x8b\xa9\xa5M\xe5l\xec\xa8Ct%\xcc\xd4@%\xb8\xfbT\b\xf2\x90\x88<\xe8nO]*\x81tՂ\xc8\xd0'\xc2\xc1\xf0z\xbf\xab\xefZ\x85\r\x85\a\xd5\xee-\xe9}E\xd5FWEW\n%\x82j\x91?\xd2;\xd5g\x81\x1f\xa8\xcaWD\xf8\xd2\xcc\xce\xf8\ufadds\x15\xab&`|_\u007f#\xcf\xda\u007f\xc5f\xbf-\xbbJ\xd0\xcb\x04\x94ʚ/\x15\xa2\xa2\x89)\xf3Ez&\xe9~\xd5ϊ(*\x96K\xf1\xcc\xca\xefG\xf3<~z\xeef\x9eX\xed\xdca\x8d4\xc1\xa1{\xa5a\x81\xcf\xf6]\xae\xbfŤ\xa1\x1b\x05\x19\x06\xfa\xca\xeaP\xb5\x9b\x80\xaa\xe8ٵd\xec\xc2(J\xd3,e\xb3N\xde8$\x12\xf6\x9e\xbe\xa9=\xbf\x9a\xb9\xaf\xa9,\xbe\xe1c\xb2+\x1b\xd1\xdf\xf7!߮\x97\x81\x8c\x03CN6\xac+5gW\xd7\b\x95\xa6\xa6\x9a\x13\xa0\xaa('hG\x1bL\x89S\x84\xa7ݹ\xf5\xccn\x9b\xa9;\xe75?\x17\x90\xbb\xd0\xc1\xc1\xb0\x9b\x86\xdf\x1d\x06\xf5\xb68\x18\x1b:\x02:&\x84\x11\xc1\xfb\x9d\xb0\xa1\x94\xca\xd3_<EE\xe7\x1c\xa0\xd3cx\xea\xf9\xbbT \x11%\xc6H\x96\x05\xdc\xfd;ͦ\xef\\\xb8\xc5j\x95ܗ\xf4hlxo\x98p\xfc\x0e\xe9烞\xb1+\x8cJC\x86\x81\r\x8e\x8c\x00\x03\x10\x06\x05\x0f\xdd\x11\xb0R]J\x99+RM\x01t\x91\xe3\xee\xe49\xf7\x9f\xdbc{\xeb\xcc\xf1\x92\x9f\r&\f\xef\r\xc3\xc0{\xa2\xda{À\xbc\x87\x86\\)#^\b\xa1C\x82\x8e\x80n\x10d\x03\x18\xa9p\xea^\xfbi\xb9T\x97Lg\x99\xe4\xaa\xfa晝\xf9\x89^\xe7\xf5c#\xa0\x8a\xf1}}\xb4Z\xf1\x8d\x1adO\f~s6 \xbb\xe8\xf7q\x86\x05\x19tt\ftX`\xb0P\x8c\x13\x11\xee\xe9g\xf1Yyt&\xb8\xf3\xf9\xd37\xc5\xdf\xecu.\xff+\x04\\\x88ὒ\xb9\xcbvT\xf6Ȁ\xbfW\x1ar#\xa3\xae:\n:)\xc8\x18H\xf0\xea\x0e\xb0\x92 \xdd%-\x85\x93\xb3\xbb\xe2\x1bz\x1d\xfb'\x82\x80\v1t\xaflr\xe4\x03\xb2\x81\x8f\xe8\xa8\xdc\x10\xae\x84p\x15H\xe8.\xaf/(\x960\xb3\xcb\xcf\xec\xf6\x9ev\x845!`\xfcq\xc9D\xe4:U\xb6\xba3\u007f\xfa&{l-\xec\x02\f~,\xec\x961?ط\x8d-\xe1\x8ab\t\x98\x91\x0eK+J4\x80\xbfcv\x97\xfdS/\xf6{V\x846\x1e\x95a\xd5pG\x9eۛTe\xab\x9bo\x15\x95-f\xde\xe8\x1ci\x1f\x06\u058c\x80\xc5/\xc4Ã\xf7\xe8\xbb\xecE\xf9G\xb9ܯ\x96\xd0\xddHA\x99\x18C\xd0qzT\xc7{\xd6\x03\xe24ט\xf1\xa7\"|\xd2\xdd\xdf/*[E\xa4Q\xa8\u008e\x99\xdf8yL\x1b\xbdڽ\x18\x16\x0f\xd8);\xeb\xfb\xc8\xcbJP\xe8V\x88͌<\x8f=\xfb\xd3\xf3\v\xf6\xbc\x8c\xd3N\xc5K\xd9\xd5\x15g\x82\x82\b\x831rK\xafv_\v}\xed\xeco\x05ZЩ\x17\xa4\xac\a@\bAɖC\xcfjS\xcf\x04\xb4Oq\"\x9e\xabfa*\xe1X$&U\xa9U\x94\\\f\xfd\xbf\xc0\x80\xf4\x17\",\xa4\xf3\x00\xed\x12bZ\xcf\xf9\\\xafv{&`\xe9>\x9b\xb63L\xa5s\x80\x94\x8d\x81\xce>-\x98\xf9\xee\xcb\x0e\xeb\xfbz\xb5}1\xb4Z\xf1W\xcc=+\x1a'\xa5\xdd6܍\x18;\xd2\xdb\"ė\xfd\a\xbdڭ\xa5\t\xda,\x0f{[:엵z\xa7RM\xa75\a'\x8fe\xd7Ա\u007f!&\x8f\x85+U\xf9\xdd2\xf9yg\xac\"\xf4C\x10\xec\f\xd3\xf9\xbc\xf5|\x18S\x8b\x00\x9f\xe5\xab6\x93z\xfcB\xe9Iˡ\x88\x86\xe2\xcc\xceݏ\x8c?.[댑0\xfe\xb8n\x06\x1e\x01&R\xe3\x94\bOw\x8cp\xb0i?\xdc|\xa0w\xfb\xb5\b\x90\x96\u007f\xcb^⸵|\xe5\x92C\xb5\x9bK\n\x8f;\xd7\x00\u07fd\xfc\x89\xec\xe3C_g\xa0\x971&\x8e\xc0\xe4\xb1p{\b\xf2]3\xb6\xa5\xc6\xc8\xccȲ\xf2ʌ\b\xe4\xaf:>-\u007f^˗:/\x01\f}R\xef\xcc\xde\xc4\x1fg\xaf\xaf^\x86\xb2\xceQ9+ˡli\x99v\xf7/\x8b\xf0h\x9e\xf3\xf4\xb9=?\xda\xc3O\x1e\xcb\x06\xddm\x9b;\xbb\xdc\xf9EUy{\xfa\xaej\xb3\x18\xabs_\xa8\r\xadg|\xca^\xe6\xa7\x16\xee\xef]7\xacM\x80\xfe*\xd9\xf0\x96\xf0\x8c^\xefo\xcd6\n\xee\xd2!\xa0HR\xc5\x05\xc8R\xe8\xac\\n\xa2\x13!s\xc0\f\xd02#\x13\xf1q\x90\t@c,[ݴ\xac\ne\xa9T\x8aB\x10<B{\xca\xe1\xa4~p\xee\xf7\xf2\xaf\xd5\xf2\xa3.\x01v\x88<\x9f\xf5\x8f\xdaIr\x9b\x87\xe2\x9eP)kU\xf5\xbej4\xa4\x9b$\xee\x8c\xc6\xe8[\xcc|\xab\b\xd7\x01\x93\x80V5\x80t\x9f\xb0\x10JS\x84\x15\xdf\xc7\xdc\xc9_r\xe2\v\xfc\xb57\xad\x96\xf3\x00\xa1\xee\x8b\x00\xedo\xfbK\xd9\xdbd\x816?'C \xfd\xc9\xd1\xf22S٬$ŷ\xbc\x17X\xaa<\x90\xda\xdbR-\x93\x15\x87S\xd4dY\x87\xc9\x1c\xece\xb0\xef\xc9q\x9f\x93\x9f\x9f\xdf_O\r\x82U\x12\x000\xfa3\xfd\xffО\xb3a_b\a}\x10\x86\x04\x87\x15\xf5&9\x9e\bIW\\\xca\x1dC\xaa\xcd\f\x89\x88\xf4Nq\xbeXl{n\x8e/\x80\xbd\b\xf6\xbc\x1c\x97\xf3z\xf3\xfc\xfe|U\xf7\x10VM\xc0ғ9}\xef\xf0o\xb0\xa4\v\xb2(\xbbc\xcbU3\x90\x06H\xa5.\x80R!N[e\xf1\x1d$\xa7˪N\xa8\n\xa7\xaa\x02K`\xaf@|\x1e\xe2\xcb<\xec\vr\xfb\xfc\xfe\xfc\x95\xd5\xce\u007fM\xf5\x80Ꮗ\x1d>\xe0\u007f\xa4\x97\xb1MƁq'\x1b\x16\xe8\x17\b\xddjpB\xb5vH\xe7\x88f\xc5m\x10ZB>op\x0e\xec4pF\xa6m\xc1\u007f\a\xb3C\v\xf7\xaf͜\xd7\\\x10\x19\xbc\x87LC\xf6Kް\xbd:\xc8v\x19\x13\xe8wd\x03ſ\x06H\x80N\xd5\fBq\xb4\xee\xe0\x06\x9e\x83-9>_\\\x85a\x1eX\x90\x93\xb6\xc4\x03\xb1\x1d\xbf\xd8|\x80U\x9d\x03\\\x88K\xaa\b\rݫף\xbcO\xfae'ʍ\x1e|\\\xfa:$\xf4\t\x8e\xa3\x01,\a\x8f\xa0.X\xd3\xf16-\"\xff\xe6\xcb\x1c&\xf27\xcb\xcb\xf6\xed\xf8\xc5z\xd7\xe0^\v?6Il\xf0\x1eȲl\xb3\xbbl\x01\xdfdf\x138\x03\x0e\x99Eoj\x90y\x119kf/4\x17}\xca\x0f\xf1\x13u\x91b\x1d\xebX\xc7:\xd6\xf1\u007f\x11\xff\x05\x1f2t\x13ȇz\xd2\x00\x00\x00\x00IEND\xaeB`\x82"),
177
        }
178
        filel := &embedded.EmbeddedFile{
179
                Filename:    "footer.html",
180
                FileModTime: time.Unix(1538458476, 0),
181
                Content:     string("{{ define \"footer\"}}\n<div class=\"footer text-center mb-4\">\n{{ if CoreApp.Footer}}\n    {{ CoreApp.Footer }}\n{{ else }}\n    <a href=\"https://github.com/hunterlong/statup\" target=\"_blank\">Statup {{VERSION}} made with ❤️</a> | <a href=\"/dashboard\">Dashboard</a>\n{{ end }}\n</div>\n{{ end }}\n"),
182
        }
183
        filem := &embedded.EmbeddedFile{
184
                Filename:    "form_checkin.html",
185
                FileModTime: time.Unix(1538935644, 0),
186
                Content:     string("{{define \"form_checkin\"}}\n<form action=\"/service/{{.Id}}/checkin\" method=\"POST\">\n    <div class=\"form-group row\">\n        <div class=\"col-md-3\">\n            <label for=\"checkin_interval\" class=\"col-form-label\">Checkin Name</label>\n            <input type=\"text\" name=\"name\" class=\"form-control\" id=\"checkin_name\" placeholder=\"New Checkin\">\n        </div>\n        <div class=\"col-3\">\n            <label for=\"checkin_interval\" class=\"col-form-label\">Interval</label>\n            <input type=\"number\" name=\"interval\" class=\"form-control\" id=\"checkin_interval\" placeholder=\"60\">\n        </div>\n        <div class=\"col-3\">\n            <label for=\"grace_period\" class=\"col-form-label\">Grace Period</label>\n            <input type=\"number\" name=\"grace\" class=\"form-control\" id=\"grace_period\" placeholder=\"10\">\n        </div>\n        <div class=\"col-3\">\n            <label for=\"checkin_interval\" class=\"col-form-label\"></label>\n            <button type=\"submit\" class=\"btn btn-success d-block\">Save Checkin</button>\n        </div>\n    </div>\n</form>\n{{end}}\n"),
187
        }
188
        filen := &embedded.EmbeddedFile{
189
                Filename:    "form_notifier.html",
190
                FileModTime: time.Unix(1539400173, 0),
191
                Content:     string("{{define \"form_notifier\"}}\n{{$n := .Select}}\n<form method=\"POST\" class=\"{{underscore $n.Method }}\" action=\"/settings/notifier/{{ $n.Method }}\">\n{{if $n.Title}}<h4>{{$n.Title}}</h4>{{end}}\n{{if $n.Description}}<p class=\"small text-muted\">{{safe $n.Description}}</p>{{end}}\n\n{{range $n.Form}}\n    <div class=\"form-group\">\n            <label class=\"text-capitalize\" for=\"{{underscore .Title}}\">{{.Title}}</label>\n        {{if eq .Type \"textarea\"}}\n            <textarea rows=\"3\" class=\"form-control\" name=\"{{underscore .DbField}}\" id=\"{{underscore .Title}}\">{{ $n.GetValue .DbField }}</textarea>\n        {{else}}\n            <input type=\"{{.Type}}\" name=\"{{underscore .DbField}}\" class=\"form-control\" value=\"{{ $n.GetValue .DbField }}\" id=\"{{underscore .Title}}\" placeholder=\"{{.Placeholder}}\" {{if .Required}}required{{end}}>\n        {{end}}\n        {{if .SmallText}}\n            <small class=\"form-text text-muted\">{{safe .SmallText}}</small>\n        {{end}}\n    </div>\n{{end}}\n\n    <div class=\"row\">\n        <div class=\"col-9 col-sm-6\">\n            <div class=\"input-group mb-2\">\n                <div class=\"input-group-prepend\">\n                    <div class=\"input-group-text\">Limit</div>\n                </div>\n                <input type=\"text\" class=\"form-control\" name=\"limits\" min=\"1\" max=\"60\" id=\"limits_per_hour_{{underscore $n.Method }}\" value=\"{{$n.Limits}}\" placeholder=\"7\">\n                <div class=\"input-group-append\">\n                    <div class=\"input-group-text\">Per Minute</div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"col-3 col-sm-2 mt-1\">\n            <span class=\"switch\">\n                <input type=\"checkbox\" name=\"enable\" class=\"switch\" id=\"switch-{{ $n.Method }}\" {{if $n.Enabled}}checked{{end}}>\n                <label for=\"switch-{{ $n.Method }}\"></label>\n            </span>\n        </div>\n\n        <input type=\"hidden\" name=\"notifier\" value=\"{{underscore $n.Method }}\">\n\n        <div class=\"col-12 col-sm-4 mb-2 mb-sm-0 mt-2 mt-sm-0\">\n            <button type=\"submit\" class=\"btn btn-primary btn-block text-capitalize\">Save</button>\n        </div>\n\n    {{if $n.CanTest}}\n        <div class=\"col-12 col-sm-12\">\n            <button class=\"test_notifier btn btn-secondary btn-block text-capitalize col-12 float-right\">Test</button>\n        </div>\n\n        <div class=\"col-12 col-sm-12 mt-2\">\n            <div class=\"alert alert-danger d-none\" id=\"{{underscore $n.Method}}-error\" role=\"alert\">\n            {{$n.Method}} has an error!\n            </div>\n\n            <div class=\"alert alert-success d-none\" id=\"{{underscore $n.Method}}-success\" role=\"alert\">\n                The {{$n.Method}} notifier is working correctly!\n            </div>\n        </div>\n    {{end}}\n\n    </div>\n\n{{if $n.Author}}\n    <span class=\"d-block small text-center mt-3 mb-5\">\n                            {{$n.Title}} Notifier created by <a href=\"{{$n.AuthorUrl}}\" target=\"_blank\">{{$n.Author}}</a>\n                        </span>\n{{ end }}\n</form>\n{{end}}\n"),
192
        }
193
        fileo := &embedded.EmbeddedFile{
194
                Filename:    "form_service.html",
195
                FileModTime: time.Unix(1538934599, 0),
196
                Content:     string("{{define \"form_service\"}}\n<form action=\"{{if ne .Id 0}}/service/{{.Id}}{{else}}/services{{end}}\" method=\"POST\">\n    <div class=\"form-group row\">\n        <label for=\"service_name\" class=\"col-sm-4 col-form-label\">Service Name</label>\n        <div class=\"col-sm-8\">\n            <input type=\"text\" name=\"name\" class=\"form-control\" id=\"service_name\" value=\"{{.Name}}\" placeholder=\"Name\" required spellcheck=\"false\">\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"service_type\" class=\"col-sm-4 col-form-label\">Service Check Type</label>\n        <div class=\"col-sm-8\">\n            <select name=\"check_type\" class=\"form-control\" id=\"service_type\" value=\"{{.Type}}\">\n                <option value=\"http\" {{if eq .Type \"http\"}}selected{{end}}>HTTP Service</option>\n                <option value=\"tcp\" {{if eq .Type \"tcp\"}}selected{{end}}>TCP Service</option>\n                <option value=\"udp\" {{if eq .Type \"udp\"}}selected{{end}}>UDP Service</option>\n            </select>\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"service_url\" class=\"col-sm-4 col-form-label\">Application Endpoint (URL)</label>\n        <div class=\"col-sm-8\">\n            <input type=\"text\" name=\"domain\" class=\"form-control\" id=\"service_url\" value=\"{{.Domain}}\" placeholder=\"https://google.com\" required autocapitalize=\"false\" spellcheck=\"false\">\n        </div>\n    </div>\n    <div class=\"form-group row{{if eq .Type \"tcp\"}} d-none{{end}}\">\n        <label for=\"service_check_type\" class=\"col-sm-4 col-form-label\">Service Check Type</label>\n        <div class=\"col-sm-8\">\n            <select name=\"method\" class=\"form-control\" id=\"service_check_type\" value=\"{{.Method}}\">\n                <option value=\"GET\" {{if eq .Method \"GET\"}}selected{{end}}>GET</option>\n                <option value=\"POST\" {{if eq .Method \"POST\"}}selected{{end}}>POST</option>\n                <option value=\"DELETE\" {{if eq .Method \"DELETE\"}}selected{{end}}>DELETE</option>\n                <option value=\"PATCH\" {{if eq .Method \"PATCH\"}}selected{{end}}>PATCH</option>\n                <option value=\"PUT\" {{if eq .Method \"PUT\"}}selected{{end}}>PUT</option>\n            </select>\n        </div>\n    </div>\n    <div class=\"form-group row{{if ne .Method \"POST\"}} d-none{{end}}\">\n        <label for=\"post_data\" class=\"col-sm-4 col-form-label\">Optional Post Data (JSON)</label>\n        <div class=\"col-sm-8\">\n            <textarea name=\"post_data\" class=\"form-control\" id=\"post_data\" rows=\"3\" autocapitalize=\"false\" spellcheck=\"false\">{{.PostData}}</textarea>\n            <small id=\"emailHelp\" class=\"form-text text-muted\">You can insert <a target=\"_blank\" href=\"https://regex101.com/r/I5bbj9/1\">Regex</a> to validate the response</small>\n        </div>\n    </div>\n    <div class=\"form-group row{{if ne .Type \"http\"}} d-none{{end}}\">\n        <label for=\"service_response\" class=\"col-sm-4 col-form-label\">Expected Response (Regex)</label>\n        <div class=\"col-sm-8\">\n            <textarea name=\"expected\" class=\"form-control\" id=\"service_response\" rows=\"3\" autocapitalize=\"false\" spellcheck=\"false\">{{.Expected}}</textarea>\n        </div>\n    </div>\n    <div class=\"form-group row{{if ne .Type \"http\"}} d-none{{end}}\">\n        <label for=\"service_response_code\" class=\"col-sm-4 col-form-label\">Expected Status Code</label>\n        <div class=\"col-sm-8\">\n            <input type=\"number\" name=\"expected_status\" class=\"form-control\" value=\"{{if ne .ExpectedStatus 0}}{{.ExpectedStatus}}{{end}}\" placeholder=\"200\" id=\"service_response_code\">\n        </div>\n    </div>\n    <div class=\"form-group row{{if eq .Type \"\"}} d-none{{else if eq .Type \"http\"}} d-none{{end}}\">\n        <label id=\"service_type_label\" for=\"service_port\" class=\"col-sm-4 col-form-label\">TCP Port</label>\n        <div class=\"col-sm-8\">\n            <input type=\"number\" name=\"port\" class=\"form-control\" value=\"{{if ne .Port 0}}{{.Port}}{{end}}\" id=\"service_port\" placeholder=\"8080\">\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"service_interval\" class=\"col-sm-4 col-form-label\">Check Interval (Seconds)</label>\n        <div class=\"col-sm-8\">\n            <input type=\"number\" name=\"interval\" class=\"form-control\" value=\"{{if ne .Interval 0}}{{.Interval}}{{end}}\" min=\"1\" id=\"service_interval\" required>\n            <small id=\"emailHelp\" class=\"form-text text-muted\">10,000+ will be checked in Microseconds (1 millisecond = 1000 microseconds).</small>\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"service_timeout\" class=\"col-sm-4 col-form-label\">Timeout in Seconds</label>\n        <div class=\"col-sm-8\">\n            <input type=\"number\" name=\"timeout\" class=\"form-control\" value=\"{{if ne .Timeout 0}}{{.Timeout}}{{end}}\" placeholder=\"15\" id=\"service_timeout\" min=\"1\">\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"order\" class=\"col-sm-4 col-form-label\">List Order</label>\n        <div class=\"col-sm-8\">\n            <input type=\"number\" name=\"order\" class=\"form-control\" min=\"0\" value=\"{{.Order}}\" id=\"order\">\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <div class=\"{{if ne .Id 0}}col-6{{else}}col-12{{end}}\">\n            <button type=\"submit\" class=\"btn btn-success btn-block\">{{if ne .Id 0}}Update Service{{else}}Create Service{{end}}</button>\n        </div>\n        {{if ne .Id 0}}\n        <div class=\"col-6\">\n            <a href=\"/service/{{ .Id }}/delete_failures\" class=\"btn btn-danger btn-block confirm-btn\">Delete All Failures</a>\n        </div>\n        {{end}}\n    </div>\n</form>\n{{end}}\n"),
197
        }
198
        filep := &embedded.EmbeddedFile{
199
                Filename:    "form_user.html",
200
                FileModTime: time.Unix(1538543370, 0),
201
                Content:     string("{{define \"form_user\"}}\n<form action=\"{{if ne .Id 0}}/user/{{.Id}}{{else}}/users{{end}}\" method=\"POST\">\n    <div class=\"form-group row\">\n        <label for=\"username\" class=\"col-sm-4 col-form-label\">Username</label>\n        <div class=\"col-6 col-md-4\">\n            <input type=\"text\" name=\"username\" class=\"form-control\" value=\"{{.Username}}\" id=\"username\" placeholder=\"Username\" required>\n        </div>\n        <div class=\"col-6 col-md-4\">\n          <span class=\"switch\">\n            <input type=\"checkbox\" name=\"admin\" class=\"switch\" id=\"switch-normal\"{{if .Admin}} checked{{end}}>\n            <label for=\"switch-normal\">Administrator</label>\n          </span>\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"email\" class=\"col-sm-4 col-form-label\">Email Address</label>\n        <div class=\"col-sm-8\">\n            <input type=\"email\" name=\"email\" class=\"form-control\" id=\"email\" value=\"{{.Email}}\" placeholder=\"user@domain.com\" required autocapitalize=\"false\" spellcheck=\"false\">\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"password\" class=\"col-sm-4 col-form-label\">Password</label>\n        <div class=\"col-sm-8\">\n            <input type=\"password\" name=\"password\" class=\"form-control\" id=\"password\" value=\"##########\" placeholder=\"Password\" required>\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <label for=\"password_confirm\" class=\"col-sm-4 col-form-label\">Confirm Password</label>\n        <div class=\"col-sm-8\">\n            <input type=\"password\" name=\"password_confirm\" class=\"form-control\" id=\"password_confirm\" value=\"##########\" placeholder=\"Confirm Password\" required>\n        </div>\n    </div>\n    <div class=\"form-group row\">\n        <div class=\"col-sm-12\">\n            <button type=\"submit\" class=\"btn btn-primary btn-block\">{{if ne .Id 0}}Update User{{else}}Create User{{end}}</button>\n        </div>\n    </div>\n</form>\n{{end}}\n"),
202
        }
203
        fileq := &embedded.EmbeddedFile{
204
                Filename:    "head.html",
205
                FileModTime: time.Unix(1538459085, 0),
206
                Content:     string("{{ define \"head\"}}\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, user-scalable=0\">\n{{if USE_CDN}}\n    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://assets.statup.io/favicon.ico\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css\" integrity=\"sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB\" crossorigin=\"anonymous\">\n    <link rel=\"stylesheet\" href=\"https://assets.statup.io/base.css\">\n{{ else }}\n    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\">\n    <link rel=\"stylesheet\" href=\"/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"/css/base.css\">\n{{end}}\n{{block \"extra_css\" .}} {{end}}\n<title>{{block \"title\" .}} {{end}}</title>\n</head>\n{{end}}\n"),
207
        }
208
        filer := &embedded.EmbeddedFile{
209
                Filename:    "help.html",
210
                FileModTime: time.Unix(1538459433, 0),
211
                Content:     string("{{define \"title\"}}Statup | Help{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{if Auth}}\n    {{template \"nav\"}}\n{{end}}\n    <div class=\"col-12\">\n    {{ safe . }}\n    </div>\n</div>\n{{end}}\n{{define \"extra_css\"}}\n<style>\n    pre {\n        background-color: white;\n        padding: 10px 15px;\n        border: 1px solid #a2a2a233;\n        border-radius: 7px;\n    }\n    code {\n        color: #d87e1a;\n    }\n</style>\n{{end}}\n"),
212
        }
213
        files := &embedded.EmbeddedFile{
214
                Filename:    "help.md",
215
                FileModTime: time.Unix(1536974218, 0),
216
                Content:     string("# Statup Help\nStatup is an easy to use Status Page monitor for your websites and applications. Statup is developed in Go Language and you are able to create custom plugins with it!\n\n<p>\n    <a href=\"https://github.com/hunterlong/statup\"><img src=\"https://img.shields.io/github/stars/hunterlong/statup.svg?style=social&label=Stars\"></a>\n    <a href=\"https://github.com/hunterlong/statup\"><img src=\"https://img.shields.io/docker/build/hunterlong/statup.svg\"></a>\n    <a href=\"https://github.com/hunterlong/statup\"><img src=\"https://img.shields.io/github/release/hunterlong/statup.svg\"></a>\n</p>\n\n# Services\nFor each website and application you want to add a new Service. Each Service will require a URL endpoint to test your applications status.\nYou can also add expected HTTP responses (regex allow), expected HTTP response codes, and other fields to make sure your service is online or offline.\n\n# Statup Settings\nYou can change multiple settings in your Statup instance.\n\n# Users\nUsers can access the Statup Dashboard to add, remove, and view services.\n\n# Notifications\n\n\n# Plugins\nCreating a plugin for Statup is not that difficult, if you know a little bit of Go Language you can create any type of application to be embedded into the Status framework.\nCheckout the example plugin that includes all the interfaces, information, and custom HTTP routing at <a href=\"https://github.com/hunterlong/statup_plugin\">https://github.com/hunterlong/statup_plugin</a>.\nAnytime there is an action on your status page, all of your plugins will be notified of the change with the values that were changed or created.\n<p></p>\nUsing the statup/plugin Golang package you can quickly implement the event listeners. Statup uses <a href=\"https://github.com/upper/db\">upper.io/db.v3</a> for the database connection.\nYou can use the database inside of your plugin to create, update, and destroy tables/data. <b>Please only use respectable plugins!</b>\n\n# Custom Stlying\nOn Statup Status Page server can you create your own custom stylesheet to be rendered on the index view of your status page. Go to <a href=\"/settings\">Settings</a> and click on Custom Styling.\n\n# API Endpoints\nStatup includes a RESTFUL API so you can view, update, and edit your services with easy to use routes. You can currently view, update and delete services, view, create, update users, and get detailed information about the Statup instance. To make life easy, try out a Postman or Swagger JSON file and use it on your Statup Server.\n\n<p align=\"center\">\n<a href=\"https://github.com/hunterlong/statup/blob/master/dev/postman.json\">Postman JSON Export</a> | <a href=\"https://github.com/hunterlong/statup/blob/master/dev/swagger.json\">Swagger Export</a>\n</p>\n\n## Authentication\nAuthentication uses the Statup API Secret to accept remote requests. You can find the API Secret in the Settings page of your Statup server. To send requests to your Statup API, include a Authorization Header when you send the request. The API will accept any one of the headers below.\n\n- HTTP Header: `Authorization: API SECRET HERE`\n- HTTP Header: `Authorization: Bearer API SECRET HERE`\n\n## Main Route `/api`\nThe main API route will show you all services and failures along with them.\n\n## Services\nThe services API endpoint will show you detailed information about services and will allow you to edit/delete services with POST/DELETE http methods.\n\n### Viewing All Services\n- Endpoint: `/api/services`\n- Method: `GET`\n- Response: Array of [Services](https://github.com/hunterlong/statup/wiki/API#service-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\n### Viewing Service\n- Endpoint: `/api/services/{id}`\n- Method: `GET`\n- Response: [Service](https://github.com/hunterlong/statup/wiki/API#service-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\n### Updating Service\n- Endpoint: `/api/services/{id}`\n- Method: `POST`\n- Response: [Service](https://github.com/hunterlong/statup/wiki/API#service-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\nPOST Data:\n``` json\n{\n    \"name\": \"Updated Service\",\n    \"domain\": \"https://google.com\",\n    \"expected\": \"\",\n    \"expected_status\": 200,\n    \"check_interval\": 15,\n    \"type\": \"http\",\n    \"method\": \"GET\",\n    \"post_data\": \"\",\n    \"port\": 0,\n    \"timeout\": 10,\n    \"order_id\": 0\n}\n```\n\n### Deleting Service\n- Endpoint: `/api/services/{id}`\n- Method: `DELETE`\n- Response: [Object Response](https://github.com/hunterlong/statup/wiki/API#object-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\nResponse:\n``` json\n{\n    \"status\": \"success\",\n    \"id\": 4,\n    \"type\": \"service\",\n    \"method\": \"delete\"\n}\n```\n\n## Users\nThe users API endpoint will show you users that are registered inside your Statup instance.\n\n### View All Users\n- Endpoint: `/api/users`\n- Method: `GET`\n- Response: Array of [Users](https://github.com/hunterlong/statup/wiki/API#user-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\n### Viewing User\n- Endpoint: `/api/users/{id}`\n- Method: `GET`\n- Response: [User](https://github.com/hunterlong/statup/wiki/API#user-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\n### Creating New User\n- Endpoint: `/api/users`\n- Method: `POST`\n- Response: [User](https://github.com/hunterlong/statup/wiki/API#user-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\nPOST Data:\n``` json\n{\n    \"username\": \"newadmin\",\n    \"email\": \"info@email.com\",\n    \"password\": \"password123\",\n    \"admin\": true\n}\n```\n\n### Updating User\n- Endpoint: `/api/users/{id}`\n- Method: `POST`\n- Response: [User](https://github.com/hunterlong/statup/wiki/API#user-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\nPOST Data:\n``` json\n{\n    \"username\": \"updatedadmin\",\n    \"email\": \"info@email.com\",\n    \"password\": \"password123\",\n    \"admin\": true\n}\n```\n\n### Deleting User\n- Endpoint: `/api/services/{id}`\n- Method: `DELETE`\n- Response: [Object Response](https://github.com/hunterlong/statup/wiki/API#object-response)\n- Response Type: `application/json`\n- Request Type: `application/json`\n\nResponse:\n``` json\n{\n    \"status\": \"success\",\n    \"id\": 3,\n    \"type\": \"user\",\n    \"method\": \"delete\"\n}\n```\n\n# Service Response\n``` json\n{\n    \"id\": 8,\n    \"name\": \"Test Service 0\",\n    \"domain\": \"https://status.coinapp.io\",\n    \"expected\": \"\",\n    \"expected_status\": 200,\n    \"check_interval\": 1,\n    \"type\": \"http\",\n    \"method\": \"GET\",\n    \"post_data\": \"\",\n    \"port\": 0,\n    \"timeout\": 30,\n    \"order_id\": 0,\n    \"created_at\": \"2018-09-12T09:07:03.045832088-07:00\",\n    \"updated_at\": \"2018-09-12T09:07:03.046114305-07:00\",\n    \"online\": false,\n    \"latency\": 0.031411064,\n    \"24_hours_online\": 0,\n    \"avg_response\": \"\",\n    \"status_code\": 502,\n    \"last_online\": \"0001-01-01T00:00:00Z\",\n    \"dns_lookup_time\": 0.001727175,\n    \"failures\": [\n        {\n            \"id\": 5187,\n            \"issue\": \"HTTP Status Code 502 did not match 200\",\n            \"created_at\": \"2018-09-12T10:41:46.292277471-07:00\"\n        },\n        {\n            \"id\": 5188,\n            \"issue\": \"HTTP Status Code 502 did not match 200\",\n            \"created_at\": \"2018-09-12T10:41:47.337659862-07:00\"\n        }\n    ]\n}\n```\n\n# User Response\n``` json\n{\n    \"id\": 1,\n    \"username\": \"admin\",\n    \"api_key\": \"02f324450a631980121e8fd6ea7dfe4a7c685a2f\",\n    \"admin\": true,\n    \"created_at\": \"2018-09-12T09:06:53.906398511-07:00\",\n    \"updated_at\": \"2018-09-12T09:06:54.972440207-07:00\"\n}\n```\n\n# Object Response\n``` json\n{\n    \"type\": \"service\",\n    \"id\": 19,\n    \"method\": \"delete\",\n    \"status\": \"success\"\n}\n```\n\n# Main API Response\n``` json\n{\n    \"name\": \"Awesome Status\",\n    \"description\": \"An awesome status page by Statup\",\n    \"footer\": \"This is my custom footer\",\n    \"domain\": \"https://demo.statup.io\",\n    \"version\": \"v0.56\",\n    \"migration_id\": 1536768413,\n    \"created_at\": \"2018-09-12T09:06:53.905374829-07:00\",\n    \"updated_at\": \"2018-09-12T09:07:01.654201225-07:00\",\n    \"database\": \"sqlite\",\n    \"started_on\": \"2018-09-12T10:43:07.760729349-07:00\",\n    \"services\": [\n        {\n            \"id\": 1,\n            \"name\": \"Google\",\n            \"domain\": \"https://google.com\",\n            \"expected\": \"\",\n            \"expected_status\": 200,\n            \"check_interval\": 10,\n            \"type\": \"http\",\n            \"method\": \"GET\",\n            \"post_data\": \"\",\n            \"port\": 0,\n            \"timeout\": 10,\n            \"order_id\": 0,\n            \"created_at\": \"2018-09-12T09:06:54.97549122-07:00\",\n            \"updated_at\": \"2018-09-12T09:06:54.975624103-07:00\",\n            \"online\": true,\n            \"latency\": 0.09080986,\n            \"24_hours_online\": 0,\n            \"avg_response\": \"\",\n            \"status_code\": 200,\n            \"last_online\": \"2018-09-12T10:44:07.931990439-07:00\",\n            \"dns_lookup_time\": 0.005543935\n        }\n    ]\n}\n```\n\n# Prometheus Exporter\nStatup includes a prometheus exporter so you can have even more monitoring power with your services. The prometheus exporter can be seen on `/metrics`, simply create another exporter in your prometheus config. Use your Statup API Secret for the Authorization Bearer header, the `/metrics` URL is dedicated for Prometheus and requires the correct API Secret has `Authorization` header.\n\n# Grafana Dashboard\nStatup has a [Grafana Dashboard](https://grafana.com/dashboards/6950) that you can quickly implement if you've added your Statup service to Prometheus. Import Dashboard ID: `6950` into your Grafana dashboard and watch the metrics come in!\n\n<p align=\"center\"><img width=\"80%\" src=\"https://img.cjx.io/statupgrafana.png\"></p>\n\n## Basic Prometheus Exporter\nIf you have Statup and the Prometheus server in the same Docker network, you can use the yaml config below.\n``` yaml\nscrape_configs:\n  - job_name: 'statup'\n    scrape_interval: 30s\n    bearer_token: 'SECRET API KEY HERE'\n    static_configs:\n      - targets: ['statup:8080']\n```\n\n## Remote URL Prometheus Exporter\nThis exporter yaml below has `scheme: https`, which you can remove if you arn't using HTTPS.\n``` yaml\nscrape_configs:\n  - job_name: 'statup'\n    scheme: https\n    scrape_interval: 30s\n    bearer_token: 'SECRET API KEY HERE'\n    static_configs:\n      - targets: ['status.mydomain.com']\n```\n\n### `/metrics` Output\n```\nstatup_total_failures 206\nstatup_total_services 4\nstatup_service_failures{id=\"1\" name=\"Google\"} 0\nstatup_service_latency{id=\"1\" name=\"Google\"} 12\nstatup_service_online{id=\"1\" name=\"Google\"} 1\nstatup_service_status_code{id=\"1\" name=\"Google\"} 200\nstatup_service_response_length{id=\"1\" name=\"Google\"} 10777\nstatup_service_failures{id=\"2\" name=\"Statup.io\"} 0\nstatup_service_latency{id=\"2\" name=\"Statup.io\"} 3\nstatup_service_online{id=\"2\" name=\"Statup.io\"} 1\nstatup_service_status_code{id=\"2\" name=\"Statup.io\"} 200\nstatup_service_response_length{id=\"2\" name=\"Statup.io\"} 2\n```\n\n# Static HTML Exporter\nYou might have a server that won't allow you to run command that run longer for 60 seconds, or maybe you just want to export your status page to a static HTML file. Using the Statup exporter you can easily do this with 1 command.\n\n```\nstatup export\n```\n###### 'index.html' is created in current directory with static CDN url's.\n\n## Push to Github\nOnce you have the `index.html` file, you could technically send it to an FTP server, Email it, Pastebin it, or even push to your Github repo for Status updates directly from repo.\n\n```bash\ngit add index.html\ngit commit -m \"Updated Status Page\"\ngit push -u origin/master\n```\n\n# Config with .env File\nIt may be useful to load your environment using a `.env` file in the root directory of your Statup server. The .env file will be automatically loaded on startup and will overwrite all values you have in config.yml.\n\nIf you have the `DB_CONN` environment variable set Statup will bypass all values in config.yml and will require you to have the other DB_* variables in place. You can pass in these environment variables without requiring a .env file.\n\n## `.env` File\n```bash\nDB_CONN=postgres\nDB_HOST=0.0.0.0\nDB_PORT=5432\nDB_USER=root\nDB_PASS=password123\nDB_DATABASE=root\n\nNAME=Demo\nDESCRIPTION=This is an awesome page\nDOMAIN=https://domain.com\nADMIN_USER=admin\nADMIN_PASS=admin\nADMIN_EMAIL=info@admin.com\nUSE_CDN=true\n\nIS_DOCKER=false\nIS_AWS=false\nSASS=/usr/local/bin/sass\nCMD_FILE=/bin/bash\n```\nThis .env file will include additional variables in the future, subscribe to this repo to keep up-to-date with changes and updates.\n\n# Makefile\nHere's a simple list of Makefile commands you can run using `make`. The [Makefile](https://github.com/hunterlong/statup/blob/master/Makefile) may change often, so i'll try to keep this Wiki up-to-date.\n\n- Ubuntu `apt-get install build-essential`\n- MacOSX `sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer`\n- Windows [Install Guide for GNU make utility](http://gnuwin32.sourceforge.net/packages/make.htm)\n- CentOS/RedHat `yum groupinstall \"Development Tools\"`\n\n### Commands\n``` bash\nmake build                         # build the binary\nmake install\nmake run\nmake test\nmake coverage\nmake docs\n# Building Statup\nmake build-all\nmake build-alpine\nmake docker\nmake docker-run\nmake docker-dev\nmake docker-run-dev\nmake databases\nmake dep\nmake dev-deps\nmake clean\nmake compress\nmake cypress-install\nmake cypress-test\n```\n\n## Testing\n* If you want to test your updates with the current golang testing units, you can follow the guide below to run a full test process. Each test for Statup will run in MySQL, Postgres, and SQlite to make sure all database types work correctly.\n\n## Create Docker Databases\nThe easiest way to run the tests on all 3 databases is by starting temporary databases servers with Docker. Docker is available for Linux, Mac and Windows. You can download/install it by going to the [Docker Installation](https://docs.docker.com/install/) site.\n\n``` bash\ndocker run -it -d \\\n   -p 3306:3306 \\\n   -env MYSQL_ROOT_PASSWORD=password123 \\\n   -env MYSQL_DATABASE=root mysql\n```\n\n``` bash\ndocker run -it -d \\\n   -p 5432:5432 \\\n   -env POSTGRES_PASSWORD=password123 \\\n   -env POSTGRES_USER=root \\\n   -env POSTGRES_DB=root postgres\n```\n\nOnce you have MySQL and Postgres running, you can begin the testing. SQLite database will automatically create a `statup.db` file and will delete after testing.\n\n## Run Tests\nInsert the database environment variables to auto connect the the databases and run the normal test command: `go test -v`. You'll see a verbose output of each test. If all tests pass, make a push request! 💃\n``` bash\nDB_DATABASE=root \\\n   DB_USER=root \\\n   DB_PASS=password123 \\\n   DB_HOST=localhost \\\n   go test -v\n```\n"),
217
        }
218
        filet := &embedded.EmbeddedFile{
219
                Filename:    "index.html",
220
                FileModTime: time.Unix(1538522506, 0),
221
                Content:     string("{{define \"title\"}}{{CoreApp.Name}} Status{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-2 sm-container\">\n<h1 class=\"col-12 text-center mb-4 mt-sm-3 header-title\">{{.Name}}</h1>\n\n{{ if .Description }}\n<h5 class=\"col-12 text-center mb-5 header-desc\">{{ .Description }}</h5>\n{{ end }}\n\n<div class=\"col-12 full-col-12 mb-5\">\n    <div class=\"list-group online_list\">\n    {{ range Services }}\n        <a href=\"#\" class=\"service_li list-group-item list-group-item-action {{if not .Online}}bg-danger text-white{{ end }}\" data-id=\"{{.Id}}\">\n        {{ .Name }}\n        {{if .Online}}\n            <span class=\"badge bg-success float-right pulse-glow\">ONLINE</span>\n        {{ else }}\n            <span class=\"badge bg-white text-black-50 float-right pulse\">OFFLINE</span>\n        {{end}}\n        </a>\n    {{ end }}\n    </div>\n</div>\n\n<div class=\"col-12 full-col-12\">\n{{ if not Services }}\n    <div class=\"alert alert-danger\" role=\"alert\">\n        <h4 class=\"alert-heading\">No Services to Monitor!</h4>\n        <p>Your Statup Status Page is working correctly, but you don't have any services to monitor. Go to the <b>Dashboard</b> and add a website to begin really using your status page!</p>\n        <hr>\n        <p class=\"mb-0\">If this is a bug, please make an issue in the Statup Github Repo. <a href=\"https://github.com/hunterlong/statup\" class=\"btn btn-sm btn-outline-danger float-right\">Statup Github Repo</a></p>\n    </div>\n{{end}}\n{{ range Services }}\n    <div class=\"mt-4\" id=\"service_id_{{.Id}}\">\n        <div class=\"card\">\n            <div class=\"card-body\">\n                <div class=\"col-12\">\n                    <h4 class=\"mt-3\"><a href=\"/service/{{.Id}}\"{{if not .Online}} class=\"text-danger\"{{end}}>{{ .Name }}</a>\n                    {{if .Online}}\n                        <span class=\"badge bg-success float-right\">ONLINE</span>\n                    {{ else }}\n                        <span class=\"badge bg-danger float-right pulse\">OFFLINE</span>\n                    {{end}}</h4>\n\n                    <div class=\"row stats_area mt-5 mb-5\">\n                        <div class=\"col-4\">\n                            <span class=\"lg_number\">{{.Online24}}%</span>\n                            Online last 24 Hours\n                        </div>\n                        <div class=\"col-4\">\n                            <span class=\"lg_number\">{{.AvgTime}}ms</span>\n                            Average Response\n                        </div>\n                        <div class=\"col-4\">\n                            <span class=\"lg_number\">{{.AvgUptime24}}%</span>\n                            Uptime last 24 Hours\n                        </div>\n                    </div>\n\n                </div>\n            </div>\n        {{ if .AvgUptime24 }}\n            <div class=\"chart-container\">\n                <canvas id=\"service_{{ .Id }}\"></canvas>\n            </div>\n        {{ end }}\n            <div class=\"row lower_canvas full-col-12 text-white{{if not .Online}} bg-danger{{end}}\">\n                <div class=\"col-10 text-truncate\">\n                    <span class=\"d-none d-md-inline\">{{.SmallText}}</span>\n                </div>\n                <div class=\"col-sm-12 col-md-2\">\n                    <a href=\"/service/{{ .Id }}\" class=\"btn {{if .Online}}btn-success{{else}}btn-danger{{end}} btn-sm float-right dyn-dark btn-block\">View Service</a>\n                </div>\n            </div>\n        </div>\n    </div>\n{{ end }}\n</div>\n</div>\n{{end}}\n{{define \"extra_scripts\"}}\n<script src=\"/charts.js\"></script>\n{{end}}\n"),
222
        }
223
        fileu := &embedded.EmbeddedFile{
224
                Filename:    "login.html",
225
                FileModTime: time.Unix(1538454764, 0),
226
                Content:     string("{{define \"title\"}}Statup Login{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n    <div class=\"col-10 offset-1 col-md-8 offset-md-2 mt-md-2\">\n        <div class=\"col-12 col-md-8 offset-md-2 mb-4\">\n            <img class=\"col-12 mt-5 mt-md-0\" src=\"/statup.png\">\n        </div>\n    {{ if .Error }}\n        <div class=\"alert alert-danger\" role=\"alert\">\n            Incorrect login information submitted, try again.\n        </div>\n    {{ end }}\n        <form action=\"/dashboard\" method=\"POST\">\n            <div class=\"form-group row\">\n                <label for=\"username\" class=\"col-sm-2 col-form-label\">Username</label>\n                <div class=\"col-sm-10\">\n                    <input type=\"text\" name=\"username\" class=\"form-control\" id=\"username\" placeholder=\"Username\" autocapitalize=\"false\" spellcheck=\"false\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <label for=\"password\" class=\"col-sm-2 col-form-label\">Password</label>\n                <div class=\"col-sm-10\">\n                    <input type=\"password\" name=\"password\" class=\"form-control\" id=\"password\" placeholder=\"Password\">\n                </div>\n            </div>\n            <div class=\"form-group row\">\n                <div class=\"col-sm-12\">\n                    <button type=\"submit\" class=\"btn btn-primary btn-block\">Sign in</button>\n                </div>\n            </div>\n        </form>\n    </div>\n</div>\n{{end}}\n"),
227
        }
228
        filev := &embedded.EmbeddedFile{
229
                Filename:    "logs.html",
230
                FileModTime: time.Unix(1538460210, 0),
231
                Content:     string("{{define \"title\"}}Statup | Logs{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{if Auth}}\n    {{template \"nav\"}}\n{{end}}\n<div class=\"col-12\">\n    <textarea id=\"live_logs\" class=\"form-control\" rows=\"40\" readonly>{{range .}}{{.}}{{end}}</textarea>\n</div>\n</div>\n{{end}}\n{{define \"extra_css\"}}\n<style>\n    @media (max-width: 767px) {\n        #live_logs {\n            font-size: 6pt;\n        }\n    }\n</style>\n{{end}}\n"),
232
        }
233
        filew := &embedded.EmbeddedFile{
234
                Filename:    "nav.html",
235
                FileModTime: time.Unix(1534817721, 0),
236
                Content:     string("{{define \"nav\"}}\n<nav class=\"navbar navbar-expand-lg navbar-light bg-light\">\n    <a class=\"navbar-brand\" href=\"/\">Statup</a>\n    <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarText\" aria-controls=\"navbarText\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n        <span class=\"navbar-toggler-icon\"></span>\n    </button>\n\n    <div class=\"collapse navbar-collapse\" id=\"navbarText\">\n        <ul class=\"navbar-nav mr-auto\">\n            <li class=\"nav-item{{ if eq URL \"/dashboard\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/dashboard\">Dashboard</a>\n            </li>\n            <li class=\"nav-item{{ if eq URL \"/services\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/services\">Services</a>\n            </li>\n            <li class=\"nav-item{{ if eq URL \"/users\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/users\">Users</a>\n            </li>\n            <li class=\"nav-item{{ if eq URL \"/settings\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/settings\">Settings</a>\n            </li>\n            <li class=\"nav-item{{ if eq URL \"/logs\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/logs\">Logs</a>\n            </li>\n            <li class=\"nav-item{{ if eq URL \"/help\" }} active{{ end }}\">\n                <a class=\"nav-link\" href=\"/help\">Help</a>\n            </li>\n        </ul>\n        <span class=\"navbar-text\">\n      <a class=\"nav-link\" href=\"/logout\">Logout</a>\n    </span>\n    </div>\n</nav>\n{{end}}"),
237
        }
238
        filex := &embedded.EmbeddedFile{
239
                Filename:    "robots.txt",
240
                FileModTime: time.Unix(1530546686, 0),
241
                Content:     string("User-agent: *\nDisallow: /login\nDisallow: /dashboard"),
242
        }
243
        filey := &embedded.EmbeddedFile{
244
                Filename:    "scripts.html",
245
                FileModTime: time.Unix(1538453657, 0),
246
                Content:     string("{{define \"scripts\"}}\n{{if USE_CDN}}\n<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n<script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js\" integrity=\"sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T\" crossorigin=\"anonymous\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js\"></script>\n<script src=\"https://assets.statup.io/main.js\"></script>\n{{ else }}\n<script src=\"/js/jquery-3.3.1.min.js\"></script>\n<script src=\"/js/bootstrap.min.js\"></script>\n<script src=\"/js/Chart.bundle.min.js\"></script>\n<script src=\"/js/main.js\"></script>\n{{end}}\n{{block \"extra_scripts\" .}} {{end}}\n{{end}}\n"),
247
        }
248
        filez := &embedded.EmbeddedFile{
249
                Filename:    "service.html",
250
                FileModTime: time.Unix(1539361671, 0),
251
                Content:     string("{{define \"title\"}}{{.Service.Name}} Status{{end}}\n{{ define \"content\" }}\n{{$s := .Service}}\n\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n\n{{if Auth}}\n    {{template \"nav\"}}\n{{end}}\n\n    <div class=\"col-12 mb-4\">\n\n    {{if $s.Online }}\n        <span class=\"mt-3 mb-3 text-white d-md-none btn bg-success d-block d-md-none\">ONLINE</span>\n    {{ else }}\n        <span class=\"mt-3 mb-3 text-white d-md-none btn bg-danger d-block d-md-none\">OFFLINE</span>\n    {{end}}\n\n        <h4 class=\"mt-2\">{{ $s.Name }}\n        {{if $s.Online }}\n            <span class=\"badge bg-success float-right d-none d-md-block\">ONLINE</span>\n        {{ else }}\n            <span class=\"badge bg-danger float-right d-none d-md-block\">OFFLINE</span>\n        {{end}}</h4>\n\n        <div class=\"row stats_area mt-5 mb-5\">\n\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{$s.Online24}}%</span>\n                Online last 24 Hours\n            </div>\n\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{$s.AvgTime}}ms</span>\n                Average Response\n            </div>\n\n            <div class=\"col-4\">\n                <span class=\"lg_number\">{{$s.TotalUptime}}%</span>\n                Total Uptime\n            </div>\n        </div>\n\n        <div class=\"service-chart-container\">\n            <canvas id=\"service\"></canvas>\n        </div>\n\n        <form id=\"service_date_form\" class=\"col-12 mt-2 mb-3\">\n            <span id=\"start_date\" class=\"text-muted small float-left pointer\">{{FromUnix .Start}}</span>\n            <span id=\"end_date\" class=\"text-muted small float-right pointer\" style=\"position: absolute;right: 0;\">{{FromUnix .End}}</span>\n            <input type=\"hidden\" name=\"start\" class=\"form-control\" id=\"service_start\" spellcheck=\"false\">\n            <input type=\"hidden\" name=\"end\" class=\"form-control\" id=\"service_end\" spellcheck=\"false\">\n            <button type=\"submit\" class=\"btn btn-light btn-block btn-sm mt-2\">Set Timeframe</button>\n            <div id=\"start_container\"></div>\n            <div id=\"end_container\"></div>\n        </form>\n\n    {{if not $s.Online}}\n        <div class=\"col-12 small text-center mt-3 text-muted\">{{$s.DowntimeText}}</div>\n    {{end}}\n\n    {{ if $s.LimitedFailures }}\n        <div class=\"list-group mt-3 mb-4\">\n        {{ range $s.LimitedFailures }}\n            <a href=\"#\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\n                <div class=\"d-flex w-100 justify-content-between\">\n                    <h5 class=\"mb-1\">{{.ParseError}}</h5>\n                    <small>{{.Ago}}</small>\n                </div>\n                <p class=\"mb-1\">{{.Issue}}</p>\n            </a>\n        {{ end }}\n        </div>\n    {{ end }}\n\n    </div>\n\n{{if Auth}}\n\n    <div class=\"col-12 mt-4{{if ne $s.Type \"http\"}} d-none{{end}}\">\n        <h3>Last Response</h3>\n        <textarea rows=\"8\" class=\"form-control\" readonly>{{ $s.LastResponse }}</textarea>\n        <div class=\"form-group row mt-2\">\n            <label for=\"last_status_code\" class=\"col-sm-3 col-form-label\">HTTP Status Code</label>\n            <div class=\"col-sm-2\">\n                <input type=\"text\" id=\"last_status_code\" class=\"form-control\" value=\"{{ $s.LastStatusCode }}\" readonly>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"col-12 mt-4\">\n        <h3>Edit Service</h3>\n        {{template \"form_service\" $s}}\n    </div>\n\n    <div class=\"col-12 mt-4\">\n        <h3>Service Checkin</h3>\n        {{if $s.LimitedCheckins}}\n        <table class=\"table\">\n            <thead>\n                <tr>\n                    <th scope=\"col\">Checkin</th>\n                    <th scope=\"col\">Report Period<br>Grace Period</th>\n                    <th scope=\"col\">Last Seen</th>\n                    <th scope=\"col\">Expected</th>\n                    <th scope=\"col\"></th>\n                </tr>\n            </thead>\n            <tbody>\n            {{range $s.LimitedCheckins}}\n            {{ $ch := . }}\n            <tr class=\"{{ if lt $ch.Expected 0}}bg-warning text-black{{else}}bg-light{{end}}\">\n                <td>{{$ch.Name}}<br><a href=\"{{$ch.Link}}\" target=\"_blank\">{{$ch.Link}}</a></td>\n                <td>every {{Duration $ch.Period}}<br>after {{Duration $ch.Grace}}</td>\n                <td>{{ if $ch.Last.CreatedAt.IsZero}}\n                        Never\n                    {{else}}\n                        {{Ago $ch.Last.CreatedAt}}\n                    {{end}}\n                </td>\n                <td>\n                    {{ if $ch.Last.CreatedAt.IsZero}}\n                        -\n                    {{else}}\n                        {{ if lt $ch.Expected 0}}{{Duration $ch.Expected}} ago{{else}}in {{Duration $ch.Expected}}{{end}}\n                    {{end}}\n                </td>\n                <td><a href=\"/checkin/{{$ch.Id}}/delete\" class=\"btn btn-sm btn-danger\">Delete</a></td>\n            </tr>\n            {{end}}\n            </tbody>\n        </table>\n        {{end}}\n        {{template \"form_checkin\" $s}}\n    </div>\n\n{{end}}\n</div>\n{{end}}\n{{define \"extra_scripts\"}}\n{{if USE_CDN}}\n<script src=\"https://assets.statup.io/pikaday.js\"></script>\n{{ else }}\n<script src=\"/js/pikaday.js\"></script>\n{{end}}\n{{$s := .Service}}\n<script>\n\n    var ctx = document.getElementById(\"service\").getContext('2d');\n\n    var chartdata = new Chart(ctx, {\n        type: 'line',\n        data: {\n            datasets: [{\n                label: 'Response Time (Milliseconds)',\n                data: [],\n                backgroundColor: [\n                    'rgba(47, 206, 30, 0.92)'\n                ],\n                borderColor: [\n                    'rgb(47, 171, 34)'\n                ],\n                borderWidth: 1\n            }]\n        },\n        options: {\n            legend: {\n                display: false\n            },\n            scales: {\n                yAxes: [{\n                    ticks: {\n                        beginAtZero: true\n                    },\n                    gridLines: {\n                        display: true\n                    }\n                }],\n                xAxes: [{\n                    type: 'time',\n                    distribution: 'series',\n                    time: {\n                        displayFormats: {\n                            'millisecond': 'MMM DD',\n                            'second': 'MMM DD',\n                            'minute': 'MMM DD',\n                            'hour': 'MMM DD hA',\n                            'day': 'MMM DD',\n                            'week': 'MMM DD',\n                            'month': 'MMM DD',\n                            'quarter': 'MMM DD',\n                            'year': 'MMM DD',\n                        }\n                    },\n                    gridLines: {\n                        display: true\n                    },\n                    ticks: {\n                        source: 'auto'\n                    }\n                }],\n            },\n            elements: {\n                point: {\n                    radius: 0\n                }\n            }\n        }\n    });\n\n\n    var startPick = new Pikaday({\n        field: $('#service_start')[0],\n        bound: false,\n        trigger: $(\"#start_date\"),\n        container: $(\"#start_container\")[0],\n        maxDate: new Date(),\n        onSelect: function(date) {\n            $('#service_start')[0].value = Math.round(date.getTime() / 1000);\n            this.hide();\n        }\n    });\n\n    var endPick = new Pikaday({\n        field: $('#service_end')[0],\n        bound: false,\n        trigger: $(\"#end_date\"),\n        container: $(\"#end_container\")[0],\n        maxDate: new Date(),\n        onSelect: function(date) {\n            $('#service_end')[0].value = Math.round(date.getTime() / 1000);\n            this.hide();\n        }\n    });\n\n    startPick.setDate(new Date({{.Start}}* 1000));\n    endPick.setDate(new Date({{.End}}* 1000));\n    startPick.hide();\n    endPick.hide();\n\n    $(\"#start_date\").click(function(e) {\n        startPick.show()\n    });\n\n    $(\"#end_date\").click(function(e) {\n        endPick.show()\n    });\n\n    AjaxChart(chartdata,{{$s.Id}},{{.Start}},{{.End}},\"hour\");\n\n</script>\n{{end}}\n"),
252
        }
253
        file10 := &embedded.EmbeddedFile{
254
                Filename:    "services.html",
255
                FileModTime: time.Unix(1538459465, 0),
256
                Content:     string("{{define \"title\"}}Statup | Services{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{template \"nav\"}}\n\n    <div class=\"col-12\">\n\n        <h3>Services</h3>\n\n        <table class=\"table\">\n            <thead>\n            <tr>\n                <th scope=\"col\">Name</th>\n                <th scope=\"col\" class=\"d-none d-md-table-cell\">Status</th>\n                <th scope=\"col\"></th>\n            </tr>\n            </thead>\n            <tbody class=\"sortable\">\n            {{range .}}\n            <tr id=\"{{.Id}}\">\n                <td><span class=\"drag_icon d-none d-md-inline\">&#9776;</span> {{.Name}}</td>\n                <td class=\"d-none d-md-table-cell\">{{if .Online}}<span class=\"badge badge-success\">ONLINE</span>{{else}}<span class=\"badge badge-danger\">OFFLINE</span>{{end}} </td>\n                <td class=\"text-right\">\n                    <div class=\"btn-group\">\n                        <a href=\"/service/{{.Id}}\" class=\"btn btn-primary\">View</a>\n                        <a href=\"/service/{{.Id}}/delete\" class=\"btn btn-danger confirm-btn\">Delete</a>\n                    </div>\n                </td>\n            </tr>\n            {{end}}\n            </tbody>\n        </table>\n\n        <h3>Create Service</h3>\n\n        {{template \"form_service\" NewService}}\n\n    </div>\n</div>\n{{end}}\n{{define \"extra_scripts\"}}\n{{if USE_CDN}}\n<script src=\"https://assets.statup.io/sortable.min.js\"></script>\n{{ else }}\n<script src=\"/js/sortable.min.js\"></script>\n{{end}}\n<script>\n    sortable('.sortable', {\n        forcePlaceholderSize: true,\n        hoverClass: 'sortable_drag',\n        handle: '.drag_icon'\n    });\n    sortable('.sortable')[0].addEventListener('sortupdate', function(e) {\n        var i = 0;\n        var newOrder = [];\n        var dest = e.detail.destination.items;\n        dest.forEach(function(d) {\n            i++;\n            var o = {service: parseInt(d.id), order: i}\n            newOrder.push(o);\n        });\n        $.post(\"/services/reorder\", JSON.stringify(newOrder), function(data, status){\n        });\n    });\n</script>\n{{end}}\n"),
257
        }
258
        file11 := &embedded.EmbeddedFile{
259
                Filename:    "settings.html",
260
                FileModTime: time.Unix(1538947359, 0),
261
                Content:     string("{{define \"title\"}}Statup | Settings{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{template \"nav\"}}\n    <div class=\"col-12\">\n        <div class=\"row\">\n            <div class=\"col-md-3 col-sm-12 mb-4 mb-md-0\">\n                <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n                    <a class=\"nav-link active\" id=\"v-pills-home-tab\" data-toggle=\"pill\" href=\"#v-pills-home\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"true\">Settings</a>\n                    <a class=\"nav-link\" id=\"v-pills-style-tab\" data-toggle=\"pill\" href=\"#v-pills-style\" role=\"tab\" aria-controls=\"v-pills-style\" aria-selected=\"false\">Theme Editor</a>\n                {{ range .Notifications }}\n                    <a class=\"nav-link text-capitalize\" id=\"v-pills-{{underscore .Select.Method}}-tab\" data-toggle=\"pill\" href=\"#v-pills-{{underscore .Select.Method}}\" role=\"tab\" aria-controls=\"v-pills-{{underscore .Select.Method}}\" aria-selected=\"false\">{{.Select.Method}} <span class=\"badge badge-pill badge-secondary\"></span></a>\n                {{ end }}\n                    <a class=\"nav-link\" id=\"v-pills-browse-tab\" data-toggle=\"pill\" href=\"#v-pills-browse\" role=\"tab\" aria-controls=\"v-pills-home\" aria-selected=\"false\">Browse Plugins</a>\n                    <a class=\"nav-link d-none\" id=\"v-pills-backups-tab\" data-toggle=\"pill\" href=\"#v-pills-backups\" role=\"tab\" aria-controls=\"v-pills-backups\" aria-selected=\"false\">Backups</a>\n                {{ range .Plugins }}\n                    <a class=\"nav-link text-capitalize\" id=\"v-pills-{{underscore .Name}}-tab\" data-toggle=\"pill\" href=\"#v-pills-{{underscore .Name}}\" role=\"tab\" aria-controls=\"v-pills-profile\" aria-selected=\"false\">{{.Name}}</a>\n                {{end}}\n                </div>\n            </div>\n            <div class=\"col-md-8 col-sm-12\">\n            {{if Error}}\n                <div class=\"alert alert-danger\" role=\"alert\">{{Error}}</div>\n            {{end}}\n                <div class=\"tab-content\" id=\"v-pills-tabContent\">\n                    <div class=\"tab-pane fade show active\" id=\"v-pills-home\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\">\n                        <h3>Settings</h3>\n\n                        <form method=\"POST\" action=\"/settings\">\n                            <div class=\"form-group\">\n                                <label for=\"project\">Project Name</label>\n                                <input type=\"text\" name=\"project\" class=\"form-control\" value=\"{{ .Name }}\" id=\"project\" placeholder=\"Great Uptime\">\n                            </div>\n\n                            <div class=\"form-group\">\n                                <label for=\"description\">Project Description</label>\n                                <input type=\"text\" name=\"description\" class=\"form-control\" value=\"{{ .Description }}\" id=\"description\" placeholder=\"Great Uptime\">\n                            </div>\n\n                            <div class=\"form-group row\">\n                                <div class=\"col-8 col-sm-9\">\n                                    <label for=\"domain\">Domain</label>\n                                    <input type=\"text\" name=\"domain\" class=\"form-control\" value=\"{{ .Domain }}\" id=\"domain\">\n                                </div>\n                                <div class=\"col-4 col-sm-3 mt-sm-1 mt-0\">\n                                    <label for=\"enable_cdn\" class=\"d-inline d-sm-none\">Enable CDN</label>\n                                    <label for=\"enable_cdn\" class=\"d-none d-sm-block\">Enable CDN</label>\n                                    <span class=\"switch\">\n                                <input type=\"checkbox\" name=\"enable_cdn\" class=\"switch\" id=\"switch-normal\" {{if USE_CDN}}checked{{end}}{{if .UsingAssets}} disabled{{end}}>\n                                <label for=\"switch-normal\" class=\"mt-2 mt-sm-0\"></label>\n                              </span>\n                                </div>\n\n                            </div>\n\n                            <div class=\"form-group\">\n                                <label for=\"footer\">Custom Footer</label>\n                                <textarea rows=\"4\" name=\"footer\" class=\"form-control\" id=\"footer\">{{ .Footer }}</textarea>\n                            </div>\n\n                            <div class=\"form-group\">\n                                <label for=\"timezone\">Timezone</label><span class=\"mt-1 small float-right\">Current: {{.CurrentTime}}</span>\n                                <select class=\"form-control\" name=\"timezone\" id=\"timezone\">\n                                    <option value=\"-12.0\" {{if eq (ToString .Timezone) \"-12\"}}selected{{end}}>(GMT -12:00) Eniwetok, Kwajalein</option>\n                                    <option value=\"-11.0\" {{if eq (ToString .Timezone) \"-11\"}}selected{{end}}>(GMT -11:00) Midway Island, Samoa</option>\n                                    <option value=\"-10.0\" {{if eq (ToString .Timezone) \"-10\"}}selected{{end}}>(GMT -10:00) Hawaii</option>\n                                    <option value=\"-9.0\" {{if eq (ToString .Timezone) \"-9\"}}selected{{end}}>(GMT -9:00) Alaska</option>\n                                    <option value=\"-8.0\" {{if eq (ToString .Timezone) \"-8\"}}selected{{end}}>(GMT -8:00) Pacific Time (US &amp; Canada)</option>\n                                    <option value=\"-7.0\" {{if eq (ToString .Timezone) \"-7\"}}selected{{end}}>(GMT -7:00) Mountain Time (US &amp; Canada)</option>\n                                    <option value=\"-6.0\" {{if eq (ToString .Timezone) \"-6\"}}selected{{end}}>(GMT -6:00) Central Time (US &amp; Canada), Mexico City</option>\n                                    <option value=\"-5.0\" {{if eq (ToString .Timezone) \"-5\"}}selected{{end}}>(GMT -5:00) Eastern Time (US &amp; Canada), Bogota, Lima</option>\n                                    <option value=\"-4.0\" {{if eq (ToString .Timezone) \"-4\"}}selected{{end}}>(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz</option>\n                                    <option value=\"-3.5\" {{if eq (ToString .Timezone) \"-3.5\"}}selected{{end}}>(GMT -3:30) Newfoundland</option>\n                                    <option value=\"-3.0\" {{if eq (ToString .Timezone) \"-3\"}}selected{{end}}>(GMT -3:00) Brazil, Buenos Aires, Georgetown</option>\n                                    <option value=\"-2.0\" {{if eq (ToString .Timezone) \"-2\"}}selected{{end}}>(GMT -2:00) Mid-Atlantic</option>\n                                    <option value=\"-1.0\" {{if eq (ToString .Timezone) \"-1\"}}selected{{end}}>(GMT -1:00 hour) Azores, Cape Verde Islands</option>\n                                    <option value=\"0.0\" {{if eq (ToString .Timezone) \"0\"}}selected{{end}}>(GMT) Western Europe Time, London, Lisbon, Casablanca</option>\n                                    <option value=\"1.0\" {{if eq (ToString .Timezone) \"1\"}}selected{{end}}>(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris</option>\n                                    <option value=\"2.0\" {{if eq (ToString .Timezone) \"2\"}}selected{{end}}>(GMT +2:00) Kaliningrad, South Africa</option>\n                                    <option value=\"3.0\" {{if eq (ToString .Timezone) \"3\"}}selected{{end}}>(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg</option>\n                                    <option value=\"3.5\" {{if eq (ToString .Timezone) \"3.5\"}}selected{{end}}>(GMT +3:30) Tehran</option>\n                                    <option value=\"4.0\" {{if eq (ToString .Timezone) \"4\"}}selected{{end}}>(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi</option>\n                                    <option value=\"4.5\" {{if eq (ToString .Timezone) \"4.5\"}}selected{{end}}>(GMT +4:30) Kabul</option>\n                                    <option value=\"5.0\" {{if eq (ToString .Timezone) \"5\"}}selected{{end}}>(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent</option>\n                                    <option value=\"5.5\" {{if eq (ToString .Timezone) \"5.5\"}}selected{{end}}>(GMT +5:30) Bombay, Calcutta, Madras, New Delhi</option>\n                                    <option value=\"5.75\" {{if eq (ToString .Timezone) \"5.75\"}}selected{{end}}>(GMT +5:45) Kathmandu</option>\n                                    <option value=\"6.0\" {{if eq (ToString .Timezone) \"6\"}}selected{{end}}>(GMT +6:00) Almaty, Dhaka, Colombo</option>\n                                    <option value=\"7.0\" {{if eq (ToString .Timezone) \"7\"}}selected{{end}}>(GMT +7:00) Bangkok, Hanoi, Jakarta</option>\n                                    <option value=\"8.0\" {{if eq (ToString .Timezone) \"8\"}}selected{{end}}>(GMT +8:00) Beijing, Perth, Singapore, Hong Kong</option>\n                                    <option value=\"9.0\" {{if eq (ToString .Timezone) \"9\"}}selected{{end}}>(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk</option>\n                                    <option value=\"9.5\" {{if eq (ToString .Timezone) \"9.5\"}}selected{{end}}>(GMT +9:30) Adelaide, Darwin</option>\n                                    <option value=\"10.0\" {{if eq (ToString .Timezone) \"10.5\"}}selected{{end}}>(GMT +10:00) Eastern Australia, Guam, Vladivostok</option>\n                                    <option value=\"11.0\" {{if eq (ToString .Timezone) \"11\"}}selected{{end}}>(GMT +11:00) Magadan, Solomon Islands, New Caledonia</option>\n                                    <option value=\"12.0\" {{if eq (ToString .Timezone) \"12\"}}selected{{end}}>(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka</option>\n                                </select>\n                            </div>\n\n                            <button type=\"submit\" class=\"btn btn-primary btn-block\">Save Settings</button>\n\n                            <div class=\"form-group row mt-3\">\n                                <label for=\"api_key\" class=\"col-sm-3 col-form-label\">API Key</label>\n                                <div class=\"col-sm-9\">\n                                    <input type=\"text\" class=\"form-control select-input\" value=\"{{ .ApiKey }}\" id=\"api_key\" readonly>\n                                </div>\n                            </div>\n\n                            <div class=\"form-group row\">\n                                <label for=\"api_secret\" class=\"col-sm-3 col-form-label\">API Secret</label>\n                                <div class=\"col-sm-9\">\n                                    <input type=\"text\" class=\"form-control select-input\" value=\"{{ .ApiSecret }}\" id=\"api_secret\" readonly>\n                                    <small class=\"form-text text-muted\">You can <a href=\"/api/renew\">Regenerate API Keys</a> if you need to.</small>\n                                </div>\n                            </div>\n\n                            <div class=\"row\">\n                                <a href=\"/settings/export\" class=\"btn btn-sm btn-secondary float-right\">Export Settings</a>\n                            </div>\n\n                        </form>\n\n                    </div>\n\n                    <div class=\"tab-pane\" id=\"v-pills-style\" role=\"tabpanel\" aria-labelledby=\"v-pills-style-tab\">\n\n                    {{if not .UsingAssets }}\n                        <a href=\"/settings/build\" class=\"btn btn-primary btn-block\"{{if USE_CDN}} disabled{{end}}>Enable Local Assets</a>\n                    {{ else }}\n                        <form method=\"POST\" action=\"/settings/css\">\n                            <ul class=\"nav nav-pills mb-3\" id=\"pills-tab\" role=\"tablist\">\n                                <li class=\"nav-item col text-center\">\n                                    <a class=\"nav-link active\" id=\"pills-vars-tab\" data-toggle=\"pill\" href=\"#pills-vars\" role=\"tab\" aria-controls=\"pills-vars\" aria-selected=\"true\">Variables</a>\n                                </li>\n                                <li class=\"nav-item col text-center\">\n                                    <a class=\"nav-link\" id=\"pills-theme-tab\" data-toggle=\"pill\" href=\"#pills-theme\" role=\"tab\" aria-controls=\"pills-theme\" aria-selected=\"false\">Base Theme</a>\n                                </li>\n                                <li class=\"nav-item col text-center\">\n                                    <a class=\"nav-link\" id=\"pills-mobile-tab\" data-toggle=\"pill\" href=\"#pills-mobile\" role=\"tab\" aria-controls=\"pills-mobile\" aria-selected=\"false\">Mobile</a>\n                                </li>\n                            </ul>\n                            <div class=\"tab-content\" id=\"pills-tabContent\">\n                                <div class=\"tab-pane show active\" id=\"pills-vars\" role=\"tabpanel\" aria-labelledby=\"pills-vars-tab\">\n                                    <textarea name=\"variables\" id=\"sass_vars\">{{ .SassVars }}</textarea>\n                                </div>\n                                <div class=\"tab-pane\" id=\"pills-theme\" role=\"tabpanel\" aria-labelledby=\"pills-theme-tab\">\n                                    <textarea name=\"theme\" id=\"theme_css\">{{ .BaseSASS }}</textarea>\n                                </div>\n                                <div class=\"tab-pane\" id=\"pills-mobile\" role=\"tabpanel\" aria-labelledby=\"pills-mobile-tab\">\n                                    <textarea name=\"mobile\" id=\"mobile_css\">{{ .MobileSASS }}</textarea>\n                                </div>\n                            </div>\n                            <button type=\"submit\" class=\"btn btn-primary btn-block mt-2\">Save Style</button>\n                            <a href=\"/settings/delete_assets\" class=\"btn btn-danger btn-block confirm-btn\">Delete All Assets</a>\n                        </form>\n                    {{end}}\n                    </div>\n\n                {{ range .Notifications }}\n                {{$n := .Select}}\n                    <div class=\"tab-pane\" id=\"v-pills-{{underscore $n.Method}}\" role=\"tabpanel\" aria-labelledby=\"v-pills-{{underscore $n.Method }}-tab\">\n\n                    {{template \"form_notifier\" .}}\n\n                    {{ if $n.Logs }}\n                        Sent {{$n.SentLastHour}} in the last hour<br>\n                    {{ range $n.Logs }}\n                        <div class=\"card mt-1\">\n                            <div class=\"card-body\">\n                            {{.Message}}\n                                <p class=\"card-text\"><small class=\"text-muted\">Sent {{.Time.Ago}}</small></p>\n                            </div>\n                        </div>\n                    {{ end }}\n                    {{ end }}\n                    </div>\n                {{ end }}\n\n                    <div class=\"tab-pane fade\" id=\"v-pills-browse\" role=\"tabpanel\" aria-labelledby=\"v-pills-browse-tab\">\n                    {{ range .Repos }}\n                        <div class=\"card col-6\" style=\"width: 18rem;\">\n                            <div class=\"card-body\">\n                                <h5 class=\"card-title\">{{ .Name }}</h5>\n                                <p class=\"card-text\">{{ .Description }}</p>\n                                <a href=\"/plugins/download/{{ .Name }}\" class=\"card-link\">Add</a>\n                            </div>\n                        </div>\n                    {{ end }}\n                    </div>\n\n\n                    <div class=\"tab-pane fade\" id=\"v-pills-backups\" role=\"tabpanel\" aria-labelledby=\"v-pills-backups-tab\">\n                        <a href=\"/backups/create\" class=\"btn btn-primary btn-block\">Backup Database</a>\n                    </div>\n\n                {{ range .Plugins }}\n\n                    <div class=\"tab-pane fade\" id=\"v-pills-{{underscore .Name}}\" role=\"tabpanel\" aria-labelledby=\"v-pills-{{underscore .Name}}-tab\">\n\n                        <h4 class=\"text-capitalize\">{{ .Name }}</h4>\n                        <span class=\"text-muted\">{{ .Description }}</span>\n\n                        <div class=\"mt-1\">\n                        {{ safe .Form }}\n                        </div>\n\n                    </div>\n                {{end}}\n\n                </div>\n            </div>\n\n        </div>\n    </div>\n</div>\n{{end}}\n{{define \"extra_css\"}}\n<link rel=\"stylesheet\" href=\"https://assets.statup.io/codemirror.css\">\n<link rel=\"stylesheet\" href=\"https://assets.statup.io/codemirror-colorpicker.css\"/>\n{{end}}\n{{define \"extra_scripts\"}}\n<script src=\"https://assets.statup.io/codemirror.js\"></script>\n<script src=\"https://assets.statup.io/css.js\"></script>\n<script src=\"https://assets.statup.io/codemirror-colorpicker.min.js\"></script>\n{{end}}\n"),
262
        }
263
        file12 := &embedded.EmbeddedFile{
264
                Filename:    "setup.html",
265
                FileModTime: time.Unix(1538459628, 0),
266
                Content:     string("{{define \"title\"}}Statup | Setup{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n    <div class=\"col-4 offset-4 mt-2 mb-5\"><img width=\"100%\" src=\"/statup.png\"></div>\n    <div class=\"col-12\">\n    {{ if .Error }}\n        <div class=\"alert alert-danger\" role=\"alert\">\n        {{ .Error }}\n        </div>\n    {{ end }}\n        <form method=\"POST\" id=\"setup_form\" action=\"/setup\">\n            <div class=\"row\">\n                <div class=\"col-6\">\n                    <div class=\"form-group\">\n                        <label for=\"inputState\">Database Connection</label>\n                        <select id=\"database_type\" name=\"db_connection\" class=\"form-control\">\n                            <option selected value=\"postgres\">Postgres</option>\n                            <option value=\"sqlite\">Sqlite</option>\n                            <option value=\"mysql\">MySQL</option>\n                        </select>\n                    </div>\n                    <div class=\"form-group\" id=\"db_host\">\n                        <label for=\"db_host_in\">Host</label>\n                        <input type=\"text\" name=\"db_host\" id=\"db_host_in\" class=\"form-control\" value=\"{{.DbHost}}\" placeholder=\"localhost\">\n                    </div>\n                    <div class=\"form-group\" id=\"db_port\">\n                        <label for=\"db_port_in\">Database Port</label>\n                        <input type=\"text\" name=\"db_port\" id=\"db_port_in\" class=\"form-control\" value=\"{{.DbPort}}\" placeholder=\"localhost\">\n                    </div>\n                    <div class=\"form-group\" id=\"db_user\">\n                        <label for=\"db_user_in\">Username</label>\n                        <input type=\"text\" name=\"db_user\" id=\"db_user_in\" class=\"form-control\" value=\"{{.DbUser}}\" placeholder=\"root\">\n                    </div>\n                    <div class=\"form-group\" id=\"db_password\">\n                        <label for=\"db_password\">Password</label>\n                        <input type=\"password\" name=\"db_password\" class=\"form-control\" value=\"{{.DbPass}}\" id=\"db_password\" placeholder=\"password123\">\n                    </div>\n                    <div class=\"form-group\" id=\"db_database\">\n                        <label for=\"db_database\">Database</label>\n                        <input type=\"text\" name=\"db_database\" class=\"form-control\" value=\"{{.DbData}}\" id=\"db_database\" placeholder=\"Database name\">\n                    </div>\n\n                </div>\n\n                <div class=\"col-6\">\n\n                    <div class=\"form-group\">\n                        <label for=\"project\">Project Name</label>\n                        <input type=\"text\" name=\"project\" class=\"form-control\" value=\"{{.Project}}\" id=\"project\" placeholder=\"Great Uptime\" required>\n                    </div>\n\n                    <div class=\"form-group\">\n                        <label for=\"description\">Project Description</label>\n                        <input type=\"text\" name=\"description\" class=\"form-control\" value=\"{{.Description}}\" id=\"description\" placeholder=\"Great Uptime\">\n                    </div>\n\n                    <div class=\"form-group\">\n                        <label for=\"domain_input\">Domain URL</label>\n                        <input type=\"text\" name=\"domain\" class=\"form-control\" value=\"{{.Domain}}\" id=\"domain_input\" required>\n                    </div>\n\n                    <div class=\"form-group\">\n                        <label for=\"username\">Admin Username</label>\n                        <input type=\"text\" name=\"username\" class=\"form-control\" value=\"{{.Username}}\" id=\"username\" value=\"admin\" placeholder=\"admin\" required>\n                    </div>\n\n                    <div class=\"form-group\">\n                        <label for=\"email\">Admin Email Address</label>\n                        <input type=\"email\" name=\"email\" class=\"form-control\" value=\"{{.Email}}\" id=\"email\" placeholder=\"info@admin.com\" required>\n                    </div>\n\n                    <div class=\"form-group\">\n                        <label for=\"password\">Admin Password</label>\n                        <input type=\"password\" name=\"password\" class=\"form-control\" value=\"{{.Password}}\" id=\"password\" placeholder=\"password\" required>\n                    </div>\n\n                    <div class=\"form-group\">\n              <span class=\"switch\">\n                <input type=\"checkbox\" name=\"sample_data\" class=\"switch\" id=\"switch-normal\" checked>\n                <label for=\"switch-normal\">Load Sample Data</label>\n              </span>\n                    </div>\n\n                </div>\n                <button id=\"setup_button\" type=\"submit\" class=\"btn btn-primary btn-block disable_click\">Save Settings</button>\n            </div>\n        </form>\n    </div>\n</div>\n{{end}}\n{{define \"extra_scripts\"}}\n<script src=\"/js/setup.js\"></script>\n{{end}}\n"),
267
        }
268
        file13 := &embedded.EmbeddedFile{
269
                Filename:    "statup.png",
270
                FileModTime: time.Unix(1533786305, 0),
271
                Content:     string("\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\x90\x00\x00\x00|\b\x06\x00\x00\x00GN\xe6\x81\x00\x00\x01\x83iCCPsRGB IEC61966-2.1\x00\x00(\x91u\x91\xcf+\xc3a\x1c\xc7_\xdb\xc80MqppX\x1a\x17\x9bfjqQ&\xa1\xa45S\x86\xcb\xf6\xb5\x1fj?\xbe}\xbf\x93\xe4\xaa\\\x15%.~\x1d\xf8\v\xb8*g\xa5\x88\x94\x1c\x9c\x9c\x89\v\xeb\xeb\xf3\xb5Ֆ\xec\xf3\xf4y>\xaf\xe7\xfd<\x9fO\xcf\xf3y\xc0\x1a\xc9(Y\xbd\xce\a\xd9\\A\v\x8f\a]s\xd1yW\xc3\vv\x1a\xb1ы3\xa6\xe8\xeaH(4EM\xfb\xbc\xc7b\xc6[\xafY\xab\xf6\xb9\u007f\xady)\xa1+`\xb1\v\x0f+\xaaV\x10\x9e\x10\x9eZ-\xa8&\xef\b\xb7+\xe9ؒ\xf0\x99\xb0G\x93\v\nߙz\xbcį&\xa7J\xfcm\xb2\x16\t\x8f\x82\xb5Uؕ\xaa\xe2x\x15+i-+,/ǝͬ(\xe5\xfb\x98/q$r\xb33\x12\xbb\xc4;\xd1\t3N\x10\x17\x93\x8c1J\x80~\x86d\x0e\xe0\xc5O\x9f\xac\xa8\x91\xef\xfb͟&/\xb9\x8a\xcc*kh,\x93\"M\x01\x8f\xa8+R=!1)zBF\x865\xb3\xff\u007f\xfb\xaa'\a\xfc\xa5\xea\x8e \xd4?\x1b\xc6{74lCq\xcb0\xbe\x8e\f\xa3x\f\xb6'\xb8\xccU\xf2\xf3\x870\xf8!\xfaVEs\x1f\x80s\x03ί*Z|\x17.6\xa1\xe3Q\x8di\xb1_\xc9&nM&\xe1\xed\x14Z\xa2\xd0v\x03M\v\xa5\x9e\x95\xf79y\x80Ⱥ|\xd55\xec\xedC\x8f\x9cw.\xfe\x00\x1a\x80g\xc3\x17\xe1\xe9w\x00\x00\x00\tpHYs\x00\x00=\x84\x00\x00=\x84\x01լ\xaft\x00\x00 \x00IDATx\x9c\xec\xbdy\x98$Gu/\xfa\x8b\x88\xcc\xea\x9eю\x05H,\x12\b\x8cY\xb4\x8c4\x82ь\x84a$\xb8\x86\x87\xd9\xeck\x8c\xedk??\xaf`\xf9^\x1b\x84\x04\bc\xbc\x00bF#\xd9\xc6\x12\x8b\xfd\x8cͽ6B\xba\xc6\x17\x03\xc6\xd8\x06I\xc3&\x01\x96f\x1f6\vI#\t\x8df\xba\xa7\xf7\xae\xaǎ8\uf3ec\x93\xf5\xcb\xe8\xea\x99\xea\xeej\xeb\xcd\xf7\xd5\xf9\xbe\xfe\xba\xbb\x96\xcc\x13'N\x9c\xe5wND\x02C\x1aҐ\x864\xa4!\riHC\x1aҐ\x864\xa4!\riHC\x1aҐ\x864\xa4!\riHC\x1aҐ\x864\xa4!\riHC\x1aҐ\x864\xa4\xe5\x93y\xbc\x198\x1e\xe85\xfb~\xf6CƘ\xd7\xe9\xff\"\x82\x10\x02\x8c1\xb0\xd6BD\x00\x00\xd6Zx\xef\xe1\x9cCQ\x14\xb0\xd6\"I\x12\x84\x10 \"0\xc6T\u007f;\xe7\xb2O?\xef\x96g<^c\x1a\xd2\xd2\xe8\xaa\x03\xd7\xfe\xa8\x88l\xef\xcc\x1d\x00\xd4\xe6\xd3Z\vkm5\xef\xde\xfb\xea\xb7\xea\x00\x80\xea\xbb!\x04ա\xf7\xddx\xf6u7?n\x03\x1bҐV@\xc9\xe3\xcd\xc0\xf1@ιS\xbd\xf7g\xaa\xe3h4\x1a0\xc6\xc0{\x0fcL\xe5\x1cԸ\xa8A1\xa6\xeb\x9fE\x04\"\x82$IP\x14\x05D${\x1c\x874\xa4\xa5S\x12B8\x93\x9d\x06\xcf=P:\x05\x9d\u007f\x0e.TO\xa2\x00\x02\xd6Z\xe4y~\xc2\xe3<\xae!\ri\xd9d\x1fo\x06\x8e\a*\x8a\xa22\b\x9a]\x88H\xe5H\xf4G3\x11\xfdl\xc7@\x00@͡8窈tH\xc7\ay\xef\x01\x00IR\xc6\\:\xe7\x00\xaay\xd7\xcfāD\x92$\x95ð\xb6\\r!\x04\xe4y^]oHC:\x1ei\xa8\xbd}\x90\x88\xfc\x98F\x93j4\x8c1\xc8\xf3\xbc\x8a*\xd90(\x94\xa1\x86C\xe1\x8c\x10B\x15\x8db(\xfb㊒\x89\xe4\xc9\xe1GB\xe5,8X\x88\x03\x03\xce:4+\x01P\xe9\x80~7I\x12\xf8\xa6\u007f\xfe\xe30\x9c!\ri 44b}\xd0\xdc\xec\xec\x8f$I\x02Ai$\x9csH\x92\xa42\x1c\x9c]\xa8\xf1P\xc7a\x8c\xa9\xfeN\xd3\x14y\x9e\xab\xa1\x19f\u007f\xc7\x11\xd9Y{BvJ\x86$I\xaa\fC\xeb\x18\xaa\v\x1a4\x88H-ke\x87\xa2\xce\x04(\xf5\x06s\xf2\xc4\xc7qXC\x1aҊh\xe8@\xfa\xa0v\xbb\x8d\xf9\xf9y8\xe7*\xa8\x8a!,\xeb\x1c\x1ai\x8a$M+\x98K\xb3\x0e\xfd\xac\x1a\x11\xa0[@\x1d\xd2\xf1C>\x94\x01\x80f\x97q\x93\x04\x80\xea=\xfd[\xe7\xdd\x18S\x05\x0f\xda|\x11B(\x9d\xcc\xe39\xa8!\ri\x854t }\x90\x16\xbf\xf5oŶ\xb3,\xab \x8c\xe6\xfc|\xe5 FFF\x90$\t\xacsH\x9c\x83\xeb@YZ\x84WhkH\xc7\x17i\x10\xa0p\xa5\xbe\x06\xa0\x06m*T\xa5\r\x13\x00jP\x16\xd0u0\x90\xff\xc4\x01\fiH\x03\xa6\xa1\x03Y\"\xa9q\x00\xea\xc6B\xdfS(\xc3{\xdf\x13\xea\xb0\xd6\"IS$C\ar\\\x911\x06\x82n\xfdC\xb3L\x00\v\x1c\x05\xb7\xeer&\xa2\xef+\f*\"(\x90?>\x03\x1aҐ\x06@C\a\xd2\a\xc5\x06@\xfb\xfb\xb5\x95\x97\xb3\v\xcdV\x14\xaa\xe0V_\xed\xba)\x8ab\ba\x1dgd`\xaa \x00(;\xf3\x14\x96Ү<\xaeq\xa8\x13Q\xbdQb\xe7!\"pf\x18H\f\xe9\xf8\xa5a!\xb7\x0fR\x87\xa1\x06\x847\x8e)\xe9\xfb\xfa\x9a\x1a\x14Żոp\xf7\u0590\x8e\x1f\x1a\x97#h\x86\x16rߝ;\x9dW\x00\xd5\xdcrV\xa2\u007fk\xa6\xaa\xdf\xe1v\xdf!\r\xe9x\xa6a\x06\xd2'\xa5iZ-~\x8e.\x15\xa2`H\x83\xdbv\xf5s\\|\x8f\x9dϐ\xfe\xffO\x87\xe40\\\xbbӎ\v\x8b\x11\xdb@jR\xacIGѰ#\x18A\xa3\xca.\x14\xb2T\xa7\xa2\x1dY\xdc\xf2\x9b\xe79\x1a\x8d\x06\n\x19BXC:~i\xe8@\xfa$\ue80ak\x1f\x9ay\x84\x10*GÝ6\xfa\xbef2\x00*\xcc|H\xc7\a%6\xa9\x0e\xfe\t\x120\xef\x9bp.\xc3Ts\xba\xac}\xc1 \xb5)Fl\x03\t\x12\xa4&\xc1\t#' A\xb2\xe0T\x02\xd5\r\xef=\x02\x86P搎_\x1a:\x90>I3\x8d4MὯ\xa2J\xdeX\xc6\xd1'CV\xba{\x1d\xe8\xc2\x19C\xf8\xe2\xf8\xa2 \x01\b\xf5F\t\x0e$\xac\xb5\xc8B\x86V\xd1꾖[H\x10\x8c\xba\x11\x8c&k\x90\"A\x82\x04k\x1bk鴂\xf4\xf1\x1eڐ\x86\xb4l\x1a:\x90>H\x8b\xe3i\x9a\xd6\x1c\x06\x1b\x13\x00\v:o\xb8\xc0\xaeQ\xa7b\xe3C\ar|Q\x90\x00#\xdd#k4(\xe0ڇ\xea\x03\xeb\x00\fЖ\f\xcdv\xab\xcaB\xc3\\@b\x124L\x8a\x864\x1e\xef\xa1\riH˦\xa1\x03\xe9\x83b\x87\xa0\x99FQ\x14h4\x1a\xb5\x13w\xb9\x88\xae\u007f3|\xa1\x1bІ5\x90\xe3\x93t\x9e\xb9\xee\xa5u.\xee\xd6\xe3\xf3\xb14\v\xd5\x1d\xea\"\x82`\x02\n[`\x16s\x8f\xe7p\x864\xa4\x15\xd1Њ\xf5Aj\x04ԑp\x1dDk\x1cj<\xf8o>\xad\x95\x1d\f\x1b\x9a!\x1d\x1f$\xe8\x1d\x1c\xf0\x916\x9cyhV\x1a\x9f\xdc\xcc\xd0\xe60\x13\x1d\xd2\xf1N\xff\xe9\x19ȋ\xbf\xf2\xf2\x91\x10\xc2\x05Ƙ\x17\x8a\xc8\x19\"r\x1a\x80\xd3\x00\x9c\xea\xbd?\xcd9w\x92\x88\x8c\x8bȣ\xd6\xdaGC\b\x8f:\xe7~\b\xe0Q\x11yTD\x1e5\xc6L}\xfd\xa5\xb7\xff\xa7\xad<\xed\xedg\xe7\xc1\xce@?\xc3\xceCq\xf0\xf8\xb0\xc5\xe3\xd9y\\r\xfbKM\x92$'\x15Eq\xa61\xe6Lk\xed\x99\xde\xfb3\x00xc\xccc\x00\x1eK\x92\xe41\xe7\xdc\xc1$M'\xbf\xf8\xc2\xcf\x1e\x9f\x03\xedA\xba_\x83aHv\x1c\x9a\x85\xd4\xe0+\xa0\xb6G\x84\x03\v\xa0\xb3)uXD\x1f\xd2Q\xe8-\x0f\xbcc$M\xd33\x8a\xa28\xc3Z{f\b\xe1\f\x00'Zk\x1f\x03\xf0\xc3\xceϣ!\x84\xa9\x1bϾ\xee?}\xbd\xad\xba\x03y\xd1\xe7_|\xa2I쫌3\x1b\xad\xb3\x1bB\b\x17y\xef\x1b\\/\x887]q\xa4\xaf\xbfy\xf3\x951\xa6y\xe9\xf6+\x0e\x00\xf87c\xccg\xf2<\xdf\xfe\x8d+\xb6\xaf\xda\xf35\xd8(\xf0\xa9\xbc\xf1\x06C\xc6\xc6\xe3\xd3{\xe3\xd3[\x8f\a'r\xe9\xf6+,\x80M\"\xf2\xd3\x00^\x01\xe0,\xef\xfdZ}_\xe7%.(\x03@\xbbݞ\xdax\xc7\xe6/\x18c>k\x8c\xf9篽\xe4KG\x1e\x9fQ\f\x86\x82\x04X\xb1\xb5\xac3M\xcb\x02\xb8\xea(\x80\x05\xcf\b\x01\xea\xc1\x05?K$\xee\xce\x1aҐ\xae:p\xad\x13\x91\x17\x03\xf8i\x00\xaf\x01p\x16\x9fr\xa0\xfa\xc5[\x05:\x01n\xf3\xea\x87\u007f\xef!\x11\xf9\x17c\xcc߇\x10\xbev\xc3Y\xef\xf7\xab\xcd\xef\xaai\xef\xba[6\\h\x8c\xf9\x8d\x10\xc2/\x008\xc9Z[\x9ef\x9bZ\x88\x11\xd8\xc4\xc1&\x06\xc6Y\xd8\xd4º\xae#ᣰ\x81n\xe7\vG\xf7@w\xb3^\ba\x06\xc0\x17\x92$\xf9l\b\xe1\xf3_{ɗƗ\xca\xef\xc6;6\xbf\xd3\x18\xf3T~\x96\x03\xdd\xff\x97\xbc\xf7'\x01\xa8\x15O9\xb3\xe0\x16\xdd$I\x90eY\xf5\f\x888*\xa5M\x897\xb3c\xe1\xf3\x93\xe2'\x1d\x02@\b\xe1\xe6\xbb6\xdf\xf1\xed\xe5\xcc\xc7\x12\xe4\x90\x18c^\xe2\xbd\xff\xe9F\xa3\xf1\xfa\x10\xc2\x19*g>\a\xaa\xd7ò8\x12\x8f\x8e\xee\b\xd6گy\xefo\x01\xf0Wwm\xbe\xa3\xa7\xb3\u007f\xf9\xb7^}j\x92\xa6\xefՆ\x05v\xb6*S\x85\x8c\xf8@J6\xda\xce9\xe4y^u\xcbu\xf8\xfe\xd6\xe7\xce\xfb\xdf\x1f?\xd6\xd8_\xb3\xefg/4\xc6\xfc*\x80Z\x06)\"\xf0E\xf1\f\x01^\xa5\x87e\xea\xd8\xe2L4\xe6\x87;\xf2\xb8C\x8f\x8ev\u007f0I\x92\xcfq\r%\xbe\x16\xcb\xdc{\xff\x83ϼ\xe0\xd6\x1b\x17\x1bë\xf7\xbe\xe14\x11\xf9\xe3Z\xf3\x86\x0f\x18IF\xb0&\x19E\x82\xa4\xb3w\xa5\x01\x87\xee\xaey\x1dW\xaf\xa0\xads\xdf/\xfc\xe93\xb7|\xeeX2\\*\xbd\xed\xa1w\xfd\xa4\x88\xbc\x82\x1f\x83\xd0h4j\xf2\x8b[\xe6\xb5\xf6č-\xac\x9b\x9d\xef\xbe\xfb\x86\xb3\xde?\xb1\f~\x9e\x0e\xe0\xed\xbc\x11\xb8ױD<'|\xce\x19\xf3\xc7\xf3o\x8c\xf9\xfb\x1b\xcez\xff\x9d\x8b\xdd\xf7\xaa\x03\xd7^\x1aB\xf8ec\xcckE\xe4\x89z/\x9d\u007f\xd6i]\x0f\x00\xaa\xff{<n␈\xfc\x1f\x11\xf9\x14\x80;o<\xfb\xbaU\xd9p4\xd0\f\xe4\xfc\xbf{\xa1\xb1\xd6\xfe\xbcs\xeew\x8b\xa2\xb8\x98\x8d\xa3\x0e\xaehw\x1e\xf9\x99\x15P\xf7(\"0\xd6\xc0:\x8b\xdce0\xce\"i8\x04\blb\xe1RW\xedގ\x1f\x17\xda9!\xf5\xa4\xa2(~&˲\x9f\xb1ֆ˾\xfc\xb2\xafz\xef?+\"\x9f\xb9\xfb\xf2;\xbf\xd7'\xfbo4Ɯ\xaf]U\xec\xdd\xe33\x8d\xb8xʝV:V\xfd>\x1bY\x86<\xe8T\xdf+\xe3hU\x9d\x90^+\x8ah?\x03`U\x1c\xc8e_~\x99\r!\xfc\x82\x88\\\a\xe0\xa9\xec\x10u\x11\xa5iZ9F]б\xa2\xf3i\xb4@\xf5\x00&[\x14ŋ\x01\xbc\xd8Z\xfb֍wl~\a\x80\u007f\xb8k\xf3\x1d\xb54l~~~-\x80+yߌ\xe9\x9cd\x9bt\x1c\n\x9f\x88\xcc\xd9\x1do\xd2\xe3\xf6\xe9,\xcb\x00\xe0o\x01\x1cӁ\x88ȳ\xac\xb5W\xeai\x01z\u007fc\f\x92N\xb6\xc1N@\xef\xa5G\xf4s\xa0\xa3r\x8b\xa1K\x86\xaf:\x06\xe6l\xef\xfd\x95\xcas\xecd\xf4\xbb\xb41\xf1k\x00\x16u I\x92\x9cX\x14ŕ|?\x978\xe4\x92Wss$\xef<\x8f\xc4:\xa4&Ej\x1ah\x98\x14k\xd25\x18MF ^ju\x9a\xce؎\x00\x18\xb8\x03\t!l0\xc6\\\xa9\x81\x197\xa4\xa8\x9c8p\x8ce\xbbXSJ\b\xe1\x03\x00\x96\xec@D\xe4\x89y\x9e_\x19\xef\xe7\x8aϼ\x03P\xdbL\x1cw\xe1\xe9\xba \xe4\xe4\xbb\x00\xee\x8c\xefwՁk\x9f$\"۬\xb5\xbf\xa8\xaf\xc5M\x19\xba\x06\xd8Yęl|\xc8g\b\xe1I\x00~\xd3\x18\xf3\x9b\xde\xfb\x83W?\xfc{\xef\x12\x91\x8fo{\xfa\xfb\x06\x9a\x95\f́\xac\xbfmӳC\b\x1f5\xc6\\\x0et\x9dF\xbc0\x948z\x04\x00\b\xe0s\x0f\xeb-\U000a2342&\xa3\xed,`\x00\xd7p\x10\x03$\x8d\x04H\x05\xd6ؚ\x92w&\xda\xe6y\xfe\xe3\xd6\xda\x1fw\xce\xfdѦ;/?\xfb\xeb/\xbd\xfd\xf0\xb1\xf8W\xc3\xcfg\x15\xf1\x02\xe6\xdf\x00j\x8a\x1e;J&\x8e^\xf4\x1al\x10XI\x81\xfaa\x8d\xfa}\x8e\x86W\x83.\xdd~\xc5\x06\xef\xfd\x9f\x19c60\xb4\xc8{]4\xcaS\x83\xaa<\xb2\x93\xe1(\x8d\x1dk\xa4\xf4\xcf\x0e!\xfc}\x92$_\xbf\xec\xcb/\xbb\xea\xab?\xfeŻ\x95\x0f\x96\x1d\xcb\xc9{\x0f\x9beh\xb7\xdbUf\xa2\x11s\xa3\xd1\x00\x8cA#Ma\xe8\x18\xfd^O\x82<\x16q@\xc0\xed\xd6\xec\xfc\xf5s\\\xe3P^\xf4o5\x8414\xcb:\xc0\x0e*v.\xea\xfcT\xbe\x9c\xb1\xf43\x16\x8e\x8e\xf5\xfaz\x0e\x1b\xeb].\x82\xc2x4\xd1*\xf9\xca:|\xc2am\xba\x06#n\x04)\x12\x8c\x98\x11$f\xf5\xd0n\xd57]{\xbc\xc9V\u05f7\x8e\x8b#m\x96\v\x1bU\x96\xc1r\xa8\xd1hTs\xa7\xd7b\x9d\xd6y\xe09\xe4\xac(\xce^{\xf1\xf3\x96\a\xdea\xad\xb5\xbf\xe6\x9c\xdbR\x14ũ\xbc\xe6ئ0\"\xa1\xa4\xd7繌\xb3V\xb5g\x9d\x03\\\xcf\b!\xfc\x951淯:p\xed[n8\xeb\xfdۗ-\x9c\x88V\xac\x15\xebnِ\x1ac\xde\x1aB\xf8\x03\xe7ܨ\nZ\x15\x9d'\x9f\x85\xcf\xca͆\x9a\x0f)LӴ\x9b\x1a\xfa\x00\xdf*\xaf՜ͺ\x11\x9a\x01`\r\x92\xd4\xc1$\x16\x05\n4FS\x04/\xf0\xe2\xff\xfc\xee\xcb\xef<\xa6\xf3\xe8\xf0y\x12G]\xf1B娗\x8dk\x1c\x19\xc4Q\xa3\x8e=\xce^⬅\xe5\xc0\xd1t䐞\xb0\x94\xb99\x16]r\xfbK\x9f✻\xce{\xffKl\xf8\xd9\xc11?l4\xe3\b\x95ǯ\xaf\xf1\xd8\xe2\xa8]D6\x85\x10\xee\xbat\xfb\x15\xef,\x8ab\xcb7\xae\xd8.\"\xb2\x86#>\x951\x00dYV3\x12*\xc7N\x86Q\x9b'\x97$H\x9c\xab\x9e\xd3⒤\xaf\x876\x15Eq\xba\xf2\xaf5\x0e\xe6[\xefφCOX\xd6,\x84!P\x86?\xd4\x18\xf1w\x81\xfa\x13,\xd9\xc1\xa8#d\xdd\x01\x00\xef\xfd\xa9G\x1bC\ba-\xf3\xaa\x86.\x1e\vߋ\xb3M\x00\xf0\xf0\x98\xcef`\xed\\\xf5\xd9\"/\x9e\u070f\f\x97J\x12\u0093\x04]|_\r\xa8\xcaPu\xa9(\n\xe4y^\x83*u\x9d\xaa\x91\xe5CLMn\xd6,\x8f!\x9c\xac\xc0>w\xc9Yk+\xb8\x8c!I\x9d\x1f\x9d\xff\xc5\x1an:\x19\x01\x00\xe0w\xef\u007f\xfb\xe9Ƙ\u007f\f!l\xe2\xb5\x1e;\x1d^C\x1c\xa8\xa8L\xd8np\xe0\xa9<\xaan\x12\xfcw\xa1\x88\xdcyՁk?彿\xe6O\x9f\xb9\xe5\a˒\x11ъ\xdax\xd7ݲ\xe1\x04\x11\xf9\x17\x11\xf9\x801f\x94#\a\x1e\x98\xa6\xf7*\x98\x18\x12b\x83\xa5\xdf\xe1\xf7c\xd8@\x1d\x8b\xb5\xe5N_)\x02\xdasm\xe4\xb3\x19\xfcl\x81\xe6X\x13s\ag\xe7\xe6\x0f\xce\xdd\xd0\xefX\x9csg*\xdfqڪ\x8b_\xf9P\xc3\x16\xd7A\x98_}\x8d\x15\n@\xedh\x13&UN\xbd6;^\xfd\xed\xbd\u007f\xe6\x92&\xe8(t\xe9\xf6+^f\x8c\xf9\xb6\x88\xfc\x12G\xf5\f\x9fċ 6>\x1c\xe9ğ\xd7\xf7Y\xa9y\xfe\x81*\x8b\xbb\xceZ\xfb\x91\r_zI\"\x82\x935p\x88\x83\f\x86\vظ\xe8\xb5\xf5\x9aY\x96!\xcf24\x9bM\xcc\xcd\xce\xe2ȑ#8\xf4\xd8c\xcf\xe9K(3x\xb6\x1aw5\xaal\xfc\x95\x8e\x96MƵ\x04\xd6e\x00\xb5\xbf9\x9bS\xe3\xa7\u007f\xeb\xbc\xf7\x88d\x9f~\xb4!\x98\xc7̩U\xd6ֹ\xd7b\xcf]\xd79U\xa3\xcdđ\xbd\xf7\x1e\xe2\xe5y}\xc9p\x89df\xec\xf3u-\x03u\x990\x1fI\x92T\x0f\xf4\x8a\x8d(;\xe1ꨠ\xfb\x8b\xa3:\xda\xc5\xc8\xdf_<\x05@\xd5 \xa1\xcf\xeea\xdd\xd6\a\x8a\x01\xdd.;\xe5_y\x88\xb3E;n\x9f\v\x00o{\xe8]\xa7;\xe7\xbe\xe4\x9c\xdb\xc4\xc1\x15\xaf\x0f\xbe\x9f^Gu\"FC4@\xe0\xb5\xc0\xd7d9Қ\xfaik\xed\xfe\xab\x0e\\\xfbsˑ\x11Ӳ\x1d\xc8\xfa\xdb6\x9d`\xad\xfd\xac\xb5vs< ]\x80* \x15h/\xac\\'\n\xe8\x1aW6`l4\xf4>z\x94\bg3\xbc\xe0;\x8b\xf6\x04\xd9U\xec:\xef\xed\x17\xf6\x15}f\xb3\x19|\xdb\xc3\xe7\xdd\xe8\x93k-\xb13\xe4\xa8M\xef\xa9\xca̐]\x8cѦiZ\xdb\xd1\xceO\xb9\xd3\xcf\xe88\xb8\x96°\xd6Jiӝ\x97\xff\xb7\x10\xc2?\x1bcN\x0e! ˲ZQ\x12\xe8B\x8b\xbaX\x81n\xbb*\xcf+G\x83*\v\x9d\x13\xae\v\xb0NT\x10J\xa7\xae\xe5\x9c\xfb\x8d\xb2\x01\u009f\xc8Ή\xe1\n\xfdn\xbc\x9f\"vP\xf1\"\xeb\x05+.FM4\xd1j\xb5j\x90#G\xba<\x8e8\xc8QC\xad\xf3\xceQ!\xcf+\xcb6v\xd0lH\xf5s\f\xa3\xf43\x96\"t\x9d\xb9\xae\x11>\xccQ\xe7Q\xc7\xc1\xb5E%\xd5\xedŲ\xf1AS\xac\xdfq\xb0\t\xa0f\x94UO\xf5o\x96?G\xdc\xcb!g]Mf\f)\xe9\xcf\xc8\xc8H5\x1f\xbc^\xe2Z\t;\x06\x81\xe0\xad\x0f\xbe\xf3GD\xe4\x8b\x00\xce\u05cc\x93u6\xce^\x01\xd4\xe4\xc0\xf6Ee\x12\aW*?\xcd\xdaX\x16\x91]\x1e1\xc6|\xe2m\x0f\xbd\xeb\x9dW\x1d\xb8v\xd9\x13\xbc,\b뼿\xbd\xf8\x84\x10\xc2g\x8d1\x9b5\xfa\xd2\x01\xa8\xd1\xe3\bA\x05\xa0\x03el\x99\r\x86\xfeVAŞ\x9fa\x156(zo]\xc0E\x91\xc3}'\x81\x97l\xfbޭ;\xfb\x82\xb0\u009cG\xee\xb3\xee\x8e\xe1$\x87\x18\x81q\x06&\xb1\x90F\xa9\x04\x1e\xddT\x9f3\x0f\xfd\xcdΌ\xa3r%6\xb4lP8\x1d\xd5\x05\xa2\x8b\x86\xa3\xb3\x95\xd0\xc6;6\x1bc\xccۍ1ױ\xfc\xd9\xe8\xb3A\xe6q\xe8\xfcőN\f\x85p\xf6\xa4\xf0\x12\x1bc~\x8a#GK\xde\xfbW\x18c\x9e\xa7\x86\x8f\xf9b\xfeب\xe9\xfd\x99g\xa0\v\xb1\xa9\xbe-\x16\x81\xc74ۜ\x85mw\xe7/m4`\x00\xa4\x8d\xf2\xa4]6\x16\xb1\xb3b\xd9\xf1\xd8j\xddPqTj\xed\x02Ǡ\xbf\x19o\uf571.F\x06\xf5\xac\r\xe8\x1a2\x9e\v\x95a\xa3ѨA\x85:\xa6\x18\x8e]-\xd2:&;[\xe5=\xae\xaf\xe98\x92$Y\x00gq\xf3\x861\x06\xde,\xafV\x1c$\xc0\xc0֮\xcd\x0e\x17@m=\xb3l9ˌk\"\xb2&\x9c \x82/Zk/\xe0\x82;_\x9f\xafݫ\x99 \xceF\xf5\xf3\xecP\xb8\x19\x81\x1f\xb7\x1c##\x14$\xbc_D\x9euՁk\xdf|\xc3Y\xef_r\xa7֒\x1dȺ[6\x18\x00\u007f\x1bB\xd8ܫ@\xce\x1e\x98q\xd58Em4\x1a\v\xa2G^xz]\x1d8\x178\xb9Xɓ\xd05&\x06\u0379\xd9`\x8cyO\xbf\xe3\xf2\xde\xd7`#\xf1ݮ1\x00(L^\t=i$\x10\x03\xa4#\t\x8c\xb3\x80\x03\x04\x01I#\x05L\xd7Y2\xae\xad8tlh\xf8iv1\xcc\xc1\x11\xcdJ\x17\xf1e_~\x99\xf3\xde\xff\xb91\xe6\xcdzo\x1dw\x1c\x812\x0f\xfa\x9b\x8b\x8a1\xac\xa4\x9fS~\x19\x96\xe1\xebq$\xcc\xc1\x80R\x9a\xa6g\xab.1\x04\xa4\xf2c\xbeu.\xb8P\xcd\x19\x02;\xc8~#\xd2r\xd1w\xe7\"t\f\x80:=\x00\xb0\x1d\x9e\xd3$\x01\x8cA\x9a$H\x1b\x8dZ۰\xf2\xa7\xe3\xe0\f\x96\x03%6<\fY0\x84\xc5\xdf\xe1\xc8t1\xb2\xa6kh4\x82\xe6f\x868\x10\xd0\xf7\xf5\x01Y\xec\xb08\xf8Y\xad\"\xfa\xf7\xe5>4f\x1b\x18u#h\xd8\x06F\xd0@\xc36`Q\xdf\xf5ρ\x04\xeb%C\xc5l\x87\x96\xbb^\x12\x9b@,j\x01\xa0^OeV\xd5e\xa3\x80\x80\xf5\x9d\x83\x1c\xef=\x92\x93\x92\x9f\x00`c;\xc9\xc11;l\xce.\xb4\xf3\x91\x83(\x9eWv,\xcc7\axlsz\xac\x87_\xf5ޟuՁk\u007f憳\xde?\xb5$y-\xe5\xc3\x1dz\xad\xb5\xf6u\xbc0\xa8կbV\xb1l6\x06\xb1\xc04\xda\xe4E\xc7\xc50\x16v\f\x17\xc5\vK\x17\xbas\x16v\x9f\x83s\xee\xe3{\xb7\xee\xfc\xeeR\x06\xc6\xfc\xb2\xe1\xe1\xc5d\x8cA\x91\x95<\xb7\xb3zWF;\xb4\xe1RW\xeemI\flb\x91\xa1@\xd2H\x90&i\x8dw\x1d\xb7\x16\xdf\xd4\x10\xb2Q\x8c\xeb'쐗J!\x84\xad!\x847\xeb\xffzOv\x1c\xecLx\xaf\x8b\xce-/\x8a8\xa2\xe6T;vF\xfc\x1a\a\x00|\x1d\x86\xc1\x18\xf6\x02\xba]I,#}]\xa4\xdb\xd1\xc4\xd9@\xac\x1b\xfdP\xb9\a!\xad`\x1d\x8e\xda+\x03\xacM\x06\x1dY\xb4;\x90W9\x0e\xc1\xe8\xe8\b\xd2F\xa3ʈ\xe3\xfa\x1f\x1b:\xe6Q\r\x8a\xea \xcf\a;\xec\xb8i`\xc1<K\xa8\xb2\x90\xd8\x11\xa8>iC\x02\a\x0e*W\x96=g\x9f\x85\xac\xce\xe3\a\f\frɑ\xe5Y\xcd!\x88\x0f\x18q\xa3\xa5c)\x1a\x18q\r\x8c\xb8\x11\xf0\xc6}6\x86\xdc\xed\x16BX\xf6\x93\x1e}\xf00R\x87Kk|\x91#\xe1\xa0X\xd7\f\xf3\xa5sٙ\x03\v,\xdcT\xaa\xf3\xc2\xceA\xaf\xad\b\x04\aZ\xac\xcbl\x93b\x1b\xaa|\x18c\xaa\xeeE\xfd\x0e\a[@e\xf7^\x0e\xe0\xd3oy\xe0\x1d/\xff\x93g|\xa0\xef\xc9^\x92\x03\xb9\U000135dc\b\xe0\x83\x1c\x1drD\xc9\x11\xa8\xe2\xab\\3\x88\x05\xcc\xc50\xc6\xe05\xe2\xe3(\x83\x8d\x1d;%ƈK\x81\n|\xd6̍1\u007f\xb4\x94\xb1iZ\x1c\x17Hyc#+\x13\xf3S\x831\x8a\x00\xe3\x05E\xab\x9b=\xb4C\xe7$\xd6\xc4\xc2&\x0ebBg\u007fKRf/\xa6wʮ\x13\xad\xbc\xf5\v\xc5\xc4t\xe9\xf6+^\x1bBxk\f\x0f\xe8\xb5\xd5(\xb1\x93\x88q\xd58\x95g\xc3\xcc\xce$\x8e\xdat\x9e\xab\a(-\xb2dž#`\xcef\x18fS\b\x8c\xe7\x8a#9\xee$c\x9d\x8b3\x9d\xc5(\x86^\xe3\xc5\xca\xd1\xe6bYs\xd6i7\xe6\xef\xb03qIRe-l\xfc8[b\xf9\xf0}\xe3v\xce\xc5(\x86\xcft\xfe\xd8\x11q6\xc8|\xb2\xd3\xe0\xb9_I\xf0r4\n(\x8f\xc9g9\x02\x80q\x16mi#\x0f9\x10\x80\xa2U\xce\xe3H2\x82D\x1cF\\\xf9{M\xba\x16&ԝm\xbf\x19\xe7b\xb4\xd8<\xeb\xff\xdc\xe2\xcd\u0383\xf5\x81۸c8\x9bх8kf\xde\xd9\xd6\xf0\\\xe9{\x1c\x000\xcc\xc7\xef\x8bH\xb51\x13\xa8;=\xe5E\xc7\"\"/M\x92\xe4}\x00\xdeޯ\xac\x96d\x91B\b\xbf/\"O\xd7>\xe9\xcek5\x85\xef\x15\xc5p\xe4\xad\x13\x12{\xc1\x18*ae\x8a\xb3\x126\xdcu\xc1\x19\x98=\x82\x10\xc2_\xec߶\xfb\x81\xa5\x8c\x8d\x05̆\x83\x17-G\x8d\xbd\xc6\x1a\x1b=6\x10\x00 ^P\x14%\x14\x13L\x807]%4\xd6@l\xb9C?i8d!C2\x92 i$5Hl\xa9\xb4\xf1\x8e\xcd\xe7x\xef?\xceВ*\x8e\x1a\xe4\xb8%PǪQT<_q\xf4\x1c;:\x96\x89\xea\x80F@\xaa+1ƫ\xf7\x89\x8d'Ϗb\xcb|\xb4\x03\xeb\x95\xf2\xc4\xd8o\xbf\xce\x03P\xc3Q_\xc4q$\xaf\xaf\xf1b\x8d[:\xbb\xd7\xea~\xbf\xd5jU\x9fU\x03\xa3rԍ\x92\x89s0\xd6VP'\u007f\x9f\xef{4r֕A\x89tk\x92:\aq\x10\x10\xcf9\as\xf1k\x82թ\x83\x88\b\x12\xb7\xb0\xb6\xa6\xe3U^T^ͬ\t\xe7\x1cf\xf2Y\x00@h\x06\x8c4F`\x83Ś\xa4\xdca\x9f\x88\xc3(F\x97ŏ5\v\x83\xa3x~Yf\x1c\fs֢\xaf\xb1\xfcy<\x9c]0\xc2\xc2\xf7c'\x04,\x84\x9bu~\xd9>\xc4\xddZ:߱\x13R\xfd\xe5\xbdA\xde{\xe4y~\xcd\xdb\x1ez\xd7\xdd۞\xfe\xbe\xffӏ\xbc\xfav \xebo\xdbt\x8a\x88\xfcN\b\xdd\x0e\x05V\xe68\x1a\x8f\x175\x80\x9a\xc1b'\xa1\xaf\xe9\xf7\xb8\xb8\xae\x1e\x94\x05\x10\xe3\x93<\x91\xde\xe7Mc\xcc\xfb\xfa\x1d\x97\x92\n_\xef\xc9J\x11Gܽ\xa05\xe6\x81qG.j\xa92h\x94\xcc\x05\xcd\xc4$\bY\x80\xe4\x02\xdf\xec\x18\xc8Y\x8f\xb6\xb4`\x9d\x85X)\xeb-K\xa0K\xb7_1\x12B\xb8\xcd\x18sJ\xafh\x9a\xf9\xe3F\b\x9e[5\xf21T\xa5\xaf\xf1\x9c\xaaSⱱAb\xb8\x92\x9d\x18GM\xcc\x1bGw\xec\x14\xb8\x16\xc3Pg|\x04\fGYK\xa18\vU\x990\xa4\xa1\x9f\xe3L\x9b\xe5\xa9\xf7\x8f`\x82\x05\v:\x84\x80v\xbb\x8d,\xcbj\x91iU\xb0\xb7\x16\x8d4\xc5\xc8\xe8h_\xe3\b\x12\x90\xd8d\x01\xfc\xa1\xc1\x19\xb0p\xad\xc6ccȮ\n\x06V\xe9\xd4#\xc1\xc2n\xbe\x18\xb7\xe7\xe3M\xb8+Nǒ\x17y'\xd3oW\xef\aY^\x16R\x84\x02\x89\xe9\xc2=q\x00\xc1\xeb\x83\x1d{\x8c\x1e\x18ӭS\xb0\xbdT=\xe1.2\xce\xca\xf5Z\x9cU\xf7ʂbć\x9dZ%\xdb\bA`\x9e\x94\xf4\x9e\x8c*y\xef?\xfe;?\xb8fߟ\x9d\xb3\xf5\x98\xa7x\xf4m\x91B\b\xaf6\xc644\xe2\x03\xba]$\xb5\vR\x04\x1b\x1b*\x8ehY\x00|\x92\xa9~\x87\r\xb3\x16Pوk4\xdà\x04\xb2\xab\x80\x88ܴ\xef\xfa]\x8f\xf6;.%^h쨀n\xbb\\\xec\f\x81z\xbb\xa9\xf6\x80\xb3\x81\xd1\xdf\x1c]k\xb4\xce\x11\x85*\x81*\x8f\xde\xd7\x18\x03_x\x84,\xa0=\xd3ZҘB\b۬\xb5\xeb\xd9\xe8뜩\xfcT\xa9\x95\xa7\xce\xf7J\xb8%\xc2^\xd9X\xb3\\\x18\xd7ey\xb0\xc1R\xa3ʑ\xa6\xfe\xcf\xc1F/Y\xf4\x8a\xc2\xf9\xfa<\x8ex\xb1\xf5\x03\xf9\x90\xbcj\xf3\xa7\xf2\xd2 G\xef\xcf\xfc\xa8q\xe09\xe3\xf9挛\r\x1f\xcf3;%5,\xedv\x1b\xedv\x1bE\x9ecvv\x16c\x87\x0f\xe3\xc8\xf88\xc6\x0e\x1f\xbd\xa9\xd0\xc0T5\x1c\xbd\x8f\x06.\x9c\xadŲd\b%\xce\xc0\x96ꀗBڅ\xd5\r\x00\xeb{(\xf4=\xae\x19\xea\xeb\xb1-\xaa\xe9\xc42k \x9a\x81(\x0f\xb1\xcd\x01\xba\x8e\x8du\x8ek\xc0\xaaì\a,\u007f\xce>\xe3\f\x9e\xff\xe6\xe0\x87u:\x86\xbf\u2004\xbf\xc7m\xc8\xec<8\x1bQ\xb9+\xefI\x92\x9c\xd4h4>\xf5\xd6\a\xdfY\x1d\x9c\xba\xa8\xbc\xfa\x16\xac\xb5\xff56p,L\xf6b\f-p\xe7\x14;\t\x15\nO\x969b`\xef\xb70\xdf5\x90\x83\x02\xe4\xa5qp֡\xf0\x05\f\xea\xfb,\xf4\x1e!\x04X\x18\xc0`\xc6Z\xbb\xa5\xdf11qD\x11\xa7\xf9l\xe0t\x12y\xf3\x95*\x89\xee\xf1P\x19\xf1be\bI\xa4[\xf8\xe5hC\xf7X\xc40\x8e^g)5\x90u\xb7lx~\xf3\xb1\xf9+[cM\xe4\xd39\x8a\xd9\x1c\xf9\\\x06\x9fy\x14y}\x13\x14G6\xca'oN\xd2\xf9\x8d\xb3K>f!\x86\xbe8\x83aGɑ\x9c\x12à*c\x95g\xec\x00\x18\xc2d\x18!\xee4\x02\xea\xb8x?\xc4Δyb\xa7\xaf\xc4u\x025\nl\x10b\xe8\x8c\xf9fc\xc1k\x06@\xed\b\x16\xbd\a\x1b*{\x8c,tR&\x91\xb5\xdbh\xb5Z\xb5\xd6V\x8e\x909ӎ\x1d\n\xebB/\x872h\nR?\xa5\x98\x91\t\xce:9\x82gx\x8dad\x1d\xebJ \xb7\t;\x8d\xe9|\xa6\x84\x97!5C\xcb끃b\xfd\x9f\rr\xec\x84y\x9d\xf3g9\x00\xe9U\xbb㌆\xe5\xc0\x8e\x8d3\xf58\xe3\xe0u\x117pp\xf0\xa0\xfa\vTs\u007f.\x80\xdf:\x96\xbc\xfa\xb2H\x17ݺ\xf1\xe4\x10\xc2+bE\x8a\x0f\u038b\xa3O\x16(\x1bPUhk,쌅\xbf?C\xde\x19|\x86N+r\x13\xc8\x1e\xcdj\x8bߍ\x8e\x00ϯwߔ\x03\a\xb2\x1d-\xb8\xc4ݸ\xfb\x03\xf7.\xf9$^\xa0\x9e\xee\xc5\xce\t\xe8\x16:u\xbc\xac(\xdc\x06\xa9r\x88k\x16z\x1d\xc679b\xe04W\xefυN\xe6\xa5Oz\x97\x811\xf0\x80\xcf\n\x14\x1d\x05\xca\xe7\xcbM\x83\x995\x80\x05\x92F\x8a\f\x19\x8c\x05\x92\x91\xb4\xdc\xf7b{w\x84\xb01W\xa5f\\=^\xf8ʷ~\x9e\xd3d\x95\x13\xcb2ލ\xcdƔ\xa1\v\xbd\x06\xef9\x8a\xb3>\x95a\xbb\xdd\xee\xbb\x0eR~\xa7,\x84s\xc1_\xbf\xaf\xfa\x16w\x83\x01ug\xa5\x06\x83\x8b\xcf<\x8f\x1c1\xea}\xd9A\xab\x03\xe7V\xf0\n\xfe;\x86]l\xa3\x85\xf6T\xab\xbav\x95\x05w\x8ew1\x1dc\xa1H\x00\xeb!\x93ʕ1\xf8\xd5 m;Vy\xb3}`\x99\xa9\xbeq\xc0\t\xd4\xe1\xb7\x1a\f\x14\x96W\xf4?\"G`2\x83\xd0*\xbb\xd9\x12\x93`\xc46\x90\x9a\x14'\xad9\x11N\x12$fak8\xaf\x95\xd89Ď\x99ǡ\xd0\x1cg5@\xfd\xa0\xc6^'_\xc4:\xa3\xf7f^\x18q\x88\xed\x98ΫfwJ\xfa\xb9\xce\xf7\xaey\xeb\x83\xef\xfc\xf0\x8dg_\xb7\xe8c3\xfb\xd2\f\x11\xd9\f`\x84\x99ӿ\x999UH.\x14\xf1\x02\x04\xba\xa7\x97Zk\x81q \u007f\xa8U\xf3\xa0\fﰑ\xca\xf3\x1c\xf3\xf330\xf7t0\xe5'\x8dB\x9e\"\U0003e034\x00\x81\x1c\xf1\xde/zJ鱈\x17;G\x87:\xae8\xfa\x88!\x13n#Աp\xd6@\x9d\x0e\vڛY\xe9z\xc1\nq\x14r,:\xefo/\xfe1k\xed\x1bC\b\xd5\xfe\x93\x98o\xef=\x9cq(\x9aye\xec\x9a\xd3\xf3\xa5l\xd3\x14\xc1\x04\xb8\xd4\x01\xae<g\xcc&\x0e\xc1\x04X\xd7M\xcf{\x9d\x89\xc50P\xaf\xc8]eƊ\xcaΘ#>}\x9f\x95<\x96\x0fG\x82\xca\a\xcbs)Et\xcel\xd8H1_\x1c\xd5)\xf1\xdf\x1c|\xb0\xb3\xe3\xcc5\xce\xce9\x10\x89\x9dp\x9c\xd9\xf4C\xb1cף7ڨפ\x9cs\x801H\x9cC\xa3\xb3\xbb\x9aO\x86й5Ƭj\x11\xddXS\v\x16t\f\xb13\xd1יB\b\xb5\xf5\xa4\xd7\\.\x05\t\xd51\xf7֕\x0f\xfc\x9a\v\xf3\b!`\x06\xb3\xe5zr)R\x93bԍ`4\x19E\x02\x87\xd1dtA\xd6\x1aג8\xe8\x89\r;\xeb\n\a\x12\x9c\x95T\xf2\"{\xa0?\xbc\x0e8\x88\xe2\xe0\x80\xef\x05\xd4\xf7\xaa\x00\xf5\xb5\xd9y\xed\x89Ƙ\xdf\x02p\xfdb\xf2\xea7\xb48\x9b\x17\xbc\xfe\xcd\a\t*\x03\x9c\xaa+C\xea\xed\x14\x9b-'\xdc\xc3?\x9c\xeb\x80\xe7\x00\xdcf\xad\xdd\x0f\xe0a\xef\xfd\x9c1\xe6\x19\xd6\xdasB\b\xe7x\xef\xcf\x01pN\x92$k\xd5@e\x8f5a\x0e\x19\xb8\xa4\x01_\x1e߰e\xef֝\xd3}\x8eg\x01ѱ\x1a\xd5k\xf1\"g\xa3\xa5\v\x9c\x8d\x03\xe3\xf9l\x84\xb8x\xacΐ\xfb\xfd\xd9X\xb2\"\xb0\x01\xd1\xeb\xf7Ci\x9a^뽷|\x1dU8\x95_|\b$\x1b\xdbv\xbb\x8d\xd1\xd1QH&\x10\t\xc8M@\b\xedr\x01x\x0f\xe3\x00\xa7N\xc5y\xd8\xc4\xc15\xea\r\a\f\x05ŝ)q\xed\x82\x17^\x9c\xd1\xe8\xf7x!p$\xcfNQI\x8b\xee\xf1\x82<\x16\xc5\x19\x13\x1b/\x86\xe4bh\x89u\x9e\x8b\xd71\xe4\xc2FB\xff\xe7{\xb3\xfcb\x98\xc2ڲX\x9f\xb8\xa3/Yk\xcag\xebą\xd9^\xf7\xaa`\xb3\x100??_s\xba\xba\x939I\x92\xf2(\xfdU*\xa2'6A\xb0ݵ\xc5G\x1c\xf11+1D\xa4\xef7\x1a\x8d\xdasb\xaa\xf1\xd9\xe5\xf1\xab\xf6*\x0e\"X\xd7\x02\x02\xda\xd2F3k\xc2\xe4]\xe7ް)\x9c8\x9c8z\"\x1a&E\xea\x1b\x18I\x1a\xb5\xb9d{\xc0\xaf\xc5YW<\xff\xfc\xd9\x18-\xe1@\x9b\xd7Y\xacwq\xbb\xb8~\x8e\xf5\x8e\xe1\xce\xce\xf5\xaf\xb9\xfa\xe1\xdf\xfb\xf0\xf5O{\xefl\xcf\xf9\xebS\xa8O\xe5\x88*\x16\x04/\xa8\x18\x8b\xe3\xc5\xcf\xe9;\xba\x86\xe1\xdd!\x84?\u07fbu\xe7Qw@>\xffm\xe7\x1b\xef\xfd\xc5\x00~\xcd9\xf7\xf3\x00N4\xc6 +2\x98\xf2q\xaa7\xf73\x96\xc5H\x05\x1e\x1b-.:1N\xa9\xef1\xac\x15w\x14\xf1\xb8{e\x141T\xa6\x0e\x83\r0˶\x1f\a\xb2\xee\x96\r\xcf.\x8a\xe2\x17\x14\x12`#\xad{\x11b\xa7\xc6FK\xff\xaf\xed\xbe\xa6\x88\xd9\x1a\x03\xf1\xe5\xf5\x8a&\xef\xeb\x11\xb8\xc4\xc2\xcd8ȴ i\xa5\x90\x86\xc0\x9dl\x11N\x15\xc8\xe9\xf5c=\xd8\x01\xf0}8\xf3d\xe3\x1fˏ\xe7\xc1{_A\x01\xfc\xb9\xd8(\x1d\x8b\xe2l\xa7\u05f58c\x8a\x1d\x8bf\x97\xedv\xbb6\xa7\xfa\xf98\x1b\x8a3\x918\n\xe5\xeb\xf7\v%\x05\t0\xd25&\xfa\xdd^\xf2fc\x19;\xb5,\xcbjYA\xbf\xc1\xcbRi\xb1\xf5\xc0\xddX\x9c\t\xda\x0e\x04\xc7ϥQY\xc7\xd9\xcarȚ\xf2\x84\xef\xb8~\xc6s\xc8\u007f\xab\xfe\x19c\xd0*\xcayo\xb5\xda]\x1e\x04\x18q#\x18u#\x18q#p\xc1bM\xba\xa6*֫\xdc\xf5\u07b2W0\xfb\xc8$\x0eO\x1f\xc6\xc4\xdc\x04N^{2N[{\x1a\x9e\xf0\x84'A~\f0\xa7\t\x80\xfaI\x10\xf1\x01\xacl\x878P\x88\x1b7X\x1fx\x1cQv\u007fz\b\xe1\xb7\x00l\xed%\xaf\xbe\x1cH\ba\x1d\x1f.\xc8Q\xa2\n\x8a\xbb\x06b\xc3ʌFQ\xe1\x9b\xf7n\xdd\xf9\x91~xؿm\xb7\x00\xf8\x16\x80o=\xef\xaa\xf3\xaeJ\x92\xe4\rEQ\xfc\x9asn#\x80\xf7\xedݺs\x13L\x85Z\x00\x00 \x00IDATQ\x9c\xae\x1f\x12\x91\xc7\xd0ɴXQX\x818\xaa\xecȥ\x06\xb7\xe9x\xe3̂\x9dO\x05I\x84z\xd6\xc6\xf0\x0f\x1bR\xbd\x8e\xb5\x16&7\x0f\x1ek\x1c!\x84\xff\x91\xa6\xa9\x8b#g.H\x16E\x81\x91\x91\x91\x05N$v\x90l88\x10\xe8f\a\x801\x16\xd8\aH\x96\xa1\x00\xd0\xee|\xbf\xa50գ]\x03\xb0fd\r\xec\xba\x14f\xd4 7\x02\x97\x96\x9b)]RO\xf5\xe3(p1lWI\x95?N\xeb\xe3(\xf2Xd\x0f\xe0\a~\x8d\x87\x85\xed\xb6\xc3v\xb0t{\x8aE\xb2\xb6[\xd7b,Y\xe7Qe\xcb\xc5\xff\x98Oկ*0\x00 \x87\x05b\x050\xa8\ueb5f/|\x81\xc4&Hl\xa7C.\v\x8f\x1cm\f\v\xe7\xa8^\xb0\xe7Z\x92\xaee\x8d\xe0\x95\u007f\xfdN\xecHW\x83\xbcxHQ\xdfx\a,\xd4\xc7ة\xc6c\u2d7a\x12\a\"(\x9f3\xc4P\x1fP߸\xd7+\xa3e\xfb\xa0<h&\x9c#GVd\xf0\xed\xc9\xf2\x1a\xb9\x85\x15\x83\xd1ξ\x95\xc6\xe1\x06\xee\xbf\xf3\xfb88y\x10@=\x83\x1e\x9b\x1dG\b\xf7\xc1\xdco\x80{\x80F\xd2\xc0\xe6\xf3^\x06\xd9X\x87\xa48Љ!W\x1e\a\xdb\xec8)\xd0\xf5\xce\x1d\xa2\x9d\xdfo{\xeb\x83\xef\xbc\xe1Ƴ\xaf[\x10E\xf4\xe5@\xd24}:+\x13G]\xbc\xa8\xf5\x86\x1c\xcdsT\x11}WҋF\x8fi\x10{ѷo\xd83\v\xe0c\x00>v\xde\xdb/<\xb7(\x8a\xef/\xe7:L\xb2\xbb\x98j\xfbv\xa5\x9c\xb9\xe4\xd5\x18\x1b\x17\xadY\x00]\xb0q\xe7l\x84?\xa7\xc4\xd9L\x95\x99H@~o\v\x85iW\x8b\x9ea\x97\xaaK\v\x1d\xf8\xa24Tc}\f\xe5\xff\x8a7/\xb1\xc3\x0f!\xd4\x1e\x19\x1a+\x1e\xd7r\x80\xfa\xde\x16\x0e\x0e\xac\xb5\xc0\xb7\r\xdas\xf3\xb5\xb1\xc5Ε\xafU\x84\x02\xfe[m\x8c4F\xe1_ (\x00X\x9b\xc3X\x83\x00\xe9<\xd3\xc5T\xe7\x8c\xe9\xfd\x95T\xb9C\xa8\x9f0\xab\xbc\xeb|pd\b\xd4O|>\x1a\x8d\xef:t(~ι1%>\xffħ\x9f\x89\xb0\xbe^\x13ӌ#\x8e\xe4E\xba]v*\v]\x13\v\"\xe4Y\xc1\xdc=S\v2\x0e\xa0\x9e\x19\xd2<\x1c\xf3\xd9\xf2\xbd\xe6+\x0e\x804r\x8d\xbbo\xe2\xe6\x00\x86oW\x83\xac)\x1fi\xadM\x03l3\x14\xaa\xe2`(6xq\x10\xa4\xf3\xce\xebo\xa9\xfc\xe8\xf5\xf9d\x04\xa0\xde\b\x02,<\vK\xf9\x8d\x83!\xa0~rn\b\x01\x85\x04̴gP\xfcS\x13\x0fO<R\xcbBU\x0e:nn.)B\x81\u007f\xdb\xf5\x054\xf6\xa6\xd8\xfc\xe2\x97#\u007fn\tk\xc6k\x80\x9d\xa9\xb6\x86\xc7Y\xbb\x8e\x91!5\x0e4u\r\x17E\xf1D\x11y\x11\x80\xbbby\xf5\xe5@|\xe7aK\x8c\xef\xeaMx\xb0\x1c\x19\xe8\xe4r\x11Y\x17X\xc7p\x19\x11\xf9Njn\xdd\xf8~\x11\xf9\x9f;\xdex\xf7\xb2\x1en\xb2gˎ\xbd\xcb\xf9^L\xb1\x17\xe6E\x96F\xe3\x02\x16n\xc6b\xc5b\xa7\xa22\x887\x97\xe9\xc4j\x94\xc5\v\x9a#\x88\xf8(\xee\xa3Q穐ϊ\xb3 6L\xbd\x1c\xbe*\x12\x13+?;\x02U\xaa\xec\x9ef732\x06Y\x96M5\x1a\x8d\u007f\t!|GD\x1e\xb3֎\x018\x19\xc0\x19\xd6\xdasD\xe4\x15\"r\xa6\xb5\x16\xed\xac\x05\xff\xef\x1e\x8ds\xd7 \x8c\x06XXH\bȋ.\x9e[\x98\xb2\xb8\x1f$`\xcd\tk\x11\xc4\x03\x0e\bi\x80\x18)k0\xae~f\x16\xf3\xc8c\xed\x17\xc2\xd2E\xa8\xdfW}M\xd3\x14y\x91\xc3\xf8\x85G\xccsp\x10\xb7a*/\x9c\xc9\xc5s\xc9\x0e:\x86\x13⌁\xe1\xb5\xc5\xc8\x1a[:d2\x021\x9c\xc6\x06&>\xf3\xacW\xa6\xa9\xb2X\r\x9a\x9c\x99@\xdah 錳\xd1hԜ\x85ޛ\xdb]{5\x1ep\xc0`m\xe7As\xcb \x03S\xc9O\x83\x00\x95E<\x8f\xcc\x17\xeb`\x1c\x80\xe9g\x81n\x9b\xbb-,\x1e\xbe\xedAdEV]\xdf{\xdf6\xc6|\x11\xc0N\x00\a\x8d1\x87\x92$9)\x84pf\b\xe1l\x00\xaf(\x8a\xe2i\xce9̷\x9b\xf8ܿ\xfd#6=\xb8\x11\xa7\xbd\xf2\x89\v\xe0]\xa58\x90\xe7\xc0\x92\x031\xb6]\xac'\x94\xad\xbe\x12\xcbu \xd6Z\u1cca\x989\xfe_\x15<\xc6\xfc\xf9}\x8e\xa6\x00\xa4!\x84\xf7Xk\xdfs\xe1'/\xf9\x9a\xf7\xfe\xd3\xd6گ9\xe7\xee\xbd\xe7\r_o\xf7\xc3\xdb\x00\xe9\xd3\xd6\xda{\x98?U\xe8 \xe1g\xc4ˉ\xdc\b\xa0\xe3S\xc5\xe0\x85ȑ\xa6N\x82\x8e_\x15>\xcb2\xc0\xfb\xbf\xd6ϳs\xe2\x8c\x00\x00\xff\xfe\xe1\xd1\x06\xd01\xd2\xd5\xf7\x19\ag\x83\xc7\v!\xc6K9\xc2c\xe7\xc3\xd7i\xff\xfb<;\xa4\u007f\f!\xfcY\x9a\xa6_\xdd\xfd\x81{\x17=\x0e\xfa\x05W_`\x8d1\x17\x89ț\x00\xfc?\x8dF\xc3\x16\xfb۰\xcfJaO\xab\x9f\xe4˼8㐷\xb2n\xf6\xd1,wl{u\xf4\xa9\x83Mlْ<\x92\" \xc0\xb8\xf2 K6\x84\xfd\x90\xb5\xf6\x01\x00\u007f\xcd\x1b\xba\xaa\xc0`\x14O\xb7־\x8c?ϲ\xe4\xec\xabs\xad\xea5\xdeD\xc9F\x10\x00|\xc3?\x92$ɿ\xb2\xc1\xe6\x00&\x0e\x04\xac\xb5GͶ\x83t\x1b/b\xf8By\x8e\xbb\xf2\xf8>\xcc?\x1bN\xad\x87\f\x9a\x8a\xa2\xa8\xae\xcd\x10\xb9\xb5\xb6z\xa2\xe4\xc8\xe8h\xcdA\xebZ\xd3q\xb1\\\x81\x0e\xe4f\x96\xef\xf0z\xed\xd6\x06\xba\xeb\x97\xd7:\xaf+\xbdw\xecp8\xb2\xd7\xf7\xee\xfb\xc4w\xd8h\xef\xb2־\xcf\x18\xf3\xcf{\xb7\xee\xecY\xac\x06\x80s\xafYg\x00\xac\x0f!\xfc*\x80_\xb7ֺo\xdc\xf7M<\xf3\xd6g\xe0\xa9?}6F\x935H\b~cb=T\xddR=Q(6\xee\x1a\xd3\xf1td\xf1\n\x00\xbf\x1f\xf3\xd4\xd7\xcaZwˆ\x87\x8c1OS\xc5\xe7\xc8\x15\xa8ciJ,HU~\x8e(8\xda\xe2\xcfu~\xda\xd6\xda\u007f7\xc6|\xcd\x18\xf3U\x00_\xb9\xf7g\xef\x9a\xec\x87\xd7\u0560u\xb7lx \x84pv\x8c\xbb\x02\va<v\x9cq\x96\xc2\x11\xb2s\x0e;\xdex\xf7@[[\xce\xff\xbb\x17~.I\x92W\xe9\xd1\x0f\xbcّ\xe1\x10\xee c#\xc2Q\x12\xc3j\xaa\\>x\x84\x9d\xb9\xbew/\x80\xff\xbew\xebί/\x95\xcfs\xafY\xf7\\\x00\u007f\xe2\xcbg\x80 \xbdh\xb4v?\xa0\xdejȼǭ\x86\xec\xccu\x9c\xea\xfc\x93F\x02\x97:\x04\x84\xfb\xefy\xdd\xd7\xcfY\x89l/\xb9c\U000eb735\x9f\x8b\x03(\xe65>(\x12Xx\xb2\x01\xe3\xe4\x9dk}\xfe\xae\xcdw\xbcj%\xbc1m\xbc}\xf3\x06\x81\xdc\xcd\x06N\xf9`\u074c3R^\x9f*\xdb\xc8\xe8}\xe5\xae\xcdw\xfc\xf8\xa0\xf8\xac\xf8\xbdc\xf3W\x00\\\x06ԍ\x1c\xd0-\xdesc\t\x004FF\xe0:\x0e\xc69Wk\xa0\xa8 \xa3G\xfd\x8b\xfe\xe9e\u007f\xff\xad\xa5\xf2\xf3\xda/\xbf\xf1\xe7\xfdi\xfe\xef\xe2\x93\"Ա\xc7u9\x8e\xfc9#\x8a3N\xed\xbeL\x9c\xc3\xc4\xdf\x1f\xc2\xd8\xcc8Dd\f\xc0[\x01\xfcݾ\xebw-\ts;\xef\xed\x17\xfeX\x9e\xe7۬\xb5?\x99\xa6)\xce>\xe7\xd9\xc0\xc62\x03]\x93\xaeAäH\x90\xe0\x84\x91\xb5H\x90T\x0fʊ\x91\r\xd5\xe7\xf8\xa8\x1d\xe6\xbd3n\x11\x91'\xdfx\xf6u\xb5\xa3\x10\xfa\xca@\x8a\xb1\xdc\xd9\xd4\xc1%\x16y\xc8J\x8c\xbaQ>\x0f\xc1\xa6\xbd\x1f\xb2\xa2\xc2\xe5\xf4\x8d\x17X\x1c\xa9s1\xdaZ;\"\"\x97\x02\xb8\x14\xc05!\x84p\xe1'/\xd9a\x8c\xb9\xc3{\xff\xc5$I\xbet\xcf\x1b\xbe\xbe:\xe7K\xf7 N\x9b\xd9K\xf3\u0600\x85\x9dB\x1c\xb9\xb3\xf1\xeb7\"^\n\xad\xbbeè\x88\\\xaeF*>\x17\x8ayV\xe5\xd1n!\x8e\xac8:\xd518\xe7 A\xe0\x1ep\b\xc8\x11B\xf8$\x80_ٻugs9\xbc\xeeݺ\xf3;/\xb8\xfa\x82W\xa5i\xfaޢ(ޙ~7Ex\x81,\x88\xee\x80z\x17\x89\xc2|\x9c\xc9q\xf4\x17\xc3O\b\x80o\x0f\xb6{\x88#\xe1\xcaQQw\x14\x1b^\x86\x14T\xce*\xd7x\x9c\x83\"\x1f|\x951pF̺Ɏ,\xc6\xdbـ\xf0I\x05\xab\xa1\xb3@\xbdê\x96A\x90#ֶw\x85\x94\xe6\xe7\xe6\x16ԕ\xd24\xad2\x16\xeb\xeaOv\\*\xc5ȉ\xbe\x06\xd4\v\xdc\xcaw\x1c\xbc\xf0\xbcs\x94o\x8cA\xb1\xc3\xe3\xf0\xf4\x18\x00\xec\xb7־zϖ\x1d˅\xee\xbf{\xee5\xeb^\x13Bx{\x9e\xe7\xef\xbf\xef{\xdf1\xcf|\xc6s`\x9ff1\x97\xcfa\x0e\x9d\xe0%+\xe7.\x81\xc3\xda\xc6Z\x18o\xb0&Y\x83\x86m 5ݓ/t\\\\\xf3b\x94ED\f\x80\x9f\x00\xf0\xb7\xccG\xbf\x10\xd6!)\u0099E\xd1I\xcdL\xf9\xa0%k-\xf2\xd0ٍ\xee,`\r`\x046\xb1𡀷\x82\xa4\x91 \x0f\x19\x8c\xb3p\x89[ p\x15:\xd7K\x00\xc4\x03\xb3!\x84\xf5\x00\xd6[k\xdf\xe6\xbd\xffᅟ\xbc䯭\xb5\x1f\xbb\xe7\r__\xd6\x04,\x858\xd2\xe4\xc8\x02X\xd8T\xa0)8G\xf1\xbd2\x96Uh\x8b\\o\x8cY\x13Ä\xcag|\u007f\x91\xf2ќ\xcaG\x1c\xdd\xc7\x06R \xc8'Z\x00\xf0Qc̛\xf7lٱ\xa2\xaaj'\xe2\xba\xf6\x05W_p\xb8՜\xbb192\x82\xe4G\xba\xcf@\xe9\x05\xbf\xb0AT\a\xc9\xd0\n;hu6\x83\xc2\xeeCV\xc0\x8d4\xca\xe7E\x90l\xd9@p+\xae\x8e\x01\xe8vlqƽZ5\x85\xc4&%\x84\x17e\xc1\fEi\xa1W\xf9֮<\x0e>x<1\xba0HR\a\x10\a\x93܂\xce2\x8b\x1d\x87\xfe_\x14\x05\x8c\xf7ȳ\xb2\xa6\xb0\xdc\xc3\x14My$Rm}\xb3c\xd3{ǻ\xccYה\xb7\x05\xad\xe5\x85\xe0?v~\x1b\"\xb2\xd7Z{ٞ-;\x96\xf4\xf0\xa6\x98\xf6n\xdd)\x00>\xf0\x82\xab/\xf8\x1e\x80\xff=\xfeՃ\xf6\xf47<\x05 \xa7\xaf\xf7\xce|\x8e\"\x9b\x81\xb5\x16\xd3\xd9L\x05\xf3\x8d&\xa3\xd5\xf1\xf8#R>sŠ\v\xbf1Ҕ\xa6\xe9\xcb\x109\x90\xfe\xb4x\x12?\x88\xa3\xe9\x18+\x97 \x80\x17\xa0\x00\xa4\x15`\xda\x06\xa6\t\x14\x939\xc2T\x00\xa6\x04\xd9X\x1b\x98\x11\x84\x19\x8f0\x17 ̀\xd0\x0e0\xa1|\x8e\x86FMq\xe4\x16\xb5\x94\xc1\x18\xf3\x14c̻B\b\xf7\xad\xbbeç.\xf8ċV\x04O\xf4C\x12M\nP\xaf\x19\x18czv`0\x14\xc3\xceg\xd0\xc7C8\xe7\x9e\x12;5vn\xba\x1b\xb9\xd7{\\h\xe3\b\x8aq\xdc\xfc\xde\x16B\b\xdf\a\xf0֕:\x8f\x88\xfeLDn\xcf\xefkU\x06A\x8d\x1a/\\\xfd\xcd\xf0'\xd0ť\xe3z\x1c\xd0=\x98\xb0\xdf\"\xfa\xd1(\x9f\xc81\xf7\xe8,\xdac-\xb4\xc6[\xc8&\xdb\xf0\xf3\x05B;\xa0\xc8\nXS\x1a\xe78\x92\x0eT\x8c5\xc6T\u007f\xc7m\xa2\x83\"\xc1\xc2V\xce8\xa2\xe4s\xe9⚘\xfe\xd6bv\xbcwe\xd0\xc4Y\x8e\xeb@R\xf1<\xf3\xf1\xf6\xbc\xc6\xf8D[\xd5\x1dθ\x96C*?\xa0\xde\xf0\xa2sƐ\xae\xbe\xa6\x9f\x05\xeag\xc1\xe9\x9a\x0f!\x00\"8\xf2\xa9\xc7\x00\xc0\x1bc~\xf9X\xfbޖB\xfb\xae\xdf\xf5\x0fƘ\xab\xa7\xe6\xa6`\x1eDup#CPlSU\xbey\x91c>\x9f\xc7T>\x8dC\xad\xc3x\xb8\xf9C\xfc`\xee\x01<8\u007f\x00\x0f\xcf\xfd\x10\x13\xf9$f\x8b9\x14R\x05kό\xef\xdd\xdf>\x90\xa9\xe2\x11s\xca\xc2\xed\xf11\xfe\\1\x16=\x13\xa2\x8a\x10\x8cAy6S\xe7\x99١\xfe\xb8Mk-2\xdb.+3\xa9@\f\x80\xce32|Qb\xdaA\xbaim'B\xfa)\x11\xf9\xc9\v?yɍƘ\xf7\xdd\xfb\xb3w-Z\x84Z\t1\xf6\xa9\v.\xce4\xd8q\xc4\x10\x10G\xa0*\xc7A\x92\xf7\xfe\f\x00\v\x8c\xbf\xb5\xb6z\"\x19g\x17\xfaY\x8e\xb08b\x06\xea\x05v\x00\xd2Q\xfc\xf9A\xf2\xbd\xef\xfa]\xe1\xdck\xd6\xfd\xaa\xf7~\x8f\x8cɉɓ\xbb'\x02\xf3x\xb8\x1dUy\x8d\xeb\x11\f\xdb\xe9\xe7uѯ\x94*l=\xa7\xfd9\x99Ԝ\x80\xb1\x06\x85\xcba\x9c\xed\xec\xd6O\x00\vؤ\xcb+w\x10\xc5m\u0383\xa0 \x01\x89I*}ձs{n\fm\xb1\xacX\xa6\xab\xa9\xaf\x15\xbf\xa1{\xaa\x03\xbf\xc6\x193;9~\x82';DδJ\x94dy\x8eyL\x0e!\x9dj\x00Ơ\x91\xa6\xd5q\xfa@y\x9e\x18?͑\x9f\x84\xb9\xe0\xfe\x84\xaeXk!90>;\x0ec\xcc\xfb\xf7]\xbf랕\xc8l\x11\xfa\x13\x00\x1bZ\xbbf\xdep\xc29\xa7\xd6\xd6y\f\t\x03X`\xbf\x19\xfa͊\x1c\x19r\xcc\xe6\xb35\b{č<#\xbei_R\x16\x91\x1d\f\x85(s\x8c\x8b.\xe8oG\xbdUT\xbf\xab\f\xf3\xf5\x18\x9f7b \x85 \xb4\x02\xb2\xe96\xfc\xacG6ц\x99\x05\xf2\xb1\f\xf9X\x86l<\x83\x99\x03\xc2l\x80\x9f\xf3\x90vhH.\xef\xf0Yq\xf7\xfa[7-\x18\xe4\xa0(v\x14,\a\x8ez\x18\x93W٬\xe6\x81t\x1d:\x8f\xe5˽\xf0\f\xa1\x00\xf5MQ\\\xd4U\x9e+c\xa9\x06\xfb?\x00k\xed\r\xfb\xaeߵ\xe4\x82y?\xb4w\xeb\xce\a\xd24}\x9b?\x90Ղ\tVr\x86\f\xe2n'\x86\x10\xb8%Zuu\x10p!/\xb0\xb8\x9e\xa1<\x06\x1f`\xbc\x81\xb4\x03\x8a\xd9\x02\xd9d\x1b\xed\xf1\x16\xe6\x0f\xce#\x1bk\xa3}\xa4\x05?\xeb\x11\xe6}\xe9|2\x8f\xd5(-\xb0a\xe0z\rg$\x8c \xf0\xff\x9cݱQ\\-\xfd\xe5H\x9e\xb3\xca8\x8b\xeb\xb5\xee\x16\x1b{\ba\xd9gw\x85PvH\x16y\x8e\x99\x99\x19LMN\xe2\xf0\xe1\xc3\x18\x1f\x1f\xc7\xf8\xd8\x18\xe6\xe6\xe6\xd0j6\xd1lv\xcb\u007f,K\xe6\xaf&\xd7\xdd\x01\"\xb2[D\u07bb,ƎA{\xb7\xee\x94$I\xde\xfe\xf0\xf8\xc3y\xe1\xbb\xcd3\x9c\xa1\x01X`\u007f\xe3̝\xeb\xbd\xfa\xfd\xf2\x0f\xa0\x1d\xdaO\x8a\xefۗ\x03\xb1\xd6\xde.\a< \xf5g0\xf0b\xe2\xe2\vG.\xcc\x04G\x90\xfa9\xceV\xd8\x003\xdeXSd\x97\xc0\x04 d\x01\xc8\x04a\xde\xc3\xcfx\xf8\xa9\x02\xf9\x91\xfc\x05\xf9X\xf6\x8d\xf3n^\xbf\xb1/\xa9\xf7I\x9cy\xc4P^\x1c\x05\xf7\x1a\xffb\x10р\xe9\x19\xfa\a+\t/<\x95\xbf\xf2\xa1P\x11;AV8k-\x8c\xb5ȧ[\xff!\"\xef\x1e4\xc3L\"\xf2\x17ƚ/\x15yQ\xd31\xe5\x83[ku\f\xbcHԩ\xe8g5p\x19T\xbd!\xdep\xa7FO#`\xe5\x83k/\xb5\xe0\"\x94\xf0n6\xdbF{\xba\x8d֑&\xb2#m\xcc<<\xb3bޘ\xac\xa9\xc3Q\xf1\xdabb\xf8\x8f\xa1b\xa0\xfe\x1c\x89A9\xe1\xc5HDj\xcf0\x01\xba\x8e\x9a\xe5Νm\xca\u007f\xac\xe7U\xa6\xbf\x82\xb3\xbb\x18\xf6\x8c\xed[\xbb\xd5\xc2\xcc\xcc\f\xa6\xa7\xa60v\xf80\x0e\x1f:\x84Ç\x0eaff\x06s\xb3\xb3h6\x9b\xb5S\x85\x95\xc7\xe9\xfbǂ\xb5\xf6\x97\xf7]\xbf\xeb\xe8\x0f\xb5_\x01\xed\xfe\xc0\xbd\x0fXk\xff\x12\xd3u\xa8\x8f\xb3<vv\v\x82w\xaa\xe7(\f\xc6\tC\ba\xf45\xfb~\xb6\x16I\xf4\xb5\xb2\xf6l\xd9\xf1\x80\xf7\xfe\a\xd6՟2\xc77gC\xcf\xcf\x1b\xe0\xcd=q\xd4\xc6\v\x9f\xa3^N\v\xe3HD'G\x95\x9a\xa3\xa6\x8e\x91y\x92\xb3\xee\x8b/\xf8\xe0\x85\xe7\xadxF:\xc4\x06\x8b\xa3\xba8\xbd\xd7I\xe1\xa8T?\xc7-\x81\x8c\x93\x0f\x8a\x9csOb\b'^\x8cJ\x9c-i\xd7E\fc\xf1u\xc4\a\x00\xf8\x9b\xbd[w.\xediVK\xa4=[v\x88\x88\xfc\x99\xae{\x9d\xe7xw2\x1bB\xd6\x1d\x8e\xfa\xe2\x831\aᬵ\xbe\xc1\x05\\uP|\xfc\x06w\x1a\x1e\xad\xf6\xb2\x12\x9c\xfeh\x14\xa4\x1e\xa4pA\x9c\x8d\x1a\xcb$\xfe\f\x1b\x9a\x18z]-\x8aa\x14\x95/\xef\xa7\xe2\xcf2|\xa5\xc6n\xb1\xa3\xe9\x97B\xbc\xce9\xd3U^bǢ\xeb\xa9\xd5l\xa2\xd5jazj\n3\xd3\xd3\x18\x1f\x1b\xc3\xf8\xd8\x18&&&0=9\x89\xb1\xe9\xf1;\xf7nݹcٌ\xf5O\u007fe\xa6\xeb\x1b\x90\xd9\t2\xc5vM\xf5%\xce\x00Y\xdeI\x92\x9c\xce\xd7\xe8;43\xc6|\xa8\xb8?\xab\x8cQ\x9c\xfa\xb0\xb7cLP'\x97\x9d\x8d*\x83~\x86\x8bR\xfa\xf9^8=_7\xc6\x1c\xf5\xef\xceg\xd7:\xe7\xfe\xe1\x82\x0f\xbd\xf0\xd4~\xc7w4\xb2-\x03?\xe7\x91\xcff\bYyX]\x91\x17\v\xd2Aδؠ\xf1{j\x84\x06\r\t\x14E\xf1\x84\xb8\xfe\xa1\xb2\xeb\xb5 \xac-kU\xb1\x93\xe3h?\x84\xa0\xe7T\xf5\xf5|䕒\xf7\xfe߬\xb5m\x8e\xf4\x81nG\x16\xcb4\x1e\x9f\x1a>\x86B\xf4\xbb\x830\xd4q\xa1\x9eOXЧ\x15\xc6\xf5%\xe6C\x1d\n\aO\xacσ\xa2\x90\a\xa4IZ\xddC\xf9T\xec\x9e\xefY\xabM\x12\xcfi\x9a\xd6\x0e\xdeT\xfeW\x8btnYoUޱ\xbc8\b\xe3L\x8b\x83Օ\x12g\xb9\x1c\xa4h\x91\x9f\rl\x9c\xfd\xa8\x1e\xaaSγ\f\xadv\x06\x18|j \xcc\x1d\x83B\b;e^\xa6\x95\x1f\x1dG\x96e\v\x9a'8\xd0P[\xa0\xfa\xa2\xef\xe9\x0fP\x95/\x9e\xcc\xf7\xeb[{E\xe4#Ƙ19\xd0\xed\x94\xe1ݠq\x14\xa8\x91\x99zm\x15|\x1c\xa5qT\x17G\x9a\xeaH\u0603\xb21`\xef\xcaE\xb5\xce{\xcf\x16\x91\xbf\\\xe1|\x00\x00|\xb3ĭM\xcb\xc0O\x15\xc0\xb4@&C\xf93\x15\x80YA1S\x00\xad\xb2vc\x83Eb\x1c ]G\xa7\xe3\xd21\f\xa23\x88ID\x8c\x1a\xfe\x1a\x04e\xba\xbb\xea\xb9\xd8\xc8\xd9\x12C\x861\x94\xd0n\xb73\xe7ܷ\a\xca\xec\"\xb4\u007f\xdb\ue588|\x9f\xf1Z\x86\xaa\xd8h\xb0\\Yg\x18\xe7\x1f\xa4\xd1\xe3H\x98\xaf\x9b\xd0Ù\x94\x1f\x0e*\x94\x18\x06Y\xcdh\xbe\x98,\xbbŚ\x8f5\xd1\x1eo!\x9f\xca\xe0\xe7=laP\xb4\n\x04\xbf\xf0\xb1\x04,;\r,\xd4\xe8\xb0a_\rR\x03\xad|(\xf1\xfc\xb11\x03\xea\xba\v\xd4\xed@\xf5\xfde\xb6\xf1\x02X\x800\xa8|\x18\xfd\xe0\f\x8f\x11\x18\x866\xf5Z\x1dy\u007f~\xd9\f-\x81\xf6o\xdb\x1d\xcc\tf\x1f\a\x8b1BĶH\x03\x05\xde\x00\x19B\xa8u02|\x1f|\x18\xe1\xfb\xf5\xad\x15\xfb\xb7\xed\x9e\xf3\u07bf[D`;\xe7\x81\xfa\xa2\xfbHI.\xbepԧ\x93\xcd)?\x1b\xaa\xb8w\x9f\a\xc8\xe93/\xdc8\xa3\xd1\xfb\xb31\xec|\xfe\xbf\x9ew\xd3\xfa\xf5+\x98\x8fj\x02\x98*/\xee\xcb\x16Nm]\xf6s\x1e\xc5t\x8e0\xed\x91\x1f\xc9!\x93\x01\xf9x\x06?Y\xc0\xcc\x03\xf9t^\x15P1xHY4\x82\x88\x17<G\xa3\xbd\xa2;}\x8de\xa8\x9fO\xd3\xd4\x0f\xb8m\xf7X\x94\xa9^0\xfe\r\xa0\xb689(\xe1\xac+\xa68\xf3Z.\xe9\xde\x04\x8er\x19J\xe5̈\r\f\a6\xac\xb3|V\xd6j\x90\x01ʎǖ\x87\x9f+Кh\xc1O\x17\xc8\xc6ژ{t\x16\xf3\x87\xe6\x90M\xb6\x91Mg(\xe6s\xa0@\x95U\xc7-\xaa\xc0``\xc0^\xa4\xf3\xa8\x01\x0eg\x1al\xc0\x95\a\x8e\xf2\xf9\xb5\x98G=\xbdx\xa9\xc4\x198\xb7\xde3\xec\xdb\v9\x01\xba\x8e\x8eaz\x00\x10\t8\xe1\xccS\x8ez\x8a\xf2 \xc9>\xc9e:\x8f̧R\xdc\xfd\x17\u05ee\xf5\xc8&\xbd\x06g3\xa6ejP\xf6\x92\xc2\nk\xedG\x01\xfc\x8d\xf7\x1e\xe1\xc1\x02v\xde\xd6\x1e\x14\xd5\v/唔\x9d\x04\x17lb\xbc\x98qX\x00\v\xf0<\xfd>;\x95\x91\x91\x91jSY\x04\xe5\xbcg)c\xecE\x1cU\xc6\xc7N+\xef\x1c!)OޗO\xfd\x93B`\n\x03\x9b\x1bH\xb3\xdc\a\xe3'\a\xbe\x91\xder\x1aώ\x9c\r+\x1b66^\xbc yA\x14E\x91\\\xf0\x89\x17\xad.\x00N\x14Bpl\x84\x95T\x8fT\xb1\x95\xd4\xe1i\xc0\xa1\xdfc\x18n\x10\xd9\x1eװ\x80\xfa\xa6\xb2^p\xaeʘ\xb3k\x0e\x98FFFV\xa7\x06BN\x8d\xa3e}OD\xf7l\x01\xf9|\x0e?_:\x97\xf6\x91\x16\xb2\xb16\xe6\x0f\xcea\xee\xe0,\x9a\xe3\xf3Ȧ3\x84V@\xd1ʑ\xb5V\xa7\xf6ˁ\v\xb7\xbb\xc7\xd8<\xc3k\x8bes\x9cY\xad\x948\vџF\xa3\x01\xa0\xbbF\x94\x17\xb6\x0fq\xf1Z\xf5#\xb9(9e\xc5L\xf5I-i&|\xfeZ܍ș\x1b7\xac\xf4\x1a{\x8c\na{V\x8bƖ\xe4@\xf6n\xdd)!\x847\x1bc\xbed\x8c\x81\x1f\xcf!\a<\xd0\xee\b\xd5\xd8\x05\x9eM'Y\x8d;GȜA\xe8\x80┹\xc6<\xba0\x86N\f\xb7m6\x1a\x8dZ\xe4\xd4\x11«Ͽ\xf9\xe2g-e\x9c1\xc50P\x1c\xf5\xaaB\xeb\xc40\xd4ƛ!5r\x8e\x9d\xec \xc8\x18\x93\xc7i>+\fgi\f\x11q\x8d$\x8e\xfc:\xe3J\x93$Y7Pf\x17\xa1\v?y\x893Ɯ\x13+/G\xa2\xaa?l@\x18\xd3\xe7\xc5\xcb\x11\xffJ\x89\xe1G\xa0\xbe\xb91\x8e\x96\xd9q\xf7ʮ\x192\\\rh\x88\xa1I\xbe\x17\xbf\xcf|\xb1\x11t\xd6\xc1\x19\x87\xd0\x0e\xf0\xf3\x05\xf2\xe9\f\xc5T\x81bbu\x0eS\xe4\x00G#\xfe؆\xe8\xda\xc9\xf3\xbcּ\xc3uV\xb6\x13ι\xe5\xefD\xefȂO\xa7V\x87\xa4\xc1\xae\xae-.8+\xcf|\xd8j\xa4+/Y\x16CK\xa4K\xb7_a\xa6&'\x9f391\x81Ç\x0ea~n\x0e333(\xf2\xbc\x82&\xd9I\xc7\xd9y\f\xc7q\xc0\x04\x00\xdf\xfb\xe1\xf7\x1b\xfc\xf9%k\xef\xfem\xbb[\x00^!\"ۀN\xbb\xdfc\x1e\xc5\xfd\x19̡:$\xa2\x91\xa02\x16\v\x9b\x17\x1f+<\xb0\xf0H\xee\x1a\xd3\x14e\xe8\xc3{\x18\xfbgat\xee\xf1\U000a5393\x89\xa3ZΜbG\xc7\xe3e\xc3\xc5ІFY\x83&\x99\f\xe3f\x16\xd5.\u007f\x97\xdb\xf2q\x9b\x85@\xbcTY\x92\xf2˵\xa3^\x06N\xc7\xd0\xf9\xfck\x06\xcepo\xba4I\x92\x93t\xd7<\a\x14ʏ\x12g\x1b,\xe7\xd8\xc8\xc7E\xf5\xe5\x92\xde'\x9e_\xbe_\xbc!.\x867\x80\x85'\x1e\x0f\x02^\x8bI\xf5\x8d\x8356|\xbc\x0e\xd9\xd9\xc500끈\x9c0pFK:\x91\xa3\xe08\xa3\u0ff9\xc1&v:\xfa7\xb0\xb2\xa3\xe7u\xec|\x12\x82\x06~1z\x12C\xf6q\xd6\x11\xc9\xfeu\xcbfj\tT\x14Ņ\"\xf2Dͼ\xb3,Cs~\x1eSSS\x98\x9d\x99\xc1\xd8\xe1\xc382>\x8eɉ\t\xcc\xce\xceb~n\x0eEQ\xa0\xd9lւ\xae<\xcfk\xe7\xcei\x82\x90\xa6i\xed\x99D˒\xf4ޭ;\x8b\xfd\xdbv_-\"\xaf\xb7\xd6\xfe\x87\n\xabhf0\x0f\v\xfc\x039\xfc\xfd9l\xa8\xd71X\x91ِr\xa6\x12\x17Ҹ\x10\ft#A5 \xaa@\x1cUq\x1a\xdfQ\xc8\x159\x10\x8e\xe8\xe2\xe3\xeacL\xbc\x97\x12\xf5ʞ\x06\x8d}\x87\x10\x1e\xf3\x99\x87\xf5\x16\xd2\n%\xb6=\x9d\x97G\xc7Lz\x98)\x00\xd3\x02?Y@fˍn&\x03\xac\xb7pp@\xe8>|\x86\x9dKG\xa1~\xfe\x82O\xbch\xd5wB\x02xS\x9c]\x02\xa8a\xe3:\aZ\xf8댽\xf6Y\x9d\xafA9\x0f\xa0\v\xa1\xf1^\t\x86\xc7\xd4\xe8p֣|\xa9\xae0$º\xbbZ\x14;X\xa0kp9\xabg'\xc2\xfcFY\xcb\x13V\x87G9Me\xd2\v6\xd2\xd7t.\xb9\xbdW\x03\x06v\xd2+m;f;\xc4\xf8\u007f\x92$\xb5\xfa\a\a\x85@7X\xe1Ca9\x90\t!\xbc\xf6\xd2\xedW\f\xa4+\xf4h\x94\xa6\xe9\x9bX\xdf8 g4$\xcb2\xb4\x9aM\xcc\xcc\xcc\xe0\xc8\xf8x\xb9a\xf2\xd0!\x1c\x19\x1f\xc7\xf4\xf44\xb2v\x1b\xadV\xab\xaa\xfb\x85Pn\xce,\x8a\xe21\xbeߊ\xf2\xe7\xfd\xdbv\u007fZD\x9e/\"\xbf\x0e\xe0!\x11\xe9n\xf5\xb7\x06\xf9\x816\xe4@';9\u0099Fɐb\x8al08\x8ac\\;\x8e8\xb83\x80\x8d\vGv\x84\x83\xbfx%㌍\x13\xc3Sl\xac\xf4\xe9i\x1c\xbd1>\x0ft1\xdfA\xb7\xf1J\x90\x878\xb5\x8fa \xef=\x10\x00x\xa0h\x16\xb0\x99A{\xb2\x8d0㑍\xb7\xe1'\n`J\x90\x1fɑOd\xc8&ې\xa6@Z\x01E\xabx\x0e\x02~q\xa0\fGtѭ\x1b_\v\xe0\xe7\xf4\u007f]\xc0\xfa\xc3\x0e\x97\xc7\xd5k\x1f\x8b\xca;\xcejWB1$\xc8-\x9d@\xf78l\x8d\x94\xf9\xf3l\xa8\xd9a\xacF\xf6\xc1\x0e\x8a\xd7\x15\x1bE\x86z\xb8\xce\xc0\xfcr\xf6\xd7\xe1\u007fU\x1cH>\xd6~\xc2\xfccs\xc8&\xda\bs\x1e\xf9\\\x0e\xdf.\x1fs\xcb<\xb2\x1d\x88\xf7{0\x14\xee\x9cC\xbb\xdd^v}\x89\xf7\xf4\xe8\xf8\xf9^|\xbfx\x1dǎCe\xd7y\xb4\xc2I\x00\u07b9L1\xf5E\x9b\xee\xbc\xfce\"\xf2\xeb\x9a1)1$\xad\xfcs\xf6ę\xaa\xf7\xber,\xd3SS\x98\x9c\x98\xc0\xf8\xd8\x18\xa6&'199\xe9\xf7o\xdb];*j\xc5\x00\xec\xbe\xebw\xe5{\xb7\xee\xfc\u007f\x01<\xcb9\xb7\xd9Z\xbbMD\xbeÆ\f\x00d\xae,\xbc\xe3\xa1\x009\x10\x80\xc3u\x83,\"\x95\x01fH\x8a\a\x1eGM\xecT8\xad\x04\x16\x1c\x1ex\xfa\xf97_\xbc\xa2\xb1*.ʩ\xa9*v\xdc\x19\xa2\xbcr\xe6\x15GÃ\xce@\xec\xa3v\x0f\xf3Î\x8e\x9d\x18/6}\xaf2\xc2>@\x8a\xb2\r\xd9\xe4\x06\xa6\r\x143\x05\xcc\x1cP\x1c\xc9\xff༛֯\n\x8cqѭ\x1bO\x17\x91\xbf`H'\x863c\xfe9{U\xa3\xa2\xef\U00061703\x82\x89bh\x853\x0f\xe5M\x0f \x04\xba\xf5\x9a\xb8~\xc7\x1d0\xb1a\x1a\x041\xb6\xad2T\x1eb9*O\xfa\xbd\xb8) 2,'\xaf\xbbe\xc3\xe8 y]wˆ5EQ\x9cd\xa4l1\xcef3dSm\xe4\x93\x19\x9a\x87\xe7\xd1<8\x8f\xd9Gg\x90O\xe5\xf0\xb3\x05\x8a\xb9\x02y3G\xc8}\xf9\xe4@\x82`\x81\xfa\xeeug\x977\xe7\\'d\x1d\xe2yd\x1d\xe4c\xf39+\xe6\fXO@\xf6\xde\xffΦ;/_Q=v1\xdax\xc7\xe6SP>\xe6{Q\xbb\x19\xa3;<\x8e8[6\xc6T\xa7\t\x03\xe5>\xa2|<[\xf0L\xa6\x81U\xf0\xf6]\xbf+߳eǝ\xfb\xae\xdfu\xf5ޭ;\x9f\x17Bx\xb6\x88\xfcN\x9e\xe7\xff*\"\x99\x1a6\xdd9\xea\xe7r\xd8G\x80\xe2\xfe\fr\xa8\x9c\xa4\"\xefzM>Q\x92'\x903\x8f\xb8_;\xfe\xad\x023\xe5\vˎ\xa0xQ\xa9B1/\x1a\x850N\x1a\x17\xd6t\xb2\xe2\xe7t\f\x8cB8\xc8\xd1e\\\xbc\x8fSj5\xac\fǰ\xb1\x89\x15\xceZ{\x16\x80\x8f\x9dw\xd3\xfa\x81wd\x85\x10n\xf6\xde?\x89!\"\x96\x8f\xf2\xc1\x9b\xf9hn\xab\xcf\xc6N\xb3W\xedd\x05<ֺYX\xb6\x8a\x97+\xef\n\xb9\xe9\xc2d8\x86\xb1u\xe5\u007f\x90$\"\xf3@\xf7\xd9;\xfa\xb7\xdeKaJ\xbd\xaf\x8eI\x1d\f\xff\xa8\xdeҹb?:`^\x9f\xc3\xd92Н\xebJ\xf7\x02\x10\xdaefR\xcc\xe6(\xa6r\xcc\x1f\x9a\xc7\xcc#\xd3\xf0\x93\x05\xf2\xc9\x1c\xf9t\x86|6C\xdȇ5\xdb00(\x1e+\xe6\x96\xcb\x17;ZF9:<\xd7`ʸv\xc4-\xb3\xec\x9c;\xaf\x8f\x00\xf8\xf4\xc6;6\x9f\xbc\\ގB7\x02x:;\x00\xa5^\x0e\x90\xd7P\x1c\x98+qW\xab\x88\xc0~\xcf>\x14\xdftuv\a\x01\xd8w\xfd\xae\xfb\xf6]\xbf\xeb\x83\u07fea\xcfO\x88ȏ$I\xf2\xfa\x10\xc2G\x00Ԟa\x1eB\x00Z\x01\xe6a\x81\xb1\xf5\xa3M8\xf5\xe6\xc9\xe0\xbf\xd5\x10\xc6\x1d-<ᝅSۂ\xbf\x14\xe2\b\x8e\r\x03\xdfG?\x17\x17\xcf\xd8\x11\xea\xff\xaa\x98\x83\xa4\x10\xc2A\x9dh\xde%\xcdNE\u007f\xf3\x93\xe6:\xdf]\xb0\xf9\x89#)2\xd0oH\x92d\xa0i\xf8\xb9\x1f\xbd\xe8\x17\xd0\xc2\x1bLV\x9enkBy\x8e\x91f{@]ᕗ\xaa\xeeF\xc5\xf6xN8KY)\xa9>\xaa\xf1e\xdeb#\xc3\xd90\xe3\xf9\fu\xf2\x02\x1e$\xb9\xfdv\xca\xd9:\xec\xc7NB\x1d\x02\xaf#\xae)r\r\x80\u007f:\xe3\xbbz\x90\xbc&Ir5\xf3\xc5N66̱\x93K\xd3\x14Y+\x83\xf1@{\xa6\x8d0\x1f\x90M\xb4\x91\x1d\xc90\u007fp\x0e\xd9\xeeֲ\x0e\x19c\x98/\x0e\xf8b\x84A\xa9W\r6\xde\xd3Bk\xf0\xdc$In\xbb\xe4\xf6\x97\x0e,\x9b\xbf\xe4\xf6\x97\xbe\x0e\xc0\xafp\x90˙n\x9c\xf1\xc6g\xc5ŁV\\;3\xc6\xc0:\x87\xc9\xc7\xc6\x0e\xc4\xf7^2\x10\u007f\xee\x9f_\xf4\xca$I\xee\xd8\xf9\xe6o\xf6}6R\a7\xfbt\xe7\a\xe7^\xb3\xee\tƘ\x8d\xde\xfb˒$y\x9d\xf7\xfe\xb9\"\x02\x1c\xf0\bg\x99\xea$M\xc6\x1fc\\6\xa6\xf8\x8c\x1a\x9e\xf0\x8e\x82.\xfb\xd4:\x9d\x10\x8e<c\x85\x89a\x02\xfd[kB:\x1e5փ&k\xed\x0e3e2\x9c\x8a\x86\xf2\xcc\x066\xe6\x81\xf1\xf18\xab\x02\xba\x11,+Qg\x1e\xdew\xdeM\xebO\xb7\xd6^\xbd뷾\xb5\xec\n\xf0\xf97_lD䷑\xe3O\xf3vV\x19\x8c`|Ն\xe9\xd2\x04A|\xf9\xa02+\b\xae<\xe2\xdf\xd8r\xd3[\x92&\xb5c\xca5\x98Ь`A4\xbb\x02\xe2\xb9V\x83\x1b\xb7\x12\xc75<\xa0\xbe\x18U/\x18b\x1b\xb4\x13i\xb7\x9b\xe2B\xa3\x06\x9fr\xe3\x86\x1aH\x005\xe3\x1cgѽ\xeatƘ_\\wˆ\x8f\xec\xfc\xb9o\xac\xf8T\xe6\xf5\xb7m\xba\xb4(\x8a_\xe0\x00\x85\r\x1d\x1f\xb1\xa2\xf0\xa0Ω\xca\xdd\xda\xee\x93\x17\xeb\x8c\x02\xed\xac\xb9\xac\xb4\x93\x83*\xad\x0fp \xabA\x00g\xbd\xca3\x9f\x04\xc1z\xa9\xef\xbb\xce\x06\xea$I~\xc2\x18\xb3{ӝ\x97\xff\xca\xd7_z\xfb\xf6\xe5\xf0\xa9\xb4\xe9\xce\xcb\u007f\xc5\x18\xf3\x11`\xe1\x9e\x0f\x9d\xdf4M\xab\xccW\xf7\xa9\xf0V\a\x0ef\xd8~\xb1\xfd5\xe5{ߌ\xef\xbf$\xed=\xef\xa6\xf5\xe7\xa4i\xfa\x99\x10\xc2\xde\xf3o\xbe\xf8\x95\xcb\x1d\xf4ޭ;\x8f\xecٲ\xe3\x9f\xf6]\xbf\xeb\x9dY\x96=\xdfZ\xfb\xf2\x10\xc2g\xe34\x91\r\\\xdc\xeb\xcd\x11T\xac\x80\x1a\x01\x00\xd4\x1a\xd8²\x1e\xbf\n\xd4\x1fU\xa9\xff\xf7\xe2A'\x86\x95\x8b\x1f\x13\x19\xa7\x95\x83\xa4=[v\xcc˴\xbfS(\xfa\xe1HJ\xf9稜\v\xfe\xb1\xbc\x19\xde\xe2h\xbbCo\x01\xf0\xf9\xf3nZ\xbf,H㼛\xd6?\x19\xc0nj1\x1f\x14\x11\xdb\x03r\x04\x04(\xda\xe5\x0ei\xdf,\xca\r\x98\xb3\x012\x13\xaa\a\x94\xf9#\x05\u0094\x87\xcc\x06\x98\x96\x81\xcbm\xb9\xf1\xad]\x94{\x19\xc2\xc2ξ\xe5\x12w\x01\xa9|\xe2\x8e:ΞU\xa6q\xb1\x9d\x17n\fg\r\x88\xda\xd6\xd4\v\xbfj\xd8b؏\x1b;\x94\xef\xf8aDq4j\xad\xfd\xe0\xba[6\xacH\xa0\xebo\xdb\xe4\xbc\xf7\x1fdhX\xafϧ\x0f\xb0\xc1\xe6\xec(曑\bc\f$\b\xac\xb5\xed\xe5\xf0\xd6>\xdcB6\xd1.\x1bL\x9a\x1e\xed\xd96\xa4\x10xr\xac\x1c\x10\xc4p\xa5ʕ\x03Eu.z\xf2xǎ\x9d#\"w^\xba\xfd\x8a\x9b.\xb9\xfd\xa5'.\x95\xcf\x17\u007f\xe5\xe5\xa7m\xbcc\xf3M\"\xf2W\"\x92r&\xc7땳O\x00U݆\xb3<\x955\xeb)C\xde\xd6Z\xe0\xbb\x00\x80\x05DZ,I\x11\x8c1\xef\xf1\xde'\x00\x9e\x15B\xf8\xfc\xf97_\xfc\x0f\x17|\xe8\x85g-u\xf0L\u07fea\x8f\xf0y>8\x00\x00 \x00IDAT\xec\xfe\xc0\xbd_ܿm\xf7kD䆀n\xeb.G\xcf\xdaN\x16\xc3\x031\xb6\xa7\x93\xcb\xfbO$\bp8,\xbb\x06»\x9f\xe3\xc9\x00\xba\x8a\x1c\xe3\xf7<\x19\xec\x84xq\x0f\x98\xbe\xe0h\x87|,/Κ\xd8\xd11\xf4\xa6N/\xc6o\xe3\xb1x\xef\xff\x8b\xb5v\xff\xf97_\xfc\xe1\xf3o\xbe\xf8\xc7\xfaa\uef1b\xd6?\xed\xbc\x9b\xd6\xff\x91\x88\xdc\a\xe0\x97\xf5Z5\xc7AĐ\x1bGDJ\xbe\xf0\x80/\xa1/=JF\xe6\x02d:\xa08\x92#\x1c\xf1\xf0\x13\x83\xdd\x04\xb7\b,Q\x19>\x9e{\x9dg\xde\\\xa6\xf5\x04.\xbe\x0e\x98\xc6A\xebC\r/w3q\x96\xa1\xbc\xc6{)\x9cs\v\xb2\xd7\xcew\xd6[k?\xba\xee\x96\r\xcb\xdaY}ѭ\x1bO\x11\x91\x8f\x00\xb8\x88\xf51Θk\xf0I\x04\xc1\xea\xfbj\x90\x81n\xc6\xd0\xf9\x91\x10\xc2\xf8\xb2\xa4'\x82\xa2U\xc0\x16\x06\xed\xa96¬G>\x91\xa1u\xa8\x85֡&\xf2\x89\f\xc5L\x81|&+\xbb\x19ea\x81Z[~9\x88c\x98\x98m\x81\x88\\i\xadݽ\xe1K/\xf9\xa9\x8dwl>f\x93¦;/?}×^\xf2\xb6,\xcb\xee3\xc6\\\xc9\xeb\x9231Θt\r\xe9\xfdU\xee\xf1A\x9a1\x9c\xa8r\xf5!\xa0\xf5\xe0\xecA\xe7\xdcΘ\x9f\xbe!\xac\r[.{^6\x99\xfd78\x03\x9bZ\x04\x13 V^/V^\xb1\xee\xe6\x17\xfe\xa5\x97\xf0\xc1=\xbf}\xcf}\xfd^\xaf\x17\xc9\xd3̻\x9c\xb1o\x01`5\x85\xe6\xc8C\x15]\x1d\x8a\x0eP\x85\xa4\n\xc6\x13\x1aBy\xa2l\x1e\x96\u007f\x9e\x05\x9f!\x15G\x9fqD\x14\xd7g\x80z-\x821\xcaA\x93\x88|\xc1\x1f\xf17ʉ\x82$Mj\xb2`c\xa0<\xc70\fw\x9d(1\xfe\xcc\n\xd9\x19c\x12Bx\x931\xe6M\xe7\xdf|\xf1\xf7E\xe4\x9fD\xe4\xbbƘ\x83\x00\x0e;\xe7N\xf1ޟ\x19Bx\xa6\xb5\xf6\x95\xd6ڋ\xd8\x11\xc7Ƙ\xc6Q\x8b~\xd9Ȱ\xd3\xebe\xf8\xf8=\x00\xd5\xe1\x81\x03\x90mŧ:g\x95\xabs\xae:\x91\x17@\r\xcaP~\xf4\xb7f\x1d\f\x83\r\x92\xf6n\xdd\xe9/\xbauc\xab(\x8aQ2\xa8\v!\tc*X\x88uV?\xcb\x01\b\xd0}(Z\xe7\xb5_3\xc6\xfc\xe4\xba[6\xfc.\x80\xdbv\xfe\xdc7\x8e)\xe0\xf5\xb7m2y\x9e\xbf\x01\xc0\x9f\x8a\xc8\x19q@\x15C\xaa\xbc\x9680\xe3\xd6y\xbe\x06\xd7q\xac\xb5\xad\xfd\xdbv\xaf\xc83svY\x9b\xf7̗\x19\xaes\b!\xef\"\x0f\x89\x83K\x1d<\x02\\b\x01\a\xa4#\r\x04t\x1fn\x15?\x93\x03\xa8 \xb3g&I\xf2)c\xcc̥ۯ\xf8'\x11\xf9\xa6\xb5\xf6\x87\x00\x1e\x15\x91Qc̙\"rV\x9e\xe7\xff\xc5{\xbf\xc9Z[\xcb\xda㵩:\xc9\xe3`}\xe4\xda\x12ˎ?˿C\x1e\x90\xfb\xfc\xf3\xbd\xce\xc4\xebۊ\x85\xd9\xf0\x87\xa3ɨ\x95\\ MA\x92\x8ch\x14\xb5\xc6Z\xfb?\xf2\"\xff\uf5fc\xf7ş\x0e\b\u007f\x12L\xf8꿿\xeb\xae%\xad\xda\v>\xf4B\a\xe0oB\b\x95%\x89\xa3$\x8e\x8cc%\x8b#\xa68\xc5\xecLȲ(Ɛ\xb9\b\x1ec\x9e<I\xfaY\xfd_\r^\xdc\xd2;(\n!|\xc7N\xe1@rZz\x96\x1a)6v1\x14\xa5\x0eC\xa3%퐋\vk\x9c\xad\xa8\xe2qM\xa83O?j\x8c\xf9]\xe5\x85\xe1\x1e\x8ezx1\xaa\\\xa2豒\x9d\xfe\xcf|\xebw\xf9\xd4`\x86\x87b\x87\xc3\xe3]\x91l'=lj\x01ga\xad\x81\x97\x00$\x80\xebQ@g\xf91O\xbc\xd0٨\x0f\x9a\xbc\xf7\xe3\xd6ڧ\xea\xb5;\xb8{\xed\x9e\xdcz\xca\xd1'g\xff\\\xecg\xbe;\x06\xfd\fc\xcc'\xbd\xf7\xbf\xb9\xee\x96\r\xb7\x1bc\xbe/\"\xdf3\xc6|\u007f\xc7\x1b\uf7bd\xe8֍'\x1ac~\xd4{\xff\x1cc̏\x86\x10.7\xc6l\xd6{\xc55D6|\xaa\x13*O\xe6K\r\x9d\xea\x8566Ԑ\x81\xe0\xc7\x16\x15N\x1f\xc4\xfc\x01u8\x87y\xe2\x9aW\xf0\x01\xbe(\xd7v\xde*3^o;\xeb\x03\x021\x82\x90\x06xx\xa4\x8d\x04&\xb10\xce H\xad\xf3\xf1\xa4\x10\xc2\x1b\x9dso\xe4\xf1\xa8\x81\xd7\xe3U\"\xe7S\xf1\xa4Y-;\x8cx-\xc75$F\x18b\xe82I\x12\x04\x11د\x06\x84\x10z\x9e&ܗ\x03y\xd1\xef_\xba\x0e\xc0\xcf\xf0\xc2\xd4\x01U-\x820Ʒ\xfd\xeb\x9ds\xaf\x17/\xdf\xd9\xf0\x9e˾`\x8c\xf9W\x00_\xbe\xfb\x0f\xberԖ\xba\xf5\xd7m\\\x1f\xa6\xc3\x1f\xc2\xe1U\xd6Y\x04xX:\xb4\x90暑S\x0f\xcb\x18\x1f\x1b\xbfH\x01g\xf7nٱ\xec\xd3\xe0\xb8\xe0\xc9J\xc5Q3\xa7\xde1\xa6ˑ\x96v\xf1h\x8b\xdc i\xff\xb6\xddr\xfe;.\xfaB1V\xfc\x06N\xc1\x02#\xb5\x18\\\xc2P\x92.\xde\xd8бC\xd2\xd7c|\x15\xa8\x9f\x14\xa0\xbf\x81n\x16\xc6\xf5\x19\xfd\xbbW\xe19\xae\xcb\xc4Q;\x1f)\xc2s\x12;\xf7AE\xf8\x12\x04\xbe\xe5\x01x\x92Uw_\x8a\x982\n\r\xf00\xceBl\x80q\x16\x05\n\xb8\xc4\xc1&ݬ\x993\xd0Հ2\xed\x03\xf6\xfe\xf0\x8c\xf0Tv\x16j\xa0\x15n〆\xe7^\x83.5\xcaqWd\x1cH\x18c6\x03\xd8̺v\xe1'/\x99,\x8a\xe2\xd4\x1eEx\x00\xa89-\x86V\xf5>\xfa;F\x12\x80\xfazb{\xc0\x81\x83\xfd\x81\xbd\u007f\xb9\xb2\xd35\nt7\x06\xc6\x067v\x82\xfa:\x9f`\xab:\\\xe9m\xee\x11\xf2N'\xd9|\xf7Ad!\x04\xa4\xa3)\x8c3\xf0\bH\x1b\t\nS \x19IJ\xc7#\v\xeb\x1a,k\x9e\x0f\xcd(\xf9s\x1c\xe8q\xf0˶\x8b\x03:ՉF\xa3Q\xca7782s\xa40\xc6|\xb1\x97\xbc\xfa\xcd@\xfe\x98a\x1bU\xb28:UeK\x92\xe4\xb9!\x84\xe7\x86\x10~\xd79\x97\xbd\xf0ݛ\xbei\xad= \"\a\x9ds\a\x8b\xa2\x18\xb3֞\x0e\xe0lk텡\x156\x89ԟ5\x1dB@\x82Nˣ\t\x80\x03<<\xc4\x02p\x80\x98\x001\x028 \b\xe0\x8d\x87I\xba\xe7T\xd5`\x83CŲ\x15\n\xa8\x1f[\x10C=\xb1b1\xf6\xcc\x11@<\xe9\xab\x11yvx\xfdK\xcc\xc8o$\xa7\xa7\x00\xea'$\xc7\xf7d\xe3\xcb\xddX\xbd\"\xf9\xaa@)\xd2SƬ\xc8\xfa\x1a\x8f\x9d\xef\xc1\x0e\x9e\x15We\xc9\vV\xdfk4\x1a\xb5\xd7\xf4\xbb1\xec\x16\xd7vbG\xbf\\\x12\x91jsZ\b\xa12\xb2\xd5\\\a\x81\x0f\x9dlS4\x98\xe8\xe8\x88\x05\x8a\x90\x03\xd6\xc0\xa5\x160@&\x19\x92\xd4\xc1%\x83\xef\xc8\xcb'[\x0f\xa5f\x14b\xba\x19\x9bs\xf5\x93\x12\xd8\xf8\xc6\x01\x03\xeb/\xeb\fG\xa9\xac+*\x1f\x95\xb7\xf7\xfeT\xb5\x17\xfcY\xce\xd2hs]-\x18`}Pb\xa8P\x1d\xa1\xf2\xa2\x81\b\x8f\xb351\xb7`\xbfB\xbfTf\xe1\xe9\xa2\xf5L\xe5C\x8dql\x17\xf5\xffxm\xa91\xef\xf5DâݭIy[\x8e\xad--\xc0\x94\xfaR8\x03\xe3,\x8c\x03\x92F\nq\x02\xeb\xba\xe8\x86\xeawܖ\xab\xb2$\x94\xa0\x1a'\xdb/M\x048\xd8j\xb7\xdbp.\x81\xdfބs\xee\x13{\xb7\xee\x9c\xea%\xafc:\x90\x17\xbe{\xd3%I\x92\xfc$\xf7C\xb32pڤ\xccs\vh\b\xa1a\xad\xbd\x8c\xa3\xdbZ\x8aDƙ=\xbbR\x15\x15\xb5\nXðQ\xb7\x1d1\xa5\xc92\x89\xe9\xd4g\x00\xe3\f\x8c\x13\xe4\xb3\xed\a\x8f5Σ\x91\x1a4\xe5\x97\xc7\xc7FT\v\x94\xaa(\x1a]\xe9\x18X\xa1V#\xf2\x04\x80\xbd[w\xfe\xfb\v\xae\xbe\u0cd80\xafƩ\xa8);\x13\x1b\x006\xe8\xfa\x9eF!\xec\x04b\x8c\x14\xa8\xb7\xfd\xc5i1Gg\xfcY\xbd\aG>\xfa\x9a*t-\xa2\xb4\xdd\xe38\x18\xdb\xe5\x8cHy\xe3\xac(vV+!\xe7\x1c\x82\xafg\x96:&\xa0[?\xd0q\x14E\x81\xd1\xd1\xd1\xea\xa1L\xd6Z\x84\xc2\xc3\x19[^\a\x80o{\x142\xf0c\xfd!\"\xf7\xc0\xe0\xe7 \v\x8d\xb2\xca_\x8d1G\xdbl09{\x8c\xb3X\x86T؈Ŷ!\x0e,8\xf3\xe8\x95\xe1\xe8w\x98?\xbe'G㬓Zs\xa2\xcc\xea\x9e\xe5ʎ\xb3&\xbe&ý\xac뜙s\r\x873:\xfd;F)z9a\x9e\xa3\x10\x02B\x1e`\n\x83\xf2\x1c\" \vYy?\t\xb0\xce\xc25\x1cr\b\\\xc3A \xb0I\t\x99\xc5\xed\xed\xb5\x9a\x06͡f\x1al\xc3+\x9b\x96\x19L\xb5f\xbd\xb5\xf6\x8f\x17\x93\xd71C3k\xed{Y`ʈ\x0eT\x15\x81\xa3s\xa0\xbe\xa0x\xa1\xeb{l\x14T\x88q\x9a\xa6\x8a\xcfu\x04\xeed`R\x0fo\xc5\xc2y\a\xd3\x02\\\xcb\xc2\xcd'p\xce-\xe8_^\n)\x9f\\\x00\xd5\xf1\xb0\x11V>\xf8)^|\xc0\x1eCm\x83.\x9e2\x89\xc8\x1f\xfa\xa9\x1c\x82n1\x94\x17\xa3\xf2\x1dgNʿ\xf2\xcb;Qkx/A\b\xb1a\xe7\xe7\xc3p\xe6\xd5\xeb\x18{\xce0\x18Έ\x17\x1a\a\x1d:\x0e&\xd6\v\xe5E\xf9\x89\x1f\x02\xb5RR\xdd\xe5\b36~*\a\xe5[\xff\xe6vZ\x1d\xdf \xb2\xa3\x1e<~\xc6>\xb2\xf0\xa1kʫ\xea\x04P?[Nǧs\b,\xec:dX&\x86\x1d\xd9x2)\x0f\xfc\\y^\xd3\xfa]\xcepb{\xc1\xf2U\bS\xef\xc5|\xd9G,\xac\xb5\x9fY\xae\xecbx*ַx=\xb3\xdc\xf85\xb5\x15\xea8؉\xc7NV\xdf\xe7 \x9b3\xc3\xf8yC\xde{\x14y\x81P\x04\x14\xcd\x02\xf9lypj6\xd1F{\xac\x85\xe2H\x8e\xb9\x83\xb3\b\xb3\x1e\xed\xa96\x8a\xf9\x02E+G\x91uO\xcaУ\x9e\x18\x1eֵ\xa3\xf7mm\x9f\x05\x80\x8f\xefݺ\xf3?\x16\x93\xd7Q\xb5w\xc3{.\xdbl\xad\xbd\"\xae\xe4\xebb\xe5\xcd):\xe9\xbc\x03S\x05\xd6kW&O\x18OL/\x03\xc3)\xb8\x92\x1a\x9a\x18\x02\xd1\xebi\xed$\xcf2\x88\xc8'\x8e6\xcec\xd1\xda\xc3k\xb0fl\x14k'\xd7btr\x04\x8d\xa9\x14#s\r\xb8Y\v;o\x81& m\x81\r\xb6l\x19F]QbH\x85\x17\xf0j\xd0\xfem\xbb\xef\x11\x91\xcf\xc8\x01\x0f\xdb1\xa6|\x14=\x1b|v,\x8bAVq\xe0\xc0?\xfa:?\xc0\x86\r\x81ރ#1\xde)\xcfN\x82#L\xe5\x89\x1d\xad~_\x8d\x9e\xf2\xc9\xc1\x87\xf2\x91e\x19\x8c\xe9>\xdf{\xa5\xc4\xfc\xc5\xc1T\x8c\xe3\xc7\xd9\x19gFld{\x19\xa8A\xd0ޭ;\xbf\xdf:8\xf7\x1d\xdb4\b\xf3\x01h\v\x8af\x01\x13\fB\x11*\xb9\xf0\xbdu\\\x9ca\xc7\x19%\xaf\xdb8#\x89\xb3\t\xd6\x1d\xdd[\xa2k6~\xa6\x0e\x80Zdφ\x92\xaf\xc5k\x9d;\xd88\vn?6\xbf\u007fϖ\x1d\xcb\xee\x06\x8d\xb3ט\xf4\xbc3\x9dw5\xc0l\x88\xd9^\xc5\xebF\xaf\xcd\u05cf\x83\xed\xd8)q0\xa2\xefŏ\x15\xa8ɦ\xf0Hl\x82|>/\xe7~&G6\x91\xa1\x98\xc8\xd1|l\x1eّ\f\xf9dV=\x82[\U00080b15Uk'I\x13\xf8oz4\xb3f\x91\xa6\xe9{\x8f&\xafEW\xd6ſ\xb7\xd1\x00xo\x8c\x8d\xa9\x90\x19\xef\xe3\xc8O\a\u008b\x84\x8d(/\x1a62z\x0f6\xb2qt\x1cu\xfd,\nϨ C\b\xc8|v\xf7ޭ;W\xd6^,R\xf6{\xe7\x02\xdb\xf1\xb9\x0e\xf5{\xabC\xb5֖\xbb\xa5\x1d V \xb6\xacӔ\u007f\x97\xc5X8,\xfb\xb0\xb7~\xc9\x18\xf3\x87\xde\xfb\xd74\xc6S\x14\xa7\x140\xb6\x1b\t\xf3B\x15\x91\x1aT\x15\xa7\xbb\xea\x1cTa\xe3\xc2y/(\x82\xb3KU\xfa\xf8H\xf6\xd8\b\xa8\xc3b}\xe2h\x94\x17\x95\xde\x17\xa8;\xa1ب\xf3\xfb+%k\xcb\x13\xa6\xd9Xq6\xa1{\x12\xe2\x05\xcf\x1d|\x1c\xf4\xb0\x0e\xaf\x06\x89\xc8g\xc2\xc1\xf0\\\u007fb\xb9c_B@&\xe5\xde:\xb1\x01\xdey$\xa9C\x11|\x19F\x1a\x81I,\\ja\x12\x8b\xbc\xc8k\x86\x89\xd7g\x9c9j\x10ɭ\xbe\xfa\x1d\xce>93\xe4,\x833\vޥ\xaf\xf2\x03\xea\x8faedB\xed\x10\x04p?p\xc8E\x96\x9d}(_\"\v\x9f\x8b\xae\xf3\x1d\xd7\x1d\xb8S\x8du[\xe5\xc2h\x03g6\xfay\xbdO\x04\xfb\xf3<\xd6\xe4ş\x89\xed/;\"\x86\xafj\xd7\x12 \xe4\xe5{y\xb3+k\xef=\xd2F\x8afh\xc2\x16\x06~<\x03\x80\x8f\xed\xba\ue7a3֏\x8f\x96\x81\xbc\xd2\x18\xb3\x89;_8\"P\xe2t7.ز\xa7\x8d#rV.V\x16\x8e\xd2\xf8\xbbl\xf0t\x02y\xe1\xc6F+\x04\x8f\xb9\xe6,D\xe4\xef\x8e&\x80~\x88\v\x82\xba\x10tҙ\x17] \x89up\xe2\xe0\n\x87$K`\xe7,\x92\xd9\x04\x8d\x99\x14kfG\xb1vz\rF\xc7G\x8eqו\xd1ޭ;\xef\xb5\xd6\xdeZ\xccd\xa5\x1c\xb1\xf0AA\xaa\xdc:\x0f\xbc\x10\xe2LP\xffgE\xe7\xefi\xe4\xda+\xe5g\x88\x01\xa8w\xb7pF\x1b;\r\xa0\xbb\xe8X\x87\xf4\xfb\x9c\xda3\xbeΙ\n/ƕ\x90\x8e\x93\xe5\u008b\x95\x9f\x15\xa1\xc4\xce#v\x8e\xfa\xb3Z\x99\xa81\xe632\xe3al\x8f\x83)\x05\x80\x17\x84,\xc0w\x8e\xf67-\x03\x99\t(&\n\xb4\x0f\xb5`g\f\xfcDQ>~y֗\x9dC\xad\x00\xe3\r\x10\xeagR\xf5\n\x06t.\x18B\xe4\x82y\x8d\x1ft\xb3\n>\x01X\xa3xv:\xb1a\xac\x82S\x03\xb4&琦\xe9\x8a\x1d\b\a\xc3qv\x1c\a\xb7\xdayů\xb1\xe3`\x9b\xc5Y\x1b\xc3\xe1\xf1\x1a\xe0u\x1a\xa3\x00,O\xd6{\xfd\x9f\x1d\\\xec\xfct\x0ez\xa1#Ɣ\xa7?8Xd;\x9b\xc8\xf3|\xca9w\xd4\xec\x03Xālx\xcfe\xd69\xf7^\x8e\xb2\x18\xd7慢=汧TA\xe9\xc0YQ\xd8\xd8s\xe4\xcaB\xd3\xcf\xf2k\x9c\xb61|\xa5\xc2\xd0G\xda\x1a\x18\x00\x06\"\xd2\xf2\xde\xdfv,!\x1c\x8bb\a\xa8cc\x05a\xe8\x85'\x87\x17/+\xc4 \xa2\xe2>\xe8M\x00\xee3\x8f\b\x82\x84\x1a\x8f\xf1\xc2\xe8U\x83\xe2\x80!\xee,Q\x99\xb0A\xe0E\xa7\xca\x1cC;\xec\f\x94\x18>a\x05\x8f\xe1\x04\xfd\x9b\x9f\x8b\xcdp\x98\xf2\xc0\x86Hy])1\xa4\xa7c\x89q\xedŢT\xfd\f\x1b\x89X\xe6\x83&\x11\xb9\xab(\x8a\xbb\xcd#\xdd\xe7\xef0\x84\xa4\xb2ֵȎYa\x10\v\v\xe4\x00\xda\xe5\xde/\xd3\x04\x8a\xc9\x1c\xed\xc3md\x87\xcag\xc8\xc8t@\x98\xf1@\x13\xf0\xf3\x05\xb2\xb9\xaclW\xf5\xd2s\xed\xab\x1daH\x93\xe7_\xd76Эϰ!Wb\xc8RB@~O\vƘ\xbb\x8a\xa2\xf8\xc6\n\xe5\x06`\xe1S\x1dy\x1ds\x16\xce\x01W\xaf`'\xaeip\x80ú\xa2\xf7\xe6\xac6\xb6\xab\xfa\x9b\x9dv\xbc>\xe3qp\x10\xae\xdfg\xfb\xac\xb2\xacjI;+\xc7\xf6\u007f\xefٲ\xe3\x98\xddl=\xb5\xd7\x18\xf3zc̅\xec0b\xe7\xc10\x16\x0f<N\xe7\xbc\xf7U\xf1\x8c\x17Oŀ\xedv/\xe9\xf5\x19\x06\xd0ϰAQ\xc18\xe7*\xa7\xa1<\x15E\x01\x81`\xbe5\a\x11y\xf7\xfem\xbb\x0f\x1dK\b\xc7\"n\xd3S\xa5V\x1e\u0600\xb2C\xe3蘣\x1a\x9d\xc8\xd5,\xa2+\xedݺs\x12\xc0O\x89H\xd3>\x02\xd8i\v7_fE\xa9O`r\x03+\v\xa3u\xee\xd0\xd1q\xeb\xbc)\xdc\xc5\v\x9f\x8d\xa0\xfe͆\x83\xbf\xaf\xf2P#Q\x93[\x90\xdaao\x1c\xa93n\xae\xfa\xa2\xf3͎\x8c\x17\xafF\xafqV\xb4\x12\xe2l\x82\xb3c\xd6M\x8e\xfc\xe2\xccK\xe5\xc1\x19\xfdj\xd0\xfem\xbb\x83s\xeeJH\bI֍\xe2\xf9\x98\r\xceF\x81z\xb3K\x9c\x1d\xb1a\xaft\xb7\xf3\x802\xc9\x04\xa1Y>J\xd96M\xf9\xd4˩\x80\xecP\x1b2%\xe5\xf3d\xa6s\xf89\x0f\x9b\x1b\x14\xcd\x02EVvU\xf6\x82\xb1yM\xb1\x8c\xd9\t\xb3\xa15\x8fX\b$\x88ȕ\xfb\xaeߵ┓\x03<\x86\xdf\xd8>)o\xbc\xe6\x95\x18\xb2U'\xc4\x01\b\a\xd6<nv(,\u007f\x0e̸\x01\x81O<\xe8\x95ų3\xd4\xf1\xf0Q\xfez\xffʞ}[\xe0C\x81$I\xb6\xecݺ\xf3\x1f\xfb\x91\xd5\x02\a\xb2\xf1\x0f\u007f\xdc\x19c\xfe\x98\x9d\x05G\xdd\xecEY\x01\xe3hC\aޫ=LI#\x12\x1e\xb8\xb5\xb6\xc2SY(q\x14\xc9\xc6<6\xea\x1d\xe7\xf1-\xe7ܟ\xf6#\x84c\x11\xc35\xbd\x1c \u007f\x8e\xfff\xde\xe3\boP\xd0ʱh\xef֝\xbb\xad\xb5\xbf\x99\xe79\xf2#m\xa43\t\xd2\xc9\x04\xa3S\xa3X;\xb5\x06k\xc6G\xb1\xf6\xf0\x1a\x9c0\xb1\x16k&G\x91N$h\xcc4\x90Υ%\xf4\xd6.;ڐ\x01V\xba2瀁#1\x00Uj\xcfN#>\xd6^\x17T\xa5܂\xaaư\xd8&K^\xc4@W\xe78\xdb\xe1\x05\xad:7\b\x98\x88\xa1\x848\xaac\x87\x17\xebx\x9cy\x03\xa8\x05L\xab\xa9\a{\xb6\xec\xb8\x17\xc0\x87\xfd\xa1\x1c2\xb30S\x8e\xf9S^bx\x85e\xa0\xf2䢷\xfep`Pe<Y\x0e\xc9\x05\xc8\x00i\x06ȼ\x94\x8fT>\x92\xa3}\xa8\x85|,\x83\x9f\xf4\xf0S\x05\x8a\xe9\x02aޣ\x98/\xbfc\x02`P\x87\xbc9\x90\fA`\x1e,\xf1z\x11\xf9\xd0\xfem\xbbw\xacTfq\xa0Ǚ\xa5\x8eKm\x94~\x9e\r2G\xf7\x9c\x91\xfa\x1ev\x92\xbf\xcb\xf0f/g\xa12\xd0\xcf\xeak\x1a\x8c\xf4\xea\xe4R=\xe5\xf5\xa2\x14\xa3\x11~G\x01\xdf\xca\x00\xe0Nc\xcc\xef\xf5+\xaf\x05\x0e\xa4(\x8a\xcbB\b\xcfc8\x81;\fb\x0f\xa9\x03fe\x8a!(`aڧ\x82\x88\x8fXP\x03\x15\x17\xd2\xf8:<\tU\x81\xaa\x03Ѵ\xf3\x16\xbc\xf79\x80_ٳe\xc7\xc0\x9a\xecc\x88\x8a\x1d#Gg:\xee8\x82\x03\xea\x13\xf8\x9f\xe5@\x00`ϖ\x1d\xff\xcb9\xf7\xe1\x10\x02ZY\xb34\xe6\xa6\xde\x05\xe4\xe0`\v\v\x979$-\a;c\x90\xce$p\x13\x0e\xa3ӥ\xb3\x19\x1d\x1b\xc1\xda\xc3kp\xf2\xf4I\x18\x9d\x18Ac\xb2\xf1\xff\xb5w\xae!v]\xd7\x1d\xff\xaf\xbdϽ3#K_T\x88mZ\\ZB\xa0z\x9b@\xdcGH!\x1fR\xbbNH(\t8\xae)\r\xa5\r-qh\xa8\xa4\x12ZSH\xa1hf\x14h\x1e\x1f\xf2h\xa1\xfd`5\xa4\x8e\x9b>▒\x96\xbaP\x97\xd8ռG\xc6\r8vd[\xb6\xf5\x98ǝ\xfb<g\xaf\xd5\x0f\xf7\xac{\xd7\xd93\xaa\xa4yH\xc9e\xffĠ\x99\xb93w\xce\xdeg\x9f\xbd\x9e{-\x8c7\xc71\xd6\x1a\x83\xdfp\xc8:\x1e\xbe\xe71\xeeƑQU;\xb2\x9a\xb8\x9d\x87Z\xad\x06\x0e\ft\x01Z\x1d\xf6ˈ\x95\x17\xe7\x1c:\x9dNE\xe8Xal\x85\x95}\xc0\xb6\xf2\xbbo\a\xebZ\xd3\xf7\xb6\n\x94}\xddj\xb0VX\xeax\xecƱז\xa8\x88<\xc1̗\x8b\xcb=`\x1d T[\x1fX\x8d>\xb6\xe4\xacU\x15[\n6U\xddλZ\x90\xd6M\xa7s\xa0\xf3\xa6\xf7V\xd7!\xe7\x01\x14\b\x94\x03\xdcb\xb8\x8eC\xb1\x9a\xa3X)\xfa\x15\x97W\x03\xd0\x10\x84\xf5\x02h\xf7\xcf'P\xe1\xc0/\a\xe4\xd7:\x10\x91\xcb\x00\x9e؍\xf9\xb2q\x86XqV\xb6r\xa9\xd9{\x1f\xbbj\x89\b\xa2J7\x0f-\xf0\xd8Ka\xf7N}Om\xfbm\x95#\xbb\x0f\xe9\xde\x13[F\xb1{P\xef\x8f~n\xc3\x01X\b\x10\x04\x10\xd1%\"zd\xe1\xcc\xccM\uf6db\x04\xc8\v\u007f\xfaܳD\xf4\x18\xf3\xf0샕\x8cV\xa3\xd6Iҋ\xb1\x12X\xbf\xb6\x83\x8d5p\xfb0Z)i\x17\xa4\x95\xa2\xaa\xb9\xe9\xffz3\xb3̃@\xd8h5\xf4\xc6\xff\xf1\xd2\xd4\\\xa5q\xd5N\xb1\xfev\x00\x95<\xf9ؕa\xad\xa9\xd8J\xd3\xf1\xdc\x0e\x17\x96\xc59\xf7\x99,\xcb\xfe\xa1(\n\xac5V\x118@\xb8\x1a_\x88ﭵ2\x14\xe6\xfe\xe1\xa6:\xea\xf0=\x87z\xaf\x86\xac\xe51ѝ\xc0Dk\x02\x13\x8dq\xf8\xb7\x1d\xc6.\xd71\xf1\xf68&\xae\x8e\xa3v%\xc3\xd8\xea\x18\xc6\x1bc}\v\xa8\x95!\xebxP\x87\xe0\n\x87Z\xa8\x81ߪ\xfa\xe5\xadŪף\xe6w\xfca7B;\xff\xfa\xbb\xbb\xe1&\x8aݳ:\x17\xfa\x9an\xaa\x8a\r*\x0f\xe6\xcdXW\xb1\xb5\xbeW,Mͭx\xef?\xe1\xbd\xcfõ\x1c\xc5Հ\xcc\x0f\x0f\xf0Z\x85к\n\xb7rO\xc6J\x8f>õZm\xcb\x03\x89[=\xe3\xf1\xbd\xb0_[m\xbf\xf2\xf3\x8c\xfei\xed\xd2U\xd6Y\xed\x80\u007fX@\xd6\v\x88HOD~syz~S\xbb\xd5\xed`k\xac\x01\xc3\xe3\x00VyP%7v\x01\xd99\xb4\xe3\xd1\xf7i?\xbf\x014\xcb^6\xd1Y0+\xac\xec~\xab\aQ\xb7J,\xb2\x9f\xeb\xb5\xe4y\xbee\xb2S\x1cs\xe1P\xc6\x1c\xe7z\b\x1cP\x14ś\"\xf2\xf0\u0099\x99\xb7ne\xbe\xb6\\\xc1\x8d\xe6\xfao\xb4:\xad\x8aD\xb4\x99\x10\x006\xf9\xa4\xad\x1bJ\x1fx\x95\xb2:\x99\xfa\x1e\xb6\f\xb3]`ֽa\xad\x10\xf5u덈\xfd\xf2!\x0fhu\x9az}\u007f\xb4457u+\x93p\xb3\xd8ִv\xa3\xb5\xae:}(c\xf3юu/}\xdf\xd7c\xe1\xccL\xb7(\x8a_\xf3\xde\u007f\x01\x00\x1a\xcdu\xa8\x92\x00\xd3\xc0\xcb\xde/{\x9dv<ֺR\xad\xc6f`\xa9\x89\xef\xbd\x1f\x1c\xect=B\xd6\xcb\xe0[\x1e\xbe\xe1Qo\xd41\xbe6\x86\xfa\xd5\x1a\x8a7{\x10\x910\x11Ɵ\x98X\x99\xc0\xc4\xda8\xc6\xd6\xebp\xab\x04Z\a\xc6\xf21p\x93\x81\x1e\xc0=\x1eTص\x0fT\xaf\xd7\x1b\x9c\xfe\xd7q\xc4\x1b\xfeN\xd9\xca]\x19k~V\xf3\xb4\xe5^\x94\xadb\x86{\xcd\u0099\x99\xef\x10ч\x9ds]Y\x0f\xa0פ\xe2\x82\xd1\x18\xa5\xddt\xe2Mӎ\x85\x99+\xf1\xa5\xd8\xfa\x06\xaaq\x84\x8a\xb6\x8b\xeb\x9f\xef\xb1V\x9d\xdd\xfc\xac\x05\xc7\xcc\xc8.9\xf4\xaeu\x00\xa0\xeb\xbd\xff\xf0\xf2\xf4\xfc\x96\x85\xfe\xb6C\xac\xdcY\x97T\xec~\xb2V\x9b\xbd\x97\xb1UW\n\x80\x9c\x88\xd0{\xa9\r\xf7\xa6\x83\xa0z\xf6*V:cE.^\xc3\xfa\xb3:W\xfa\xbfƸ\xecu\xe8\xfbW\xbc&\xaf\v\xf2\x99\x8eދ\x17\xbd\xf7?\xbf45w\xcb.\xc0M\x02\xe4\xf0\xa9\xe3\xef\x05\xf0\x01\x11\xc1F\xab\x81v\xb7UY$v#\xb1\x03\xd5&%ַ\x1dkYvAY\r\xcd.L5!m9\v}\xd8\xf45\xe7\xfa7 \x84~\xaan\xb3\xdb\xd4k\xfb\xcc\xd2\xd4ܟ\xdd\xea$\xdcp\x92\x9c\xab,,+L\xad;B\xc7`\xb3$\xf4\xf7m*\xf0nnj\xb7\u008b\x9f_\f\x8b\x93\xb3\xbfOD\x9f&\"n\xf7\xdah\xb67\x00T\x9b\x0f\xe9x\xd4|\xbe\x9e\xb6\x1ck\xfb\xd6\n\x03\xaagB\xecB֏n\xaf\x83f{\x03!\x84\xe0\xbd\u007f\xc4\xc1}\x87\n \xb4\x02|ףޭc\xa2;\xd1O\u007fn\x8ccbu\x1cw\xad\xeeþ+\x13ؿ\xb2\x1f\x13\xd7\xc61\xb6RGm5\xc3]\xdd}\xa8\xb52P\x93\xfa\xbf+u8v\xc8|V\xb9?\xdb%\xd6\xfe\xec\x1c\xc4\xcd\xcet\xbc[\xf5\b\xb1\xbf\xa7J\xd8\xed`qr\xf6\x9f\x01|\x90\x88\xdaE(\x10^ɑ\xbfַ\x86\xec\xb3\x06TcMz\xdfl\xc0V\x85\xa3\xf5\x1c\xd8ZU\xf6^o%$u\xcc\xd6\xdaT\xb7\xca\xf5<\x11!\x04\xe0-\x00\x17Y\x15\xd063?\xbcpf\xe6_vs\x9e\xc2J?\xabLZ\x02i3\xb8\xc3p\xec\xe00TJT\xc8\xc5^\x04k9X\xa1Z\xce\xe33\xde\xfbsD\x84\xe2\xed.\xa4\xac6_\xaf\xd5+?k\x05\x16PMW\xb6Ϧ\xfe\x8e\xf5~螣\x16\x8b^\xc7P\xe0\x01\xae\xe5\x10\xe6z\xc8\xdf\xea\xe8\xef\xfeG\bᗖ\xa6\xe6\xb6U\xeeiӮ\xe0\x9c{^D~\xd79\xf7\xba>\xfc\x1b\xadF\xb9є\xfeO\x93\xb1\x13\xe7\x1dǧLcS/\x8e\x83\xc4~;]\xa0q\n\xe8p1\xf67\xe1v\xbbi\xad\x8e\x00\xe0w.\x9c]ؕ\xa0y\x8cՎ\xac\xfbM7\xcb8\xa5\xd8j\x16vA\xe8F\xb3W\xb9\xff7\xcb\xd2\xd4ܗ\x00|\x84\x99[DT\xb9\xbf\xceh\xef\xf6\x01\xd7\xfba\xcfpX\x8b\xc4\xdeO[\xf2\xc4\xc6'\xfa\x9f\xf7\u007f\xae\xd1\\G\xaf聈\x82s\xee㋓\xb3OY!\x16k\x81\xb1\x9fXB\xff\xc1\x96\x8e\xa0^\xd4A\x1b\x84z\xab\x8e\x89V\xdfz\xa9]\xcd0qm\x1c\x13\x97DZ\xff\xda\xce\xdbO\xdb\xcdAǢ\xd7i-S\x00\x83\x18\xce\xf5,Q\xbb\xd6o\x87\x1bKY\x9c\x9c\xfd\xaes\xee!\"\xea\xbb{z\f~\xb5@X/3ʀ\x8a\x10\x04\x86\x15\"t-ر\xeb|\xd8Tj\xbb\xfe\xb7JÍ\xc7k\xf7\a\xbd\xb7\x83\x98\x99*\\-\a\\dP>\x98\xaf\x15\xef\xfd\x83\xcb\xd3\xf3\xff\xb6\xeb\x93\xc4\x02\xe9\t\xa8\a\xa0\x03\xa0%(Vs\xe4Ws`U k\f^\v\xa0\x16P4\np; t\xfa=B\xc0\xd5d\v\xa0\xe2\xa2\xcb\x01<&\"\u007f\xe2\x9cC\xaf\xdbF\xef|\x1b\xf2\x92\f\xaaW(Vp\xeb\u05fa'Z\x8f\x90\x9dkUZ\xad\x12\xa0\xffk܋\xe7z\xc8\xff\xb7c\xef\xc79f~pyz~e\xbbӵi\xf5.N\xce\xf6.\x9c]\xf8\x8a\x88\xbcSD\x1e'\xa2K:!\xadN\x13\x1b\xad\x06Z\xed\x8d\xe1\x03N\xd5\x1ce\x9b\xae\x16\xbb\xb4l)\x12\xab\xf1l\xe5\x1f\xb5\x82ƹ\xe1f\xd5\xe9u\xb0\xbe\xb1\x860p\xbf\xe0\xbf\x00ܿ45\xf7\xf5\xedN\u008d\x10\x91Wl`V\xb5\x0f벱c\x8a\xcd\xf7\xad\x02\xadY\x96\xddQ)\xb2<=\xff\x8f\xde\xfb\xf7\x10\xd1w\xf5\xc1n4ױ\xde\\\xaf$0\xe8\xbds\xce\r*\xa8ƽ@\x80\xeaحeBD\xfd\"\x98\xe5\xbd\xdch\xad\xa3\xddm\xe9\x02n3\xf3\xa3KSs\u007f\v\x00Y\x96m\xe8߱\nD\xfc0\xa9Eg\xad\xdc؟l\xdd E^\xbc\xb2\xd3\xf9\xf2M\u007f\xcdu\x1c\xa8G\xa0\x02\xf0\xe47\xa5\xa7[\v:\x16\x9e\xd6\xe26k\x00EQ\xbc\xbc\xd3k\xbb\x15\x96\xa6\xe6\x9e%\xa2w\x85\x10\xbeFD⽇_#\xe0\"C.2P\xaeJ\xad\x94`㛱\xa2d\xad\x11\xbbVb\xc5B_\x13\x91A\xe3\xadX\xc9\x1c\xccKyHQ\x82 \xbcZ\x00\x17\x19\xe1\xca\xc0\xc5&y\x9e\u007f\xd5{\xff\xae\x8533\xff\xb9\x17\xf3c\xaf\xd5*.\x833\x19\xdcO8A\xde?\xf7\xc2M\x86l0\xc2j\x81\xe2Z\x8e\xe2J\x0e^c\xf0z@\xb1\x9e\xf7\x85PW\x10:\x8c\xc5\xc9YY\x9e\x9e\xff\x1c3\u007f\xdc9\xd7\x15\x11\xb4V\x1b\x90\xc5\x02\xf2\x03\xdd\xfb6\x1f\xc0\xd4\xfd\xc6*\xa4\xfa\\\xd8\xfd\xc5>\x0f,\xfd\xc3ò\"\xc8g\xbb\xc0b@\x11\x06\xc9\x13\x97\x9cs\x9fȲ\xec\xb1\vg\x17\xb6\xd5\xfaW\xb9nz\xca\xf2\xf4|\a\xc0\x97\x0f\x9f:\xfe\x97ιO2\xf3gE\xe4\x1dz\xd3\xd77\xfa\xd5}\xbd\xf7\x98\x18\xdb7,U,\x02\x8a\x82K\xf6a\xaa\xd5j\x83ÇV\x13\xb7f\xaes\x04熾\xbf\x8dV\xa3\xb2Y\x97Z\xcf\xd5\x10\xc2i\xe7\xdc_-N\xce\xee\xa9#\xb9\xd9\xdex\x03@E\xb3\x8eMt\xbb\x91\x84N5;-\xeeD&\"\xe8\xe6\x9d;k\x86\x00X\x9c\x9c]>r\xfa\xc4\a\x88\xe8\xa1\x10\xc24\x80C\xde{=\xc1\x0f\xf4\x80\xfd\xfb\x0e\x94Z\xa4\xc0{B\x91\x17\x83\x12\xe4\xd65e\u074c\"2H\xcb\r!\xa0Wt+\xf1\x94\xd2\xdd\xf1\x8cs\xeeS\vgf\x06\xa5\x12\x1a\xcd\xf5\xa6nHV\x11\xb1Y?\xfa\x1e\xba![aa\xb54\x15\x1e\xe5k\xaf\xeft\xae\xf8Z\xb1j\x95\x9a\xc09 \x82\x80jY\x16\xf1\x00\x02#\x80\xe1\x88\xc0(\x06cf\xe3\xea#\"\x14\x12\xe0\x89\xb6]z|\xbb,\x9c\x99\xb9\f\xe0\x93\x87N\x1e\xfb\x1a\x80/\x89\xc8/\x00\xa5r\xf4j\u007f?q\xe4@?偬\xfc\xbeT\x9b\xa6\xc5~ykeYKB\u05c8Zj\xf5z\xbd\xd2\x1b\x9c\x8c\xbb\v\x05\x80\xd7\x18\x05\x0fS\xf8\xf5~z\xef\x9f\x13\x91\xc7_\xfc\xfc\xe2\xcc^\u038d\xae7ݏ\xac[ֺ\xd4\xf4\xfa\xec\xf8\x15-\x15\x92e\x19Bs\xe8\xfaW\x16'g\xbfq\xe8\xe4\xb1e\xe7\xdc\x14\x11=(\"\xe0\xb5\x1c\xc5\xf9\xfe\xdf\x1c;\xb8\x0fr_\xbf}\x00K\x80s\xc3\xf5o\x15\xb7\x81\xd2B\x0e!\f\xebp\xf1\x9b\x8c\xe2\xf5n%\xe6T\n\x9b\x0e3O\x13\xd1\xd4\xe2\xe4\xec\xc6n\xcc\xd7\r\xf3\x1b\x97\xa7\xe7\xdb\x00\xfe\xfc\xf0\xa9\xe3_!\xa2_%\xa2\xc7D\xe4a\xe7\\\x1d@\xa9U6*\x1b\xaaw\x1e\xb5\xac^y\xe0\xbd\xf7 \xe7\xd0\xeb\xe5pnh\xeao\xca`\xe8\xe5hv;\x95߳\xc1$\"z+˲\xbf\x16\x91\xe9\xe5\xe9\xf9\x1du\x1e\xbbY\xac/_\xaf\x15\x18\x96\xb2\xb7\x9bWlBZW\x85\x8d\xe7\xdci7\x96\xb245'\x00\x9e9|\xea\xf8\xbf:\xe7~\v\xc0\xe7\x98\xf9\x1dz/U\x988\xe7\xc0ݲ\x05\xa6\xf3\xb8k\xdf\xfe\x8ae\xa0\x14E\x8e^\xd1۴\xc9\x18\x8d\xf3\r\xef\xfd\xa7E\xe4\xe9\x8533\x15\xdb=\xb6@\xab\xae\xaf\xeaIZk\xc2[\v\x00\xc0\xc0Z\xb2>㝢\u007fǺd\xf4z\xac\xe6\xad\u007f\xdf\n<+\xe0b\x8bĎ\xf9vs\xe1\xec\xc2\xf9ç\x8e\xbf\x97\x88\x1e\x11\x91\xdf\x06\xf0\xcbDD\x03w\xf4\xc5|\xa0\x00\t3\xd8\t0N\xc8\xee\xae6\xf3\xb2q\x0e\x0eܯ\x05'\xd5\xcdغ@\x9ds\x90\xcb\x02j\t\x8a\xa2[YG:\xcfjq\x88ȳι\xaf\x8b\xc8\xdf\\8\xbb\xb0\xe7\x93\x15\xefY\x9a\x95e\x9fW{$\xc1\xde\u007f+,u\x9d\xd8{\x1e\xcd\xfd\"\x80\x87\x8e\x9c>\xf1~\x11\x99\n!\xbc[_k_\xd9@\xb6\x9a\xa1@ѷ\xfa\xb3\x1a\xb2\xfdu\xc8]\x02\xdc\x05`\x1f -AX\v\xa0\rB\xde\xee\xf4לȦ}\x13\x18\xec_犢\xf8\xec\xf2\xf4\xfc\x0fws\xben:A\xbe\xb4H\x9e\x06\xf0\xf4\x91\xd3'\x0e\x02\xf8(\x80_\x17\x91\xf7\xe9\x84\xeaD\xf5\xf2\x1e\xf2\"\xaf<\xf8q\xf6\x89\x1d\x1c\xb0Y\x9b\xd5`t\xa9\x81p\b\xe1\x99\x10\xc2_\xd4j\xb5g\x16'gw\xbf\x9d\xdf\xff\x03\x11\xfd\x0f\x80\t\x00\x9b\x04\x81}H\xac[%\x96\xfev\xac%\xbb\xdf\bb\a,O\xcf\x17\x00\xbez\xe4\xf4\x89s\x00>\x04\xe0#\"\xf2\x90\x88\xec\x8f\xcd\xfa,˰\xd6X\xad<\x1c:\xfe\xd8\xefo\xfc\xb7\x8b\xcc\xfcM\xe7\xdc\x17\x97\xa7\xe7\u05f7\xba\x06\"\xea0\xf3\xb7\x01T,\xd48\xbef\xad\x13+\x90\xad\xb6h\xcb}3\xf3\xb6\xfbC(\"\xb2Q\x14ŷc_\xb4]\x0f\"R\xb1\x9e\x00T\xae\xc5Z\xa5\x806/ʾ\xbf\xd3k\xdb\t\xe5\xc9\xeds\x00\xce\x1d:y\xec'E\xe4c\xcc\xfc\b\x80\a\xac&>X\xcf\xcd\x02\xfcr5\xb5?\x18\x97\xads\x0e\xc2\fq\x0e\x85\xb1\x06E\x04\x01C\x8f\x84\x18\xc5j\xa0<\x0e{\xe9|/˲o\x10\xd17\x17\xce\xccl\xbb\x15\xf5v\xd0\xf1ڴl\x1bطV\xa8\xae\x05\xfb\xba\n\xcaxO\xbc\x9e¸45\xf7\xef\x87N\x1e{\x0f\x11}\xd4{\xff83\xffb\b\xc1Ya\xc4\xc2謵@\xeb\xe5<\x995e\x15\x15+\xc8\xcb\xe7\xf0\xbcs\xeei\"\xfa\xd6\xe2\xe4\xecK{1_;V\xcf\x0e\x9f:~\x9f\x88\xbcOD\x1eȲ\xec\x01f>\x01\xa0\x06Ts\xe7\xad\x14\xb7n\x1f\xdb\r\xcbNH\x96e/2\xf3\xf3\x00\xbe\a\xe0\uf5e6\xe6n\xebBJ\x00\x87N\x1e\x1b\x03\xf0\xfe,\xcb>\"\"\x1fb\xe6{\xe3\x87V\x96*(\x00\x00\x05\x9fIDAT\xc6\nE\xbbї\x9f\x9fg\xe6\xa7\x00|\xeb\xc2م;\xbaQ&n\x8dç\x8e\xff,\x80\x0f\x028FDGC\bG\xbc\xf7\xfb\xac\xb0\xb6V\x9fM\x12Qb\xcb[\x85\xa8U*\x99\xb9\xc5\xccK\xde\xfb\xc5\x10\xc2\x02\x80\u007f\xbapv\xe1\xb6ƅ,\x87\xbep\xe2Q\xef\xfd\x93\xba7Yk\x11@\xe5\xb0\xe4VY\x95:F;G\xe5x\x9f\x9a\xff\xbd\x17>v\xa3\xbf\xffs\u007fp\xf4\xa0s\xeeWD\xe4\xe1,\xcb\x1e\x12\x91\x83V\x10\x01Մ\x0e\x9d\xf7\xf2\xef\x05\"z\x0e\xc0\xd3\xcc\xfcw\xcb\xd3\xf3;j\xa4w3\xecz\x0e\xe1\xd1?\xbc\u007f\\D\x8e3\xf3\x03Y\x96\xddW\x14\xc5O\x88\xc8A\xef\xfdA\":\xc8\xcc\a\xbd\xf7\x8e\x99WDd\x15\xc0\x8asn\x85\x88V\x99\xf9\xb5\x10\xc2\xf3ι\x17\x96\xa7\xe7\xb7l\xa1\x98\xb8s\x1c:y\xec\x00\x11\xddCD\xf7\x88\xc8=ι{\x01\xdc\x03`\x8c\x99/\x89\xc8%\"z\x13\xc0%\"z\xa3\xacŕ\x18\x01\x0e\x9d<\xe6\x88\xe8g\x9csG\x99\xf9(\x80{\x9ds\aD\xe4\x003\x1f \xa2\x03Y\x96\x1d`\xe6\x03!\x84}ι\x1637\xb2,k0s\x03@\x83\x99\x1bD\xd4@\u007f},\x02X\x04\xf0\x83\xa5\xa9\xb9\xdbW\x96\xe1\x06\x1c\xfe\xe2\xfd\x8f\x02x2N\x92\x897q\xebފcn\x83X\x84\xc9V\v!<\xb5\xf8\xa9\xf37\x14 \x96#\xa7Ox\x00?\r\xe0n\x00w\x17Eq\xb7\xf7\xfen\xef\xfdAf\xbe\x06\xe0\r\"\xba䜻\xc4\xcco\x88\xc8奩\xb9\xdb\xea\x1b\xbf=I\xe8\x89D\"\xf1c\xc0\xd1/\xbf\xfbQ\"z\xd2\xc65ĸ\xe84&d\xd3فj\x8cL\x05\x8e\xba\xe0K\xe1s\xcb\x02\xe4ǁۗ\x84\x9eH$\x12?\xe2\xd8TظK\xaa\x8d]\xe9\xf7\xb6\xaa֠Yfz>\xc8\xc6&F\x8d$@\x12\x89D\xa2\xc4\n\x0e\xa0Zj\xdd6\xbbR\x97\x96Z#63Ϟ_\xd2\xf7ܭl\xc0\x1f5\x92\x00I$\x12\x89\x12\x1b\xe8\xb7.)}M3\xa3\xac@\xb0\xf5\xf9\xe2\xb31q\xe2\xc0\xa8\x91\x04H\"\x91H\x94hv\x95\xcd\x1e\xb5\x99V6\x95\x1d\xa8\x96\xd9\x016\x17\x93̲\f\xbd^\uf39e\xf7\xd9K\x92\x00I$\x12\x89\x92\xb1N\x1d\xb5n\x86Z\x91A\xba\x02)L\ttS\x85B\xbf\x06\xaa\xe7CT\xd8h\xc5\r\x15\"\xa3*@v\xdei'\x91H$F\x84Z\xab\x86:\xeap\x9d\xe8lGF\xc89G6VC\xaf\xe8!\xab{xr`b\x88\xeb\xd7F\v\b@Vm\x8b\xa0Av[\xf6d\x94H\x02$\x91H$JB\b\xf0\xceo*S$\x85\xa0F5\xa0\x03Ըo\x9d\xd4|\xbf8\xac\xba\xb5\x802\x80N\xfd\x1ai\xf0\x00\x9c\x80\x89\xe1j\xa3\x19\x03I\x02$\x91H$JlI\x16%._\xa2'\xcd5\x0eb[X\x88\xf4\xab\xe0:\xa6\xb2\xb21\rʼ\x8f\"I\x80$\x12\x89\x84\xc1\x16\xe3\xb41\x0f[<Q\xcf{h\x8cC\xd1fxJ\xfc\x1e\xa3\xc6h:\xe6\x12\x89Db\x1blU 5>\x8d\xee\xbdG\xbd^\xaf\xa4\xf7\xdaC\x83\xa6\x04}\xa57\xcc(\x92\x04H\"\x91H\x94\xa8P\xb0\xc5\"m\xdf\x19\x1b\x1c\xb7\x02fll\xacr\xf8\xd0\xf6\x0f\xb11\x92Q#\t\x90D\"\x91(\xb1}^l\xd3(\xdb\xf7C\u007fFk]eY6(_\xa2B$nc\x11\xf7O\x1f\x15\x92\x00I$\x12\t\x83\xed壂\x01\xd8\xdc\xee\xd6V\xdbՒ&q\x8bY[|q\x14I\x02$\x91H$Jt\xc3W!\xa0օ\r\xa0\x03\xd8t\x98ЖqW\x01\xa3n/\xb5fF\x91\x94\x85\x95H$\x12\x06ku\xd8&x\x8a\xado\x15\xf7N\x8f\xddU\xea\xd6\xd2\xd8ɨ\x91\x04H\"\x91H\x94ؔ]-\x90\xa8\xc4}\xd0\xf55ۦ8n[\xac?kS}G\x89\xe4\xc2J$\x12\x89\x12kQ\xd86\xbc\xdavۦ\xee\xda~!\xb6d\xbb\xad\xd6k\xad\x94Q$\t\x90D\"\x91(\xb1\xc2\xc0\x16@̲l 0\xecY\x11k\xb1\xe8\x87E\xab\xfa\x8e\xaa\v+\t\x90D\"\x910ĥKl\tw\xb5(\xf4\xc0\xa0\x8do8\xe7*\x95wm<dT\x8b)\x8e\xe6\xa8\x12\x89Db\x9b\xc4\x19W\x8a\x9e0W\xc1\xa2\x8d\xa4,Z'K3\xaf⬭Qc4#;\x89D\"\xb1\r\xbc\xf7\bE@Q\x14\x95\x96\xb4궲=A\xb4\x0f\x88\xbe\xa65\xb4\xac\xf0Qa4\xaaq\x90d\x81$\x12\x89D\x89MŵYWZq\u05f6\xaf\xd5v\xb7\xde\xfb\x8a\xb5\xa1ߋ\x85\xc8(\x92,\x90D\"\x910h}+\x1b\xf3\xd0\xefٲ\xed\xeaʊ˟\xd8`\xba\xfd\xf9Q$Y \x89D\"\xa1\b\x02\x04\xa8\xd7\xea(\xf2\x02\x10@X\xc0\x81\xe1\xc8m\xfa<\x14\x01\x04\x02\x04\xe0\xc0\xe0\xc0 \xf3OX\xfa\x1f\"\xf9\x9d\x1e\xda^\x90,\x90D\"\x91(iu\x9a\xdf\aL\x89\x926W\x0e\x14Z\xb7\x94Z&\xfay\xadV\xab\x94n\xd7\x18IY\x0e\xe5\xbf\xef\xc4x\xf6\x9a$@\x12\x89D\xa2DSs\xe3\x02\x88\x1a8\xb7'\xd05E\xd7\xc6;\x00l\x126\x1a?\x19E\x92\v+\x91H$J4\x80\x1eB@\xadV\x1bX\x1f\xb60\xa2\n\x19\x15\x1c*h4F\x12\xc7?\xf4c\x14I\x16H\"\x91H\x948疙\xf9\x9d\x9ay\x05\xa0\x92\xaa\v\fO\xabk\xb7A[<\xd1\n\x16\xfd\xba\x14:Wn\xffh\x12\x89D\"\x91H$\x12\x89D\"\x91H$\x12\x89D\"\x91H$\x12\xdb\xe1\xff\x00a`\x0e\xb8q\xfd\x8e\xd6\x00\x00\x00\x00IEND\xaeB`\x82"),
272
        }
273
        file14 := &embedded.EmbeddedFile{
274
                Filename:    "tray.html",
275
                FileModTime: time.Unix(1535012730, 0),
276
                Content:     string("<!doctype html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-355, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, user-scalable=0\">\n{{if USE_CDN}}\n    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://assets.statup.io/favicon.ico\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css\" integrity=\"sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB\" crossorigin=\"anonymous\">\n    <link rel=\"stylesheet\" href=\"https://assets.statup.io/base.css\">\n{{ else }}\n    <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicon.ico\">\n    <link rel=\"stylesheet\" href=\"/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"/css/base.css\">\n{{end}}\n\n    <title>{{.Name}} Status</title>\n\n    <style>\n        BODY::-webkit-scrollbar { width: 0 !important }\n    </style>\n\n</head>\n<body>\n\n\n<div class=\"container col-12 sm-container\" style=\"margin-top: 0 !important;\">\n\n    <div class=\"col-12 full-col-12\">\n        <div class=\"list-group online_list\">\n        {{ range .Services }}\n            <a href=\"#\" class=\"service_li list-group-item list-group-item-action text-truncate {{if not .Online}}bg-danger text-white{{ end }}\" data-id=\"{{.Id}}\">\n            {{ .Name }}\n            {{if .Online}}\n                <span class=\"badge bg-success float-right pulse-glow\">ONLINE</span>\n            {{ else }}\n                <span class=\"badge bg-white text-black-50 float-right pulse\">OFFLINE</span>\n            {{end}}\n            </a>\n        {{ end }}\n        </div>\n    </div>\n\n    <div class=\"col-12 full-col-12\">\n    {{ range .Services }}\n        <div class=\"mt-4\" id=\"service_id_{{.Id}}\">\n            <div class=\"card\">\n                <div class=\"card-body\">\n                    <div class=\"col-12\">\n                        <h4 class=\"mt-3\"><a href=\"/service/{{.Id}}\"{{if not .Online}} class=\"text-danger\"{{end}}>{{ .Name }}</a>\n                        {{if .Online}}\n                            <span class=\"badge bg-success float-right\">ONLINE</span>\n                        {{ else }}\n                            <span class=\"badge bg-danger float-right pulse\">OFFLINE</span>\n                        {{end}}</h4>\n\n                        <div class=\"row stats_area mt-5 mb-5\">\n                            <div class=\"col-4\">\n                                <span class=\"lg_number\">{{.Online24}}%</span>\n                                Online last 24 Hours\n                            </div>\n                            <div class=\"col-4\">\n                                <span class=\"lg_number\">{{.AvgTime}}ms</span>\n                                Average Response\n                            </div>\n                            <div class=\"col-4\">\n                                <span class=\"lg_number\">{{.AvgUptime}}%</span>\n                                Total Uptime\n                            </div>\n                        </div>\n\n                    </div>\n                </div>\n            {{ if .AvgTime }}\n                <div class=\"chart-container\">\n                    <canvas id=\"service_{{ .Id }}\"></canvas>\n                </div>\n            {{ end }}\n                <div class=\"row lower_canvas full-col-12 text-white{{if not .Online}} bg-danger{{end}}\">\n                    <div class=\"col-10 text-truncate\">\n                        <span class=\"d-none d-md-inline\">{{.SmallText}}</span>\n                    </div>\n                    <div class=\"col-sm-12 col-md-2\">\n\n                    </div>\n                </div>\n            </div>\n        </div>\n    {{ end }}\n    </div>\n</div>\n\n<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n<script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js\" integrity=\"sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T\" crossorigin=\"anonymous\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js\"></script>\n<script src=\"https://assets.statup.io/main.js\"></script>\n\n<script src=\"/charts.js\"></script>\n\n</body>\n</html>"),
277
        }
278
        file15 := &embedded.EmbeddedFile{
279
                Filename:    "user.html",
280
                FileModTime: time.Unix(1538459587, 0),
281
                Content:     string("{{define \"title\"}}Statup | {{.Username}}{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{template \"nav\"}}\n    <div class=\"col-12\">\n        <h3>User {{.Username}}</h3>\n        {{template \"form_user\" .}}\n    </div>\n</div>\n{{end}}\n"),
282
        }
283
        file16 := &embedded.EmbeddedFile{
284
                Filename:    "users.html",
285
                FileModTime: time.Unix(1538459610, 0),
286
                Content:     string("{{define \"title\"}}Statup | Users{{end}}\n{{define \"content\"}}\n<div class=\"container col-md-7 col-sm-12 mt-md-5 bg-light\">\n{{template \"nav\"}}\n    <div class=\"col-12\">\n        <h3>Users</h3>\n        <table class=\"table table-striped\">\n            <thead>\n            <tr>\n                <th scope=\"col\">Username</th>\n                <th scope=\"col\"></th>\n            </tr>\n            </thead>\n            <tbody>\n            {{range .}}\n            <tr>\n                <td>{{.Username}}</td>\n                <td class=\"text-right\" id=\"user_{{.Id}}\">\n                    <div class=\"btn-group\">\n                        <a href=\"/user/{{.Id}}\" class=\"btn btn-primary\">Edit</a>\n                        <a href=\"/user/{{.Id}}/delete\" class=\"btn btn-danger confirm-btn\" data-id=\"user_{{.Id}}\">Delete</a>\n                    </div>\n                </td>\n            </tr>\n            {{end}}\n            </tbody>\n        </table>\n\n        <h3>Create User</h3>\n\n        {{template \"form_user\" NewUser}}\n\n    </div>\n</div>\n{{end}}\n"),
287
        }
288
289
        // define dirs
290
        dirg := &embedded.EmbeddedDir{
291
                Filename:   "",
292
                DirModTime: time.Unix(1539400173, 0),
293
                ChildFiles: []*embedded.EmbeddedFile{
294
                        fileh,  // "base.html"
295
                        filei,  // "dashboard.html"
296
                        filej,  // "error_404.html"
297
                        filek,  // "favicon.ico"
298
                        filel,  // "footer.html"
299
                        filem,  // "form_checkin.html"
300
                        filen,  // "form_notifier.html"
301
                        fileo,  // "form_service.html"
302
                        filep,  // "form_user.html"
303
                        fileq,  // "head.html"
304
                        filer,  // "help.html"
305
                        files,  // "help.md"
306
                        filet,  // "index.html"
307
                        fileu,  // "login.html"
308
                        filev,  // "logs.html"
309
                        filew,  // "nav.html"
310
                        filex,  // "robots.txt"
311
                        filey,  // "scripts.html"
312
                        filez,  // "service.html"
313
                        file10, // "services.html"
314
                        file11, // "settings.html"
315
                        file12, // "setup.html"
316
                        file13, // "statup.png"
317
                        file14, // "tray.html"
318
                        file15, // "user.html"
319
                        file16, // "users.html"
320
321
                },
322
        }
323
324
        // link ChildDirs
325
        dirg.ChildDirs = []*embedded.EmbeddedDir{}
326
327
        // register embeddedBox
328
        embedded.RegisterEmbeddedBox(`tmpl`, &embedded.EmbeddedBox{
329
                Name: `tmpl`,
330
                Time: time.Unix(1539400173, 0),
331
                Dirs: map[string]*embedded.EmbeddedDir{
332
                        "": dirg,
333
                },
334
                Files: map[string]*embedded.EmbeddedFile{
335
                        "base.html":          fileh,
336
                        "dashboard.html":     filei,
337
                        "error_404.html":     filej,
338
                        "favicon.ico":        filek,
339
                        "footer.html":        filel,
340
                        "form_checkin.html":  filem,
341
                        "form_notifier.html": filen,
342
                        "form_service.html":  fileo,
343
                        "form_user.html":     filep,
344
                        "head.html":          fileq,
345
                        "help.html":          filer,
346
                        "help.md":            files,
347
                        "index.html":         filet,
348
                        "login.html":         fileu,
349
                        "logs.html":          filev,
350
                        "nav.html":           filew,
351
                        "robots.txt":         filex,
352
                        "scripts.html":       filey,
353
                        "service.html":       filez,
354
                        "services.html":      file10,
355
                        "settings.html":      file11,
356
                        "setup.html":         file12,
357
                        "statup.png":         file13,
358
                        "tray.html":          file14,
359
                        "user.html":          file15,
360
                        "users.html":         file16,
361
                },
362
        })
363
}
func CreateAllAssets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

152
func CreateAllAssets(folder string) error {
153
        utils.Log(1, fmt.Sprintf("Dump Statup assets into %v/assets", folder))
154
        MakePublicFolder(folder + "/assets")
155
        MakePublicFolder(folder + "/assets/js")
156
        MakePublicFolder(folder + "/assets/css")
157
        MakePublicFolder(folder + "/assets/scss")
158
        utils.Log(1, "Inserting scss, css, and javascript files into assets folder")
159
        CopyToPublic(ScssBox, folder+"/assets/scss", "base.scss")
160
        CopyToPublic(ScssBox, folder+"/assets/scss", "variables.scss")
161
        CopyToPublic(ScssBox, folder+"/assets/scss", "mobile.scss")
162
        CopyToPublic(ScssBox, folder+"/assets/scss", "pikaday.scss")
163
        CopyToPublic(CssBox, folder+"/assets/css", "bootstrap.min.css")
164
        CopyToPublic(CssBox, folder+"/assets/css", "base.css")
165
        //CopyToPublic(JsBox, folder+"/assets/js", "bootstrap.min.js")
166
        //CopyToPublic(JsBox, folder+"/assets/js", "Chart.bundle.min.js")
167
        //CopyToPublic(JsBox, folder+"/assets/js", "jquery-3.3.1.min.js")
168
        //CopyToPublic(JsBox, folder+"/assets/js", "sortable.min.js")
169
        //CopyToPublic(JsBox, folder+"/assets/js", "main.js")
170
        //CopyToPublic(JsBox, folder+"/assets/js", "setup.js")
171
        CopyToPublic(TmplBox, folder+"/assets", "robots.txt")
172
        CopyToPublic(TmplBox, folder+"/assets", "statup.png")
173
        utils.Log(1, "Compiling CSS from SCSS style...")
174
        err := utils.Log(1, "Statup assets have been inserted")
175
        return err
176
}
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/rice-box.go:

-
19
,oBAAoB;EACjC,WAAW,EAAE,4CAA4C;;AAE3D,uCAAwC;EACtC,KAAK,EAAE,8BAA8B;;AAEvC,sCAAuC;EACrC,KAAK,EAAE,0CAA0C;EACjD,MAAM,EAAE,0CAA0C;;AAEpD,8CAA+C;EAC7C,WAAW,EAAE,oBAAoB;;AAEnC,iBAAkB;EAChB,SAAS,EAAE,OAAO;;AAEpB,+BAAgC;EAC9B,SAAS,EAAE,yBAAyB;EACpC,MAAM,EAAE,eAAe;EACvB,WAAW,EAAE,eAAe;EAC5B,WAAW,EAAE,uCAAuC;;AAEtD,uCAAwC;EACtC,KAAK,EAAE,yBAAyB;;AAElC,sCAAuC;EACrC,KAAK,EAAE,qCAAqC;EAC5C,MAAM,EAAE,qCAAqC;;AAE/C,8CAA+C;EAC7C,WAAW,EAAE,eAAe;;AAE9B,iBAAkB;EAChB,WAAW,EAAE,IAAI;;AAInB,0BASC;EARG,EAAG;IAAE,SAAS,EAAE,QAAQ;EACxB,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,WAAW;EAC5B,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,WAAW;EAC5B,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,IAAK;IAAE,SAAS,EAAE,QAAQ;AAG9B,MAAO;EACH,cAAc,EAAE,eAAe;EAC/B,kBAAkB,EAAE,MAAM;EAC1B,gBAAgB,EAAC,OAAO;EACxB,yBAAyB,EAAE,QAAQ;EACnC,yBAAyB,EAAE,MAAM;;AAIrC,oBAYC;EAXC,EAAG;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ;EAErB,GAAI;IACF,OAAO,EAAE,CAAC;EAEZ,IAAK;IACH,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,CAAC;AAGd,WAAY;EACR,cAAc,EAAE,UAAU;EAC1B,kBAAkB,EAAE,KAAK;EACzB,gBAAgB,EAAE,OAAO;EACzB,yBAAyB,EAAE,QAAQ;EACnC,yBAAyB,EAAE,MAAM;;AAGrC;iBACkB;EACd,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,OAAO;EACd,GAAG,EAAE,MAAM;EACX,KAAK,EAAE,OAAO;EACd,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,eAAe;EAC3B,SAAS,EAAE,8BAA8B;;AAG7C,cAAe;EACb,gBAAgB,EAAE,SAAS;;AAG7B,UAAW;EACT,MAAM,EAAE,IAAI;EAAE,4CAA4C;EAC1D,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,SAAS;EACjB,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,GAAG;EACjB,WAAW,EAAE,KAAK;EAClB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,OAAO;;AAGhB,oEAAoE;AACpE,iBAAkB;EAChB,MAAM,EAAE,QAAQ;EAChB,MAAM,EAAE,aAAa;EACrB,MAAM,EAAE,gBAAgB;;AAG1B,WAAY;EACV,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,gBAAgB;EACxB,OAAO,EAAE,KAAK;;AAGhB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;;AAGlB,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,CAAC;;AAGV,QAAS;EACP,MAAM,EAAE,OAAO;;AEhejB;;;GAGG;AA8BH,YAAa;EACT,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,QAAQ;EAClB,KAAK,EA3BO,IAAI;EA4BhB,UAAU,EAzBC,IAAI;EA0Bf,MAAM,EAAE,cAA2B;EACnC,mBAAmB,EAzBG,IAAI;EA0B1B,WAAW,EAXE,8CAA8C;EAa3D,sBAAY;IACR,OAAO,EAAE,IAAI;EAGjB,qBAAW;IACP,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,kCAAiC;;AAMrD,YAAa;EACT,KAAK,EAAE,CAAC;EAER,uCACQ;IACJ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAGlB,kBAAQ;IAAE,KAAK,EAAE,IAAI;;AAGzB,YAAa;EACT,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,GAAG;;AAGf,WAAY;EACR,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAElB,kBAAO;IACH,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,CAAC;;AAIlB,WAAY;EACR,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,IAAI;EACjB,KAAK,EAzFQ,IAAI;EA0FjB,gBAAgB,EAzFN,IAAI;;AA4FlB;UACW;EACP,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,WAAW;EAC7B,mBAAmB,EAAE,aAAa;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,OAAO;EACxB,OAAO,EAAE,EAAE;EACX,SAAS,EAAE,QAAQ;EACnB,IAAI,EAAE,CAAC;EAEP;kBAAQ;IACJ,OAAO,EAAE,CAAC;EAGd;wBAAc;IACV,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,EAAE;;AAInB;kBACmB;EACf,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,yNAAyN;EAC3O,KAAK,EAAE,CAAC;;AAGZ;kBACmB;EACf,KAAK,EAAE,KAAK;EACZ,gBAAgB,EAAE,yNAAyN;EAC3O,MAAM,EAAE,CAAC;;AAGb,YAAa;EACT,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,MAAM;;AAGpB,WAAY;EACR,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;EACjB,MAAM,EAAE,CAAC;EAET;gBACG;IACC,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,CAAC;EAGd,cAAG;IACC,KAAK,EAtJC,IAAI;IAuJV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;EAGtB,gBAAK;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;;AAIpB,YAAa;EACT,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,KAAK,EA5KM,IAAI;EA6Kf,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,KAAK;EACjB,UAAU,EA/KF,OAAO;EAiLf,sBAAY;IACR,KAAK,EA/KQ,OAAO;IAgLpB,WAAW,EAAE,IAAI;EAGrB,yBAAe;IACX,KAAK,EAnLW,IAAI;IAoLpB,WAAW,EAAE,IAAI;IACjB,UAAU,EApLG,OAAO;IAqLpB,UAAU,EAAE,uBAAuC;IACnD,aAAa,EAAE,GAAG;EAGtB,iEAC4B;IACxB,KAAK,EAzLW,IAAI;IA0LpB,OAAO,EAAE,EAAE;EAGf,yBAAe;IACX,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,OAAO;EAGnB,kBAAQ;IACJ,KAAK,EAzMQ,IAAI;IA0MjB,UAAU,EAzMA,OAAO;IA0MjB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,GAAG;EAGtB,mCAAuB;IACnB,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,OAAO;;AAIvB,UAAW;EACP,SAAS,EAAE,IAAI;EACf,KAAK,EAhNO,IAAI;;AAmNpB,wBAAyB;EACrB,UAAU,EAAE,OAAO;;AAGvB,2BAA4B;EACxB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG;;AAGtB,yBAA0B;EACtB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG;;AC7PtB;;;;;;;;;;;;;;;GAeG;AAEH,yBAA0B;EAEtB,UAAU;IACN,gBAAgB,EF0BF,OAAO;;EEvBzB,aAAc;IACV,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,YAAY;;EAGzB,mBAAoB;IAChB,SAAS,EAAE,MAAM;;EAGrB,UAAW;IACP,OAAO,EAAE,YAAY;;EAGzB,OAAQ;IACJ,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC;;EAGpB,OAAQ;IACJ,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,OAAO;;EAGtB,YAAa;IACT,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,GAAG;;EAGtB,KAAM;IACF,MAAM,EAAE,CAAC;IACT,aAAa,EFRF,IAAI;IESf,OAAO,EFLF,CAAC;IEMN,gBAAgB,EFPA,OAAO;;EEU3B,UAAW;IACP,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,OAAO;;EAGpB,UAAW;IACP,SAAS,EAAE,KAAK;;EAGpB,WAAY;IACR,UAAU,EAAE,iBAAiB;IAC7B,aAAa,EAAE,iBAAiB;;EAGpC,kBAAmB;IACf,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM;;EAGrB,gBAAiB;IACb,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,GAAG;;EAGf,4BAA6B;IACzB,sBAAsB,EAAE,CAAC;IACzB,uBAAuB,EAAE,CAAC;;EAG9B,2BAA4B;IACxB,0BAA0B,EAAE,CAAC;IAC7B,yBAAyB,EAAE,CAAC;;EAGhC,kBAAmB;IACf,SAAS,EAAE,MAAM;;EAGrB,wBAAyB;IACrB,MAAM,EAAE,KAAK\",\n\"sources\": [\"../scss/base.scss\",\"../scss/variables.scss\",\"../scss/pikaday.scss\",\"../scss/mobile.scss\"],\n\"names\": [],\n\"file\": \"base.css\"\n}\n"),
20
        }
21
        file4 := &embedded.EmbeddedFile{
22
                Filename:    "bootstrap.min.css",
23
                FileModTime: time.Unix(1537914115, 0),
24
                Content:     string("/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:\"\\2014 \\00A0\"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\"}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:\"\";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-label::after{border-color:#80bdff}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:\"Browse\"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:\"Browse\";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:not(:disabled):not(.disabled){cursor:pointer}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-item-next,.carousel-item-prev,.carousel-item.active{transition:none}}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}\n/*# sourceMappingURL=bootstrap.min.css.map */"),
25
        }
26
27
        // define dirs
28
        dir1 := &embedded.EmbeddedDir{
29
                Filename:   "",
30
                DirModTime: time.Unix(1537930965, 0),
31
                ChildFiles: []*embedded.EmbeddedFile{
32
                        file2, // "base.css"
33
                        file3, // "base.css.map"
34
                        file4, // "bootstrap.min.css"
35
36
                },
37
        }
38
39
        // link ChildDirs
40
        dir1.ChildDirs = []*embedded.EmbeddedDir{}
41
42
        // register embeddedBox
43
        embedded.RegisterEmbeddedBox(`css`, &embedded.EmbeddedBox{
44
                Name: `css`,
45
                Time: time.Unix(1537930965, 0),
46
                Dirs: map[string]*embedded.EmbeddedDir{
47
                        "": dir1,
48
                },
49
                Files: map[string]*embedded.EmbeddedFile{
50
                        "base.css":          file2,
51
                        "base.css.map":      file3,
52
                        "bootstrap.min.css": file4,
53
                },
54
        })
55
}
56
57
func init() {
58
59
        // define files
60
        file6 := &embedded.EmbeddedFile{
61
                Filename:    "base.scss",
62
                FileModTime: time.Unix(1538011950, 0),
63
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n@import 'variables';\n\n\nHTML,BODY {\n    background-color: $background-color;\n}\n\n.container {\n    padding-top: 20px;\n    padding-bottom: 20px;\n    max-width: $max-width;\n}\n\n.header-title {\n    color: $title-color;\n}\n\n.header-desc {\n    color: $description-color;\n}\n\n.btn {\n    border-radius: $global-border-radius;\n}\n\n.online_list .badge {\n    margin-top: 0.2rem;\n}\n\n.navbar {\n    margin-bottom: 30px;\n}\n\n.btn-sm {\n    line-height: 1.3;\n    font-size: 0.75rem;\n}\n\n.view_service_btn {\n    position: absolute;\n    bottom: -40px;\n    right: 40px;\n}\n\n.service_lower_info {\n    position: absolute;\n    bottom: -40px;\n    left: 40px;\n    color: #d1ffca;\n    font-size: 0.85rem;\n}\n\n.lg_number {\n    font-size: $service-stats-size;\n    font-weight: bold;\n    display: block;\n    color: $service-stats-color;\n}\n\n.stats_area {\n    text-align: center;\n    color: #a5a5a5;\n}\n\n.lower_canvas {\n    height: 3.4rem;\n    width: 100%;\n    background-color: #48d338;\n    padding: 15px 10px;\n    margin-left: 0px !important;\n    margin-right: 0px !important;\n}\n\n.lower_canvas SPAN {\n    font-size: 1rem;\n    color: $service-description-color\n}\n\n.footer {\n    text-decoration: none;\n    margin-top: 20px;\n}\n\n.footer A {\n    color: $footer-text-color;\n    text-decoration: none;\n}\n\n.footer A:HOVER {\n    color: #6d6d6d;\n}\n\n.badge {\n    color: white;\n    border-radius: $global-border-radius;\n}\n\n.btn-group {\n    height: 25px;\n\n    & A {\n        padding: 0.1rem .75rem;\n        font-size: 0.8rem;\n    }\n}\n\n.card-body .badge {\n    color: #fff;\n}\n\n.nav-pills .nav-link {\n    border-radius: $global-border-radius;\n}\n\n.form-control {\n    border-radius: $global-border-radius;\n}\n\n.card {\n    background-color: $service-background;\n    border: $service-border;\n}\n\n.card-body {\n    overflow: hidden;\n}\n\n.card-body H4 A {\n    color: $service-title;\n    text-decoration: none;\n}\n\n.chart-container {\n  position: relative;\n  height: 170px;\n  width: 100%;\n}\n\n.service-chart-container {\n  position: relative;\n  height: 400px;\n  width: 100%;\n}\n\n@mixin dynamic-color-hov($color) {\n    &.dyn-dark {\n        background-color: darken($color, 12%) !important;\n        border-color: darken($color, 17%) !important;\n    }\n    &.dyn-dark:HOVER {\n        background-color: darken($color, 17%) !important;\n        border-color: darken($color, 20%) !important;\n    }\n    &.dyn-light {\n        background-color: lighten($color, 12%) !important;\n        border-color: lighten($color, 17%) !important;\n    }\n    &.dyn-light:HOVER {\n        background-color: lighten($color, 17%) !important;\n        border-color: lighten($color, 20%) !important;\n    }\n}\n\n@mixin dynamic-color($color) {\n    &.dyn-dark {\n        background-color: darken($color, 12%) !important;\n        border-color: darken($color, 17%) !important;\n    }\n    &.dyn-light {\n        background-color: lighten($color, 12%) !important;\n        border-color: lighten($color, 17%) !important;\n    }\n}\n\n\n.btn-primary {\n    background-color: $primary-color;\n    border-color: darken($primary-color, 17%);\n    color: white;\n    @include dynamic-color($success-color);\n}\n\n.btn-success {\n    background-color: $success-color;\n    @include dynamic-color($success-color);\n}\n\n.btn-danger {\n    background-color: $danger-color;\n    @include dynamic-color($danger-color);\n}\n\n.bg-success {\n    background-color: $success-color !important;\n}\n\n.bg-danger {\n    background-color: $danger-color !important;\n}\n\n.bg-success .dyn-dark {\n    background-color: darken($success-color, 10%) !important;\n}\n\n.bg-danger .dyn-dark {\n    background-color: darken($danger-color, 10%) !important;\n}\n\n.nav-pills .nav-link.active, .nav-pills .show>.nav-link {\n    background-color: $nav-tab-color;\n}\n\n.nav-pills A {\n    color: #424242;\n}\n\n\n.CodeMirror {\n  /* Bootstrap Settings */\n  box-sizing: border-box;\n  margin: 0;\n  font: inherit;\n  overflow: auto;\n  font-family: inherit;\n  display: block;\n  width: 100%;\n  padding: 0px;\n  font-size: 14px;\n  line-height: 1.5;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  /* Code Mirror Settings */\n  font-family: monospace;\n  position: relative;\n  overflow: hidden;\n  height:80vh;\n}\n\n.CodeMirror-focused {\n  /* Bootstrap Settings */\n  border-color: #66afe9;\n  outline: 0;\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n\n.switch {\n  font-size: 1rem;\n  position: relative;\n}\n.switch input {\n  position: absolute;\n  height: 1px;\n  width: 1px;\n  background: none;\n  border: 0;\n  clip: rect(0 0 0 0);\n  clip-path: inset(50%);\n  overflow: hidden;\n  padding: 0;\n}\n.switch input + label {\n  position: relative;\n  min-width: calc(calc(2.375rem * .8) * 2);\n  border-radius: calc(2.375rem * .8);\n  height: calc(2.375rem * .8);\n  line-height: calc(2.375rem * .8);\n  display: inline-block;\n  cursor: pointer;\n  outline: none;\n  user-select: none;\n  vertical-align: middle;\n  text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem);\n}\n.switch input + label::before,\n.switch input + label::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: calc(calc(2.375rem * .8) * 2);\n  bottom: 0;\n  display: block;\n}\n.switch input + label::before {\n  right: 0;\n  background-color: #dee2e6;\n  border-radius: calc(2.375rem * .8);\n  transition: 0.2s all;\n}\n.switch input + label::after {\n  top: 2px;\n  left: 2px;\n  width: calc(calc(2.375rem * .8) - calc(2px * 2));\n  height: calc(calc(2.375rem * .8) - calc(2px * 2));\n  border-radius: 50%;\n  background-color: white;\n  transition: 0.2s all;\n}\n.switch input:checked + label::before {\n  background-color: #08d;\n}\n.switch input:checked + label::after {\n  margin-left: calc(2.375rem * .8);\n}\n.switch input:focus + label::before {\n  outline: none;\n  box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25);\n}\n.switch input:disabled + label {\n  color: #868e96;\n  cursor: not-allowed;\n}\n.switch input:disabled + label::before {\n  background-color: #e9ecef;\n}\n.switch.switch-sm {\n  font-size: 0.875rem;\n}\n.switch.switch-sm input + label {\n  min-width: calc(calc(1.9375rem * .8) * 2);\n  height: calc(1.9375rem * .8);\n  line-height: calc(1.9375rem * .8);\n  text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem);\n}\n.switch.switch-sm input + label::before {\n  width: calc(calc(1.9375rem * .8) * 2);\n}\n.switch.switch-sm input + label::after {\n  width: calc(calc(1.9375rem * .8) - calc(2px * 2));\n  height: calc(calc(1.9375rem * .8) - calc(2px * 2));\n}\n.switch.switch-sm input:checked + label::after {\n  margin-left: calc(1.9375rem * .8);\n}\n.switch.switch-lg {\n  font-size: 1.25rem;\n}\n.switch.switch-lg input + label {\n  min-width: calc(calc(3rem * .8) * 2);\n  height: calc(3rem * .8);\n  line-height: calc(3rem * .8);\n  text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem);\n}\n.switch.switch-lg input + label::before {\n  width: calc(calc(3rem * .8) * 2);\n}\n.switch.switch-lg input + label::after {\n  width: calc(calc(3rem * .8) - calc(2px * 2));\n  height: calc(calc(3rem * .8) - calc(2px * 2));\n}\n.switch.switch-lg input:checked + label::after {\n  margin-left: calc(3rem * .8);\n}\n.switch + .switch {\n  margin-left: 1rem;\n}\n\n\n@keyframes pulse_animation {\n    0% { transform: scale(1); }\n    30% { transform: scale(1); }\n    40% { transform: scale(1.02); }\n    50% { transform: scale(1); }\n    60% { transform: scale(1); }\n    70% { transform: scale(1.05); }\n    80% { transform: scale(1); }\n    100% { transform: scale(1); }\n}\n\n.pulse {\n    animation-name: pulse_animation;\n    animation-duration: 1500ms;\n    transform-origin:70% 70%;\n    animation-iteration-count: infinite;\n    animation-timing-function: linear;\n}\n\n\n@keyframes glow-grow {\n  0% {\n    opacity: 0;\n    transform: scale(1);\n  }\n  80% {\n    opacity: 1;\n  }\n  100% {\n    transform: scale(2);\n    opacity: 0;\n  }\n}\n.pulse-glow {\n    animation-name: glow-grown;\n    animation-duration: 100ms;\n    transform-origin: 70% 30%;\n    animation-iteration-count: infinite;\n    animation-timing-function: linear;\n}\n\n.pulse-glow:before,\n.pulse-glow:after {\n    position: absolute;\n    content: '';\n    height: 0.5rem;\n    width: 1.75rem;\n    top: 1.2rem;\n    right: 2.15rem;\n    border-radius: 0;\n    box-shadow: 0 0 7px #47d337;\n    animation: glow-grow 2s ease-out infinite;\n}\n\n.sortable_drag {\n  background-color: #0000000f;\n}\n\n.drag_icon {\n  cursor: move; /* fallback if grab cursor is unsupported */\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n  width: 25px;\n  height: 25px;\n  display: inline-block;\n  margin-right: 5px;\n  margin-left: -10px;\n  text-align: center;\n  color: #b1b1b1;\n}\n\n/* (Optional) Apply a \"closed-hand\" cursor during drag operation. */\n.drag_icon:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing;\n}\n\n.switch_btn {\n  float: right;\n  margin: -1px 0px 0px 0px;\n  display: block;\n}\n\n#start_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n}\n\n#end_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n  right: 0;\n}\n\n.pointer {\n  cursor: pointer;\n}\n\n@import './pikaday';\n\n@import './mobile';\n"),
64
        }
65
        file7 := &embedded.EmbeddedFile{
66
                Filename:    "mobile.scss",
67
                FileModTime: time.Unix(1538012168, 0),
68
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n@media (max-width: 767px) {\n\n    HTML,BODY {\n        background-color: $sm-background-color;\n    }\n\n    .sm-container {\n        margin-top: 40px !important;\n        padding: 0 !important;\n    }\n\n    .list-group-item H5 {\n        font-size: 0.9rem;\n    }\n\n    .container {\n        padding: 0 !important;\n    }\n\n    .navbar {\n        margin-left: 0px;\n        margin-top: 0px;\n        width: 100%;\n        margin-bottom: 0;\n    }\n\n    .btn-sm {\n        line-height: 0.9rem;\n        font-size: 0.65rem;\n    }\n\n    .full-col-12 {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n\n    .card {\n        border: 0;\n        border-radius: $sm-border-radius;\n        padding: $sm-padding;\n        background-color: $sm-service-background;\n    }\n\n    .card-body {\n        font-size: 6pt;\n        padding: 5px 5px;\n    }\n\n    .lg_number {\n        font-size: 7.8vw;\n    }\n\n    .stats_area {\n        margin-top: 1.5rem !important;\n        margin-bottom: 1.5rem !important;\n    }\n\n    .stats_area .col-4 {\n        padding-left: 0;\n        padding-right: 0;\n        font-size: 0.6rem;\n    }\n\n    .list-group-item {\n        border-top: 1px solid #e4e4e4;\n        border: 0px;\n    }\n\n    .list-group-item:first-child {\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n    }\n\n    .list-group-item:last-child {\n        border-bottom-right-radius: 0;\n        border-bottom-left-radius: 0;\n    }\n\n    .list-group-item P {\n        font-size: 0.7rem;\n    }\n\n    .service-chart-container {\n        height: 200px;\n    }\n}\n"),
69
        }
70
        file8 := &embedded.EmbeddedFile{
71
                Filename:    "pikaday.scss",
72
                FileModTime: time.Unix(1537914115, 0),
73
                Content:     string("/*!\n * Pikaday\n * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/\n */\n\n// Variables\n// Declare any of these variables before importing this SCSS file to easily override defaults\n// Variables are namespaced with the pd (pikaday) prefix\n\n// Colours\n$pd-text-color: #333 !default;\n$pd-title-color: #333 !default;\n$pd-title-bg: #fff !default;\n$pd-picker-bg: #fff !default;\n$pd-picker-border: #ccc !default;\n$pd-picker-border-bottom: #bbb !default;\n$pd-picker-shadow: rgba(0,0,0,.5) !default;\n$pd-th-color: #999 !default;\n$pd-day-color: #666 !default;\n$pd-day-bg: #f5f5f5 !default;\n$pd-day-hover-color: #fff !default;\n$pd-day-hover-bg: #ff8000 !default;\n$pd-day-today-color: #33aaff !default;\n$pd-day-selected-color: #fff !default;\n$pd-day-selected-bg: #33aaff !default;\n$pd-day-selected-shadow: #178fe5 !default;\n$pd-day-disabled-color: #999 !default;\n$pd-week-color: #999 !default;\n\n// Font\n$pd-font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif !default;\n\n\n.pika-single {\n    z-index: 9999;\n    display: block;\n    position: relative;\n    color: $pd-text-color;\n    background: $pd-picker-bg;\n    border: 1px solid $pd-picker-border;\n    border-bottom-color: $pd-picker-border-bottom;\n    font-family: $pd-font-family;\n\n    &.is-hidden {\n        display: none;\n    }\n\n    &.is-bound {\n        position: absolute;\n        box-shadow: 0 5px 15px -5px $pd-picker-shadow;\n    }\n}\n\n// clear child float (pika-lendar), using the famous micro clearfix hack\n// http://nicolasgallagher.com/micro-clearfix-hack/\n.pika-single {\n    *zoom: 1;\n\n    &:before,\n    &:after {\n        content: \" \";\n        display: table;\n    }\n\n    &:after { clear: both }\n}\n\n.pika-lendar {\n    float: left;\n    width: 240px;\n    margin: 8px;\n}\n\n.pika-title {\n    position: relative;\n    text-align: center;\n\n    select {\n        cursor: pointer;\n        position: absolute;\n        z-index: 9998;\n        margin: 0;\n        left: 0;\n        top: 5px;\n        filter: alpha(opacity=0);\n        opacity: 0;\n    }\n}\n\n.pika-label {\n    display: inline-block;\n    *display: inline;\n    position: relative;\n    z-index: 9999;\n    overflow: hidden;\n    margin: 0;\n    padding: 5px 3px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: bold;\n    color: $pd-title-color;\n    background-color: $pd-title-bg;\n}\n\n.pika-prev,\n.pika-next {\n    display: block;\n    cursor: pointer;\n    position: relative;\n    outline: none;\n    border: 0;\n    padding: 0;\n    width: 20px;\n    height: 30px;\n    text-indent: 20px; // hide text using text-indent trick, using width value (it's enough)\n    white-space: nowrap;\n    overflow: hidden;\n    background-color: transparent;\n    background-position: center center;\n    background-repeat: no-repeat;\n    background-size: 75% 75%;\n    opacity: .5;\n    *position: absolute;\n    *top: 0;\n\n    &:hover {\n        opacity: 1;\n    }\n\n    &.is-disabled {\n        cursor: default;\n        opacity: .2;\n    }\n}\n\n.pika-prev,\n.is-rtl .pika-next {\n    float: left;\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');\n    *left: 0;\n}\n\n.pika-next,\n.is-rtl .pika-prev {\n    float: right;\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');\n    *right: 0;\n}\n\n.pika-select {\n    display: inline-block;\n    *display: inline;\n}\n\n.pika-table {\n    width: 100%;\n    border-collapse: collapse;\n    border-spacing: 0;\n    border: 0;\n\n    th,\n    td {\n        width: 14.285714285714286%;\n        padding: 0;\n    }\n\n    th {\n        color: $pd-th-color;\n        font-size: 12px;\n        line-height: 25px;\n        font-weight: bold;\n        text-align: center;\n    }\n\n    abbr {\n        border-bottom: none;\n        cursor: help;\n    }\n}\n\n.pika-button {\n    cursor: pointer;\n    display: block;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    outline: none;\n    border: 0;\n    margin: 0;\n    width: 100%;\n    padding: 5px;\n    color: $pd-day-color;\n    font-size: 12px;\n    line-height: 15px;\n    text-align: right;\n    background: $pd-day-bg;\n\n    .is-today & {\n        color: $pd-day-today-color;\n        font-weight: bold;\n    }\n\n    .is-selected & {\n        color: $pd-day-selected-color;\n        font-weight: bold;\n        background: $pd-day-selected-bg;\n        box-shadow: inset 0 1px 3px $pd-day-selected-shadow;\n        border-radius: 3px;\n    }\n\n    .is-disabled &,\n    .is-outside-current-month & {        \n        color: $pd-day-disabled-color;\n        opacity: .3;\n    }\n\n    .is-disabled & {\n        pointer-events: none;\n        cursor: default;\n    }\n\n    &:hover {\n        color: $pd-day-hover-color;\n        background: $pd-day-hover-bg;\n        box-shadow: none;\n        border-radius: 3px;\n    }\n\n    .is-selection-disabled {\n        pointer-events: none;\n        cursor: default;\n    }\n}\n\n.pika-week {\n    font-size: 11px;\n    color: $pd-week-color;\n}\n\n.is-inrange .pika-button {\n    background: #D5E9F7;\n}\n\n.is-startrange .pika-button {\n    color: #fff;\n    background: #6CB31D;\n    box-shadow: none;\n    border-radius: 3px;\n}\n\n.is-endrange .pika-button {\n    color: #fff;\n    background: #33aaff;\n    box-shadow: none;\n    border-radius: 3px;\n}"),
74
        }
75
        file9 := &embedded.EmbeddedFile{
76
                Filename:    "variables.scss",
77
                FileModTime: time.Unix(1537914115, 0),
78
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*    Index Page      */\n$background-color: #fcfcfc;\n$max-width: 860px;\n$title-color: #464646;\n$description-color: #939393;\n\n/*    Status Container   */\n$service-background: #ffffff;\n$service-border: 1px solid rgba(0,0,0,.125);\n$service-title: #444444;\n$service-stats-color: #4f4f4f;\n$service-description-color: #fff;\n$service-stats-size: 2.3rem;\n\n/*    Button Colors      */\n$success-color: #47d337;\n$danger-color: #dd3545;\n$primary-color: #3e9bff;\n\n/*   Footer Settings   */\n$footer-text-color: #8d8d8d;\n$nav-tab-color: #13a00d;\n$footer-display: block;\n\n/*   Global Settings */\n$global-border-radius: 0.2rem;\n\n\n/*   Mobile Settings   */\n$sm-background-color: #fcfcfc;\n$sm-border-radius: 0rem;\n\n/*   Mobile Service Container   */\n$sm-service-background: #ffffff;\n$sm-padding: 0;\n$sm-service-stats-size: 1.5rem;\n"),
79
        }
80
81
        // define dirs
82
        dir5 := &embedded.EmbeddedDir{
83
                Filename:   "",
84
                DirModTime: time.Unix(1538012168, 0),
85
                ChildFiles: []*embedded.EmbeddedFile{
86
                        file6, // "base.scss"
87
                        file7, // "mobile.scss"
88
                        file8, // "pikaday.scss"
89
                        file9, // "variables.scss"
90
91
                },
92
        }
93
94
        // link ChildDirs
95
        dir5.ChildDirs = []*embedded.EmbeddedDir{}
96
97
        // register embeddedBox
98
        embedded.RegisterEmbeddedBox(`scss`, &embedded.EmbeddedBox{
99
                Name: `scss`,
100
                Time: time.Unix(1538012168, 0),
101
                Dirs: map[string]*embedded.EmbeddedDir{
102
                        "": dir5,
103
                },
104
                Files: map[string]*embedded.EmbeddedFile{
105
                        "base.scss":      file6,
106
                        "mobile.scss":    file7,
107
                        "pikaday.scss":   file8,
108
                        "variables.scss": file9,
109
                },
110
        })
111
}
112
113
func init() {
114
115
        // define files
116
        fileb := &embedded.EmbeddedFile{
117
                Filename:    "Chart.bundle.min.js",
118
                FileModTime: time.Unix(1537914115, 0),
119
                Content:     string("/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.2\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,i,n){function a(o,s){if(!i[o]){if(!e[o]){var l=\"function\"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var u=new Error(\"Cannot find module '\"+o+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var d=i[o]={exports:{}};e[o][0].call(d.exports,function(t){var i=e[o][1][t];return a(i||t)},d,d.exports,t,e,i,n)}return i[o].exports}for(var r=\"function\"==typeof require&&require,o=0;o<n.length;o++)a(n[o]);return a}({1:[function(t,e,i){var n=t(5);function a(t){if(t){var e=[0,0,0],i=1,a=t.match(/^#([a-fA-F0-9]{3})$/i);if(a){a=a[1];for(var r=0;r<e.length;r++)e[r]=parseInt(a[r]+a[r],16)}else if(a=t.match(/^#([a-fA-F0-9]{6})$/i)){a=a[1];for(r=0;r<e.length;r++)e[r]=parseInt(a.slice(2*r,2*r+2),16)}else if(a=t.match(/^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i)){for(r=0;r<e.length;r++)e[r]=parseInt(a[r+1]);i=parseFloat(a[4])}else if(a=t.match(/^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i)){for(r=0;r<e.length;r++)e[r]=Math.round(2.55*parseFloat(a[r+1]));i=parseFloat(a[4])}else if(a=t.match(/(\\w+)/)){if(\"transparent\"==a[1])return[0,0,0,0];if(!(e=n[a[1]]))return}for(r=0;r<e.length;r++)e[r]=d(e[r],0,255);return i=i||0==i?d(i,0,1):1,e[3]=i,e}}function r(t){if(t){var e=t.match(/^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),\"rgba(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+e+\")\"}function l(t,e){return\"rgba(\"+Math.round(t[0]/255*100)+\"%, \"+Math.round(t[1]/255*100)+\"%, \"+Math.round(t[2]/255*100)+\"%, \"+(e||t[3]||1)+\")\"}function u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),\"hsla(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%, \"+e+\")\"}function d(t,e,i){return Math.min(Math.max(e,t),i)}function h(t){var e=t.toString(16).toUpperCase();return e.length<2?\"0\"+e:e}e.exports={getRgba:a,getHsla:r,getRgb:function(t){var e=a(t);return e&&e.slice(0,3)},getHsl:function(t){var e=r(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=a(t);{if(e)return e[3];if(e=r(t))return e[3];if(e=o(t))return e[3]}},hexString:function(t){return\"#\"+h(t[0])+h(t[1])+h(t[2])},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return s(t,e);return\"rgb(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},rgbaString:s,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return l(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return\"rgb(\"+i+\"%, \"+n+\"%, \"+a+\"%)\"},percentaString:l,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return u(t,e);return\"hsl(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%)\"},hslaString:u,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return\"hwb(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%\"+(void 0!==e&&1!==e?\", \"+e:\"\")+\")\"},keyword:function(t){return c[t.slice(0,3)]}};var c={};for(var f in n)c[n[f]]=f},{5:5}],2:[function(t,e,i){var n=t(4),a=t(1),r=function(t){return t instanceof r?t:this instanceof r?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void(\"string\"==typeof t?(e=a.getRgba(t))?this.setValues(\"rgb\",e):(e=a.getHsla(t))?this.setValues(\"hsl\",e):(e=a.getHwb(t))&&this.setValues(\"hwb\",e):\"object\"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues(\"rgb\",e):void 0!==e.l||void 0!==e.lightness?this.setValues(\"hsl\",e):void 0!==e.v||void 0!==e.value?this.setValues(\"hsv\",e):void 0!==e.w||void 0!==e.whiteness?this.setValues(\"hwb\",e):void 0===e.c&&void 0===e.cyan||this.setValues(\"cmyk\",e)))):new r(t);var e};r.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace(\"rgb\",arguments)},hsl:function(){return this.setSpace(\"hsl\",arguments)},hsv:function(){return this.setSpace(\"hsv\",arguments)},hwb:function(){return this.setSpace(\"hwb\",arguments)},cmyk:function(){return this.setSpace(\"cmyk\",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues(\"alpha\",t),this)},red:function(t){return this.setChannel(\"rgb\",0,t)},green:function(t){return this.setChannel(\"rgb\",1,t)},blue:function(t){return this.setChannel(\"rgb\",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel(\"hsl\",0,t)},saturation:function(t){return this.setChannel(\"hsl\",1,t)},lightness:function(t){return this.setChannel(\"hsl\",2,t)},saturationv:function(t){return this.setChannel(\"hsv\",1,t)},whiteness:function(t){return this.setChannel(\"hwb\",1,t)},blackness:function(t){return this.setChannel(\"hwb\",2,t)},value:function(t){return this.setChannel(\"hsv\",2,t)},cyan:function(t){return this.setChannel(\"cmyk\",0,t)},magenta:function(t){return this.setChannel(\"cmyk\",1,t)},yellow:function(t){return this.setChannel(\"cmyk\",2,t)},black:function(t){return this.setChannel(\"cmyk\",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?\"AAA\":e>=4.5?\"AA\":\"\"},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues(\"rgb\",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues(\"hsl\",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues(\"hsl\",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues(\"hsl\",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues(\"hsl\",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues(\"hwb\",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues(\"hwb\",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues(\"rgb\",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues(\"hsl\",e),this},mix:function(t,e){var i=this,n=t,a=void 0===e?.5:e,r=2*a-1,o=i.alpha()-n.alpha(),s=((r*o==-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return this.rgb(s*i.red()+l*n.red(),s*i.green()+l*n.green(),s*i.blue()+l*n.blue()).alpha(i.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new r,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],\"[object Array]\"===(e={}.toString.call(t))?a[o]=t.slice(0):\"[object Number]\"===e?a[o]=t:console.error(\"unexpected color value:\",t));return i}},r.prototype.spaces={rgb:[\"red\",\"green\",\"blue\"],hsl:[\"hue\",\"saturation\",\"lightness\"],hsv:[\"hue\",\"saturation\",\"value\"],hwb:[\"hue\",\"whiteness\",\"blackness\"],cmyk:[\"cyan\",\"magenta\",\"yellow\",\"black\"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},r.prototype.setValues=function(t,e){var i,a,r=this.values,o=this.spaces,s=this.maxes,l=1;if(this.valid=!0,\"alpha\"===t)l=e;else if(e.length)r[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)r[t][i]=e[t.charAt(i)];l=e.a}else if(void 0!==e[o[t][0]]){var u=o[t];for(i=0;i<t.length;i++)r[t][i]=e[u[i]];l=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===l?r.alpha:l)),\"alpha\"===t)return!1;for(i=0;i<t.length;i++)a=Math.max(0,Math.min(s[t][i],r[t][i])),r[t][i]=Math.round(a);for(var d in o)d!==t&&(r[d]=n[t][d](r[t]));return!0},r.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):(\"number\"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},r.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:i===n[e]?this:(n[e]=i,this.setValues(t,n),this)},\"undefined\"!=typeof window&&(window.Color=r),e.exports=r},{1:1,4:4}],3:[function(t,e,i){function n(t){var e,i,n=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(o+s)/2,[e,100*(s==o?0:i<=.5?l/(s+o):l/(2-s-o)),100*i]}function a(t){var e,i,n=t[0],a=t[1],r=t[2],o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return i=0==s?0:l/s*1e3/10,s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function o(t){var e=t[0],i=t[1],a=t[2];return[n(t)[0],100*(1/255*Math.min(e,Math.min(i,a))),100*(a=1-1/255*Math.max(e,Math.max(i,a)))]}function s(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=u(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function h(t){var e,i,n,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=o+1/3*-(u-1))<0&&n++,n>1&&n--,r=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*r;return a}function c(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*n*(1-i),s=255*n*(1-i*r),l=255*n*(1-i*(1-r));n*=255;switch(a){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}}function f(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function m(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,r=t[1]/100,o=t[2]/100;return i=-.9689*a+1.8758*r+.0415*o,n=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function v(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function y(t){var e,i,n,a,r=t[0],o=t[1],s=t[2];return r<=8?a=(i=100*r/903.3)/100*7.787+16/116:(i=100*Math.pow((r+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function _(t){return p(y(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}e.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:h,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return o(h(t))},hsl2cmyk:function(t){return s(h(t))},hsl2keyword:function(t){return l(h(t))},hsv2rgb:c,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,r=t[2]/100;return e=a*r,[n,100*(e=(e/=(i=(2-a)*r)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return o(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return l(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:m,cmyk2hsl:function(t){return n(m(t))},cmyk2hsv:function(t){return a(m(t))},cmyk2hwb:function(t){return o(m(t))},cmyk2keyword:function(t){return l(m(t))},keyword2rgb:w,keyword2hsl:function(t){return n(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:p,xyz2lab:v,xyz2lch:function(t){return x(v(t))},lab2xyz:y,lab2rgb:_,lab2lch:x,lch2lab:k,lch2xyz:function(t){return y(k(t))},lch2rgb:function(t){return _(k(t))}};var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},S={};for(var D in M)S[JSON.stringify(M[D])]=D},{}],4:[function(t,e,i){var n=t(3),a=function(){return new u};for(var r in n){a[r+\"Raw\"]=function(t){return function(e){return\"number\"==typeof e&&(e=Array.prototype.slice.call(arguments)),n[t](e)}}(r);var o=/(\\w+)2(\\w+)/.exec(r),s=o[1],l=o[2];(a[s]=a[s]||{})[l]=a[r]=function(t){return function(e){\"number\"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=n[t](e);if(\"string\"==typeof i||void 0===i)return i;for(var a=0;a<i.length;a++)i[a]=Math.round(i[a]);return i}}(r)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):(\"number\"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=a[i][t](n),this.convs[t]=e}return e},[\"rgb\",\"hsl\",\"hsv\",\"cmyk\",\"keyword\"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{3:3}],5:[function(t,e,i){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],6:[function(t,e,i){var n,a;n=this,a=function(){\"use strict\";var i,n;function a(){return i.apply(null,arguments)}function r(t){return t instanceof Array||\"[object Array]\"===Object.prototype.toString.call(t)}function o(t){return null!=t&&\"[object Object]\"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function l(t){return\"number\"==typeof t||\"[object Number]\"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||\"[object Date]\"===Object.prototype.toString.call(t)}function d(t,e){var i,n=[];for(i=0;i<t.length;++i)n.push(e(t[i],i));return n}function h(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t,e){for(var i in e)h(e,i)&&(t[i]=e[i]);return h(e,\"toString\")&&(t.toString=e.toString),h(e,\"valueOf\")&&(t.valueOf=e.valueOf),t}function f(t,e,i,n){return Pe(t,e,i,n,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function m(t){if(null==t._isValid){var e=g(t),i=n.call(e.parsedDateParts,function(t){return null!=t}),a=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function p(t){var e=f(NaN);return null!=t?c(g(e),t):g(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,n=0;n<i;n++)if(n in e&&t.call(this,e[n],n,e))return!0;return!1};var v=a.momentProperties=[];function y(t,e){var i,n,a;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=g(e)),s(e._locale)||(t._locale=e._locale),v.length>0)for(i=0;i<v.length;i++)s(a=e[n=v[i]])||(t[n]=a);return t}var b=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,a.updateOffset(this),b=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function k(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=k(e)),i}function M(t,e,i){var n,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(n=0;n<a;n++)(i&&t[n]!==e[n]||!i&&w(t[n])!==w(e[n]))&&o++;return o+r}function S(t){!1===a.suppressDeprecationWarnings&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+t)}function D(t,e){var i=!0;return c(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,t),i){for(var n,r=[],o=0;o<arguments.length;o++){if(n=\"\",\"object\"==typeof arguments[o]){for(var s in n+=\"\\n[\"+o+\"] \",arguments[0])n+=s+\": \"+arguments[0][s]+\", \";n=n.slice(0,-2)}else n=arguments[o];r.push(n)}S(t+\"\\nArguments: \"+Array.prototype.slice.call(r).join(\"\")+\"\\n\"+(new Error).stack),i=!1}return e.apply(this,arguments)},e)}var C,P={};function T(t,e){null!=a.deprecationHandler&&a.deprecationHandler(t,e),P[t]||(S(e),P[t]=!0)}function O(t){return t instanceof Function||\"[object Function]\"===Object.prototype.toString.call(t)}function I(t,e){var i,n=c({},t);for(i in e)h(e,i)&&(o(t[i])&&o(e[i])?(n[i]={},c(n[i],t[i]),c(n[i],e[i])):null!=e[i]?n[i]=e[i]:delete n[i]);for(i in t)h(t,i)&&!h(e,i)&&o(t[i])&&(n[i]=c({},n[i]));return n}function A(t){null!=t&&this.set(t)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,C=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)h(t,e)&&i.push(e);return i};var F={};function R(t,e){var i=t.toLowerCase();F[i]=F[i+\"s\"]=F[e]=t}function L(t){return\"string\"==typeof t?F[t]||F[t.toLowerCase()]:void 0}function W(t){var e,i,n={};for(i in t)h(t,i)&&(e=L(i))&&(n[e]=t[i]);return n}var Y={};function N(t,e){Y[t]=e}function z(t,e,i){var n=\"\"+Math.abs(t),a=e-n.length;return(t>=0?i?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,a)).toString().substr(1)+n}var H=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},E={};function j(t,e,i,n){var a=n;\"string\"==typeof n&&(a=function(){return this[n]()}),t&&(E[t]=a),e&&(E[e[0]]=function(){return z(a.apply(this,arguments),e[1],e[2])}),i&&(E[i]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=q(e,t.localeData()),B[e]=B[e]||function(t){var e,i,n,a=t.match(H);for(e=0,i=a.length;e<i;e++)E[a[e]]?a[e]=E[a[e]]:a[e]=(n=a[e]).match(/\\[[\\s\\S]/)?n.replace(/^\\[|\\]$/g,\"\"):n.replace(/\\\\/g,\"\");return function(e){var n,r=\"\";for(n=0;n<i;n++)r+=O(a[n])?a[n].call(e,t):a[n];return r}}(e),B[e](t)):t.localeData().invalidDate()}function q(t,e){var i=5;function n(t){return e.longDateFormat(t)||t}for(V.lastIndex=0;i>=0&&V.test(t);)t=t.replace(V,n),V.lastIndex=0,i-=1;return t}var G=/\\d/,Z=/\\d\\d/,X=/\\d{3}/,J=/\\d{4}/,K=/[+-]?\\d{6}/,$=/\\d\\d?/,Q=/\\d\\d\\d\\d?/,tt=/\\d\\d\\d\\d\\d\\d?/,et=/\\d{1,3}/,it=/\\d{1,4}/,nt=/[+-]?\\d{1,6}/,at=/\\d+/,rt=/[+-]?\\d+/,ot=/Z|[+-]\\d\\d:?\\d\\d/gi,st=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,lt=/[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,ut={};function dt(t,e,i){ut[t]=O(e)?e:function(t,n){return t&&i?i:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ct(t.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(t,e,i,n,a){return e||i||n||a})))}function ct(t){return t.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var ft={};function gt(t,e){var i,n=e;for(\"string\"==typeof t&&(t=[t]),l(e)&&(n=function(t,i){i[e]=w(t)}),i=0;i<t.length;i++)ft[t[i]]=n}function mt(t,e){gt(t,function(t,i,n,a){n._w=n._w||{},e(t,n._w,n,a)})}var pt=0,vt=1,yt=2,bt=3,xt=4,_t=5,kt=6,wt=7,Mt=8;function St(t){return Dt(t)?366:365}function Dt(t){return t%4==0&&t%100!=0||t%400==0}j(\"Y\",0,0,function(){var t=this.year();return t<=9999?\"\"+t:\"+\"+t}),j(0,[\"YY\",2],0,function(){return this.year()%100}),j(0,[\"YYYY\",4],0,\"year\"),j(0,[\"YYYYY\",5],0,\"year\"),j(0,[\"YYYYYY\",6,!0],0,\"year\"),R(\"year\",\"y\"),N(\"year\",1),dt(\"Y\",rt),dt(\"YY\",$,Z),dt(\"YYYY\",it,J),dt(\"YYYYY\",nt,K),dt(\"YYYYYY\",nt,K),gt([\"YYYYY\",\"YYYYYY\"],pt),gt(\"YYYY\",function(t,e){e[pt]=2===t.length?a.parseTwoDigitYear(t):w(t)}),gt(\"YY\",function(t,e){e[pt]=a.parseTwoDigitYear(t)}),gt(\"Y\",function(t,e){e[pt]=parseInt(t,10)}),a.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var Ct,Pt=Tt(\"FullYear\",!0);function Tt(t,e){return function(i){return null!=i?(It(this,t,i),a.updateOffset(this,e),this):Ot(this,t)}}function Ot(t,e){return t.isValid()?t._d[\"get\"+(t._isUTC?\"UTC\":\"\")+e]():NaN}function It(t,e,i){t.isValid()&&!isNaN(i)&&(\"FullYear\"===e&&Dt(t.year())&&1===t.month()&&29===t.date()?t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+e](i,t.month(),At(i,t.month())):t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+e](i))}function At(t,e){if(isNaN(t)||isNaN(e))return NaN;var i,n=(e%(i=12)+i)%i;return t+=(e-n)/12,1===n?Dt(t)?29:28:31-n%7%2}Ct=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},j(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),j(\"MMM\",0,0,function(t){return this.localeData().monthsShort(this,t)}),j(\"MMMM\",0,0,function(t){return this.localeData().months(this,t)}),R(\"month\",\"M\"),N(\"month\",8),dt(\"M\",$),dt(\"MM\",$,Z),dt(\"MMM\",function(t,e){return e.monthsShortRegex(t)}),dt(\"MMMM\",function(t,e){return e.monthsRegex(t)}),gt([\"M\",\"MM\"],function(t,e){e[vt]=w(t)-1}),gt([\"MMM\",\"MMMM\"],function(t,e,i,n){var a=i._locale.monthsParse(t,n,i._strict);null!=a?e[vt]=a:g(i).invalidMonth=t});var Ft=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,Rt=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");var Lt=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function Wt(t,e){var i;if(!t.isValid())return t;if(\"string\"==typeof e)if(/^\\d+$/.test(e))e=w(e);else if(!l(e=t.localeData().monthsParse(e)))return t;return i=Math.min(t.date(),At(t.year(),e)),t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+\"Month\"](e,i),t}function Yt(t){return null!=t?(Wt(this,t),a.updateOffset(this,!0),this):Ot(this,\"Month\")}var Nt=lt;var zt=lt;function Ht(){function t(t,e){return e.length-t.length}var e,i,n=[],a=[],r=[];for(e=0;e<12;e++)i=f([2e3,e]),n.push(this.monthsShort(i,\"\")),a.push(this.months(i,\"\")),r.push(this.months(i,\"\")),r.push(this.monthsShort(i,\"\"));for(n.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)n[e]=ct(n[e]),a[e]=ct(a[e]);for(e=0;e<24;e++)r[e]=ct(r[e]);this._monthsRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+n.join(\"|\")+\")\",\"i\")}function Vt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Bt(t,e,i){var n=7+e-i;return-((7+Vt(t,0,n).getUTCDay()-e)%7)+n-1}function Et(t,e,i,n,a){var r,o,s=1+7*(e-1)+(7+i-n)%7+Bt(t,n,a);return s<=0?o=St(r=t-1)+s:s>St(t)?(r=t+1,o=s-St(t)):(r=t,o=s),{year:r,dayOfYear:o}}function jt(t,e,i){var n,a,r=Bt(t.year(),e,i),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?n=o+Ut(a=t.year()-1,e,i):o>Ut(t.year(),e,i)?(n=o-Ut(t.year(),e,i),a=t.year()+1):(a=t.year(),n=o),{week:n,year:a}}function Ut(t,e,i){var n=Bt(t,e,i),a=Bt(t+1,e,i);return(St(t)-n+a)/7}j(\"w\",[\"ww\",2],\"wo\",\"week\"),j(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),R(\"week\",\"w\"),R(\"isoWeek\",\"W\"),N(\"week\",5),N(\"isoWeek\",5),dt(\"w\",$),dt(\"ww\",$,Z),dt(\"W\",$),dt(\"WW\",$,Z),mt([\"w\",\"ww\",\"W\",\"WW\"],function(t,e,i,n){e[n.substr(0,1)]=w(t)});j(\"d\",0,\"do\",\"day\"),j(\"dd\",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),j(\"ddd\",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),j(\"dddd\",0,0,function(t){return this.localeData().weekdays(this,t)}),j(\"e\",0,0,\"weekday\"),j(\"E\",0,0,\"isoWeekday\"),R(\"day\",\"d\"),R(\"weekday\",\"e\"),R(\"isoWeekday\",\"E\"),N(\"day\",11),N(\"weekday\",11),N(\"isoWeekday\",11),dt(\"d\",$),dt(\"e\",$),dt(\"E\",$),dt(\"dd\",function(t,e){return e.weekdaysMinRegex(t)}),dt(\"ddd\",function(t,e){return e.weekdaysShortRegex(t)}),dt(\"dddd\",function(t,e){return e.weekdaysRegex(t)}),mt([\"dd\",\"ddd\",\"dddd\"],function(t,e,i,n){var a=i._locale.weekdaysParse(t,n,i._strict);null!=a?e.d=a:g(i).invalidWeekday=t}),mt([\"d\",\"e\",\"E\"],function(t,e,i,n){e[n]=w(t)});var qt=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");var Gt=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");var Zt=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");var Xt=lt;var Jt=lt;var Kt=lt;function $t(){function t(t,e){return e.length-t.length}var e,i,n,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)i=f([2e3,1]).day(e),n=this.weekdaysMin(i,\"\"),a=this.weekdaysShort(i,\"\"),r=this.weekdays(i,\"\"),o.push(n),s.push(a),l.push(r),u.push(n),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ct(s[e]),l[e]=ct(l[e]),u[e]=ct(u[e]);this._weekdaysRegex=new RegExp(\"^(\"+u.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+l.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+s.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\")}function Qt(){return this.hours()%12||12}function te(t,e){j(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ee(t,e){return e._meridiemParse}j(\"H\",[\"HH\",2],0,\"hour\"),j(\"h\",[\"hh\",2],0,Qt),j(\"k\",[\"kk\",2],0,function(){return this.hours()||24}),j(\"hmm\",0,0,function(){return\"\"+Qt.apply(this)+z(this.minutes(),2)}),j(\"hmmss\",0,0,function(){return\"\"+Qt.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),j(\"Hmm\",0,0,function(){return\"\"+this.hours()+z(this.minutes(),2)}),j(\"Hmmss\",0,0,function(){return\"\"+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),te(\"a\",!0),te(\"A\",!1),R(\"hour\",\"h\"),N(\"hour\",13),dt(\"a\",ee),dt(\"A\",ee),dt(\"H\",$),dt(\"h\",$),dt(\"k\",$),dt(\"HH\",$,Z),dt(\"hh\",$,Z),dt(\"kk\",$,Z),dt(\"hmm\",Q),dt(\"hmmss\",tt),dt(\"Hmm\",Q),dt(\"Hmmss\",tt),gt([\"H\",\"HH\"],bt),gt([\"k\",\"kk\"],function(t,e,i){var n=w(t);e[bt]=24===n?0:n}),gt([\"a\",\"A\"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),gt([\"h\",\"hh\"],function(t,e,i){e[bt]=w(t),g(i).bigHour=!0}),gt(\"hmm\",function(t,e,i){var n=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n)),g(i).bigHour=!0}),gt(\"hmmss\",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(a)),g(i).bigHour=!0}),gt(\"Hmm\",function(t,e,i){var n=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n))}),gt(\"Hmmss\",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(a))});var ie,ne=Tt(\"Hours\",!0),ae={calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},longDateFormat:{LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:/\\d{1,2}/,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},months:Rt,monthsShort:Lt,week:{dow:0,doy:6},weekdays:qt,weekdaysMin:Zt,weekdaysShort:Gt,meridiemParse:/[ap]\\.?m?\\.?/i},re={},oe={};function se(t){return t?t.toLowerCase().replace(\"_\",\"-\"):t}function le(i){var n=null;if(!re[i]&&void 0!==e&&e&&e.exports)try{n=ie._abbr,t(\"./locale/\"+i),ue(n)}catch(t){}return re[i]}function ue(t,e){var i;return t&&(i=s(e)?he(t):de(t,e))&&(ie=i),ie._abbr}function de(t,e){if(null!==e){var i=ae;if(e.abbr=t,null!=re[t])T(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),i=re[t]._config;else if(null!=e.parentLocale){if(null==re[e.parentLocale])return oe[e.parentLocale]||(oe[e.parentLocale]=[]),oe[e.parentLocale].push({name:t,config:e}),null;i=re[e.parentLocale]._config}return re[t]=new A(I(i,e)),oe[t]&&oe[t].forEach(function(t){de(t.name,t.config)}),ue(t),re[t]}return delete re[t],null}function he(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ie;if(!r(t)){if(e=le(t))return e;t=[t]}return function(t){for(var e,i,n,a,r=0;r<t.length;){for(e=(a=se(t[r]).split(\"-\")).length,i=(i=se(t[r+1]))?i.split(\"-\"):null;e>0;){if(n=le(a.slice(0,e).join(\"-\")))return n;if(i&&i.length>=e&&M(a,i,!0)>=e-1)break;e--}r++}return null}(t)}function ce(t){var e,i=t._a;return i&&-2===g(t).overflow&&(e=i[vt]<0||i[vt]>11?vt:i[yt]<1||i[yt]>At(i[pt],i[vt])?yt:i[bt]<0||i[bt]>24||24===i[bt]&&(0!==i[xt]||0!==i[_t]||0!==i[kt])?bt:i[xt]<0||i[xt]>59?xt:i[_t]<0||i[_t]>59?_t:i[kt]<0||i[kt]>999?kt:-1,g(t)._overflowDayOfYear&&(e<pt||e>yt)&&(e=yt),g(t)._overflowWeeks&&-1===e&&(e=wt),g(t)._overflowWeekday&&-1===e&&(e=Mt),g(t).overflow=e),t}function fe(t,e,i){return null!=t?t:null!=e?e:i}function ge(t){var e,i,n,r,o,s=[];if(!t._d){var l,u;for(l=t,u=new Date(a.now()),n=l._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],t._w&&null==t._a[yt]&&null==t._a[vt]&&function(t){var e,i,n,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,i=fe(e.GG,t._a[pt],jt(Te(),1,4).year),n=fe(e.W,1),((a=fe(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=jt(Te(),r,o);i=fe(e.gg,t._a[pt],u.year),n=fe(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}n<1||n>Ut(i,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=Et(i,n,a,r,o),t._a[pt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=fe(t._a[pt],n[pt]),(t._dayOfYear>St(o)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),i=Vt(o,0,t._dayOfYear),t._a[vt]=i.getUTCMonth(),t._a[yt]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=n[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[bt]&&0===t._a[xt]&&0===t._a[_t]&&0===t._a[kt]&&(t._nextDay=!0,t._a[bt]=0),t._d=(t._useUTC?Vt:function(t,e,i,n,a,r,o){var s=new Date(t,e,i,n,a,r,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[bt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(g(t).weekdayMismatch=!0)}}var me=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,pe=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,ve=/Z|[+-]\\d\\d(?::?\\d\\d)?/,ye=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],be=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],xe=/^\\/?Date\\((\\-?\\d+)/i;function _e(t){var e,i,n,a,r,o,s=t._i,l=me.exec(s)||pe.exec(s);if(l){for(g(t).iso=!0,e=0,i=ye.length;e<i;e++)if(ye[e][1].exec(l[1])){a=ye[e][0],n=!1!==ye[e][2];break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,i=be.length;e<i;e++)if(be[e][1].exec(l[3])){r=(l[2]||\" \")+be[e][0];break}if(null==r)return void(t._isValid=!1)}if(!n&&null!=r)return void(t._isValid=!1);if(l[4]){if(!ve.exec(l[4]))return void(t._isValid=!1);o=\"Z\"}t._f=a+(r||\"\")+(o||\"\"),De(t)}else t._isValid=!1}var ke=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function we(t,e,i,n,a,r){var o=[function(t){var e=parseInt(t,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(t),Lt.indexOf(e),parseInt(i,10),parseInt(n,10),parseInt(a,10)];return r&&o.push(parseInt(r,10)),o}var Me={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Se(t){var e,i,n,a=ke.exec(t._i.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").trim());if(a){var r=we(a[4],a[3],a[2],a[5],a[6],a[7]);if(e=a[1],i=r,n=t,e&&Gt.indexOf(e)!==new Date(i[0],i[1],i[2]).getDay()&&(g(n).weekdayMismatch=!0,n._isValid=!1,1))return;t._a=r,t._tzm=function(t,e,i){if(t)return Me[t];if(e)return 0;var n=parseInt(i,10),a=n%100;return(n-a)/100*60+a}(a[8],a[9],a[10]),t._d=Vt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function De(t){if(t._f!==a.ISO_8601)if(t._f!==a.RFC_2822){t._a=[],g(t).empty=!0;var e,i,n,r,o,s,l,u,d=\"\"+t._i,c=d.length,f=0;for(n=q(t._f,t._locale).match(H)||[],e=0;e<n.length;e++)r=n[e],(i=(d.match(ht(r,t))||[])[0])&&((o=d.substr(0,d.indexOf(i))).length>0&&g(t).unusedInput.push(o),d=d.slice(d.indexOf(i)+i.length),f+=i.length),E[r]?(i?g(t).empty=!1:g(t).unusedTokens.push(r),s=r,u=t,null!=(l=i)&&h(ft,s)&&ft[s](l,u._a,u,s)):t._strict&&!i&&g(t).unusedTokens.push(r);g(t).charsLeftOver=c-f,d.length>0&&g(t).unusedInput.push(d),t._a[bt]<=12&&!0===g(t).bigHour&&t._a[bt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[bt]=function(t,e,i){var n;if(null==i)return e;return null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?((n=t.isPM(i))&&e<12&&(e+=12),n||12!==e||(e=0),e):e}(t._locale,t._a[bt],t._meridiem),ge(t),ce(t)}else Se(t);else _e(t)}function Ce(t){var e,i,n,h,f=t._i,v=t._f;return t._locale=t._locale||he(t._l),null===f||void 0===v&&\"\"===f?p({nullInput:!0}):(\"string\"==typeof f&&(t._i=f=t._locale.preparse(f)),_(f)?new x(ce(f)):(u(f)?t._d=f:r(v)?function(t){var e,i,n,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)r=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],De(e),m(e)&&(r+=g(e).charsLeftOver,r+=10*g(e).unusedTokens.length,g(e).score=r,(null==n||r<n)&&(n=r,i=e));c(t,i||e)}(t):v?De(t):s(i=(e=t)._i)?e._d=new Date(a.now()):u(i)?e._d=new Date(i.valueOf()):\"string\"==typeof i?(n=e,null===(h=xe.exec(n._i))?(_e(n),!1===n._isValid&&(delete n._isValid,Se(n),!1===n._isValid&&(delete n._isValid,a.createFromInputFallback(n)))):n._d=new Date(+h[1])):r(i)?(e._a=d(i.slice(0),function(t){return parseInt(t,10)}),ge(e)):o(i)?function(t){if(!t._d){var e=W(t._i);t._a=d([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),ge(t)}}(e):l(i)?e._d=new Date(i):a.createFromInputFallback(e),m(t)||(t._d=null),t))}function Pe(t,e,i,n,a){var s,l={};return!0!==i&&!1!==i||(n=i,i=void 0),(o(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||r(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=a,l._l=i,l._i=t,l._f=e,l._strict=n,(s=new x(ce(Ce(l))))._nextDay&&(s.add(1,\"d\"),s._nextDay=void 0),s}function Te(t,e,i,n){return Pe(t,e,i,n,!1)}a.createFromInputFallback=D(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(t){t._d=new Date(t._i+(t._useUTC?\" UTC\":\"\"))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Oe=D(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:p()}),Ie=D(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:p()});function Ae(t,e){var i,n;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Te();for(i=e[0],n=1;n<e.length;++n)e[n].isValid()&&!e[n][t](i)||(i=e[n]);return i}var Fe=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function Re(t){var e=W(t),i=e.year||0,n=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===Ct.call(Fe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var i=!1,n=0;n<Fe.length;++n)if(t[Fe[n]]){if(i)return!1;parseFloat(t[Fe[n]])!==w(t[Fe[n]])&&(i=!0)}return!0}(e),this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*n+12*i,this._data={},this._locale=he(),this._bubble()}function Le(t){return t instanceof Re}function We(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ye(t,e){j(t,0,0,function(){var t=this.utcOffset(),i=\"+\";return t<0&&(t=-t,i=\"-\"),i+z(~~(t/60),2)+e+z(~~t%60,2)})}Ye(\"Z\",\":\"),Ye(\"ZZ\",\"\"),dt(\"Z\",st),dt(\"ZZ\",st),gt([\"Z\",\"ZZ\"],function(t,e,i){i._useUTC=!0,i._tzm=ze(st,t)});var Ne=/([\\+\\-]|\\d\\d)/gi;function ze(t,e){var i=(e||\"\").match(t);if(null===i)return null;var n=((i[i.length-1]||[])+\"\").match(Ne)||[\"-\",0,0],a=60*n[1]+w(n[2]);return 0===a?0:\"+\"===n[0]?a:-a}function He(t,e){var i,n;return e._isUTC?(i=e.clone(),n=(_(t)||u(t)?t.valueOf():Te(t).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),a.updateOffset(i,!1),i):Te(t).local()}function Ve(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Be(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}a.updateOffset=function(){};var Ee=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,je=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ue(t,e){var i,n,a,r=t,o=null;return Le(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:l(t)?(r={},e?r[e]=t:r.milliseconds=t):(o=Ee.exec(t))?(i=\"-\"===o[1]?-1:1,r={y:0,d:w(o[yt])*i,h:w(o[bt])*i,m:w(o[xt])*i,s:w(o[_t])*i,ms:w(We(1e3*o[kt]))*i}):(o=je.exec(t))?(i=\"-\"===o[1]?-1:(o[1],1),r={y:qe(o[2],i),M:qe(o[3],i),w:qe(o[4],i),d:qe(o[5],i),h:qe(o[6],i),m:qe(o[7],i),s:qe(o[8],i)}):null==r?r={}:\"object\"==typeof r&&(\"from\"in r||\"to\"in r)&&(a=function(t,e){var i;if(!t.isValid()||!e.isValid())return{milliseconds:0,months:0};e=He(e,t),t.isBefore(e)?i=Ge(t,e):((i=Ge(e,t)).milliseconds=-i.milliseconds,i.months=-i.months);return i}(Te(r.from),Te(r.to)),(r={}).ms=a.milliseconds,r.M=a.months),n=new Re(r),Le(t)&&h(t,\"_locale\")&&(n._locale=t._locale),n}function qe(t,e){var i=t&&parseFloat(t.replace(\",\",\".\"));return(isNaN(i)?0:i)*e}function Ge(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,\"M\").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,\"M\"),i}function Ze(t,e){return function(i,n){var a;return null===n||isNaN(+n)||(T(e,\"moment().\"+e+\"(period, number) is deprecated. Please use moment().\"+e+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),a=i,i=n,n=a),Xe(this,Ue(i=\"string\"==typeof i?+i:i,n),t),this}}function Xe(t,e,i,n){var r=e._milliseconds,o=We(e._days),s=We(e._months);t.isValid()&&(n=null==n||n,s&&Wt(t,Ot(t,\"Month\")+s*i),o&&It(t,\"Date\",Ot(t,\"Date\")+o*i),r&&t._d.setTime(t._d.valueOf()+r*i),n&&a.updateOffset(t,o||s))}Ue.fn=Re.prototype,Ue.invalid=function(){return Ue(NaN)};var Je=Ze(1,\"add\"),Ke=Ze(-1,\"subtract\");function $e(t,e){var i=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(i,\"months\");return-(i+(e-n<0?(e-n)/(n-t.clone().add(i-1,\"months\")):(e-n)/(t.clone().add(i+1,\"months\")-n)))||0}function Qe(t){var e;return void 0===t?this._locale._abbr:(null!=(e=he(t))&&(this._locale=e),this)}a.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",a.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var ti=D(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(t){return void 0===t?this.localeData():this.locale(t)});function ei(){return this._locale}function ii(t,e){j(0,[t,t.length],0,e)}function ni(t,e,i,n,a){var r;return null==t?jt(this,n,a).year:(e>(r=Ut(t,n,a))&&(e=r),function(t,e,i,n,a){var r=Et(t,e,i,n,a),o=Vt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,i,n,a))}j(0,[\"gg\",2],0,function(){return this.weekYear()%100}),j(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),ii(\"gggg\",\"weekYear\"),ii(\"ggggg\",\"weekYear\"),ii(\"GGGG\",\"isoWeekYear\"),ii(\"GGGGG\",\"isoWeekYear\"),R(\"weekYear\",\"gg\"),R(\"isoWeekYear\",\"GG\"),N(\"weekYear\",1),N(\"isoWeekYear\",1),dt(\"G\",rt),dt(\"g\",rt),dt(\"GG\",$,Z),dt(\"gg\",$,Z),dt(\"GGGG\",it,J),dt(\"gggg\",it,J),dt(\"GGGGG\",nt,K),dt(\"ggggg\",nt,K),mt([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(t,e,i,n){e[n.substr(0,2)]=w(t)}),mt([\"gg\",\"GG\"],function(t,e,i,n){e[n]=a.parseTwoDigitYear(t)}),j(\"Q\",0,\"Qo\",\"quarter\"),R(\"quarter\",\"Q\"),N(\"quarter\",7),dt(\"Q\",G),gt(\"Q\",function(t,e){e[vt]=3*(w(t)-1)}),j(\"D\",[\"DD\",2],\"Do\",\"date\"),R(\"date\",\"D\"),N(\"date\",9),dt(\"D\",$),dt(\"DD\",$,Z),dt(\"Do\",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),gt([\"D\",\"DD\"],yt),gt(\"Do\",function(t,e){e[yt]=w(t.match($)[0])});var ai=Tt(\"Date\",!0);j(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),R(\"dayOfYear\",\"DDD\"),N(\"dayOfYear\",4),dt(\"DDD\",et),dt(\"DDDD\",X),gt([\"DDD\",\"DDDD\"],function(t,e,i){i._dayOfYear=w(t)}),j(\"m\",[\"mm\",2],0,\"minute\"),R(\"minute\",\"m\"),N(\"minute\",14),dt(\"m\",$),dt(\"mm\",$,Z),gt([\"m\",\"mm\"],xt);var ri=Tt(\"Minutes\",!1);j(\"s\",[\"ss\",2],0,\"second\"),R(\"second\",\"s\"),N(\"second\",15),dt(\"s\",$),dt(\"ss\",$,Z),gt([\"s\",\"ss\"],_t);var oi,si=Tt(\"Seconds\",!1);for(j(\"S\",0,0,function(){return~~(this.millisecond()/100)}),j(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),j(0,[\"SSS\",3],0,\"millisecond\"),j(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),j(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),j(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),j(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),j(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),j(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),R(\"millisecond\",\"ms\"),N(\"millisecond\",16),dt(\"S\",et,G),dt(\"SS\",et,Z),dt(\"SSS\",et,X),oi=\"SSSS\";oi.length<=9;oi+=\"S\")dt(oi,at);function li(t,e){e[kt]=w(1e3*(\"0.\"+t))}for(oi=\"S\";oi.length<=9;oi+=\"S\")gt(oi,li);var ui=Tt(\"Milliseconds\",!1);j(\"z\",0,0,\"zoneAbbr\"),j(\"zz\",0,0,\"zoneName\");var di=x.prototype;function hi(t){return t}di.add=Je,di.calendar=function(t,e){var i=t||Te(),n=He(i,this).startOf(\"day\"),r=a.calendarFormat(this,n)||\"sameElse\",o=e&&(O(e[r])?e[r].call(this,i):e[r]);return this.format(o||this.localeData().calendar(r,this,Te(i)))},di.clone=function(){return new x(this)},di.diff=function(t,e,i){var n,a,r;if(!this.isValid())return NaN;if(!(n=He(t,this)).isValid())return NaN;switch(a=6e4*(n.utcOffset()-this.utcOffset()),e=L(e)){case\"year\":r=$e(this,n)/12;break;case\"month\":r=$e(this,n);break;case\"quarter\":r=$e(this,n)/3;break;case\"second\":r=(this-n)/1e3;break;case\"minute\":r=(this-n)/6e4;break;case\"hour\":r=(this-n)/36e5;break;case\"day\":r=(this-n-a)/864e5;break;case\"week\":r=(this-n-a)/6048e5;break;default:r=this-n}return i?r:k(r)},di.endOf=function(t){return void 0===(t=L(t))||\"millisecond\"===t?this:(\"date\"===t&&(t=\"day\"),this.startOf(t).add(1,\"isoWeek\"===t?\"week\":t).subtract(1,\"ms\"))},di.format=function(t){t||(t=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},di.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Te(t).isValid())?Ue({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},di.fromNow=function(t){return this.from(Te(),t)},di.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Te(t).isValid())?Ue({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},di.toNow=function(t){return this.to(Te(),t)},di.get=function(t){return O(this[t=L(t)])?this[t]():this},di.invalidAt=function(){return g(this).overflow},di.isAfter=function(t,e){var i=_(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&(\"millisecond\"===(e=L(s(e)?\"millisecond\":e))?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf())},di.isBefore=function(t,e){var i=_(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&(\"millisecond\"===(e=L(s(e)?\"millisecond\":e))?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf())},di.isBetween=function(t,e,i,n){return(\"(\"===(n=n||\"()\")[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(\")\"===n[1]?this.isBefore(e,i):!this.isAfter(e,i))},di.isSame=function(t,e){var i,n=_(t)?t:Te(t);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(e=L(e||\"millisecond\"))?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf()))},di.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},di.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},di.isValid=function(){return m(this)},di.lang=ti,di.locale=Qe,di.localeData=ei,di.max=Ie,di.min=Oe,di.parsingFlags=function(){return c({},g(this))},di.set=function(t,e){if(\"object\"==typeof t)for(var i=function(t){var e=[];for(var i in t)e.push({unit:i,priority:Y[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}(t=W(t)),n=0;n<i.length;n++)this[i[n].unit](t[i[n].unit]);else if(O(this[t=L(t)]))return this[t](e);return this},di.startOf=function(t){switch(t=L(t)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===t&&this.weekday(0),\"isoWeek\"===t&&this.isoWeekday(1),\"quarter\"===t&&this.month(3*Math.floor(this.month()/3)),this},di.subtract=Ke,di.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},di.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},di.toDate=function(){return new Date(this.valueOf())},di.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,i=e?this.clone().utc():this;return i.year()<0||i.year()>9999?U(i,e?\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\"):O(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this._d.valueOf()).toISOString().replace(\"Z\",U(i,\"Z\")):U(i,e?\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYY-MM-DD[T]HH:mm:ss.SSSZ\")},di.inspect=function(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var t=\"moment\",e=\"\";this.isLocal()||(t=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",e=\"Z\");var i=\"[\"+t+'(\"]',n=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",a=e+'[\")]';return this.format(i+n+\"-MM-DD[T]HH:mm:ss.SSS\"+a)},di.toJSON=function(){return this.isValid()?this.toISOString():null},di.toString=function(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")},di.unix=function(){return Math.floor(this.valueOf()/1e3)},di.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},di.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},di.year=Pt,di.isLeapYear=function(){return Dt(this.year())},di.weekYear=function(t){return ni.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},di.isoWeekYear=function(t){return ni.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},di.quarter=di.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},di.month=Yt,di.daysInMonth=function(){return At(this.year(),this.month())},di.week=di.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),\"d\")},di.isoWeek=di.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),\"d\")},di.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},di.isoWeeksInYear=function(){return Ut(this.year(),1,4)},di.date=ai,di.day=di.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,i,n=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,i=this.localeData(),t=\"string\"!=typeof e?e:isNaN(e)?\"number\"==typeof(e=i.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-n,\"d\")):n},di.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,\"d\")},di.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=(i=t,n=this.localeData(),\"string\"==typeof i?n.weekdaysParse(i)%7||7:isNaN(i)?null:i);return this.day(this.day()%7?e:e-7)}return this.day()||7;var i,n},di.dayOfYear=function(t){var e=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==t?e:this.add(t-e,\"d\")},di.hour=di.hours=ne,di.minute=di.minutes=ri,di.second=di.seconds=si,di.millisecond=di.milliseconds=ui,di.utcOffset=function(t,e,i){var n,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if(\"string\"==typeof t){if(null===(t=ze(st,t)))return this}else Math.abs(t)<16&&!i&&(t*=60);return!this._isUTC&&e&&(n=Ve(this)),this._offset=t,this._isUTC=!0,null!=n&&this.add(n,\"m\"),r!==t&&(!e||this._changeInProgress?Xe(this,Ue(t-r,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ve(this)},di.utc=function(t){return this.utcOffset(0,t)},di.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ve(this),\"m\")),this},di.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var t=ze(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},di.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Te(t).utcOffset():0,(this.utcOffset()-t)%60==0)},di.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},di.isLocal=function(){return!!this.isValid()&&!this._isUTC},di.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},di.isUtc=Be,di.isUTC=Be,di.zoneAbbr=function(){return this._isUTC?\"UTC\":\"\"},di.zoneName=function(){return this._isUTC?\"Coordinated Universal Time\":\"\"},di.dates=D(\"dates accessor is deprecated. Use date instead.\",ai),di.months=D(\"months accessor is deprecated. Use month instead\",Yt),di.years=D(\"years accessor is deprecated. Use year instead\",Pt),di.zone=D(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",function(t,e){return null!=t?(\"string\"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),di.isDSTShifted=D(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Ce(t))._a){var e=t._isUTC?f(t._a):Te(t._a);this._isDSTShifted=this.isValid()&&M(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var ci=A.prototype;function fi(t,e,i,n){var a=he(),r=f().set(n,e);return a[i](r,t)}function gi(t,e,i){if(l(t)&&(e=t,t=void 0),t=t||\"\",null!=e)return fi(t,e,i,\"month\");var n,a=[];for(n=0;n<12;n++)a[n]=fi(t,n,i,\"month\");return a}function mi(t,e,i,n){\"boolean\"==typeof t?(l(e)&&(i=e,e=void 0),e=e||\"\"):(i=e=t,t=!1,l(e)&&(i=e,e=void 0),e=e||\"\");var a,r=he(),o=t?r._week.dow:0;if(null!=i)return fi(e,(i+o)%7,n,\"day\");var s=[];for(a=0;a<7;a++)s[a]=fi(e,(a+o)%7,n,\"day\");return s}ci.calendar=function(t,e,i){var n=this._calendar[t]||this._calendar.sameElse;return O(n)?n.call(e,i):n},ci.longDateFormat=function(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])},ci.invalidDate=function(){return this._invalidDate},ci.ordinal=function(t){return this._ordinal.replace(\"%d\",t)},ci.preparse=hi,ci.postformat=hi,ci.relativeTime=function(t,e,i,n){var a=this._relativeTime[i];return O(a)?a(t,e,i,n):a.replace(/%d/i,t)},ci.pastFuture=function(t,e){var i=this._relativeTime[t>0?\"future\":\"past\"];return O(i)?i(e):i.replace(/%s/i,e)},ci.set=function(t){var e,i;for(i in t)O(e=t[i])?this[i]=e:this[\"_\"+i]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)},ci.months=function(t,e){return t?r(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Ft).test(e)?\"format\":\"standalone\"][t.month()]:r(this._months)?this._months:this._months.standalone},ci.monthsShort=function(t,e){return t?r(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Ft.test(e)?\"format\":\"standalone\"][t.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ci.monthsParse=function(t,e,i){var n,a,r;if(this._monthsParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)r=f([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(r,\"\").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(r,\"\").toLocaleLowerCase();return i?\"MMM\"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:\"MMM\"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null}.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(a=f([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp(\"^\"+this.months(a,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[n]=new RegExp(\"^\"+this.monthsShort(a,\"\").replace(\".\",\"\")+\"$\",\"i\")),i||this._monthsParse[n]||(r=\"^\"+this.months(a,\"\")+\"|^\"+this.monthsShort(a,\"\"),this._monthsParse[n]=new RegExp(r.replace(\".\",\"\"),\"i\")),i&&\"MMMM\"===e&&this._longMonthsParse[n].test(t))return n;if(i&&\"MMM\"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}},ci.monthsRegex=function(t){return this._monthsParseExact?(h(this,\"_monthsRegex\")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,\"_monthsRegex\")||(this._monthsRegex=zt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},ci.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,\"_monthsRegex\")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,\"_monthsShortRegex\")||(this._monthsShortRegex=Nt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},ci.week=function(t){return jt(t,this._week.dow,this._week.doy).week},ci.firstDayOfYear=function(){return this._week.doy},ci.firstDayOfWeek=function(){return this._week.dow},ci.weekdays=function(t,e){return t?r(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?\"format\":\"standalone\"][t.day()]:r(this._weekdays)?this._weekdays:this._weekdays.standalone},ci.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},ci.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},ci.weekdaysParse=function(t,e,i){var n,a,r;if(this._weekdaysParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=f([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,\"\").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,\"\").toLocaleLowerCase();return i?\"dddd\"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:null:\"ddd\"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:\"dddd\"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:\"ddd\"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null}.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(a=f([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp(\"^\"+this.weekdays(a,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysShort(a,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysMin(a,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[n]||(r=\"^\"+this.weekdays(a,\"\")+\"|^\"+this.weekdaysShort(a,\"\")+\"|^\"+this.weekdaysMin(a,\"\"),this._weekdaysParse[n]=new RegExp(r.replace(\".\",\"\"),\"i\")),i&&\"dddd\"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&\"ddd\"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&\"dd\"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}},ci.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,\"_weekdaysRegex\")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},ci.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ci.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Kt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ci.isPM=function(t){return\"p\"===(t+\"\").toLowerCase().charAt(0)},ci.meridiem=function(t,e,i){return t>11?i?\"pm\":\"PM\":i?\"am\":\"AM\"},ue(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?\"th\":1===e?\"st\":2===e?\"nd\":3===e?\"rd\":\"th\")}}),a.lang=D(\"moment.lang is deprecated. Use moment.locale instead.\",ue),a.langData=D(\"moment.langData is deprecated. Use moment.localeData instead.\",he);var pi=Math.abs;function vi(t,e,i,n){var a=Ue(e,i);return t._milliseconds+=n*a._milliseconds,t._days+=n*a._days,t._months+=n*a._months,t._bubble()}function yi(t){return t<0?Math.floor(t):Math.ceil(t)}function bi(t){return 4800*t/146097}function xi(t){return 146097*t/4800}function _i(t){return function(){return this.as(t)}}var ki=_i(\"ms\"),wi=_i(\"s\"),Mi=_i(\"m\"),Si=_i(\"h\"),Di=_i(\"d\"),Ci=_i(\"w\"),Pi=_i(\"M\"),Ti=_i(\"y\");function Oi(t){return function(){return this.isValid()?this._data[t]:NaN}}var Ii=Oi(\"milliseconds\"),Ai=Oi(\"seconds\"),Fi=Oi(\"minutes\"),Ri=Oi(\"hours\"),Li=Oi(\"days\"),Wi=Oi(\"months\"),Yi=Oi(\"years\");var Ni=Math.round,zi={ss:44,s:45,m:45,h:22,d:26,M:11};var Hi=Math.abs;function Vi(t){return(t>0)-(t<0)||+t}function Bi(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i=Hi(this._milliseconds)/1e3,n=Hi(this._days),a=Hi(this._months);e=k((t=k(i/60))/60),i%=60,t%=60;var r=k(a/12),o=a%=12,s=n,l=e,u=t,d=i?i.toFixed(3).replace(/\\.?0+$/,\"\"):\"\",h=this.asSeconds();if(!h)return\"P0D\";var c=h<0?\"-\":\"\",f=Vi(this._months)!==Vi(h)?\"-\":\"\",g=Vi(this._days)!==Vi(h)?\"-\":\"\",m=Vi(this._milliseconds)!==Vi(h)?\"-\":\"\";return c+\"P\"+(r?f+r+\"Y\":\"\")+(o?f+o+\"M\":\"\")+(s?g+s+\"D\":\"\")+(l||u||d?\"T\":\"\")+(l?m+l+\"H\":\"\")+(u?m+u+\"M\":\"\")+(d?m+d+\"S\":\"\")}var Ei=Re.prototype;return Ei.isValid=function(){return this._isValid},Ei.abs=function(){var t=this._data;return this._milliseconds=pi(this._milliseconds),this._days=pi(this._days),this._months=pi(this._months),t.milliseconds=pi(t.milliseconds),t.seconds=pi(t.seconds),t.minutes=pi(t.minutes),t.hours=pi(t.hours),t.months=pi(t.months),t.years=pi(t.years),this},Ei.add=function(t,e){return vi(this,t,e,1)},Ei.subtract=function(t,e){return vi(this,t,e,-1)},Ei.as=function(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if(\"month\"===(t=L(t))||\"year\"===t)return e=this._days+n/864e5,i=this._months+bi(e),\"month\"===t?i:i/12;switch(e=this._days+Math.round(xi(this._months)),t){case\"week\":return e/7+n/6048e5;case\"day\":return e+n/864e5;case\"hour\":return 24*e+n/36e5;case\"minute\":return 1440*e+n/6e4;case\"second\":return 86400*e+n/1e3;case\"millisecond\":return Math.floor(864e5*e)+n;default:throw new Error(\"Unknown unit \"+t)}},Ei.asMilliseconds=ki,Ei.asSeconds=wi,Ei.asMinutes=Mi,Ei.asHours=Si,Ei.asDays=Di,Ei.asWeeks=Ci,Ei.asMonths=Pi,Ei.asYears=Ti,Ei.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Ei._bubble=function(){var t,e,i,n,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*yi(xi(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=k(r/1e3),l.seconds=t%60,e=k(t/60),l.minutes=e%60,i=k(e/60),l.hours=i%24,s+=a=k(bi(o+=k(i/24))),o-=yi(xi(a)),n=k(s/12),s%=12,l.days=o,l.months=s,l.years=n,this},Ei.clone=function(){return Ue(this)},Ei.get=function(t){return t=L(t),this.isValid()?this[t+\"s\"]():NaN},Ei.milliseconds=Ii,Ei.seconds=Ai,Ei.minutes=Fi,Ei.hours=Ri,Ei.days=Li,Ei.weeks=function(){return k(this.days()/7)},Ei.months=Wi,Ei.years=Yi,Ei.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,i,n,a,r,o,s,l,u,d,h,c=this.localeData(),f=(i=!t,n=c,a=Ue(e=this).abs(),r=Ni(a.as(\"s\")),o=Ni(a.as(\"m\")),s=Ni(a.as(\"h\")),l=Ni(a.as(\"d\")),u=Ni(a.as(\"M\")),d=Ni(a.as(\"y\")),(h=r<=zi.ss&&[\"s\",r]||r<zi.s&&[\"ss\",r]||o<=1&&[\"m\"]||o<zi.m&&[\"mm\",o]||s<=1&&[\"h\"]||s<zi.h&&[\"hh\",s]||l<=1&&[\"d\"]||l<zi.d&&[\"dd\",l]||u<=1&&[\"M\"]||u<zi.M&&[\"MM\",u]||d<=1&&[\"y\"]||[\"yy\",d])[2]=i,h[3]=+e>0,h[4]=n,function(t,e,i,n,a){return a.relativeTime(e||1,!!i,t,n)}.apply(null,h));return t&&(f=c.pastFuture(+this,f)),c.postformat(f)},Ei.toISOString=Bi,Ei.toString=Bi,Ei.toJSON=Bi,Ei.locale=Qe,Ei.localeData=ei,Ei.toIsoString=D(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",Bi),Ei.lang=ti,j(\"X\",0,0,\"unix\"),j(\"x\",0,0,\"valueOf\"),dt(\"x\",rt),dt(\"X\",/[+-]?\\d+(\\.\\d{1,3})?/),gt(\"X\",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),gt(\"x\",function(t,e,i){i._d=new Date(w(t))}),a.version=\"2.20.1\",i=Te,a.fn=di,a.min=function(){return Ae(\"isBefore\",[].slice.call(arguments,0))},a.max=function(){return Ae(\"isAfter\",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=f,a.unix=function(t){return Te(1e3*t)},a.months=function(t,e){return gi(t,e,\"months\")},a.isDate=u,a.locale=ue,a.invalid=p,a.duration=Ue,a.isMoment=_,a.weekdays=function(t,e,i){return mi(t,e,i,\"weekdays\")},a.parseZone=function(){return Te.apply(null,arguments).parseZone()},a.localeData=he,a.isDuration=Le,a.monthsShort=function(t,e){return gi(t,e,\"monthsShort\")},a.weekdaysMin=function(t,e,i){return mi(t,e,i,\"weekdaysMin\")},a.defineLocale=de,a.updateLocale=function(t,e){if(null!=e){var i,n,a=ae;null!=(n=le(t))&&(a=n._config),(i=new A(e=I(a,e))).parentLocale=re[t],re[t]=i,ue(t)}else null!=re[t]&&(null!=re[t].parentLocale?re[t]=re[t].parentLocale:null!=re[t]&&delete re[t]);return re[t]},a.locales=function(){return C(re)},a.weekdaysShort=function(t,e,i){return mi(t,e,i,\"weekdaysShort\")},a.normalizeUnits=L,a.relativeTimeRounding=function(t){return void 0===t?Ni:\"function\"==typeof t&&(Ni=t,!0)},a.relativeTimeThreshold=function(t,e){return void 0!==zi[t]&&(void 0===e?zi[t]:(zi[t]=e,\"s\"===t&&(zi.ss=e-1),!0))},a.calendarFormat=function(t,e){var i=t.diff(e,\"days\",!0);return i<-6?\"sameElse\":i<-1?\"lastWeek\":i<0?\"lastDay\":i<1?\"sameDay\":i<2?\"nextDay\":i<7?\"nextWeek\":\"sameElse\"},a.prototype=di,a.HTML5_FMT={DATETIME_LOCAL:\"YYYY-MM-DDTHH:mm\",DATETIME_LOCAL_SECONDS:\"YYYY-MM-DDTHH:mm:ss\",DATETIME_LOCAL_MS:\"YYYY-MM-DDTHH:mm:ss.SSS\",DATE:\"YYYY-MM-DD\",TIME:\"HH:mm\",TIME_SECONDS:\"HH:mm:ss\",TIME_MS:\"HH:mm:ss.SSS\",WEEK:\"YYYY-[W]WW\",MONTH:\"YYYY-MM\"},a},\"object\"==typeof i&&void 0!==e?e.exports=a():n.moment=a()},{}],7:[function(t,e,i){var n=t(29)();n.helpers=t(45),t(27)(n),n.defaults=t(25),n.Element=t(26),n.elements=t(40),n.Interaction=t(28),n.layouts=t(30),n.platform=t(48),n.plugins=t(31),n.Ticks=t(34),t(22)(n),t(23)(n),t(24)(n),t(33)(n),t(32)(n),t(35)(n),t(55)(n),t(53)(n),t(54)(n),t(56)(n),t(57)(n),t(58)(n),t(15)(n),t(16)(n),t(17)(n),t(18)(n),t(19)(n),t(20)(n),t(21)(n),t(8)(n),t(9)(n),t(10)(n),t(11)(n),t(12)(n),t(13)(n),t(14)(n);var a=t(49);for(var r in a)a.hasOwnProperty(r)&&n.plugins.register(a[r]);n.platform.initialize(),e.exports=n,\"undefined\"!=typeof window&&(window.Chart=n),n.Legend=a.legend._element,n.Title=a.title._element,n.pluginService=n.plugins,n.PluginBase=n.Element.extend({}),n.canvasHelpers=n.helpers.canvas,n.layoutService=n.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,40:40,45:45,48:48,49:49,53:53,54:54,55:55,56:56,57:57,58:58,8:8,9:9}],8:[function(t,e,i){\"use strict\";e.exports=function(t){t.Bar=function(e,i){return i.type=\"bar\",new t(e,i)}}},{}],9:[function(t,e,i){\"use strict\";e.exports=function(t){t.Bubble=function(e,i){return i.type=\"bubble\",new t(e,i)}}},{}],10:[function(t,e,i){\"use strict\";e.exports=function(t){t.Doughnut=function(e,i){return i.type=\"doughnut\",new t(e,i)}}},{}],11:[function(t,e,i){\"use strict\";e.exports=function(t){t.Line=function(e,i){return i.type=\"line\",new t(e,i)}}},{}],12:[function(t,e,i){\"use strict\";e.exports=function(t){t.PolarArea=function(e,i){return i.type=\"polarArea\",new t(e,i)}}},{}],13:[function(t,e,i){\"use strict\";e.exports=function(t){t.Radar=function(e,i){return i.type=\"radar\",new t(e,i)}}},{}],14:[function(t,e,i){\"use strict\";e.exports=function(t){t.Scatter=function(e,i){return i.type=\"scatter\",new t(e,i)}}},{}],15:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"bar\",{hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:\"linear\"}]}}),n._set(\"horizontalBar\",{hover:{mode:\"index\",axis:\"y\"},scales:{xAxes:[{type:\"linear\",position:\"bottom\"}],yAxes:[{position:\"left\",type:\"category\",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:\"left\"}},tooltips:{callbacks:{title:function(t,e){var i=\"\";return t.length>0&&(t[0].yLabel?i=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},label:function(t,e){return(e.datasets[t.datasetIndex].label||\"\")+\": \"+t.xLabel}},mode:\"index\",axis:\"y\"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getMeta(),s=n.getDataset(),l=t.custom||{},u=a.options.elements.rectangle;t._xScale=n.getScaleForId(o.xAxisID),t._yScale=n.getScaleForId(o.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={datasetLabel:s.label,label:a.data.labels[e],borderSkipped:l.borderSkipped?l.borderSkipped:u.borderSkipped,backgroundColor:l.backgroundColor?l.backgroundColor:r.valueAtIndexOrDefault(s.backgroundColor,e,u.backgroundColor),borderColor:l.borderColor?l.borderColor:r.valueAtIndexOrDefault(s.borderColor,e,u.borderColor),borderWidth:l.borderWidth?l.borderWidth:r.valueAtIndexOrDefault(s.borderWidth,e,u.borderWidth)},n.updateElementGeometry(t,e,i),t.pivot()},updateElementGeometry:function(t,e,i){var n=this,a=t._model,r=n.getValueScale(),o=r.getBasePixel(),s=r.isHorizontal(),l=n._ruler||n.getRuler(),u=n.calculateBarValuePixels(n.index,e),d=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?o:u.base,a.x=s?i?o:u.head:d.center,a.y=s?d.center:i?o:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},_getStacks:function(t){var e,i,n=this.chart,a=this.getIndexScale().options.stacked,r=void 0===t?n.data.datasets.length:t+1,o=[];for(e=0;e<r;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===o.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===o.indexOf(i.stack)))&&o.push(i.stack);return o},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this.getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),s=o?i.left:i.top,l=s+(o?i.width:i.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(i.getPixelForValue(null,t,a));return{min:r.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,r,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,r=e.length;a<r;++a)o=Math.min(o,e[a]-e[a-1]);for(a=0,r=s.length;a<r;++a)n=t.getPixelForTick(a),o=a>0?Math.min(o,n-i):o,i=n;return o}(i,u):-1,pixels:u,start:s,end:l,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,r,o,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),h=l.data.datasets,c=d.getRightValue(h[t].data[e]),f=d.options.stacked,g=u.stack,m=0;if(f||void 0===f&&void 0!==g)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===g&&n.controller.getValueScaleId()===d.id&&l.isDatasetVisible(i)&&(a=d.getRightValue(h[i].data[e]),(c<0&&a<0||c>=0&&a>0)&&(m+=a));return r=d.getPixelForValue(m),{size:s=((o=d.getPixelForValue(m+c))-r)/2,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,i){var n,a,o,s,l,u,d,h,c,f,g,m,p,v,y,b,x,_=i.scale.options,k=\"flex\"===_.barThickness?(c=e,g=_,p=(f=i).pixels,v=p[c],y=c>0?p[c-1]:null,b=c<p.length-1?p[c+1]:null,x=g.categoryPercentage,null===y&&(y=v-(null===b?f.end-v:b-v)),null===b&&(b=v+v-y),m=v-(v-y)/2*x,{chunk:(b-y)/2*x/f.stackCount,ratio:g.barPercentage,start:m}):(n=e,a=i,u=(o=_).barThickness,d=a.stackCount,h=a.pixels[n],r.isNullOrUndef(u)?(s=a.min*o.categoryPercentage,l=o.barPercentage):(s=u*d,l=1),{chunk:s/d,ratio:l,start:h-s/2}),w=this.getStackIndex(t,this.getMeta().stack),M=k.start+k.chunk*w+k.chunk/2,S=Math.min(r.valueOrDefault(_.maxBarThickness,1/0),k.chunk*k.ratio);return{base:M-S/2,head:M+S/2,center:M,size:S}},draw:function(){var t=this.chart,e=this.getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(r.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();r.canvas.unclipArea(t.ctx)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model;a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:r.valueAtIndexOrDefault(e.hoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:r.valueAtIndexOrDefault(e.hoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:r.valueAtIndexOrDefault(e.hoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model,o=this.chart.options.elements.rectangle;a.backgroundColor=n.backgroundColor?n.backgroundColor:r.valueAtIndexOrDefault(e.backgroundColor,i,o.backgroundColor),a.borderColor=n.borderColor?n.borderColor:r.valueAtIndexOrDefault(e.borderColor,i,o.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:r.valueAtIndexOrDefault(e.borderWidth,i,o.borderWidth)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{25:25,40:40,45:45}],16:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"bubble\",{hover:{mode:\"single\"},scales:{xAxes:[{type:\"linear\",position:\"bottom\",id:\"x-axis-0\"}],yAxes:[{type:\"linear\",position:\"left\",id:\"y-axis-0\"}]},tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){var i=e.datasets[t.datasetIndex].label||\"\",n=e.datasets[t.datasetIndex].data[t.index];return i+\": (\"+t.xLabel+\", \"+t.yLabel+\", \"+n.r+\")\"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,i=e.getMeta().data;r.each(i,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),r=t.custom||{},o=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),u=n.getDataset().data[e],d=n.index,h=i?o.getPixelForDecimal(.5):o.getPixelForValue(\"object\"==typeof u?u:NaN,e,d),c=i?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,radius:i?0:l.radius,skip:r.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options;e.backgroundColor=r.valueOrDefault(i.hoverBackgroundColor,r.getHoverColor(i.backgroundColor)),e.borderColor=r.valueOrDefault(i.hoverBorderColor,r.getHoverColor(i.borderColor)),e.borderWidth=r.valueOrDefault(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},removeHoverStyle:function(t){var e=t._model,i=t._options;e.backgroundColor=i.backgroundColor,e.borderColor=i.borderColor,e.borderWidth=i.borderWidth,e.radius=i.radius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,s=o.data.datasets[this.index],l=t.custom||{},u=o.options.elements.point,d=r.options.resolve,h=s.data[e],c={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},g=[\"backgroundColor\",\"borderColor\",\"borderWidth\",\"hoverBackgroundColor\",\"hoverBorderColor\",\"hoverBorderWidth\",\"hoverRadius\",\"hitRadius\",\"pointStyle\"];for(i=0,n=g.length;i<n;++i)c[a=g[i]]=d([l[a],s[a],u[a]],f,e);return c.radius=d([l.radius,h?h.r:void 0,s.radius,u.radius],f,e),c}})}},{25:25,40:40,45:45}],17:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"doughnut\",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:\"single\"},legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r<n[0].data.length;++r)e.push('<li><span style=\"background-color:'+n[0].backgroundColor[r]+'\"></span>'),a[r]&&e.push(a[r]),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[n],l=s&&s.custom||{},u=r.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:i,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,n,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,n,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,n,d.borderWidth),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i<n;++i)(a=o.getDatasetMeta(i)).data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){var i=e.labels[t.index],n=\": \"+e.datasets[t.datasetIndex].data[t.index];return r.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}}),n._set(\"pie\",r.clone(n.doughnut)),n._set(\"pie\",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var e=this,i=e.chart,n=i.chartArea,a=i.options,o=a.elements.arc,s=n.right-n.left-o.borderWidth,l=n.bottom-n.top-o.borderWidth,u=Math.min(s,l),d={x:0,y:0},h=e.getMeta(),c=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),m=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,p=Math.cos(g),v=Math.sin(g),y=Math.cos(m),b=Math.sin(m),x=g<=0&&m>=0||g<=2*Math.PI&&2*Math.PI<=m,_=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,k=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,w=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,M=c/100,S=k?-1:Math.min(p*(p<0?1:M),y*(y<0?1:M)),D=w?-1:Math.min(v*(v<0?1:M),b*(b<0?1:M)),C=x?1:Math.max(p*(p>0?1:M),y*(y>0?1:M)),P=_?1:Math.max(v*(v>0?1:M),b*(b>0?1:M)),T=.5*(C-S),O=.5*(P-D);u=Math.min(s/T,l/O),d={x:-.5*(C+S),y:-.5*(P+D)}}i.borderWidth=e.getMaxBorderWidth(h.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(c?i.outerRadius/100*c:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,h.total=e.calculateTotal(),e.outerRadius=i.outerRadius-i.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-i.radiusLength,0),r.each(h.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,s=a.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,h=s.rotation,c=s.rotation,f=n.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),m=i&&l.animateScale?0:n.innerRadius,p=i&&l.animateScale?0:n.outerRadius,v=r.valueAtIndexOrDefault;r.extend(t,{_datasetIndex:n.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:h,endAngle:c,circumference:g,outerRadius:p,innerRadius:m,label:v(f.label,e,a.data.labels[e])}});var y=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(y.startAngle=0===e?s.rotation:n.getMeta().data[e-1]._model.endAngle,y.endAngle=y.startAngle+y.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return r.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,i,n=0,a=this.index,r=t.length,o=0;o<r;o++)e=t[o]._model?t[o]._model.borderWidth:0,n=(i=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0)>(n=e>n?e:n)?i:n;return n}})}},{25:25,40:40,45:45}],18:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"line\",{showLines:!0,spanGaps:!1,hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",id:\"x-axis-0\"}],yAxes:[{type:\"linear\",id:\"y-axis-0\"}]}}),e.exports=function(t){function e(t,e){return r.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var i,n,a,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,h=d.elements.line,c=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=c,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:r.valueOrDefault(f.lineTension,h.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||h.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||h.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||h.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||h.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||h.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||h.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||h.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:h.fill,steppedLine:a.steppedLine?a.steppedLine:r.valueOrDefault(f.steppedLine,h.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:r.valueOrDefault(f.cubicInterpolationMode,h.cubicInterpolationMode)},l.pivot()),i=0,n=u.length;i<n;++i)o.updateElement(u[i],i,t);for(g&&0!==l._model.tension&&o.updateBezierControlPoints(),i=0,n=u.length;i<n;++i)u[i].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,n=this.getDataset(),a=t.custom||{};return a.backgroundColor?i=a.backgroundColor:n.pointBackgroundColor?i=r.valueAtIndexOrDefault(n.pointBackgroundColor,e,i):n.backgroundColor&&(i=n.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,n=this.getDataset(),a=t.custom||{};return a.borderColor?i=a.borderColor:n.pointBorderColor?i=r.valueAtIndexOrDefault(n.pointBorderColor,e,i):n.borderColor&&(i=n.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,n=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(n.pointBorderWidth)||r.isArray(n.pointBorderWidth)?i=r.valueAtIndexOrDefault(n.pointBorderWidth,e,i):isNaN(n.borderWidth)||(i=n.borderWidth):i=a.borderWidth,i},updateElement:function(t,e,i){var n,a,o=this,s=o.getMeta(),l=t.custom||{},u=o.getDataset(),d=o.index,h=u.data[e],c=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),g=o.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),n=f.getPixelForValue(\"object\"==typeof h?h:NaN,e,d),a=i?c.getBasePixel():o.calculatePointY(h,e,d),t._xScale=f,t._yScale=c,t._datasetIndex=d,t._index=e,t._model={x:n,y:a,skip:l.skip||isNaN(n)||isNaN(a),radius:l.radius||r.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:l.pointStyle||r.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:l.hitRadius||r.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,i){var n,a,r,o=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=o.data.datasets[n],\"line\"===(r=o.getDatasetMeta(n)).type&&r.yAxisID===l.id&&o.isDatasetVisible(n)){var h=Number(l.getRightValue(a.data[e]));h<0?d+=h||0:u+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(d+c):l.getPixelForValue(u+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,s=a.data||[];function l(t,e,i){return Math.max(Math.min(t,i),e)}if(a.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),\"monotone\"===a.dataset._model.cubicInterpolationMode)r.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)i=s[t]._model,n=r.splineCurve(r.previousItem(s,t)._model,i,r.nextItem(s,t)._model,a.dataset._model.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(i=s[t]._model).controlPointPreviousX=l(i.controlPointPreviousX,o.left,o.right),i.controlPointPreviousY=l(i.controlPointPreviousY,o.top,o.bottom),i.controlPointNextX=l(i.controlPointNextX,o.left,o.right),i.controlPointNextY=l(i.controlPointNextY,o.top,o.bottom)},draw:function(){var t=this.chart,i=this.getMeta(),n=i.data||[],a=t.chartArea,o=n.length,s=0;for(r.canvas.clipArea(t.ctx,a),e(this.getDataset(),t.options)&&i.dataset.draw(),r.canvas.unclipArea(t.ctx);s<o;++s)n[s].draw(a)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model;a.radius=n.hoverRadius||r.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor||r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor||r.valueAtIndexOrDefault(e.pointHoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth||r.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this,i=e.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=t._model;void 0!==i.radius&&void 0===i.pointRadius&&(i.pointRadius=i.radius),o.radius=a.radius||r.valueAtIndexOrDefault(i.pointRadius,n,e.chart.options.elements.point.radius),o.backgroundColor=e.getPointBackgroundColor(t,n),o.borderColor=e.getPointBorderColor(t,n),o.borderWidth=e.getPointBorderWidth(t,n)}})}},{25:25,40:40,45:45}],19:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"polarArea\",{scale:{type:\"radialLinear\",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r<n[0].data.length;++r)e.push('<li><span style=\"background-color:'+n[0].backgroundColor[r]+'\"></span>'),a[r]&&e.push(a[r]),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[n].custom||{},l=r.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:i,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,n,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,n,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,n,u.borderWidth),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i<n;++i)(a=o.getDatasetMeta(i)).data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){return e.labels[t.index]+\": \"+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,update:function(t){var e=this,i=e.chart,n=i.chartArea,a=e.getMeta(),o=i.options,s=o.elements.arc,l=Math.min(n.right-n.left,n.bottom-n.top);i.outerRadius=Math.max((l-s.borderWidth/2)/2,0),i.innerRadius=Math.max(o.cutoutPercentage?i.outerRadius/100*o.cutoutPercentage:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),e.outerRadius=i.outerRadius-i.radiusLength*e.index,e.innerRadius=e.outerRadius-i.radiusLength,a.count=e.countVisibleElements(),r.each(a.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){for(var n=this,a=n.chart,o=n.getDataset(),s=a.options,l=s.animation,u=a.scale,d=a.data.labels,h=n.calculateCircumference(o.data[e]),c=u.xCenter,f=u.yCenter,g=0,m=n.getMeta(),p=0;p<e;++p)isNaN(o.data[p])||m.data[p].hidden||++g;var v=s.startAngle,y=t.hidden?0:u.getDistanceFromCenterForValue(o.data[e]),b=v+h*g,x=b+(t.hidden?0:h),_=l.animateScale?0:u.getDistanceFromCenterForValue(o.data[e]);r.extend(t,{_datasetIndex:n.index,_index:e,_scale:u,_model:{x:c,y:f,innerRadius:0,outerRadius:i?_:y,startAngle:i&&l.animateRotate?v:b,endAngle:i&&l.animateRotate?v:x,label:r.valueAtIndexOrDefault(d,e,d[e])}}),n.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),i=0;return r.each(e.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"radar\",{scale:{type:\"radialLinear\"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:r.noop,update:function(t){var e=this,i=e.getMeta(),n=i.dataset,a=i.data,o=n.custom||{},s=e.getDataset(),l=e.chart.options.elements.line,u=e.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),r.extend(i.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:o.tension?o.tension:r.valueOrDefault(s.lineTension,l.tension),backgroundColor:o.backgroundColor?o.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:s.borderWidth||l.borderWidth,borderColor:o.borderColor?o.borderColor:s.borderColor||l.borderColor,fill:o.fill?o.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:o.borderCapStyle?o.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:o.borderDash?o.borderDash:s.borderDash||l.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle}}),i.dataset.pivot(),r.each(a,function(i,n){e.updateElement(i,n,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),s=n.chart.scale,l=n.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),r.extend(t,{_datasetIndex:n.index,_index:e,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,n.chart.options.elements.line.tension),radius:a.radius?a.radius:r.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:r.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:r.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:r.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:r.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),hitRadius:a.hitRadius?a.hitRadius:r.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();r.each(e.data,function(i,n){var a=i._model,o=r.splineCurve(r.previousItem(e.data,n,!0)._model,a,r.nextItem(e.data,n,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),i.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model;a.radius=i.hoverRadius?i.hoverRadius:r.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,r.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:r.valueAtIndexOrDefault(e.pointHoverBorderColor,n,r.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:r.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model,o=this.chart.options.elements.point;a.radius=i.radius?i.radius:r.valueAtIndexOrDefault(e.pointRadius,n,o.radius),a.backgroundColor=i.backgroundColor?i.backgroundColor:r.valueAtIndexOrDefault(e.pointBackgroundColor,n,o.backgroundColor),a.borderColor=i.borderColor?i.borderColor:r.valueAtIndexOrDefault(e.pointBorderColor,n,o.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:r.valueAtIndexOrDefault(e.pointBorderWidth,n,o.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,i){\"use strict\";t(25)._set(\"scatter\",{hover:{mode:\"single\"},scales:{xAxes:[{id:\"x-axis-1\",type:\"linear\",position:\"bottom\"}],yAxes:[{id:\"y-axis-1\",type:\"linear\",position:\"left\"}]},showLines:!1,tooltips:{callbacks:{title:function(){return\"\"},label:function(t){return\"(\"+t.xLabel+\", \"+t.yLabel+\")\"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{animation:{duration:1e3,easing:\"easeOutQuart\",onProgress:r.noop,onComplete:r.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:\"\",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,n){var a,r,o=this.animations;for(e.chart=t,n||(t.animating=!0),a=0,r=o.length;a<r;++a)if(o[a].chart===t)return void(o[a]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=r.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=r.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),i=0;t.dropFrames>1&&(i=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+i);var n=Date.now();t.dropFrames+=(n-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,i,n=this.animations,a=0;a<n.length;)i=(e=n[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),r.callback(e.render,[i,e],i),r.callback(e.onAnimationProgress,[e],i),e.currentStep>=e.numSteps?(r.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,\"animationObject\",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,\"chartInstance\",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(28),o=t(30),s=t(48),l=t(31);e.exports=function(t){function e(t){return\"top\"===t||\"bottom\"===t}t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(e,i){var r,o,l=this;(o=(r=(r=i)||{}).data=r.data||{}).datasets=o.datasets||[],o.labels=o.labels||[],r.options=a.configMerge(n.global,n[r.type],r.options||{}),i=r;var u=s.acquireContext(e,i),d=u&&u.canvas,h=d&&d.height,c=d&&d.width;l.id=a.uid(),l.ctx=u,l.canvas=d,l.config=i,l.width=c,l.height=h,l.aspectRatio=h?c/h:null,l.options=i.options,l._bufferedRender=!1,l.chart=l,l.controller=l,t.instances[l.id]=l,Object.defineProperty(l,\"data\",{get:function(){return l.config.data},set:function(t){l.config.data=t}}),u&&d?(l.initialize(),l.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")},initialize:function(){var t=this;return l.notify(t,\"beforeInit\"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,\"afterInit\"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,r=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(a.getMaximumWidth(n))),s=Math.max(0,Math.floor(r?o/r:a.getMaximumHeight(n)));if((e.width!==o||e.height!==s)&&(n.width=e.width=o,n.height=e.height=s,n.style.width=o+\"px\",n.style.height=s+\"px\",a.retinaScale(e,i.devicePixelRatio),!t)){var u={width:o,height:s};l.notify(e,\"resize\",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||\"x-axis-\"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||\"y-axis-\"+e}),i&&(i.id=i.id||\"scale\")},buildOrUpdateScales:function(){var i=this,n=i.options,r=i.scales||{},o=[],s=Object.keys(r).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:\"category\",dposition:\"bottom\"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:\"linear\",dposition:\"left\"}}))),n.scale&&o.push({options:n.scale,dtype:\"radialLinear\",isDefault:!0,dposition:\"chartArea\"}),a.each(o,function(n){var o=n.options,l=o.id,u=a.valueOrDefault(o.type,n.dtype);e(o.position)!==e(n.dposition)&&(o.position=n.dposition),s[l]=!0;var d=null;if(l in r&&r[l].type===u)(d=r[l]).options=o,d.ctx=i.ctx,d.chart=i;else{var h=t.scaleService.getScaleConstructor(u);if(!h)return;d=new h({id:l,type:u,options:o,ctx:i.ctx,chart:i}),r[d.id]=d}d.mergeTicksOptions(),n.isDefault&&(i.scale=d)}),a.each(s,function(t,e){t||delete r[e]}),i.scales=r,t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,i=[],n=[];return a.each(e.data.datasets,function(a,r){var o=e.getDatasetMeta(r),s=a.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(r),o=e.getDatasetMeta(r)),o.type=s,i.push(o.type),o.controller)o.controller.updateIndex(r),o.controller.linkScales();else{var l=t.controllers[o.type];if(void 0===l)throw new Error('\"'+o.type+'\" is not a chart type.');o.controller=new l(e,r),n.push(o.controller)}},e),n},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var i,n,r=this;if(e&&\"object\"==typeof e||(e={duration:e,lazy:arguments[1]}),n=(i=r).options,a.each(i.scales,function(t){o.removeBox(i,t)}),n=a.configMerge(t.defaults.global,t.defaults[i.config.type],n),i.options=i.config.options=n,i.ensureScalesHaveIDs(),i.buildOrUpdateScales(),i.tooltip._options=n.tooltips,i.tooltip.initialize(),l._invalidate(r),!1!==l.notify(r,\"beforeUpdate\")){r.tooltip._data=r.data;var s=r.buildOrUpdateControllers();a.each(r.data.datasets,function(t,e){r.getDatasetMeta(e).controller.buildOrUpdateElements()},r),r.updateLayout(),r.options.animation&&r.options.animation.duration&&a.each(s,function(t){t.reset()}),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],l.notify(r,\"afterUpdate\"),r._bufferedRender?r._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:r.render(e)}},updateLayout:function(){!1!==l.notify(this,\"beforeLayout\")&&(o.update(this,this.width,this.height),l.notify(this,\"afterScaleUpdate\"),l.notify(this,\"afterLayout\"))},updateDatasets:function(){if(!1!==l.notify(this,\"beforeDatasetsUpdate\")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);l.notify(this,\"afterDatasetsUpdate\")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==l.notify(this,\"beforeDatasetUpdate\",[i])&&(e.controller.update(),l.notify(this,\"afterDatasetUpdate\",[i]))},render:function(e){var i=this;e&&\"object\"==typeof e||(e={duration:e,lazy:arguments[1]});var n=e.duration,r=e.lazy;if(!1!==l.notify(i,\"beforeRender\")){var o=i.options.animation,s=function(t){l.notify(i,\"afterRender\"),a.callback(o&&o.onComplete,[t],i)};if(o&&(void 0!==n&&0!==n||void 0===n&&0!==o.duration)){var u=new t.Animation({numSteps:(n||o.duration)/16.66,easing:e.easing||o.easing,render:function(t,e){var i=a.easing.effects[e.easing],n=e.currentStep,r=n/e.numSteps;t.draw(i(r),r,n)},onAnimationProgress:o.onProgress,onAnimationComplete:s});t.animationService.addAnimation(i,u,n,r)}else i.draw(),s(new t.Animation({numSteps:0,chart:i}));return i}},draw:function(t){var e=this;e.clear(),a.isNullOrUndef(t)&&(t=1),e.transition(t),!1!==l.notify(e,\"beforeDraw\",[t])&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),l.notify(e,\"afterDraw\",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==l.notify(e,\"beforeDatasetsDraw\",[t])){for(var i=(e.data.datasets||[]).length-1;i>=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);l.notify(e,\"afterDatasetsDraw\",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==l.notify(this,\"beforeDatasetDraw\",[n])&&(i.controller.draw(e),l.notify(this,\"afterDatasetDraw\",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==l.notify(this,\"beforeTooltipDraw\",[i])&&(e.draw(),l.notify(this,\"afterTooltipDraw\",[i]))},getElementAtEvent:function(t){return r.modes.single(this,t)},getElementsAtEvent:function(t){return r.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return r.modes[\"x-axis\"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=r.modes[e];return\"function\"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return r.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return\"boolean\"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var e,i,n=this,r=n.canvas;for(n.stop(),e=0,i=n.data.datasets.length;e<i;++e)n.destroyDatasetMeta(e);r&&(n.unbindEvents(),a.canvas.clear(n),s.releaseContext(n.ctx),n.canvas=null,n.ctx=null),l.notify(n,\"destroy\"),delete t.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this,e=t._listeners={},i=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(n){s.addEventListener(t,n,i),e[n]=i}),t.options.responsive&&(i=function(){t.resize()},s.addEventListener(t,\"resize\",i),e.resize=i)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,i){s.removeEventListener(t,i,e)}))},updateHoverStyle:function(t,e,i){var n,a,r,o=i?\"setHoverStyle\":\"removeHoverStyle\";for(a=0,r=t.length;a<r;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[o](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==l.notify(e,\"beforeEvent\",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),l.notify(e,\"afterEvent\",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},r=n.hover;return i.lastActive=i.lastActive||[],\"mouseout\"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,r.mode,r),a.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),\"mouseup\"!==t.type&&\"click\"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,r.mode,!1),i.active.length&&r.mode&&i.updateHoverStyle(i.active,r.mode,!0),e=!a.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),t.Controller=t}},{25:25,28:28,30:30,31:31,45:45,48:48}],24:[function(t,e,i){\"use strict\";var n=t(45);e.exports=function(t){var e=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function i(t,i){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(i);-1!==r&&a.splice(r,1),a.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},n.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&i(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,a,r=this,o=r.getDataset(),s=o.data||(o.data=[]);r._data!==s&&(r._data&&i(r._data,r),a=r,(t=s)._chartjs?t._chartjs.listeners.push(a):(Object.defineProperty(t,\"_chartjs\",{configurable:!0,enumerable:!1,value:{listeners:[a]}}),e.forEach(function(e){var i=\"onData\"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return n.each(t._chartjs.listeners,function(t){\"function\"==typeof t[i]&&t[i].apply(t,e)}),r}})})),r._data=s),r.resyncElements()},update:n.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t,e){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,r=t.custom||{},o=n.valueAtIndexOrDefault,s=t._model;s.backgroundColor=r.backgroundColor?r.backgroundColor:o(i.backgroundColor,a,e.backgroundColor),s.borderColor=r.borderColor?r.borderColor:o(i.borderColor,a,e.borderColor),s.borderWidth=r.borderWidth?r.borderWidth:o(i.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=n.valueAtIndexOrDefault,o=n.getHoverColor,s=t._model;s.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:r(e.hoverBackgroundColor,i,o(s.backgroundColor)),s.borderColor=a.hoverBorderColor?a.hoverBorderColor:r(e.hoverBorderColor,i,o(s.borderColor)),s.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:r(e.hoverBorderWidth,i,s.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):n>i&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=n.inherits}},{45:45}],25:[function(t,e,i){\"use strict\";var n=t(45);e.exports={_set:function(t,e){return n.merge(this[t]||(this[t]={}),e)}}},{45:45}],26:[function(t,e,i){\"use strict\";var n=t(2),a=t(45);var r=function(t){a.extend(this,t),this.initialize.apply(this,arguments)};a.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=a.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,a=e._start,r=e._view;return i&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,i,a){var r,o,s,l,u,d,h,c,f,g=Object.keys(i);for(r=0,o=g.length;r<o;++r)if(d=i[s=g[r]],e.hasOwnProperty(s)||(e[s]=d),(l=e[s])!==d&&\"_\"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=l),(h=typeof d)==typeof(u=t[s]))if(\"string\"===h){if((c=n(u)).valid&&(f=n(d)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(\"number\"===h&&isFinite(u)&&isFinite(d)){e[s]=u+(d-u)*a;continue}e[s]=d}}(a,r,i,t),e):(e._view=i,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return a.isNumber(this._model.x)&&a.isNumber(this._model.y)}}),r.extend=a.inherits,e.exports=r},{2:2,45:45}],27:[function(t,e,i){\"use strict\";var n=t(2),a=t(25),r=t(45);e.exports=function(t){function e(t,e,i){var n;return\"string\"==typeof t?(n=parseInt(t,10),-1!==t.indexOf(\"%\")&&(n=n/100*e.parentNode[i])):n=t,n}function i(t){return null!=t&&\"none\"!==t}function o(t,n,a){var r=document.defaultView,o=t.parentNode,s=r.getComputedStyle(t)[n],l=r.getComputedStyle(o)[n],u=i(s),d=i(l),h=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(s,t,a):h,d?e(l,o,a):h):\"none\"}r.configMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,i,n,a){var o=i[e]||{},s=n[e];\"scales\"===e?i[e]=r.scaleMerge(o,s):\"scale\"===e?i[e]=r.merge(o,[t.scaleService.getScaleDefaults(s.type),s]):r._merger(e,i,n,a)}})},r.scaleMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,i,n,a){if(\"xAxes\"===e||\"yAxes\"===e){var o,s,l,u=n[e].length;for(i[e]||(i[e]=[]),o=0;o<u;++o)l=n[e][o],s=r.valueOrDefault(l.type,\"xAxes\"===e?\"category\":\"linear\"),o>=i[e].length&&i[e].push({}),!i[e][o].type||l.type&&l.type!==i[e][o].type?r.merge(i[e][o],[t.scaleService.getScaleDefaults(s),l]):r.merge(i[e][o],l)}else r._merger(e,i,n,a)}})},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return r.each(t,function(t){e(t)&&i.push(t)}),i},r.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},r.findNextWhere=function(t,e,i){r.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},r.findPreviousWhere=function(t,e,i){r.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;n>=0;n--){var a=t[n];if(e(a))return a}},r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,i){return Math.abs(t-e)<i},r.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&i+e>t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},r.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),r=Math.atan2(n,i);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2==0?0:.5},r.splineCurve=function(t,e,i,n){var a=t.skip?e:t,r=e,o=i.skip?e:i,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=n*(u=isNaN(u)?0:u),c=n*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,i,n,a,o,s,l,u,d,h=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),c=h.length;for(e=0;e<c;++e)if(!(n=h[e]).model.skip){if(i=e>0?h[e-1]:null,(a=e<c-1?h[e+1]:null)&&!a.model.skip){var f=a.model.x-n.model.x;n.deltaK=0!==f?(a.model.y-n.model.y)/f:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<c-1;++e)n=h[e],a=h[e+1],n.model.skip||a.model.skip||(r.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,s=a.mK/n.deltaK,(u=Math.pow(o,2)+Math.pow(s,2))<=9||(l=3/Math.sqrt(u),n.mK=o*l*n.deltaK,a.mK=s*l*n.deltaK)));for(e=0;e<c;++e)(n=h[e]).model.skip||(i=e>0?h[e-1]:null,a=e<c-1?h[e+1]:null,i&&!i.model.skip&&(d=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-d,n.model.controlPointPreviousY=n.model.y-d*n.mK),a&&!a.model.skip&&(d=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+d,n.model.controlPointNextY=n.model.y+d*n.mK))},r.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},r.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var i=Math.floor(r.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},r.requestAnimFrame=\"undefined\"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},r.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.currentTarget||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(i=l[0].clientX,n=l[0].clientY):(i=a.clientX,n=a.clientY);var u=parseFloat(r.getStyle(o,\"padding-left\")),d=parseFloat(r.getStyle(o,\"padding-top\")),h=parseFloat(r.getStyle(o,\"padding-right\")),c=parseFloat(r.getStyle(o,\"padding-bottom\")),f=s.right-s.left-u-h,g=s.bottom-s.top-d-c;return{x:i=Math.round((i-s.left-u)/f*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-s.top-d)/g*o.height/e.currentDevicePixelRatio)}},r.getConstraintWidth=function(t){return o(t,\"max-width\",\"clientWidth\")},r.getConstraintHeight=function(t){return o(t,\"max-height\",\"clientHeight\")},r.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var i=parseInt(r.getStyle(e,\"padding-left\"),10),n=parseInt(r.getStyle(e,\"padding-right\"),10),a=e.clientWidth-i-n,o=r.getConstraintWidth(t);return isNaN(o)?a:Math.min(a,o)},r.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var i=parseInt(r.getStyle(e,\"padding-top\"),10),n=parseInt(r.getStyle(e,\"padding-bottom\"),10),a=e.clientHeight-i-n,o=r.getConstraintHeight(t);return isNaN(o)?a:Math.min(a,o)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,r=t.width;n.height=a*i,n.width=r*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+\"px\",n.style.width=r+\"px\")}},r.fontString=function(t,e,i){return e+\" \"+t+\"px \"+i},r.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},o=n.garbageCollect=[],n.font=e),t.font=e;var s=0;r.each(i,function(e){null!=e&&!0!==r.isArray(e)?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){null==e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>i.length){for(var u=0;u<l;u++)delete a[o[u]];o.splice(0,l)}return s},r.measureText=function(t,e,i,n,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,i.push(a)),r>n&&(n=r),n},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error(\"Color.js not found!\"),t},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,25:25,45:45}],28:[function(t,e,i){\"use strict\";var n=t(45);function a(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function r(t,e){var i,n,a,r,o;for(n=0,r=t.data.datasets.length;n<r;++n)if(t.isDatasetVisible(n))for(a=0,o=(i=t.getDatasetMeta(n)).data.length;a<o;++a){var s=i.data[a];s._view.skip||e(s)}}function o(t,e){var i=[];return r(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function s(t,e,i,n){var a=Number.POSITIVE_INFINITY,o=[];return r(t,function(t){if(!i||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=n(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function l(t){var e=-1!==t.indexOf(\"x\"),i=-1!==t.indexOf(\"y\");return function(t,n){var a=e?Math.abs(t.x-n.x):0,r=i?Math.abs(t.y-n.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(r,2))}}function u(t,e,i){var n=a(e,t);i.axis=i.axis||\"x\";var r=l(i.axis),u=i.intersect?o(t,n):s(t,n,!1,r),d=[];return u.length?(t.data.datasets.forEach(function(e,i){if(t.isDatasetVisible(i)){var n=t.getDatasetMeta(i).data[u[0]._index];n&&!n._view.skip&&d.push(n)}}),d):[]}e.exports={modes:{single:function(t,e){var i=a(e,t),n=[];return r(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:u,index:u,dataset:function(t,e,i){var n=a(e,t);i.axis=i.axis||\"xy\";var r=l(i.axis),u=i.intersect?o(t,n):s(t,n,!1,r);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},\"x-axis\":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return o(t,a(e,t))},nearest:function(t,e,i){var n=a(e,t);i.axis=i.axis||\"xy\";var r=l(i.axis),o=s(t,n,i.intersect,r);return o.length>1&&o.sort(function(t,e){var i=t.getArea()-e.getArea();return 0===i&&(i=t._datasetIndex-e._datasetIndex),i}),o.slice(0,1)},x:function(t,e,i){var n=a(e,t),o=[],s=!1;return r(t,function(t){t.inXRange(n.x)&&o.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(o=[]),o},y:function(t,e,i){var n=a(e,t),o=[],s=!1;return r(t,function(t){t.inYRange(n.y)&&o.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(o=[]),o}}}},{45:45}],29:[function(t,e,i){\"use strict\";t(25)._set(\"global\",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],hover:{onHover:null,mode:\"nearest\",intersect:!0,animationDuration:400},onClick:null,defaultColor:\"rgba(0,0,0,0.1)\",defaultFontColor:\"#666\",defaultFontFamily:\"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",defaultFontSize:12,defaultFontStyle:\"normal\",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,i){\"use strict\";var n=t(45);function a(t,e){return n.where(t,function(t){return t.position===e})}function r(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||\"top\",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=[\"fullWidth\",\"position\",\"weight\"],r=a.length,o=0;o<r;++o)n=a[o],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(t,e,i){if(t){var o=t.options.layout||{},s=n.options.toPadding(o.padding),l=s.left,u=s.right,d=s.top,h=s.bottom,c=a(t.boxes,\"left\"),f=a(t.boxes,\"right\"),g=a(t.boxes,\"top\"),m=a(t.boxes,\"bottom\"),p=a(t.boxes,\"chartArea\");r(c,!0),r(f,!1),r(g,!0),r(m,!1);var v=e-l-u,y=i-d-h,b=y/2,x=(e-v/2)/(c.length+f.length),_=(i-b)/(g.length+m.length),k=v,w=y,M=[];n.each(c.concat(f,g,m),function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?v:k,_),w-=e.height):(e=t.update(x,w),k-=e.width),M.push({horizontal:i,minSize:e,box:t})});var S=0,D=0,C=0,P=0;n.each(g.concat(m),function(t){if(t.getPadding){var e=t.getPadding();S=Math.max(S,e.left),D=Math.max(D,e.right)}}),n.each(c.concat(f),function(t){if(t.getPadding){var e=t.getPadding();C=Math.max(C,e.top),P=Math.max(P,e.bottom)}});var T=l,O=u,I=d,A=h;n.each(c.concat(f),z),n.each(c,function(t){T+=t.width}),n.each(f,function(t){O+=t.width}),n.each(g.concat(m),z),n.each(g,function(t){I+=t.height}),n.each(m,function(t){A+=t.height}),n.each(c.concat(f),function(t){var e=n.findNextWhere(M,function(e){return e.box===t}),i={left:0,right:0,top:I,bottom:A};e&&t.update(e.minSize.width,w,i)}),T=l,O=u,I=d,A=h,n.each(c,function(t){T+=t.width}),n.each(f,function(t){O+=t.width}),n.each(g,function(t){I+=t.height}),n.each(m,function(t){A+=t.height});var F=Math.max(S-T,0);T+=F,O+=Math.max(D-O,0);var R=Math.max(C-I,0);I+=R,A+=Math.max(P-A,0);var L=i-I-A,W=e-T-O;W===k&&L===w||(n.each(c,function(t){t.height=L}),n.each(f,function(t){t.height=L}),n.each(g,function(t){t.fullWidth||(t.width=W)}),n.each(m,function(t){t.fullWidth||(t.width=W)}),w=L,k=W);var Y=l+F,N=d+R;n.each(c.concat(g),H),Y+=k,N+=w,n.each(f,H),n.each(m,H),t.chartArea={left:T,top:I,right:T+k,bottom:I+w},n.each(p,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,w)})}function z(t){var e=n.findNextWhere(M,function(e){return e.box===t});if(e)if(t.isHorizontal()){var i={left:Math.max(T,S),right:Math.max(O,D),top:0,bottom:0};t.update(t.fullWidth?v:k,y/2,i)}else t.update(e.minSize.width,w)}function H(t){t.isHorizontal()?(t.left=t.fullWidth?l:T,t.right=t.fullWidth?e-u:T+k,t.top=N,t.bottom=N+t.height,N=t.bottom):(t.left=Y,t.right=Y+t.width,t.top=I,t.bottom=I+w,Y=t.right)}}}},{45:45}],31:[function(t,e,i){\"use strict\";var n=t(25),a=t(45);n._set(\"global\",{plugins:{}}),e.exports={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,r,o,s,l=this.descriptors(t),u=l.length;for(n=0;n<u;++n)if(\"function\"==typeof(s=(r=(a=l[n]).plugin)[e])&&((o=[t].concat(i||[])).push(a.options),!1===s.apply(r,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],r=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=a.clone(n.global.plugins[e])),i.push(t),r.push({plugin:t,options:o||{}}))}}),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}}},{25:25,45:45}],32:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(34);function s(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function l(t,e,i){var n=t.getPixelForTick(e);return i&&(n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}n._set(\"scale\",{display:!0,position:\"left\",offset:!1,gridLines:{display:!0,color:\"rgba(0, 0, 0, 0.1)\",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:\"rgba(0,0,0,0.25)\",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:\"\",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:o.formatters.values,minor:{},major:{}}}),e.exports=function(t){function e(t,e,i){return r.isArray(e)?r.longestText(t,i,e):t.measureText(e).width}function i(t){var e=r.valueOrDefault,i=n.global,a=e(t.fontSize,i.defaultFontSize),o=e(t.fontStyle,i.defaultFontStyle),s=e(t.fontFamily,i.defaultFontFamily);return{size:a,style:o,family:s,font:r.fontString(a,o,s)}}function o(t){return r.options.toLineHeight(r.valueOrDefault(t.lineHeight,1.2),r.valueOrDefault(t.fontSize,n.global.defaultFontSize))}t.Scale=a.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)\"major\"!==e&&\"minor\"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){r.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,s,l,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=r.extend({left:0,right:0,top:0,bottom:0},i),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),l=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(l)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,n=0,a=o.length;n<a;++n)s=o[n],(u=l[n])?u.label=s:l.push(u={label:s,major:!1});return d._ticks=l,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){r.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){r.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){r.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){r.callback(this.options.beforeDataLimits,[this])},determineDataLimits:r.noop,afterDataLimits:function(){r.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){r.callback(this.options.beforeBuildTicks,[this])},buildTicks:r.noop,afterBuildTicks:function(){r.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){r.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){r.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){r.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=s(t._ticks),o=i(n);e.font=o.font;var l=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var u,d=r.longestText(e,o.font,a,t.longestTextCache),h=d,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;h>c&&l<n.maxRotation;){var f=r.toRadians(l);if(u=Math.cos(f),Math.sin(f)*d>t.maxHeight){l--;break}l++,h=u*d}t.labelRotation=l},afterCalculateTickRotation:function(){r.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){r.callback(this.options.beforeFit,[this])},fit:function(){var t=this,n=t.minSize={width:0,height:0},a=s(t._ticks),l=t.options,u=l.ticks,d=l.scaleLabel,h=l.gridLines,c=l.display,f=t.isHorizontal(),g=i(u),m=l.gridLines.tickMarkLength;if(n.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:c&&h.drawTicks?m:0,n.height=f?c&&h.drawTicks?m:0:t.maxHeight,d.display&&c){var p=o(d)+r.options.toPadding(d.padding).height;f?n.height+=p:n.width+=p}if(u.display&&c){var v=r.longestText(t.ctx,g.font,a,t.longestTextCache),y=r.numberOfLabelLines(a),b=.5*g.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var _=r.toRadians(t.labelRotation),k=Math.cos(_),w=Math.sin(_)*v+g.size*y+b*(y-1)+b;n.height=Math.min(t.maxHeight,n.height+w+x),t.ctx.font=g.font;var M=e(t.ctx,a[0],g.font),S=e(t.ctx,a[a.length-1],g.font);0!==t.labelRotation?(t.paddingLeft=\"bottom\"===l.position?k*M+3:k*b+3,t.paddingRight=\"bottom\"===l.position?k*b+3:k*S+3):(t.paddingLeft=M/2+3,t.paddingRight=S/2+3)}else u.mirror?v=0:v+=x+b,n.width=Math.min(t.maxWidth,n.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=n.width,t.height=n.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){r.callback(this.options.afterFit,[this])},isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(r.isNullOrUndef(t))return NaN;if(\"number\"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:r.noop,getPixelForValue:r.noop,getValueForPixel:r.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var r=e.left+Math.round(a);return r+=e.isFullWidth()?e.margins.left:0}var o=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(o/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n,a,o=this,s=o.isHorizontal(),l=o.options.ticks.minor,u=t.length,d=r.toRadians(o.labelRotation),h=Math.cos(d),c=o.longestLabelWidth*h,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(c+l.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+l.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),i=0;i<u;i++)n=t[i],(e>1&&i%e>0||i%e==0&&i+e>=u)&&i!==u-1&&delete n.label,f.push(n);return f},draw:function(t){var e=this,a=e.options;if(a.display){var s=e.ctx,u=n.global,d=a.ticks.minor,h=a.ticks.major||d,c=a.gridLines,f=a.scaleLabel,g=0!==e.labelRotation,m=e.isHorizontal(),p=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=r.valueOrDefault(d.fontColor,u.defaultFontColor),y=i(d),b=r.valueOrDefault(h.fontColor,u.defaultFontColor),x=i(h),_=c.drawTicks?c.tickMarkLength:0,k=r.valueOrDefault(f.fontColor,u.defaultFontColor),w=i(f),M=r.options.toPadding(f.padding),S=r.toRadians(e.labelRotation),D=[],C=e.options.gridLines.lineWidth,P=\"right\"===a.position?e.right:e.right-C-_,T=\"right\"===a.position?e.right+_:e.right,O=\"bottom\"===a.position?e.top+C:e.bottom-_-C,I=\"bottom\"===a.position?e.top+C+_:e.bottom+C;if(r.each(p,function(i,n){if(!r.isNullOrUndef(i.label)){var o,s,h,f,v,y,b,x,k,w,M,A,F,R,L=i.label;n===e.zeroLineIndex&&a.offset===c.offsetGridLines?(o=c.zeroLineWidth,s=c.zeroLineColor,h=c.zeroLineBorderDash,f=c.zeroLineBorderDashOffset):(o=r.valueAtIndexOrDefault(c.lineWidth,n),s=r.valueAtIndexOrDefault(c.color,n),h=r.valueOrDefault(c.borderDash,u.borderDash),f=r.valueOrDefault(c.borderDashOffset,u.borderDashOffset));var W=\"middle\",Y=\"middle\",N=d.padding;if(m){var z=_+N;\"bottom\"===a.position?(Y=g?\"middle\":\"top\",W=g?\"right\":\"center\",R=e.top+z):(Y=g?\"middle\":\"bottom\",W=g?\"left\":\"center\",R=e.bottom-z);var H=l(e,n,c.offsetGridLines&&p.length>1);H<e.left&&(s=\"rgba(0,0,0,0)\"),H+=r.aliasPixel(o),F=e.getPixelForTick(n)+d.labelOffset,v=b=k=M=H,y=O,x=I,w=t.top,A=t.bottom+C}else{var V,B=\"left\"===a.position;d.mirror?(W=B?\"left\":\"right\",V=N):(W=B?\"right\":\"left\",V=_+N),F=B?e.right-V:e.left+V;var E=l(e,n,c.offsetGridLines&&p.length>1);E<e.top&&(s=\"rgba(0,0,0,0)\"),E+=r.aliasPixel(o),R=e.getPixelForTick(n)+d.labelOffset,v=P,b=T,k=t.left,M=t.right+C,y=x=w=A=E}D.push({tx1:v,ty1:y,tx2:b,ty2:x,x1:k,y1:w,x2:M,y2:A,labelX:F,labelY:R,glWidth:o,glColor:s,glBorderDash:h,glBorderDashOffset:f,rotation:-1*S,label:L,major:i.major,textBaseline:Y,textAlign:W})}}),r.each(D,function(t){if(c.display&&(s.save(),s.lineWidth=t.glWidth,s.strokeStyle=t.glColor,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),c.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=t.major?x.font:y.font,s.fillStyle=t.major?b:v,s.textBaseline=t.textBaseline,s.textAlign=t.textAlign;var i=t.label;if(r.isArray(i))for(var n=i.length,a=1.5*y.size,o=e.isHorizontal()?0:-a*(n-1)/2,l=0;l<n;++l)s.fillText(\"\"+i[l],0,o),o+=a;else s.fillText(i,0,0);s.restore()}}),f.display){var A,F,R=0,L=o(f)/2;if(m)A=e.left+(e.right-e.left)/2,F=\"bottom\"===a.position?e.bottom-L-M.bottom:e.top+L+M.top;else{var W=\"left\"===a.position;A=W?e.left+L+M.top:e.right-L-M.top,F=e.top+(e.bottom-e.top)/2,R=W?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(A,F),s.rotate(R),s.textAlign=\"center\",s.textBaseline=\"middle\",s.fillStyle=k,s.font=w.font,s.fillText(f.labelString,0,0),s.restore()}if(c.drawBorder){s.lineWidth=r.valueAtIndexOrDefault(c.lineWidth,0),s.strokeStyle=r.valueAtIndexOrDefault(c.color,0);var Y=e.left,N=e.right+C,z=e.top,H=e.bottom+C,V=r.aliasPixel(s.lineWidth);m?(z=H=\"top\"===a.position?e.bottom:e.top,z+=V,H+=V):(Y=N=\"left\"===a.position?e.right:e.left,Y+=V,N+=V),s.beginPath(),s.moveTo(Y,z),s.lineTo(N,H),s.stroke()}}}})}},{25:25,26:26,34:34,45:45}],33:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(30);e.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=a.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[n.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(t){a.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,r.addBox(t,e)})}}}},{25:25,30:30,45:45}],34:[function(t,e,i){\"use strict\";var n=t(45);e.exports={formatters:{values:function(t){return n.isArray(t)?t:\"\"+t},linear:function(t,e,i){var a=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=n.log10(Math.abs(a)),o=\"\";if(0!==t){var s=-1*Math.floor(r);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o=\"0\";return o},logarithmic:function(t,e,i){var a=t/Math.pow(10,Math.floor(n.log10(t)));return 0===t?\"0\":1===a||2===a||5===a||0===e||e===i.length-1?t.toExponential():\"\"}}}},{45:45}],35:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{tooltips:{enabled:!0,custom:null,mode:\"nearest\",position:\"average\",intersect:!0,backgroundColor:\"rgba(0,0,0,0.8)\",titleFontStyle:\"bold\",titleSpacing:2,titleMarginBottom:6,titleFontColor:\"#fff\",titleAlign:\"left\",bodySpacing:2,bodyFontColor:\"#fff\",bodyAlign:\"left\",footerFontStyle:\"bold\",footerSpacing:2,footerMarginTop:6,footerFontColor:\"#fff\",footerAlign:\"left\",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:\"#fff\",displayColors:!0,borderColor:\"rgba(0,0,0,0)\",borderWidth:0,callbacks:{beforeTitle:r.noop,title:function(t,e){var i=\"\",n=e.labels,a=n?n.length:0;if(t.length>0){var r=t[0];r.xLabel?i=r.xLabel:a>0&&r.index<a&&(i=n[r.index])}return i},afterTitle:r.noop,beforeBody:r.noop,beforeLabel:r.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||\"\";return i&&(i+=\": \"),i+=t.yLabel},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:r.noop,afterBody:r.noop,beforeFooter:r.noop,footer:r.noop,afterFooter:r.noop}}}),e.exports=function(t){function e(t,e){var i=r.color(t);return i.alpha(e*i.alpha()).rgbaString()}function i(t,e){return e&&(r.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function o(t){var e=n.global,i=r.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:i(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:i(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:i(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:i(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:i(t.titleFontStyle,e.defaultFontStyle),titleFontSize:i(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:i(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:i(t.footerFontStyle,e.defaultFontStyle),footerFontSize:i(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}t.Tooltip=a.extend({initialize:function(){this._model=o(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),a=t.afterTitle.apply(this,arguments),r=[];return r=i(r=i(r=i(r,e),n),a)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var n=this,a=n._options.callbacks,o=[];return r.each(t,function(t){var r={before:[],lines:[],after:[]};i(r.before,a.beforeLabel.call(n,t,e)),i(r.lines,a.label.call(n,t,e)),i(r.after,a.afterLabel.call(n,t,e)),o.push(r)}),o},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),a=t.afterFooter.apply(this,arguments),r=[];return r=i(r=i(r=i(r,e),n),a)},update:function(e){var i,n,a,s,l,u,d,h,c,f,g,m,p,v,y,b,x,_,k,w,M=this,S=M._options,D=M._model,C=M._model=o(S),P=M._active,T=M._data,O={xAlign:D.xAlign,yAlign:D.yAlign},I={x:D.x,y:D.y},A={width:D.width,height:D.height},F={x:D.caretX,y:D.caretY};if(P.length){C.opacity=1;var R=[],L=[];F=t.Tooltip.positioners[S.position].call(M,P,M._eventPosition);var W=[];for(i=0,n=P.length;i<n;++i)W.push((b=P[i],x=void 0,_=void 0,void 0,void 0,x=b._xScale,_=b._yScale||b._scale,k=b._index,w=b._datasetIndex,{xLabel:x?x.getLabelForIndex(k,w):\"\",yLabel:_?_.getLabelForIndex(k,w):\"\",index:k,datasetIndex:w,x:b._model.x,y:b._model.y}));S.filter&&(W=W.filter(function(t){return S.filter(t,T)})),S.itemSort&&(W=W.sort(function(t,e){return S.itemSort(t,e,T)})),r.each(W,function(t){R.push(S.callbacks.labelColor.call(M,t,M._chart)),L.push(S.callbacks.labelTextColor.call(M,t,M._chart))}),C.title=M.getTitle(W,T),C.beforeBody=M.getBeforeBody(W,T),C.body=M.getBody(W,T),C.afterBody=M.getAfterBody(W,T),C.footer=M.getFooter(W,T),C.x=Math.round(F.x),C.y=Math.round(F.y),C.caretPadding=S.caretPadding,C.labelColors=R,C.labelTextColors=L,C.dataPoints=W,O=function(t,e){var i,n,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d=\"center\",h=\"center\";s.y<e.height?h=\"top\":s.y>l.height-e.height&&(h=\"bottom\");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;\"center\"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?\"top\":\"bottom\"},i(s.x)?(d=\"left\",a(s.x)&&(d=\"center\",h=o(s.y))):n(s.x)&&(d=\"right\",r(s.x)&&(d=\"center\",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,A=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);s+=e.beforeBody.length+e.afterBody.length;var l=e.title.length,u=e.footer.length,d=e.titleFontSize,h=e.bodyFontSize,c=e.footerFontSize;n+=l*d,n+=l?(l-1)*e.titleSpacing:0,n+=l?e.titleMarginBottom:0,n+=s*h,n+=s?(s-1)*e.bodySpacing:0,n+=u?e.footerMarginTop:0,n+=u*c,n+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,i.measureText(t).width+f)};return i.font=r.fontString(d,e._titleFontStyle,e._titleFontFamily),r.each(e.title,g),i.font=r.fontString(h,e._bodyFontStyle,e._bodyFontFamily),r.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?h+2:0,r.each(o,function(t){r.each(t.before,g),r.each(t.lines,g),r.each(t.after,g)}),f=0,i.font=r.fontString(c,e._footerFontStyle,e._footerFontFamily),r.each(e.footer,g),{width:a+=2*e.xPadding,height:n}}(this,C)),a=C,s=A,l=O,u=M._chart,d=a.x,h=a.y,c=a.caretSize,f=a.caretPadding,g=a.cornerRadius,m=l.xAlign,p=l.yAlign,v=c+f,y=g+f,\"right\"===m?d-=s.width:\"center\"===m&&((d-=s.width/2)+s.width>u.width&&(d=u.width-s.width),d<0&&(d=0)),\"top\"===p?h+=v:h-=\"bottom\"===p?s.height+v:s.height/2,\"center\"===p?\"left\"===m?d+=v:\"right\"===m&&(d-=v):\"left\"===m?d-=y:\"right\"===m&&(d+=y),I={x:d,y:h}}else C.opacity=0;return C.xAlign=O.xAlign,C.yAlign=O.yAlign,C.x=I.x,C.y=I.y,C.width=A.width,C.height=A.height,C.caretX=F.x,C.caretY=F.y,M._model=C,e&&S.custom&&S.custom.call(M,C),M},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,r,o,s,l,u=i.caretSize,d=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if(\"center\"===c)s=g+p/2,\"left\"===h?(a=(n=f)-u,r=n,o=s+u,l=s-u):(a=(n=f+m)+u,r=n,o=s-u,l=s+u);else if(\"left\"===h?(n=(a=f+d+u)-u,r=a+u):\"right\"===h?(n=(a=f+m-d-u)-u,r=a+u):(n=(a=i.caretX)-u,r=a+u),\"top\"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=n,n=v}return{x1:n,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,i,n,a){var o=i.title;if(o.length){n.textAlign=i._titleAlign,n.textBaseline=\"top\";var s,l,u=i.titleFontSize,d=i.titleSpacing;for(n.fillStyle=e(i.titleFontColor,a),n.font=r.fontString(u,i._titleFontStyle,i._titleFontFamily),s=0,l=o.length;s<l;++s)n.fillText(o[s],t.x,t.y),t.y+=u+d,s+1===o.length&&(t.y+=i.titleMarginBottom-d)}},drawBody:function(t,i,n,a){var o=i.bodyFontSize,s=i.bodySpacing,l=i.body;n.textAlign=i._bodyAlign,n.textBaseline=\"top\",n.font=r.fontString(o,i._bodyFontStyle,i._bodyFontFamily);var u=0,d=function(e){n.fillText(e,t.x+u,t.y),t.y+=o+s};n.fillStyle=e(i.bodyFontColor,a),r.each(i.beforeBody,d);var h=i.displayColors;u=h?o+2:0,r.each(l,function(s,l){var u=e(i.labelTextColors[l],a);n.fillStyle=u,r.each(s.before,d),r.each(s.lines,function(r){h&&(n.fillStyle=e(i.legendColorBackground,a),n.fillRect(t.x,t.y,o,o),n.lineWidth=1,n.strokeStyle=e(i.labelColors[l].borderColor,a),n.strokeRect(t.x,t.y,o,o),n.fillStyle=e(i.labelColors[l].backgroundColor,a),n.fillRect(t.x+1,t.y+1,o-2,o-2),n.fillStyle=u),d(r)}),r.each(s.after,d)}),u=0,r.each(i.afterBody,d),t.y-=s},drawFooter:function(t,i,n,a){var o=i.footer;o.length&&(t.y+=i.footerMarginTop,n.textAlign=i._footerAlign,n.textBaseline=\"top\",n.fillStyle=e(i.footerFontColor,a),n.font=r.fontString(i.footerFontSize,i._footerFontStyle,i._footerFontFamily),r.each(o,function(e){n.fillText(e,t.x,t.y),t.y+=i.footerFontSize+i.footerSpacing}))},drawBackground:function(t,i,n,a,r){n.fillStyle=e(i.backgroundColor,r),n.strokeStyle=e(i.borderColor,r),n.lineWidth=i.borderWidth;var o=i.xAlign,s=i.yAlign,l=t.x,u=t.y,d=a.width,h=a.height,c=i.cornerRadius;n.beginPath(),n.moveTo(l+c,u),\"top\"===s&&this.drawCaret(t,a),n.lineTo(l+d-c,u),n.quadraticCurveTo(l+d,u,l+d,u+c),\"center\"===s&&\"right\"===o&&this.drawCaret(t,a),n.lineTo(l+d,u+h-c),n.quadraticCurveTo(l+d,u+h,l+d-c,u+h),\"bottom\"===s&&this.drawCaret(t,a),n.lineTo(l+c,u+h),n.quadraticCurveTo(l,u+h,l,u+h-c),\"center\"===s&&\"left\"===o&&this.drawCaret(t,a),n.lineTo(l,u+c),n.quadraticCurveTo(l,u,l+c,u),n.closePath(),n.fill(),i.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(this.drawBackground(n,e,t,i,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,a),this.drawBody(n,e,t,a),this.drawFooter(n,e,t,a))}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],\"mouseout\"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!r.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,r=0;for(e=0,i=t.length;e<i;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();n+=s.x,a+=s.y,++r}}return{x:Math.round(n/r),y:Math.round(a/r)}},nearest:function(t,e){var i,n,a,o=e.x,s=e.y,l=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var u=t[i];if(u&&u.hasValue()){var d=u.getCenterPoint(),h=r.distanceBetweenPoints(e,d);h<l&&(l=h,a=u)}}if(a){var c=a.tooltipPosition();o=c.x,s=c.y}return{x:o,y:s}}}}},{25:25,26:26,45:45}],36:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{elements:{arc:{backgroundColor:n.global.defaultColor,borderColor:\"#fff\",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=r.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,s=i.startAngle,l=i.endAngle;l<s;)l+=2*Math.PI;for(;a>l;)a-=2*Math.PI;for(;a<s;)a+=2*Math.PI;var u=a>=s&&a<=l,d=o>=i.innerRadius&&o<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin=\"bevel\",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=n.global;n._set(\"global\",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:\"butt\",borderDash:[],borderDashOffset:0,borderJoinStyle:\"miter\",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=o.elements.line,h=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||o.defaultColor,s.beginPath(),h=-1,t=0;t<u.length;++t)e=u[t],i=r.previousItem(u,t),n=e._view,0===t?n.skip||(s.moveTo(n.x,n.y),h=t):(i=-1===h?i:u[h],n.skip||(h!==t-1&&!l||-1===h?s.moveTo(n.x,n.y):r.canvas.lineTo(s,i._view,e._view),h=t));s.stroke(),s.restore()}})},{25:25,26:26,45:45}],38:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=n.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}n._set(\"global\",{elements:{point:{radius:3,pointStyle:\"circle\",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=a.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:s,inXRange:s,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._model,a=this._chart.ctx,s=e.pointStyle,l=e.radius,u=e.x,d=e.y,h=r.color,c=0;e.skip||(a.strokeStyle=e.borderColor||o,a.lineWidth=r.valueOrDefault(e.borderWidth,n.global.elements.point.borderWidth),a.fillStyle=e.backgroundColor||o,void 0!==t&&(i.x<t.left||1.01*t.right<i.x||i.y<t.top||1.01*t.bottom<i.y)&&(i.x<t.left?c=(u-i.x)/(t.left-i.x):1.01*t.right<i.x?c=(i.x-u)/(i.x-t.right):i.y<t.top?c=(d-i.y)/(t.top-i.y):1.01*t.bottom<i.y&&(c=(i.y-d)/(i.y-t.bottom)),c=Math.round(100*c)/100,a.strokeStyle=h(a.strokeStyle).alpha(c).rgbString(),a.fillStyle=h(a.fillStyle).alpha(c).rgbString()),r.canvas.drawPoint(a,s,l,u,d))}})},{25:25,26:26,45:45}],39:[function(t,e,i){\"use strict\";var n=t(25),a=t(26);function r(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(r(t)){var s=o.width/2;e=o.x-s,i=o.x+s,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var l=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-l,a=o.y+l}return{left:e,top:n,right:i,bottom:a}}n._set(\"global\",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:\"bottom\",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,r,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=e>t?1:-1,r=1,o=l.borderSkipped||\"left\"):(t=l.x-l.width/2,e=l.x+l.width/2,i=l.y,a=1,r=(n=l.base)>i?1:-1,o=l.borderSkipped||\"bottom\"),u){var d=Math.min(Math.abs(t-e),Math.abs(i-n)),h=(u=u>d?d:u)/2,c=t+(\"left\"!==o?h*a:0),f=e+(\"right\"!==o?-h*a:0),g=i+(\"top\"!==o?h*r:0),m=n+(\"bottom\"!==o?-h*r:0);c!==f&&(i=g,n=m),g!==m&&(t=c,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var p=[[t,n],[t,i],[e,i],[e,n]],v=[\"bottom\",\"left\",\"top\",\"right\"].indexOf(o,0);function y(t){return p[(v+t)%4]}-1===v&&(v=0);var b=y(0);s.moveTo(b[0],b[1]);for(var x=1;x<4;x++)b=y(x),s.lineTo(b[0],b[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=o(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return r(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return r(this)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,i){\"use strict\";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,i){\"use strict\";var n=t(42);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,r){if(r){var o=Math.min(r,n/2),s=Math.min(r,a/2);t.moveTo(e+o,i),t.lineTo(e+n-o,i),t.quadraticCurveTo(e+n,i,e+n,i+s),t.lineTo(e+n,i+a-s),t.quadraticCurveTo(e+n,i+a,e+n-o,i+a),t.lineTo(e+o,i+a),t.quadraticCurveTo(e,i+a,e,i+a-s),t.lineTo(e,i+s),t.quadraticCurveTo(e,i,e+o,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a){var r,o,s,l,u,d;if(!e||\"object\"!=typeof e||\"[object HTMLImageElement]\"!==(r=e.toString())&&\"[object HTMLCanvasElement]\"!==r){if(!(isNaN(i)||i<=0)){switch(e){default:t.beginPath(),t.arc(n,a,i,0,2*Math.PI),t.closePath(),t.fill();break;case\"triangle\":t.beginPath(),u=(o=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(n-o/2,a+u/3),t.lineTo(n+o/2,a+u/3),t.lineTo(n,a-2*u/3),t.closePath(),t.fill();break;case\"rect\":d=1/Math.SQRT2*i,t.beginPath(),t.fillRect(n-d,a-d,2*d,2*d),t.strokeRect(n-d,a-d,2*d,2*d);break;case\"rectRounded\":var h=i/Math.SQRT2,c=n-h,f=a-h,g=Math.SQRT2*i;t.beginPath(),this.roundedRect(t,c,f,g,g,i/2),t.closePath(),t.fill();break;case\"rectRot\":d=1/Math.SQRT2*i,t.beginPath(),t.moveTo(n-d,a),t.lineTo(n,a+d),t.lineTo(n+d,a),t.lineTo(n,a-d),t.closePath(),t.fill();break;case\"cross\":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case\"crossRot\":t.beginPath(),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case\"star\":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case\"line\":t.beginPath(),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case\"dash\":t.beginPath(),t.moveTo(n,a),t.lineTo(n+i,a),t.closePath()}t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return\"after\"===i.steppedLine&&!n||\"after\"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments),t.closePath()}},{42:42}],42:[function(t,e,i){\"use strict\";var n,a={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&\"[object Object]\"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return a.valueOrDefault(a.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&\"function\"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var r,o,s;if(a.isArray(t))if(o=t.length,n)for(r=o-1;r>=0;r--)e.call(i,t[r],r);else for(r=0;r<o;r++)e.call(i,t[r],r);else if(a.isObject(t))for(o=(s=Object.keys(t)).length,r=0;r<o;r++)e.call(i,t[s[r]],s[r])},arrayEquals:function(t,e){var i,n,r,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(r=t[i],o=e[i],r instanceof Array&&o instanceof Array){if(!a.arrayEquals(r,o))return!1}else if(r!==o)return!1;return!0},clone:function(t){if(a.isArray(t))return t.map(a.clone);if(a.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,r=0;r<n;++r)e[i[r]]=a.clone(t[i[r]]);return e}return t},_merger:function(t,e,i,n){var r=e[t],o=i[t];a.isObject(r)&&a.isObject(o)?a.merge(r,o,n):e[t]=a.clone(o)},_mergerIf:function(t,e,i){var n=e[t],r=i[t];a.isObject(n)&&a.isObject(r)?a.mergeIf(n,r):e.hasOwnProperty(t)||(e[t]=a.clone(r))},merge:function(t,e,i){var n,r,o,s,l,u=a.isArray(e)?e:[e],d=u.length;if(!a.isObject(t))return t;for(n=(i=i||{}).merger||a._merger,r=0;r<d;++r)if(e=u[r],a.isObject(e))for(l=0,s=(o=Object.keys(e)).length;l<s;++l)n(o[l],t,e,i);return t},mergeIf:function(t,e){return a.merge(t,e,{merger:a._mergerIf})},extend:function(t){for(var e=function(e,i){t[i]=e},i=1,n=arguments.length;i<n;++i)a.each(arguments[i],e);return t},inherits:function(t){var e=this,i=t&&t.hasOwnProperty(\"constructor\")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=a.inherits,t&&a.extend(i.prototype,t),i.__super__=e.prototype,i}};e.exports=a,a.callCallback=a.callback,a.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},a.getValueOrDefault=a.valueOrDefault,a.getValueAtIndexOrDefault=a.valueAtIndexOrDefault},{}],43:[function(t,e,i){\"use strict\";var n=t(42),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},n.easingEffects=a},{42:42}],44:[function(t,e,i){\"use strict\";var n=t(42);e.exports={toLineHeight:function(t,e){var i=(\"\"+t).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);if(!i||\"normal\"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case\"px\":return t;case\"%\":t/=100}return e*t},toPadding:function(t){var e,i,a,r;return n.isObject(t)?(e=+t.top||0,i=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=i=a=r=+t||0,{top:e,right:i,bottom:a,left:r,height:e+a,width:r+i}},resolve:function(t,e,i){var a,r,o;for(a=0,r=t.length;a<r;++a)if(void 0!==(o=t[a])&&(void 0!==e&&\"function\"==typeof o&&(o=o(e)),void 0!==i&&n.isArray(o)&&(o=o[i]),void 0!==o))return o}}},{42:42}],45:[function(t,e,i){\"use strict\";e.exports=t(42),e.exports.easing=t(43),e.exports.canvas=t(41),e.exports.options=t(44)},{41:41,42:42,43:43,44:44}],46:[function(t,e,i){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext(\"2d\")||null}}},{}],47:[function(t,e,i){\"use strict\";var n=t(45),a=\"$chartjs\",r=\"chartjs-\",o=r+\"render-monitor\",s=r+\"render-animation\",l=[\"animationstart\",\"webkitAnimationStart\"],u={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"};function d(t,e){var i=n.getStyle(t,e),a=i&&i.match(/^(\\d+)(\\.\\d+)?px$/);return a?Number(a[1]):void 0}var h=!!function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"e\",null,e)}catch(t){}return t}()&&{passive:!0};function c(t,e,i){t.addEventListener(e,i,h)}function f(t,e,i){t.removeEventListener(e,i,h)}function g(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function m(t,e,i){var u,d,h,f,m,p,v,y,b=t[a]||(t[a]={}),x=b.resizer=function(t){var e=document.createElement(\"div\"),i=r+\"size-monitor\",n=\"position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;\";e.style.cssText=n,e.className=i,e.innerHTML='<div class=\"'+i+'-expand\" style=\"'+n+'\"><div style=\"position:absolute;width:1000000px;height:1000000px;left:0;top:0\"></div></div><div class=\"'+i+'-shrink\" style=\"'+n+'\"><div style=\"position:absolute;width:200%;height:200%;left:0; top:0\"></div></div>';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var s=function(){e._reset(),t()};return c(a,\"scroll\",s.bind(a,\"expand\")),c(o,\"scroll\",s.bind(o,\"shrink\")),e}((u=function(){if(b.resizer)return e(g(\"resize\",i))},h=!1,f=[],function(){f=Array.prototype.slice.call(arguments),d=d||this,h||(h=!0,n.requestAnimFrame.call(window,function(){h=!1,u.apply(d,f)}))}));p=function(){if(b.resizer){var e=t.parentNode;e&&e!==x.parentNode&&e.insertBefore(x,e.firstChild),x._reset()}},v=(m=t)[a]||(m[a]={}),y=v.renderProxy=function(t){t.animationName===s&&p()},n.each(l,function(t){c(m,t,y)}),v.reflow=!!m.offsetParent,m.classList.add(o)}function p(t){var e,i,r,s=t[a]||{},u=s.resizer;delete s.resizer,i=(e=t)[a]||{},(r=i.renderProxy)&&(n.each(l,function(t){f(e,t,r)}),delete i.renderProxy),e.classList.remove(o),u&&u.parentNode&&u.parentNode.removeChild(u)}e.exports={_enabled:\"undefined\"!=typeof window&&\"undefined\"!=typeof document,initialize:function(){var t,e,i,n=\"from{opacity:0.99}to{opacity:1}\";e=\"@-webkit-keyframes \"+s+\"{\"+n+\"}@keyframes \"+s+\"{\"+n+\"}.\"+o+\"{-webkit-animation:\"+s+\" 0.001s;animation:\"+s+\" 0.001s;}\",i=(t=this)._style||document.createElement(\"style\"),t._style||(t._style=i,e=\"/* Chart.js */\\n\"+e,i.setAttribute(\"type\",\"text/css\"),document.getElementsByTagName(\"head\")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){\"string\"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext(\"2d\");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute(\"height\"),r=t.getAttribute(\"width\");if(t[a]={initial:{height:n,width:r,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||\"block\",null===r||\"\"===r){var o=d(t,\"width\");void 0!==o&&(t.width=o)}if(null===n||\"\"===n)if(\"\"===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=d(t,\"height\");void 0!==o&&(t.height=s)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[a]){var i=e[a].initial;[\"height\",\"width\"].forEach(function(t){var a=i[t];n.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),n.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[a]}},addEventListener:function(t,e,i){var r=t.canvas;if(\"resize\"!==e){var o=i[a]||(i[a]={});c(r,e,(o.proxies||(o.proxies={}))[t.id+\"_\"+e]=function(e){var a,r,o,s;i((r=t,o=u[(a=e).type]||a.type,s=n.getRelativePosition(a,r),g(o,r,s.x,s.y,a)))})}else m(r,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if(\"resize\"!==e){var r=((i[a]||{}).proxies||{})[t.id+\"_\"+e];r&&f(n,e,r)}else p(n)}},n.addEvent=c,n.removeEvent=f},{45:45}],48:[function(t,e,i){\"use strict\";var n=t(45),a=t(46),r=t(47),o=r._enabled?r:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},o)},{45:45,46:46,47:47}],49:[function(t,e,i){\"use strict\";e.exports={},e.exports.filler=t(50),e.exports.legend=t(51),e.exports.title=t(52)},{50:50,51:51,52:52}],50:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"global\",{plugins:{filler:{propagate:!0}}});var o={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],r=a.length||0;return r?function(t,e){return e<r&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function s(t,e,i){var n,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return\"origin\";if(n=parseFloat(r,10),isFinite(n)&&Math.floor(n)===n)return\"-\"!==r[0]&&\"+\"!==r[0]||(n=e+n),!(n===e||n<0||n>=i)&&n;switch(r){case\"bottom\":return\"start\";case\"top\":return\"end\";case\"zero\":return\"origin\";case\"origin\":case\"start\":case\"end\":return r;default:return!1}}function l(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if(\"start\"===a?r=void 0===i.scaleBottom?n.bottom:i.scaleBottom:\"end\"===a?r=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?r=i.scaleZero:n.getBasePosition?r=n.getBasePosition():n.getBasePixel&&(r=n.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if(\"number\"==typeof r&&isFinite(r))return{x:(e=n.isHorizontal())?r:null,y:e?null:r}}return null}function u(t,e,i){var n,a=t[e].fill,r=[e];if(!i)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;r.push(a),a=n.fill}return!1}function d(t){return t&&!t.skip}function h(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)r.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;o>0;--o)r.canvas.lineTo(t,i[o],i[o-1],!0)}}e.exports={id:\"filler\",afterDatasetsUpdate:function(t,e){var i,n,r,d,h,c,f,g=(t.data.datasets||[]).length,m=e.propagate,p=[];for(n=0;n<g;++n)d=null,(r=(i=t.getDatasetMeta(n)).dataset)&&r._model&&r instanceof a.Line&&(d={visible:t.isDatasetVisible(n),fill:s(r,n,g),chart:t,el:r}),i.$filler=d,p.push(d);for(n=0;n<g;++n)(d=p[n])&&(d.fill=u(p,n,m),d.boundary=l(d),d.mapper=(void 0,f=void 0,c=(h=d).fill,f=\"dataset\",!1===c?null:(isFinite(c)||(f=\"boundary\"),o[f](h))))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var a=t.ctx,o=i.el,s=o._view,l=o._children||[],u=i.mapper,c=s.backgroundColor||n.global.defaultColor;u&&c&&l.length&&(r.canvas.clipArea(a,t.chartArea),function(t,e,i,n,a,r){var o,s,l,u,c,f,g,m=e.length,p=n.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,s=m+!!r;o<s;++o)c=i(u=e[l=o%m]._view,l,n),f=d(u),g=d(c),f&&g?(b=v.push(u),x=y.push(c)):b&&x&&(p?(f&&v.push(u),g&&y.push(c)):(h(t,v,y,b,x),b=x=0,v=[],y=[]));h(t,v,y,b,x),t.closePath(),t.fillStyle=a,t.fill()}(a,l,u,s,c,o._loop),r.canvas.unclipArea(a))}}}},{25:25,40:40,45:45}],51:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(30),s=r.noop;function l(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}n._set(\"global\",{legend:{display:!0,position:\"top\",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return r.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:r.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style=\"background-color:'+t.data.datasets[i].backgroundColor+'\"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")}});var u=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},i=r.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,i=e.labels,a=e.display,o=t.ctx,s=n.global,u=r.valueOrDefault,d=u(i.fontSize,s.defaultFontSize),h=u(i.fontStyle,s.defaultFontStyle),c=u(i.fontFamily,s.defaultFontFamily),f=r.fontString(d,h,c),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=a?10:0):(m.width=a?10:0,m.height=t.maxHeight),a)if(o.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+i.padding:0;o.textAlign=\"left\",o.textBaseline=\"top\",r.each(t.legendItems,function(e,n){var a=l(i,d)+d/2+o.measureText(e.text).width;v[v.length-1]+a+i.padding>=t.width&&(y+=d+i.padding,v[v.length]=t.left),g[n]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+i.padding}),m.height+=y}else{var b=i.padding,x=t.columnWidths=[],_=i.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,e){var n=l(i,d)+d/2+o.measureText(t.text).width;w+M>m.height&&(_+=k+i.padding,x.push(k),k=0,w=0),k=Math.max(k,n),w+=M,g[e]={left:0,top:0,width:n,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,a=n.global,o=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,h=t.ctx,c=r.valueOrDefault,f=c(i.fontColor,a.defaultFontColor),g=c(i.fontSize,a.defaultFontSize),m=c(i.fontStyle,a.defaultFontStyle),p=c(i.fontFamily,a.defaultFontFamily),v=r.fontString(g,m,p);h.textAlign=\"left\",h.textBaseline=\"middle\",h.lineWidth=.5,h.strokeStyle=f,h.fillStyle=f,h.font=v;var y=l(i,g),b=t.legendHitBoxes,x=t.isHorizontal();d=x?{x:t.left+(s-u[0])/2,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var _=g+i.padding;r.each(t.legendItems,function(n,l){var f,m,p,v,k,w=h.measureText(n.text).width,M=y+g/2+w,S=d.x,D=d.y;x?S+M>=s&&(D=d.y+=_,d.line++,S=d.x=t.left+(s-u[d.line])/2):D+_>t.bottom&&(S=d.x=S+t.columnWidths[d.line]+i.padding,D=d.y=t.top+i.padding,d.line++),function(t,i,n){if(!(isNaN(y)||y<=0)){h.save(),h.fillStyle=c(n.fillStyle,a.defaultColor),h.lineCap=c(n.lineCap,o.borderCapStyle),h.lineDashOffset=c(n.lineDashOffset,o.borderDashOffset),h.lineJoin=c(n.lineJoin,o.borderJoinStyle),h.lineWidth=c(n.lineWidth,o.borderWidth),h.strokeStyle=c(n.strokeStyle,a.defaultColor);var s=0===c(n.lineWidth,o.borderWidth);if(h.setLineDash&&h.setLineDash(c(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=i+u;r.canvas.drawPoint(h,n.pointStyle,l,d,f)}else s||h.strokeRect(t,i,y,g),h.fillRect(t,i,y,g);h.restore()}}(S,D,n),b[l].left=S,b[l].top=D,f=n,m=w,v=y+(p=g/2)+S,k=D+p,h.fillText(f.text,v,k),f.hidden&&(h.beginPath(),h.lineWidth=2,h.moveTo(v,k),h.lineTo(v+m,k),h.stroke()),x?d.x+=M+i.padding:d.y+=_})}},handleEvent:function(t){var e=this,i=e.options,n=\"mouseup\"===t.type?\"click\":t.type,a=!1;if(\"mousemove\"===n){if(!i.onHover)return}else{if(\"click\"!==n)return;if(!i.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if(\"click\"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if(\"mousemove\"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var i=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,i,e),o.addBox(t,i),t.legend=i}e.exports={id:\"legend\",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(r.mergeIf(e,n.global.legend),i?(o.configure(t,i,e),i.options=e):d(t,e)):i&&(o.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{25:25,26:26,30:30,45:45}],52:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(30),s=r.noop;n._set(\"global\",{title:{display:!1,fontStyle:\"bold\",fullWidth:!0,lineHeight:1.2,padding:10,position:\"top\",text:\"\",weight:2e3}});var l=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=r.valueOrDefault,e=this.options,i=e.display,a=t(e.fontSize,n.global.defaultFontSize),o=this.minSize,s=r.isArray(e.text)?e.text.length:1,l=r.options.toLineHeight(e.lineHeight,a),u=i?s*l+2*e.padding:0;this.isHorizontal()?(o.width=this.maxWidth,o.height=u):(o.width=u,o.height=this.maxHeight),this.width=o.width,this.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},draw:function(){var t=this.ctx,e=r.valueOrDefault,i=this.options,a=n.global;if(i.display){var o,s,l,u=e(i.fontSize,a.defaultFontSize),d=e(i.fontStyle,a.defaultFontStyle),h=e(i.fontFamily,a.defaultFontFamily),c=r.fontString(u,d,h),f=r.options.toLineHeight(i.lineHeight,u),g=f/2+i.padding,m=0,p=this.top,v=this.left,y=this.bottom,b=this.right;t.fillStyle=e(i.fontColor,a.defaultFontColor),t.font=c,this.isHorizontal()?(s=v+(b-v)/2,l=p+g,o=b-v):(s=\"left\"===i.position?v+g:b-g,l=p+(y-p)/2,o=y-p,m=Math.PI*(\"left\"===i.position?-.5:.5)),t.save(),t.translate(s,l),t.rotate(m),t.textAlign=\"center\",t.textBaseline=\"middle\";var x=i.text;if(r.isArray(x))for(var _=0,k=0;k<x.length;++k)t.fillText(x[k],0,_,o),_+=f;else t.fillText(x,0,0,o);t.restore()}}});function u(t,e){var i=new l({ctx:t.ctx,options:e,chart:t});o.configure(t,i,e),o.addBox(t,i),t.titleBlock=i}e.exports={id:\"title\",_element:l,beforeInit:function(t){var e=t.options.title;e&&u(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(r.mergeIf(e,n.global.title),i?(o.configure(t,i,e),i.options=e):u(t,e)):i&&(o.removeBox(t,i),delete t.titleBlock)}}},{25:25,26:26,30:30,45:45}],53:[function(t,e,i){\"use strict\";e.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this.getLabels();this.ticks=0===this.minIndex&&this.maxIndex===t.length-1?t:t.slice(this.minIndex,this.maxIndex+1)},getLabelForIndex:function(t,e){var i=this.chart.data,n=this.isHorizontal();return i.yLabels&&!n?this.getRightValue(i.datasets[e].data[t]):this.ticks[t-this.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,r=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var o=n.getLabels().indexOf(t);e=-1!==o?o:e}if(n.isHorizontal()){var s=n.width/r,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+Math.round(l)}var u=n.height/r,d=u*(e-n.minIndex);return a&&(d+=u/2),n.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this.options.offset,i=Math.max(this._ticks.length-(e?0:1),1),n=this.isHorizontal(),a=(n?this.width:this.height)/i;return t-=n?this.left:this.top,e&&(t-=a/2),(t<=0?0:Math.round(t/a))+this.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType(\"category\",e,{position:\"bottom\"})}},{}],54:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(34);e.exports=function(t){var e={position:\"left\",ticks:{callback:r.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,r=t.isHorizontal();function o(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&a.each(n,function(t,e){if(!s){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(s=!0)}}),e.stacked||s){var l={};a.each(n,function(n,r){var s=i.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:\"\",s.stack].join(\".\");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,h=l[u].negativeValues;i.isDatasetVisible(r)&&o(s)&&a.each(n.data,function(i,n){var a=+t.getRightValue(i);isNaN(a)||s.data[n].hidden||(d[n]=d[n]||0,h[n]=h[n]||0,e.relativePoints?d[n]=100:a<0?h[n]+=a:d[n]+=a)})}),a.each(l,function(e){var i=e.positiveValues.concat(e.negativeValues),n=a.min(i),r=a.max(i);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?r:Math.max(t.max,r)})}else a.each(n,function(e,n){var r=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(r)&&a.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||r.data[i].hidden||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=a.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this.start,i=+this.getRightValue(t),n=this.end-e;return this.isHorizontal()?this.left+this.width/n*(i-e):this.bottom-this.height/n*(i-e)},getValueForPixel:function(t){var e=this.isHorizontal(),i=e?this.width:this.height,n=(e?t-this.left:this.bottom-t)/i;return this.start+(this.end-this.start)*n},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType(\"linear\",i,e)}},{25:25,34:34,45:45}],55:[function(t,e,i){\"use strict\";var n=t(45);e.exports=function(t){var e=n.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return\"string\"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=n.sign(t.min),a=n.sign(t.max);i<0&&a<0?t.max=0:i>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),r!==o&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),a={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,stepSize:n.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var r=n.niceNum(e.max-e.min,!1);i=n.niceNum(r/(t.maxTicks-1),!0)}var o=Math.floor(e.min/i)*i,s=Math.ceil(e.max/i)*i;t.min&&t.max&&t.stepSize&&n.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(o=t.min,s=t.max);var l=(s-o)/i;l=n.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l);var u=1;i<1&&(u=Math.pow(10,i.toString().length-2),o=Math.round(o*u)/u,s=Math.round(s*u)/u),a.push(void 0!==t.min?t.min:o);for(var d=1;d<l;++d)a.push(Math.round((o+d*i)*u)/u);return a.push(void 0!==t.max?t.max:s),a}(a,t);t.handleDirectionalChanges(),t.max=n.max(r),t.min=n.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.ticksAsNumbers=this.ticks.slice(),this.zeroLineIndex=this.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(this)}})}},{45:45}],56:[function(t,e,i){\"use strict\";var n=t(45),a=t(34);e.exports=function(t){var e={position:\"left\",ticks:{callback:a.formatters.logarithmic}},i=t.Scale.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,a=i.data.datasets,r=t.isHorizontal();function o(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&n.each(a,function(t,e){if(!s){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(s=!0)}}),e.stacked||s){var l={};n.each(a,function(a,r){var s=i.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:\"\",s.stack].join(\".\");i.isDatasetVisible(r)&&o(s)&&(void 0===l[u]&&(l[u]=[]),n.each(a.data,function(e,i){var n=l[u],a=+t.getRightValue(e);isNaN(a)||s.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),n.each(l,function(e){if(e.length>0){var i=n.min(e),a=n.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?a:Math.max(t.max,a)}})}else n.each(a,function(e,a){var r=i.getDatasetMeta(a);i.isDatasetVisible(a)&&o(r)&&n.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||r.data[i].hidden||n<0||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n),0!==n&&(null===t.minNotZero||n<t.minNotZero)&&(t.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,i=n.valueOrDefault;t.min=i(e.min,t.min),t.max=i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(n.log10(t.min))-1),t.max=Math.pow(10,Math.floor(n.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(n.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(n.log10(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(n.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),a={min:e.min,max:e.max},r=t.ticks=function(t,e){var i,a,r=[],o=n.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(n.log10(e.min)))),l=Math.floor(n.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(i=Math.floor(n.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,i)),r.push(s),s=a*Math.pow(10,i)):(i=Math.floor(n.log10(s)),a=Math.floor(s/Math.pow(10,i)));for(var d=i<0?Math.pow(10,Math.abs(i)):1;r.push(s),10==++a&&(a=1,d=++i>=0?1:d),s=Math.round(a*Math.pow(10,i)*d)/d,i<l||i===l&&a<u;);var h=o(t.max,s);return r.push(h),r}(a,t);t.max=n.max(r),t.min=n.min(r),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(n.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var i,a,r,o,s,l=this,u=l.options.ticks.reverse,d=n.log10,h=l._getFirstTickValue(l.minNotZero),c=0;return e=+l.getRightValue(e),u?(r=l.end,o=l.start,s=-1):(r=l.start,o=l.end,s=1),l.isHorizontal()?(i=l.width,a=u?l.right:l.left):(i=l.height,s*=-1,a=u?l.top:l.bottom),e!==r&&(0===r&&(i-=c=n.getValueOrDefault(l.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=h),0!==e&&(c+=i/(d(o)-d(r))*(d(e)-d(r))),a+=s*c),a},getValueForPixel:function(e){var i,a,r,o,s=this,l=s.options.ticks.reverse,u=n.log10,d=s._getFirstTickValue(s.minNotZero);if(l?(a=s.end,r=s.start):(a=s.start,r=s.end),s.isHorizontal()?(i=s.width,o=l?s.right-e:e-s.left):(i=s.height,o=l?e-s.top:s.bottom-e),o!==a){if(0===a){var h=n.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=h,i-=h,a=d}o*=u(r)-u(a),o/=i,o=Math.pow(10,u(a)+o)}return o}});t.scaleService.registerScaleType(\"logarithmic\",i,e)}},{34:34,45:45}],57:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(34);e.exports=function(t){var e=n.global,i={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,color:\"rgba(0, 0, 0, 0.1)\",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:\"rgba(255,255,255,0.75)\",backdropPaddingY:2,backdropPaddingX:2,callback:r.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function o(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function s(t){var i=t.options.pointLabels,n=a.valueOrDefault(i.fontSize,e.defaultFontSize),r=a.valueOrDefault(i.fontStyle,e.defaultFontStyle),o=a.valueOrDefault(i.fontFamily,e.defaultFontFamily);return{size:n,style:r,family:o,font:a.fontString(n,r,o)}}function l(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||t>a?{start:e-i-5,end:e}:{start:e,end:e+i+5}}function u(t,e,i,n){if(a.isArray(e))for(var r=i.y,o=1.5*n,s=0;s<e.length;++s)t.fillText(e[s],i.x,r),r+=o;else t.fillText(e,i.x,i.y)}function d(t){return a.isNumber(t)?t:0}var h=t.LinearScaleBase.extend({setDimensions:function(){var t=this,i=t.options,n=i.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var r=a.min([t.height,t.width]),o=a.valueOrDefault(n.fontSize,e.defaultFontSize);t.drawingArea=i.display?r/2-(o/2+n.backdropPaddingY):r/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(r,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);a.each(r.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||s.data[a].hidden||(i=Math.min(r,i),n=Math.max(r,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,i=a.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*i)))},convertTicksToLabels:function(){t.LinearScaleBase.prototype.convertTicksToLabels.call(this),this.pointLabels=this.chart.data.labels.map(this.options.pointLabels.callback,this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e;this.options.pointLabels.display?function(t){var e,i,n,r=s(t),u=Math.min(t.height/2,t.width/2),d={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=r.font,t._pointLabelSizes=[];var c,f,g,m=o(t);for(e=0;e<m;e++){n=t.getPointPosition(e,u),c=t.ctx,f=r.size,g=t.pointLabels[e]||\"\",i=a.isArray(g)?{w:a.longestText(c,c.font,g),h:g.length*f+1.5*(g.length-1)*f}:{w:c.measureText(g).width,h:f},t._pointLabelSizes[e]=i;var p=t.getIndexAngle(e),v=a.toDegrees(p)%360,y=l(v,n.x,i.w,0,180),b=l(v,n.y,i.h,90,270);y.start<d.l&&(d.l=y.start,h.l=p),y.end>d.r&&(d.r=y.end,h.r=p),b.start<d.t&&(d.t=b.start,h.t=p),b.end>d.b&&(d.b=b.end,h.b=p)}t.setReductions(u,d,h)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),o=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=d(n),a=d(a),r=d(r),o=d(o),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(r+o)/2)),this.setCenterPoint(n,a,r,o)},setCenterPoint:function(t,e,i,n){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((o+r)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/o(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){if(null===t)return 0;var e=this.drawingArea/(this.max-this.min);return this.options.ticks.reverse?(this.max-t)*e:(t-this.min)*e},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,i=t.options,n=i.gridLines,r=i.ticks,l=a.valueOrDefault;if(i.display){var d=t.ctx,h=this.getIndexAngle(0),c=l(r.fontSize,e.defaultFontSize),f=l(r.fontStyle,e.defaultFontStyle),g=l(r.fontFamily,e.defaultFontFamily),m=a.fontString(c,f,g);a.each(t.ticks,function(i,s){if(s>0||r.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(n.display&&0!==s&&function(t,e,i,n){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(e.color,n-1),r.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,n-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var s=o(t);if(0===s)return;r.beginPath();var l=t.getPointPosition(0,i);r.moveTo(l.x,l.y);for(var u=1;u<s;u++)l=t.getPointPosition(u,i),r.lineTo(l.x,l.y);r.closePath(),r.stroke()}}(t,n,u,s),r.display){var f=l(r.fontColor,e.defaultFontColor);if(d.font=m,d.save(),d.translate(t.xCenter,t.yCenter),d.rotate(h),r.showLabelBackdrop){var g=d.measureText(i).width;d.fillStyle=r.backdropColor,d.fillRect(-g/2-r.backdropPaddingX,-u-c/2-r.backdropPaddingY,g+2*r.backdropPaddingX,c+2*r.backdropPaddingY)}d.textAlign=\"center\",d.textBaseline=\"middle\",d.fillStyle=f,d.fillText(i,0,-u),d.restore()}}}),(i.angleLines.display||i.pointLabels.display)&&function(t){var i=t.ctx,n=t.options,r=n.angleLines,l=n.pointLabels;i.lineWidth=r.lineWidth,i.strokeStyle=r.color;var d,h,c,f,g=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),m=s(t);i.textBaseline=\"top\";for(var p=o(t)-1;p>=0;p--){if(r.display){var v=t.getPointPosition(p,g);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(v.x,v.y),i.stroke(),i.closePath()}if(l.display){var y=t.getPointPosition(p,g+5),b=a.valueAtIndexOrDefault(l.fontColor,p,e.defaultFontColor);i.font=m.font,i.fillStyle=b;var x=t.getIndexAngle(p),_=a.toDegrees(x);i.textAlign=0===(f=_)||180===f?\"center\":f<180?\"left\":\"right\",d=_,h=t._pointLabelSizes[p],c=y,90===d||270===d?c.y-=h.h/2:(d>270||d<90)&&(c.y-=h.h),u(i,t.pointLabels[p]||\"\",y,m.size)}}}(t)}}});t.scaleService.registerScaleType(\"radialLinear\",h,i)}},{25:25,34:34,45:45}],58:[function(t,e,i){\"use strict\";var n=t(6);n=\"function\"==typeof n?n:window.moment;var a=t(25),r=t(45),o=Number.MIN_SAFE_INTEGER||-9007199254740991,s=Number.MAX_SAFE_INTEGER||9007199254740991,l={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},u=Object.keys(l);function d(t,e){return t-e}function h(t){var e,i,n,a={},r=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,r.push(n));return r}function c(t,e,i,n){var a=function(t,e,i){for(var n,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(n=o+s>>1)-1]||null,r=t[n],!a)return{lo:null,hi:r};if(r[e]<i)o=n+1;else{if(!(a[e]>i))return{lo:a,hi:r};s=n-1}}return{lo:r,hi:null}}(t,e,i),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(i-r[e])/s:0,u=(o[n]-r[n])*l;return r[n]+u}function f(t,e){var i=e.parser,a=e.parser||e.format;return\"function\"==typeof i?i(t):\"string\"==typeof t&&\"string\"==typeof a?n(t,a):(t instanceof n||(t=n(t)),t.isValid()?t:\"function\"==typeof a?a(t):t)}function g(t,e){if(r.isNullOrUndef(t))return null;var i=e.options.time,n=f(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function m(t){for(var e=u.indexOf(t)+1,i=u.length;e<i;++e)if(l[u[e]].common)return u[e]}function p(t,e,i,a){var o,d=a.time,h=d.unit||function(t,e,i,n){var a,r,o,d=u.length;for(a=u.indexOf(t);a<d-1;++a)if(o=(r=l[u[a]]).steps?r.steps[r.steps.length-1]:s,r.common&&Math.ceil((i-e)/(o*r.size))<=n)return u[a];return u[d-1]}(d.minUnit,t,e,i),c=m(h),f=r.valueOrDefault(d.stepSize,d.unitStepSize),g=\"week\"===h&&d.isoWeekday,p=a.ticks.major.enabled,v=l[h],y=n(t),b=n(e),x=[];for(f||(f=function(t,e,i,n){var a,r,o,s=e-t,u=l[i],d=u.size,h=u.steps;if(!h)return Math.ceil(s/(n*d));for(a=0,r=h.length;a<r&&(o=h[a],!(Math.ceil(s/(d*o))<=n));++a);return o}(t,e,h,i)),g&&(y=y.isoWeekday(g),b=b.isoWeekday(g)),y=y.startOf(g?\"day\":h),(b=b.startOf(g?\"day\":h))<e&&b.add(1,h),o=n(y),p&&c&&!g&&!d.round&&(o.startOf(c),o.add(~~((y-o)/(v.size*f))*f,h));o<b;o.add(f,h))x.push(+o);return x.push(+o),x}e.exports=function(t){var e=t.Scale.extend({initialize:function(){if(!n)throw new Error(\"Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com\");this.mergeTicksOptions(),t.Scale.prototype.initialize.call(this)},update:function(){var e=this.options;return e.time&&e.time.format&&console.warn(\"options.time.format is deprecated and replaced by options.time.parser.\"),t.Scale.prototype.update.apply(this,arguments)},getRightValue:function(e){return e&&void 0!==e.t&&(e=e.t),t.Scale.prototype.getRightValue.call(this,e)},determineDataLimits:function(){var t,e,i,a,l,u,c=this,f=c.chart,m=c.options.time,p=m.unit||\"day\",v=s,y=o,b=[],x=[],_=[];for(t=0,i=f.data.labels.length;t<i;++t)_.push(g(f.data.labels[t],c));for(t=0,i=(f.data.datasets||[]).length;t<i;++t)if(f.isDatasetVisible(t))if(l=f.data.datasets[t].data,r.isObject(l[0]))for(x[t]=[],e=0,a=l.length;e<a;++e)u=g(l[e],c),b.push(u),x[t][e]=u;else b.push.apply(b,_),x[t]=_.slice(0);else x[t]=[];_.length&&(_=h(_).sort(d),v=Math.min(v,_[0]),y=Math.max(y,_[_.length-1])),b.length&&(b=h(b).sort(d),v=Math.min(v,b[0]),y=Math.max(y,b[b.length-1])),v=g(m.min,c)||v,y=g(m.max,c)||y,v=v===s?+n().startOf(p):v,y=y===o?+n().endOf(p)+1:y,c.min=Math.min(v,y),c.max=Math.max(v+1,y),c._horizontal=c.isHorizontal(),c._table=[],c._timestamps={data:b,datasets:x,labels:_}},buildTicks:function(){var t,e,i,a,r,o,s,d,h,v,y,b,x=this,_=x.min,k=x.max,w=x.options,M=w.time,S=[],D=[];switch(w.ticks.source){case\"data\":S=x._timestamps.data;break;case\"labels\":S=x._timestamps.labels;break;case\"auto\":default:S=p(_,k,x.getLabelCapacity(_),w)}for(\"ticks\"===w.bounds&&S.length&&(_=S[0],k=S[S.length-1]),_=g(M.min,x)||_,k=g(M.max,x)||k,t=0,e=S.length;t<e;++t)(i=S[t])>=_&&i<=k&&D.push(i);return x.min=_,x.max=k,x._unit=M.unit||function(t,e,i,a){var r,o,s=n.duration(n(a).diff(n(i)));for(r=u.length-1;r>=u.indexOf(e);r--)if(o=u[r],l[o].common&&s.as(o)>=t.length)return o;return u[e?u.indexOf(e):0]}(D,M.minUnit,x.min,x.max),x._majorUnit=m(x._unit),x._table=function(t,e,i,n){if(\"linear\"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,r,o,s,l,u=[],d=[e];for(a=0,r=t.length;a<r;++a)(s=t[a])>e&&s<i&&d.push(s);for(d.push(i),a=0,r=d.length;a<r;++a)l=d[a+1],o=d[a-1],s=d[a],void 0!==o&&void 0!==l&&Math.round((l+o)/2)===s||u.push({time:s,pos:a/(r-1)});return u}(x._timestamps.data,_,k,w.distribution),x._offsets=(a=x._table,r=D,o=_,s=k,y=0,b=0,(d=w).offset&&r.length&&(d.time.min||(h=r.length>1?r[1]:s,v=r[0],y=(c(a,\"time\",h,\"pos\")-c(a,\"time\",v,\"pos\"))/2),d.time.max||(h=r[r.length-1],v=r.length>1?r[r.length-2]:o,b=(c(a,\"time\",h,\"pos\")-c(a,\"time\",v,\"pos\"))/2)),{left:y,right:b}),x._labelFormat=function(t,e){var i,n,a,r=t.length;for(i=0;i<r;i++){if(0!==(n=f(t[i],e)).millisecond())return\"MMM D, YYYY h:mm:ss.SSS a\";0===n.second()&&0===n.minute()&&0===n.hour()||(a=!0)}return a?\"MMM D, YYYY h:mm:ss a\":\"MMM D, YYYY\"}(x._timestamps.data,M),function(t,e){var i,a,r,o,s=[];for(i=0,a=t.length;i<a;++i)r=t[i],o=!!e&&r===+n(r).startOf(e),s.push({value:r,major:o});return s}(D,x._majorUnit)},getLabelForIndex:function(t,e){var i=this.chart.data,n=this.options.time,a=i.labels&&t<i.labels.length?i.labels[t]:\"\",o=i.datasets[e].data[t];return r.isObject(o)&&(a=this.getRightValue(o)),n.tooltipFormat?f(a,n).format(n.tooltipFormat):\"string\"==typeof a?a:f(a,n).format(this._labelFormat)},tickFormatFunction:function(t,e,i,n){var a=this.options,o=t.valueOf(),s=a.time.displayFormats,l=s[this._unit],u=this._majorUnit,d=s[u],h=t.clone().startOf(u).valueOf(),c=a.ticks.major,f=c.enabled&&u&&d&&o===h,g=t.format(n||(f?d:l)),m=f?c:a.ticks.minor,p=r.valueOrDefault(m.callback,m.userCallback);return p?p(g,e,i):g},convertTicksToLabels:function(t){var e,i,a=[];for(e=0,i=t.length;e<i;++e)a.push(this.tickFormatFunction(n(t[e].value),e,t));return a},getPixelForOffset:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=c(e._table,\"time\",t,\"pos\");return n+i*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=g(t,this)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,a=e._horizontal?e.left:e.top,r=(i?(t-a)/i:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=c(e._table,\"pos\",r,\"time\");return n(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=r.toRadians(e.maxRotation),o=Math.cos(n),s=Math.sin(n);return i*o+r.valueOrDefault(e.fontSize,a.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this.options.time.displayFormats.millisecond,i=this.tickFormatFunction(n(t),0,[],e),a=this.getLabelWidth(i),r=this.isHorizontal()?this.width:this.height,o=Math.floor(r/a);return o>0?o:1}});t.scaleService.registerScaleType(\"time\",e,{position:\"bottom\",distribution:\"linear\",bounds:\"data\",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{millisecond:\"h:mm:ss.SSS a\",second:\"h:mm:ss a\",minute:\"h:mm a\",hour:\"hA\",day:\"MMM D\",week:\"ll\",month:\"MMM YYYY\",quarter:\"[Q]Q - YYYY\",year:\"YYYY\"}},ticks:{autoSkip:!1,source:\"auto\",major:{enabled:!1}}})}},{25:25,45:45,6:6}]},{},[7])(7)});"),
120
        }
121
        filec := &embedded.EmbeddedFile{
122
                Filename:    "bootstrap.min.js",
123
                FileModTime: time.Unix(1537914115, 0),
124
                Content:     string("/*!\n  * Bootstrap v4.1.0 (https://getbootstrap.com/)\n  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n  */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"jquery\"),require(\"popper.js\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"jquery\",\"popper.js\"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,c){\"use strict\";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function o(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function h(r){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{},e=Object.keys(s);\"function\"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(s).filter(function(t){return Object.getOwnPropertyDescriptor(s,t).enumerable}))),e.forEach(function(t){var e,n,i;e=r,i=s[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return r}e=e&&e.hasOwnProperty(\"default\")?e.default:e,c=c&&c.hasOwnProperty(\"default\")?c.default:c;var r,n,s,a,l,u,f,d,_,g,m,p,v,E,y,T,C,I,A,D,b,S,w,N,O,k,P,L,j,R,H,W,M,x,U,K,F,V,Q,B,Y,G,q,z,X,J,Z,$,tt,et,nt,it,rt,st,ot,at,lt,ht,ct,ut,ft,dt,_t,gt,mt,pt,vt,Et,yt,Tt,Ct,It,At,Dt,bt,St,wt,Nt,Ot,kt,Pt,Lt,jt,Rt,Ht,Wt,Mt,xt,Ut,Kt,Ft,Vt,Qt,Bt,Yt,Gt,qt,zt,Xt,Jt,Zt,$t,te,ee,ne,ie,re,se,oe,ae,le,he,ce,ue,fe,de,_e,ge,me,pe,ve,Ee,ye,Te,Ce,Ie,Ae,De,be,Se,we,Ne,Oe,ke,Pe,Le,je,Re,He,We,Me,xe,Ue,Ke,Fe,Ve,Qe,Be,Ye,Ge,qe,ze,Xe,Je,Ze,$e,tn,en,nn,rn,sn,on,an,ln,hn,cn,un,fn,dn,_n,gn,mn,pn,vn,En,yn,Tn,Cn=function(i){var e=\"transitionend\";function t(t){var e=this,n=!1;return i(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(e)},t),this}var l={TRANSITION_END:\"bsTransitionEnd\",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute(\"data-target\");e&&\"#\"!==e||(e=t.getAttribute(\"href\")||\"\");try{return 0<i(document).find(e).length?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=i(t).css(\"transition-duration\");return parseFloat(e)?(e=e.split(\",\")[0],1e3*parseFloat(e)):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){i(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var r=n[i],s=e[i],o=s&&l.isElement(s)?\"element\":(a=s,{}.toString.call(a).match(/\\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(r).test(o))throw new Error(t.toUpperCase()+': Option \"'+i+'\" provided type \"'+o+'\" but expected type \"'+r+'\".')}var a}};return i.fn.emulateTransitionEnd=t,i.event.special[l.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(i(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}},l}(e),In=(n=\"alert\",a=\".\"+(s=\"bs.alert\"),l=(r=e).fn[n],u={CLOSE:\"close\"+a,CLOSED:\"closed\"+a,CLICK_DATA_API:\"click\"+a+\".data-api\"},f=\"alert\",d=\"fade\",_=\"show\",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){r.removeData(this._element,s),this._element=null},t._getRootElement=function(t){var e=Cn.getSelectorFromElement(t),n=!1;return e&&(n=r(e)[0]),n||(n=r(t).closest(\".\"+f)[0]),n},t._triggerCloseEvent=function(t){var e=r.Event(u.CLOSE);return r(t).trigger(e),e},t._removeElement=function(e){var n=this;if(r(e).removeClass(_),r(e).hasClass(d)){var t=Cn.getTransitionDurationFromElement(e);r(e).one(Cn.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){r(t).detach().trigger(u.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=r(this),e=t.data(s);e||(e=new i(this),t.data(s,e)),\"close\"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),i}(),r(document).on(u.CLICK_DATA_API,'[data-dismiss=\"alert\"]',g._handleDismiss(new g)),r.fn[n]=g._jQueryInterface,r.fn[n].Constructor=g,r.fn[n].noConflict=function(){return r.fn[n]=l,g._jQueryInterface},g),An=(p=\"button\",E=\".\"+(v=\"bs.button\"),y=\".data-api\",T=(m=e).fn[p],C=\"active\",I=\"btn\",D='[data-toggle^=\"button\"]',b='[data-toggle=\"buttons\"]',S=\"input\",w=\".active\",N=\".btn\",O={CLICK_DATA_API:\"click\"+E+y,FOCUS_BLUR_DATA_API:(A=\"focus\")+E+y+\" blur\"+E+y},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=m(this._element).closest(b)[0];if(n){var i=m(this._element).find(S)[0];if(i){if(\"radio\"===i.type)if(i.checked&&m(this._element).hasClass(C))t=!1;else{var r=m(n).find(w)[0];r&&m(r).removeClass(C)}if(t){if(i.hasAttribute(\"disabled\")||n.hasAttribute(\"disabled\")||i.classList.contains(\"disabled\")||n.classList.contains(\"disabled\"))return;i.checked=!m(this._element).hasClass(C),m(i).trigger(\"change\")}i.focus(),e=!1}}e&&this._element.setAttribute(\"aria-pressed\",!m(this._element).hasClass(C)),t&&m(this._element).toggleClass(C)},t.dispose=function(){m.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=m(this).data(v);t||(t=new n(this),m(this).data(v,t)),\"toggle\"===e&&t[e]()})},o(n,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),n}(),m(document).on(O.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;m(e).hasClass(I)||(e=m(e).closest(N)),k._jQueryInterface.call(m(e),\"toggle\")}).on(O.FOCUS_BLUR_DATA_API,D,function(t){var e=m(t.target).closest(N)[0];m(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),m.fn[p]=k._jQueryInterface,m.fn[p].Constructor=k,m.fn[p].noConflict=function(){return m.fn[p]=T,k._jQueryInterface},k),Dn=(L=\"carousel\",R=\".\"+(j=\"bs.carousel\"),H=\".data-api\",W=(P=e).fn[L],M={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0},x={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\"},U=\"next\",K=\"prev\",F=\"left\",V=\"right\",Q={SLIDE:\"slide\"+R,SLID:\"slid\"+R,KEYDOWN:\"keydown\"+R,MOUSEENTER:\"mouseenter\"+R,MOUSELEAVE:\"mouseleave\"+R,TOUCHEND:\"touchend\"+R,LOAD_DATA_API:\"load\"+R+H,CLICK_DATA_API:\"click\"+R+H},B=\"carousel\",Y=\"active\",G=\"slide\",q=\"carousel-item-right\",z=\"carousel-item-left\",X=\"carousel-item-next\",J=\"carousel-item-prev\",Z={ACTIVE:\".active\",ACTIVE_ITEM:\".active.carousel-item\",ITEM:\".carousel-item\",NEXT_PREV:\".carousel-item-next, .carousel-item-prev\",INDICATORS:\".carousel-indicators\",DATA_SLIDE:\"[data-slide], [data-slide-to]\",DATA_RIDE:'[data-ride=\"carousel\"]'},$=function(){function s(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(e),this._element=P(t)[0],this._indicatorsElement=P(this._element).find(Z.INDICATORS)[0],this._addEventListeners()}var t=s.prototype;return t.next=function(){this._isSliding||this._slide(U)},t.nextWhenVisible=function(){!document.hidden&&P(this._element).is(\":visible\")&&\"hidden\"!==P(this._element).css(\"visibility\")&&this.next()},t.prev=function(){this._isSliding||this._slide(K)},t.pause=function(t){t||(this._isPaused=!0),P(this._element).find(Z.NEXT_PREV)[0]&&(Cn.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=P(this._element).find(Z.ACTIVE_ITEM)[0];var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?U:K;this._slide(i,this._items[t])}},t.dispose=function(){P(this._element).off(R),P.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=h({},M,t),Cn.typeCheckConfig(L,t,x),t},t._addEventListeners=function(){var e=this;this._config.keyboard&&P(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),\"hover\"===this._config.pause&&(P(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),\"ontouchstart\"in document.documentElement&&P(this._element).on(Q.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=P.makeArray(P(t).parent().find(Z.ITEM)),this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===U,i=t===K,r=this._getItemIndex(e),s=this._items.length-1;if((i&&0===r||n&&r===s)&&!this._config.wrap)return e;var o=(r+(t===K?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(P(this._element).find(Z.ACTIVE_ITEM)[0]),r=P.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return P(this._element).trigger(r),r},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){P(this._indicatorsElement).find(Z.ACTIVE).removeClass(Y);var e=this._indicatorsElement.children[this._getItemIndex(t)];e&&P(e).addClass(Y)}},t._slide=function(t,e){var n,i,r,s=this,o=P(this._element).find(Z.ACTIVE_ITEM)[0],a=this._getItemIndex(o),l=e||o&&this._getItemByDirection(t,o),h=this._getItemIndex(l),c=Boolean(this._interval);if(t===U?(n=z,i=X,r=F):(n=q,i=J,r=V),l&&P(l).hasClass(Y))this._isSliding=!1;else if(!this._triggerSlideEvent(l,r).isDefaultPrevented()&&o&&l){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(l);var u=P.Event(Q.SLID,{relatedTarget:l,direction:r,from:a,to:h});if(P(this._element).hasClass(G)){P(l).addClass(i),Cn.reflow(l),P(o).addClass(n),P(l).addClass(n);var f=Cn.getTransitionDurationFromElement(o);P(o).one(Cn.TRANSITION_END,function(){P(l).removeClass(n+\" \"+i).addClass(Y),P(o).removeClass(Y+\" \"+i+\" \"+n),s._isSliding=!1,setTimeout(function(){return P(s._element).trigger(u)},0)}).emulateTransitionEnd(f)}else P(o).removeClass(Y),P(l).addClass(Y),this._isSliding=!1,P(this._element).trigger(u);c&&this.cycle()}},s._jQueryInterface=function(i){return this.each(function(){var t=P(this).data(j),e=h({},M,P(this).data());\"object\"==typeof i&&(e=h({},e,i));var n=\"string\"==typeof i?i:e.slide;if(t||(t=new s(this,e),P(this).data(j,t)),\"number\"==typeof i)t.to(i);else if(\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},s._dataApiClickHandler=function(t){var e=Cn.getSelectorFromElement(this);if(e){var n=P(e)[0];if(n&&P(n).hasClass(B)){var i=h({},P(n).data(),P(this).data()),r=this.getAttribute(\"data-slide-to\");r&&(i.interval=!1),s._jQueryInterface.call(P(n),i),r&&P(n).data(j).to(r),t.preventDefault()}}},o(s,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return M}}]),s}(),P(document).on(Q.CLICK_DATA_API,Z.DATA_SLIDE,$._dataApiClickHandler),P(window).on(Q.LOAD_DATA_API,function(){P(Z.DATA_RIDE).each(function(){var t=P(this);$._jQueryInterface.call(t,t.data())})}),P.fn[L]=$._jQueryInterface,P.fn[L].Constructor=$,P.fn[L].noConflict=function(){return P.fn[L]=W,$._jQueryInterface},$),bn=(et=\"collapse\",it=\".\"+(nt=\"bs.collapse\"),rt=(tt=e).fn[et],st={toggle:!0,parent:\"\"},ot={toggle:\"boolean\",parent:\"(string|element)\"},at={SHOW:\"show\"+it,SHOWN:\"shown\"+it,HIDE:\"hide\"+it,HIDDEN:\"hidden\"+it,CLICK_DATA_API:\"click\"+it+\".data-api\"},lt=\"show\",ht=\"collapse\",ct=\"collapsing\",ut=\"collapsed\",ft=\"width\",dt=\"height\",_t={ACTIVES:\".show, .collapsing\",DATA_TOGGLE:'[data-toggle=\"collapse\"]'},gt=function(){function a(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=tt.makeArray(tt('[data-toggle=\"collapse\"][href=\"#'+t.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+t.id+'\"]'));for(var n=tt(_t.DATA_TOGGLE),i=0;i<n.length;i++){var r=n[i],s=Cn.getSelectorFromElement(r);null!==s&&0<tt(s).filter(t).length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){tt(this._element).hasClass(lt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!tt(this._element).hasClass(lt)&&(this._parent&&0===(t=tt.makeArray(tt(this._parent).find(_t.ACTIVES).filter('[data-parent=\"'+this._config.parent+'\"]'))).length&&(t=null),!(t&&(e=tt(t).not(this._selector).data(nt))&&e._isTransitioning))){var i=tt.Event(at.SHOW);if(tt(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(tt(t).not(this._selector),\"hide\"),e||tt(t).data(nt,null));var r=this._getDimension();tt(this._element).removeClass(ht).addClass(ct),(this._element.style[r]=0)<this._triggerArray.length&&tt(this._triggerArray).removeClass(ut).attr(\"aria-expanded\",!0),this.setTransitioning(!0);var s=\"scroll\"+(r[0].toUpperCase()+r.slice(1)),o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){tt(n._element).removeClass(ct).addClass(ht).addClass(lt),n._element.style[r]=\"\",n.setTransitioning(!1),tt(n._element).trigger(at.SHOWN)}).emulateTransitionEnd(o),this._element.style[r]=this._element[s]+\"px\"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&tt(this._element).hasClass(lt)){var e=tt.Event(at.HIDE);if(tt(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();if(this._element.style[n]=this._element.getBoundingClientRect()[n]+\"px\",Cn.reflow(this._element),tt(this._element).addClass(ct).removeClass(ht).removeClass(lt),0<this._triggerArray.length)for(var i=0;i<this._triggerArray.length;i++){var r=this._triggerArray[i],s=Cn.getSelectorFromElement(r);if(null!==s)tt(s).hasClass(lt)||tt(r).addClass(ut).attr(\"aria-expanded\",!1)}this.setTransitioning(!0);this._element.style[n]=\"\";var o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){t.setTransitioning(!1),tt(t._element).removeClass(ct).addClass(ht).trigger(at.HIDDEN)}).emulateTransitionEnd(o)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){tt.removeData(this._element,nt),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=h({},st,t)).toggle=Boolean(t.toggle),Cn.typeCheckConfig(et,t,ot),t},t._getDimension=function(){return tt(this._element).hasClass(ft)?ft:dt},t._getParent=function(){var n=this,t=null;Cn.isElement(this._config.parent)?(t=this._config.parent,\"undefined\"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=tt(this._config.parent)[0];var e='[data-toggle=\"collapse\"][data-parent=\"'+this._config.parent+'\"]';return tt(t).find(e).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){if(t){var n=tt(t).hasClass(lt);0<e.length&&tt(e).toggleClass(ut,!n).attr(\"aria-expanded\",n)}},a._getTargetFromElement=function(t){var e=Cn.getSelectorFromElement(t);return e?tt(e)[0]:null},a._jQueryInterface=function(i){return this.each(function(){var t=tt(this),e=t.data(nt),n=h({},st,t.data(),\"object\"==typeof i&&i);if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(nt,e)),\"string\"==typeof i){if(\"undefined\"==typeof e[i])throw new TypeError('No method named \"'+i+'\"');e[i]()}})},o(a,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return st}}]),a}(),tt(document).on(at.CLICK_DATA_API,_t.DATA_TOGGLE,function(t){\"A\"===t.currentTarget.tagName&&t.preventDefault();var n=tt(this),e=Cn.getSelectorFromElement(this);tt(e).each(function(){var t=tt(this),e=t.data(nt)?\"toggle\":n.data();gt._jQueryInterface.call(t,e)})}),tt.fn[et]=gt._jQueryInterface,tt.fn[et].Constructor=gt,tt.fn[et].noConflict=function(){return tt.fn[et]=rt,gt._jQueryInterface},gt),Sn=(pt=\"dropdown\",Et=\".\"+(vt=\"bs.dropdown\"),yt=\".data-api\",Tt=(mt=e).fn[pt],Ct=new RegExp(\"38|40|27\"),It={HIDE:\"hide\"+Et,HIDDEN:\"hidden\"+Et,SHOW:\"show\"+Et,SHOWN:\"shown\"+Et,CLICK:\"click\"+Et,CLICK_DATA_API:\"click\"+Et+yt,KEYDOWN_DATA_API:\"keydown\"+Et+yt,KEYUP_DATA_API:\"keyup\"+Et+yt},At=\"disabled\",Dt=\"show\",bt=\"dropup\",St=\"dropright\",wt=\"dropleft\",Nt=\"dropdown-menu-right\",Ot=\"position-static\",kt='[data-toggle=\"dropdown\"]',Pt=\".dropdown form\",Lt=\".dropdown-menu\",jt=\".navbar-nav\",Rt=\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",Ht=\"top-start\",Wt=\"top-end\",Mt=\"bottom-start\",xt=\"bottom-end\",Ut=\"right-start\",Kt=\"left-start\",Ft={offset:0,flip:!0,boundary:\"scrollParent\",reference:\"toggle\",display:\"dynamic\"},Vt={offset:\"(number|string|function)\",flip:\"boolean\",boundary:\"(string|element)\",reference:\"(string|element)\",display:\"string\"},Qt=function(){function l(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=l.prototype;return t.toggle=function(){if(!this._element.disabled&&!mt(this._element).hasClass(At)){var t=l._getParentFromElement(this._element),e=mt(this._menu).hasClass(Dt);if(l._clearMenus(),!e){var n={relatedTarget:this._element},i=mt.Event(It.SHOW,n);if(mt(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if(\"undefined\"==typeof c)throw new TypeError(\"Bootstrap dropdown require Popper.js (https://popper.js.org)\");var r=this._element;\"parent\"===this._config.reference?r=t:Cn.isElement(this._config.reference)&&(r=this._config.reference,\"undefined\"!=typeof this._config.reference.jquery&&(r=this._config.reference[0])),\"scrollParent\"!==this._config.boundary&&mt(t).addClass(Ot),this._popper=new c(r,this._menu,this._getPopperConfig())}\"ontouchstart\"in document.documentElement&&0===mt(t).closest(jt).length&&mt(document.body).children().on(\"mouseover\",null,mt.noop),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),mt(this._menu).toggleClass(Dt),mt(t).toggleClass(Dt).trigger(mt.Event(It.SHOWN,n))}}}},t.dispose=function(){mt.removeData(this._element,vt),mt(this._element).off(Et),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;mt(this._element).on(It.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=h({},this.constructor.Default,mt(this._element).data(),t),Cn.typeCheckConfig(pt,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=l._getParentFromElement(this._element);this._menu=mt(t).find(Lt)[0]}return this._menu},t._getPlacement=function(){var t=mt(this._element).parent(),e=Mt;return t.hasClass(bt)?(e=Ht,mt(this._menu).hasClass(Nt)&&(e=Wt)):t.hasClass(St)?e=Ut:t.hasClass(wt)?e=Kt:mt(this._menu).hasClass(Nt)&&(e=xt),e},t._detectNavbar=function(){return 0<mt(this._element).closest(\".navbar\").length},t._getPopperConfig=function(){var e=this,t={};\"function\"==typeof this._config.offset?t.fn=function(t){return t.offsets=h({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return\"static\"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},l._jQueryInterface=function(e){return this.each(function(){var t=mt(this).data(vt);if(t||(t=new l(this,\"object\"==typeof e?e:null),mt(this).data(vt,t)),\"string\"==typeof e){if(\"undefined\"==typeof t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},l._clearMenus=function(t){if(!t||3!==t.which&&(\"keyup\"!==t.type||9===t.which))for(var e=mt.makeArray(mt(kt)),n=0;n<e.length;n++){var i=l._getParentFromElement(e[n]),r=mt(e[n]).data(vt),s={relatedTarget:e[n]};if(r){var o=r._menu;if(mt(i).hasClass(Dt)&&!(t&&(\"click\"===t.type&&/input|textarea/i.test(t.target.tagName)||\"keyup\"===t.type&&9===t.which)&&mt.contains(i,t.target))){var a=mt.Event(It.HIDE,s);mt(i).trigger(a),a.isDefaultPrevented()||(\"ontouchstart\"in document.documentElement&&mt(document.body).children().off(\"mouseover\",null,mt.noop),e[n].setAttribute(\"aria-expanded\",\"false\"),mt(o).removeClass(Dt),mt(i).removeClass(Dt).trigger(mt.Event(It.HIDDEN,s)))}}}},l._getParentFromElement=function(t){var e,n=Cn.getSelectorFromElement(t);return n&&(e=mt(n)[0]),e||t.parentNode},l._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||mt(t.target).closest(Lt).length)):Ct.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!mt(this).hasClass(At))){var e=l._getParentFromElement(this),n=mt(e).hasClass(Dt);if((n||27===t.which&&32===t.which)&&(!n||27!==t.which&&32!==t.which)){var i=mt(e).find(Rt).get();if(0!==i.length){var r=i.indexOf(t.target);38===t.which&&0<r&&r--,40===t.which&&r<i.length-1&&r++,r<0&&(r=0),i[r].focus()}}else{if(27===t.which){var s=mt(e).find(kt)[0];mt(s).trigger(\"focus\")}mt(this).trigger(\"click\")}}},o(l,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Ft}},{key:\"DefaultType\",get:function(){return Vt}}]),l}(),mt(document).on(It.KEYDOWN_DATA_API,kt,Qt._dataApiKeydownHandler).on(It.KEYDOWN_DATA_API,Lt,Qt._dataApiKeydownHandler).on(It.CLICK_DATA_API+\" \"+It.KEYUP_DATA_API,Qt._clearMenus).on(It.CLICK_DATA_API,kt,function(t){t.preventDefault(),t.stopPropagation(),Qt._jQueryInterface.call(mt(this),\"toggle\")}).on(It.CLICK_DATA_API,Pt,function(t){t.stopPropagation()}),mt.fn[pt]=Qt._jQueryInterface,mt.fn[pt].Constructor=Qt,mt.fn[pt].noConflict=function(){return mt.fn[pt]=Tt,Qt._jQueryInterface},Qt),wn=(Yt=\"modal\",qt=\".\"+(Gt=\"bs.modal\"),zt=(Bt=e).fn[Yt],Xt={backdrop:!0,keyboard:!0,focus:!0,show:!0},Jt={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\",show:\"boolean\"},Zt={HIDE:\"hide\"+qt,HIDDEN:\"hidden\"+qt,SHOW:\"show\"+qt,SHOWN:\"shown\"+qt,FOCUSIN:\"focusin\"+qt,RESIZE:\"resize\"+qt,CLICK_DISMISS:\"click.dismiss\"+qt,KEYDOWN_DISMISS:\"keydown.dismiss\"+qt,MOUSEUP_DISMISS:\"mouseup.dismiss\"+qt,MOUSEDOWN_DISMISS:\"mousedown.dismiss\"+qt,CLICK_DATA_API:\"click\"+qt+\".data-api\"},$t=\"modal-scrollbar-measure\",te=\"modal-backdrop\",ee=\"modal-open\",ne=\"fade\",ie=\"show\",re={DIALOG:\".modal-dialog\",DATA_TOGGLE:'[data-toggle=\"modal\"]',DATA_DISMISS:'[data-dismiss=\"modal\"]',FIXED_CONTENT:\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",STICKY_CONTENT:\".sticky-top\",NAVBAR_TOGGLER:\".navbar-toggler\"},se=function(){function r(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=Bt(t).find(re.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._scrollbarWidth=0}var t=r.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isTransitioning&&!this._isShown){Bt(this._element).hasClass(ne)&&(this._isTransitioning=!0);var n=Bt.Event(Zt.SHOW,{relatedTarget:t});Bt(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),Bt(document.body).addClass(ee),this._setEscapeEvent(),this._setResizeEvent(),Bt(this._element).on(Zt.CLICK_DISMISS,re.DATA_DISMISS,function(t){return e.hide(t)}),Bt(this._dialog).on(Zt.MOUSEDOWN_DISMISS,function(){Bt(e._element).one(Zt.MOUSEUP_DISMISS,function(t){Bt(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),!this._isTransitioning&&this._isShown){var n=Bt.Event(Zt.HIDE);if(Bt(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=Bt(this._element).hasClass(ne);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),Bt(document).off(Zt.FOCUSIN),Bt(this._element).removeClass(ie),Bt(this._element).off(Zt.CLICK_DISMISS),Bt(this._dialog).off(Zt.MOUSEDOWN_DISMISS),i){var r=Cn.getTransitionDurationFromElement(this._element);Bt(this._element).one(Cn.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(r)}else this._hideModal()}}},t.dispose=function(){Bt.removeData(this._element,Gt),Bt(window,document,this._element,this._backdrop).off(qt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=h({},Xt,t),Cn.typeCheckConfig(Yt,t,Jt),t},t._showElement=function(t){var e=this,n=Bt(this._element).hasClass(ne);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.scrollTop=0,n&&Cn.reflow(this._element),Bt(this._element).addClass(ie),this._config.focus&&this._enforceFocus();var i=Bt.Event(Zt.SHOWN,{relatedTarget:t}),r=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,Bt(e._element).trigger(i)};if(n){var s=Cn.getTransitionDurationFromElement(this._element);Bt(this._dialog).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()},t._enforceFocus=function(){var e=this;Bt(document).off(Zt.FOCUSIN).on(Zt.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===Bt(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?Bt(this._element).on(Zt.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||Bt(this._element).off(Zt.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?Bt(window).on(Zt.RESIZE,function(t){return e.handleUpdate(t)}):Bt(window).off(Zt.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._isTransitioning=!1,this._showBackdrop(function(){Bt(document.body).removeClass(ee),t._resetAdjustments(),t._resetScrollbar(),Bt(t._element).trigger(Zt.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(Bt(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=Bt(this._element).hasClass(ne)?ne:\"\";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement(\"div\"),this._backdrop.className=te,n&&Bt(this._backdrop).addClass(n),Bt(this._backdrop).appendTo(document.body),Bt(this._element).on(Zt.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&(\"static\"===e._config.backdrop?e._element.focus():e.hide())}),n&&Cn.reflow(this._backdrop),Bt(this._backdrop).addClass(ie),!t)return;if(!n)return void t();var i=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){Bt(this._backdrop).removeClass(ie);var r=function(){e._removeBackdrop(),t&&t()};if(Bt(this._element).hasClass(ne)){var s=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},t._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var r=this;if(this._isBodyOverflowing){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e)[0].style.paddingRight,i=Bt(e).css(\"padding-right\");Bt(e).data(\"padding-right\",n).css(\"padding-right\",parseFloat(i)+r._scrollbarWidth+\"px\")}),Bt(re.STICKY_CONTENT).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css(\"margin-right\");Bt(e).data(\"margin-right\",n).css(\"margin-right\",parseFloat(i)-r._scrollbarWidth+\"px\")}),Bt(re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css(\"margin-right\");Bt(e).data(\"margin-right\",n).css(\"margin-right\",parseFloat(i)+r._scrollbarWidth+\"px\")});var t=document.body.style.paddingRight,e=Bt(document.body).css(\"padding-right\");Bt(document.body).data(\"padding-right\",t).css(\"padding-right\",parseFloat(e)+this._scrollbarWidth+\"px\")}},t._resetScrollbar=function(){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e).data(\"padding-right\");\"undefined\"!=typeof n&&Bt(e).css(\"padding-right\",n).removeData(\"padding-right\")}),Bt(re.STICKY_CONTENT+\", \"+re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e).data(\"margin-right\");\"undefined\"!=typeof n&&Bt(e).css(\"margin-right\",n).removeData(\"margin-right\")});var t=Bt(document.body).data(\"padding-right\");\"undefined\"!=typeof t&&Bt(document.body).css(\"padding-right\",t).removeData(\"padding-right\")},t._getScrollbarWidth=function(){var t=document.createElement(\"div\");t.className=$t,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},r._jQueryInterface=function(n,i){return this.each(function(){var t=Bt(this).data(Gt),e=h({},r.Default,Bt(this).data(),\"object\"==typeof n&&n);if(t||(t=new r(this,e),Bt(this).data(Gt,t)),\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n](i)}else e.show&&t.show(i)})},o(r,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Xt}}]),r}(),Bt(document).on(Zt.CLICK_DATA_API,re.DATA_TOGGLE,function(t){var e,n=this,i=Cn.getSelectorFromElement(this);i&&(e=Bt(i)[0]);var r=Bt(e).data(Gt)?\"toggle\":h({},Bt(e).data(),Bt(this).data());\"A\"!==this.tagName&&\"AREA\"!==this.tagName||t.preventDefault();var s=Bt(e).one(Zt.SHOW,function(t){t.isDefaultPrevented()||s.one(Zt.HIDDEN,function(){Bt(n).is(\":visible\")&&n.focus()})});se._jQueryInterface.call(Bt(e),r,this)}),Bt.fn[Yt]=se._jQueryInterface,Bt.fn[Yt].Constructor=se,Bt.fn[Yt].noConflict=function(){return Bt.fn[Yt]=zt,se._jQueryInterface},se),Nn=(ae=\"tooltip\",he=\".\"+(le=\"bs.tooltip\"),ce=(oe=e).fn[ae],ue=\"bs-tooltip\",fe=new RegExp(\"(^|\\\\s)\"+ue+\"\\\\S+\",\"g\"),ge={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!(_e={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"}),selector:!(de={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\"}),placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\"},pe=\"out\",ve={HIDE:\"hide\"+he,HIDDEN:\"hidden\"+he,SHOW:(me=\"show\")+he,SHOWN:\"shown\"+he,INSERTED:\"inserted\"+he,CLICK:\"click\"+he,FOCUSIN:\"focusin\"+he,FOCUSOUT:\"focusout\"+he,MOUSEENTER:\"mouseenter\"+he,MOUSELEAVE:\"mouseleave\"+he},Ee=\"fade\",ye=\"show\",Te=\".tooltip-inner\",Ce=\".arrow\",Ie=\"hover\",Ae=\"focus\",De=\"click\",be=\"manual\",Se=function(){function i(t,e){if(\"undefined\"==typeof c)throw new TypeError(\"Bootstrap tooltips require Popper.js (https://popper.js.org)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=oe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(oe(this.getTipElement()).hasClass(ye))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),oe.removeData(this.element,this.constructor.DATA_KEY),oe(this.element).off(this.constructor.EVENT_KEY),oe(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&oe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if(\"none\"===oe(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var t=oe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){oe(this.element).trigger(t);var n=oe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Cn.getUID(this.constructor.NAME);i.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&oe(i).addClass(Ee);var s=\"function\"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,o=this._getAttachment(s);this.addAttachmentClass(o);var a=!1===this.config.container?document.body:oe(this.config.container);oe(i).data(this.constructor.DATA_KEY,this),oe.contains(this.element.ownerDocument.documentElement,this.tip)||oe(i).appendTo(a),oe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new c(this.element,i,{placement:o,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Ce},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),oe(i).addClass(ye),\"ontouchstart\"in document.documentElement&&oe(document.body).children().on(\"mouseover\",null,oe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,oe(e.element).trigger(e.constructor.Event.SHOWN),t===pe&&e._leave(null,e)};if(oe(this.tip).hasClass(Ee)){var h=Cn.getTransitionDurationFromElement(this.tip);oe(this.tip).one(Cn.TRANSITION_END,l).emulateTransitionEnd(h)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=oe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==me&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute(\"aria-describedby\"),oe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(oe(this.element).trigger(i),!i.isDefaultPrevented()){if(oe(n).removeClass(ye),\"ontouchstart\"in document.documentElement&&oe(document.body).children().off(\"mouseover\",null,oe.noop),this._activeTrigger[De]=!1,this._activeTrigger[Ae]=!1,this._activeTrigger[Ie]=!1,oe(this.tip).hasClass(Ee)){var s=Cn.getTransitionDurationFromElement(n);oe(n).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r();this._hoverState=\"\"}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){oe(this.getTipElement()).addClass(ue+\"-\"+t)},t.getTipElement=function(){return this.tip=this.tip||oe(this.config.template)[0],this.tip},t.setContent=function(){var t=oe(this.getTipElement());this.setElementContent(t.find(Te),this.getTitle()),t.removeClass(Ee+\" \"+ye)},t.setElementContent=function(t,e){var n=this.config.html;\"object\"==typeof e&&(e.nodeType||e.jquery)?n?oe(e).parent().is(t)||t.empty().append(e):t.text(oe(e).text()):t[n?\"html\":\"text\"](e)},t.getTitle=function(){var t=this.element.getAttribute(\"data-original-title\");return t||(t=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return _e[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(t){if(\"click\"===t)oe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==be){var e=t===Ie?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Ie?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;oe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}oe(i.element).closest(\".modal\").on(\"hide.bs.modal\",function(){return i.hide()})}),this.config.selector?this.config=h({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==t)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusin\"===t.type?Ae:Ie]=!0),oe(e.getTipElement()).hasClass(ye)||e._hoverState===me?e._hoverState=me:(clearTimeout(e._timeout),e._hoverState=me,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===me&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusout\"===t.type?Ae:Ie]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=pe,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===pe&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return\"number\"==typeof(t=h({},this.constructor.Default,oe(this.element).data(),t)).delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),Cn.typeCheckConfig(ae,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=oe(this.getTipElement()),e=t.attr(\"class\").match(fe);null!==e&&0<e.length&&t.removeClass(e.join(\"\"))},t._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute(\"x-placement\")&&(oe(t).removeClass(Ee),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=oe(this).data(le),e=\"object\"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),oe(this).data(le,t)),\"string\"==typeof n)){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return ge}},{key:\"NAME\",get:function(){return ae}},{key:\"DATA_KEY\",get:function(){return le}},{key:\"Event\",get:function(){return ve}},{key:\"EVENT_KEY\",get:function(){return he}},{key:\"DefaultType\",get:function(){return de}}]),i}(),oe.fn[ae]=Se._jQueryInterface,oe.fn[ae].Constructor=Se,oe.fn[ae].noConflict=function(){return oe.fn[ae]=ce,Se._jQueryInterface},Se),On=(Ne=\"popover\",ke=\".\"+(Oe=\"bs.popover\"),Pe=(we=e).fn[Ne],Le=\"bs-popover\",je=new RegExp(\"(^|\\\\s)\"+Le+\"\\\\S+\",\"g\"),Re=h({},Nn.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),He=h({},Nn.DefaultType,{content:\"(string|element|function)\"}),We=\"fade\",xe=\".popover-header\",Ue=\".popover-body\",Ke={HIDE:\"hide\"+ke,HIDDEN:\"hidden\"+ke,SHOW:(Me=\"show\")+ke,SHOWN:\"shown\"+ke,INSERTED:\"inserted\"+ke,CLICK:\"click\"+ke,FOCUSIN:\"focusin\"+ke,FOCUSOUT:\"focusout\"+ke,MOUSEENTER:\"mouseenter\"+ke,MOUSELEAVE:\"mouseleave\"+ke},Fe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){we(this.getTipElement()).addClass(Le+\"-\"+t)},r.getTipElement=function(){return this.tip=this.tip||we(this.config.templ
+64
func init() {
65
66
        // define files
67
        file7 := &embedded.EmbeddedFile{
68
                Filename:    "Chart.bundle.min.js",
69
                FileModTime: time.Unix(1528732500, 0),
70
                Content:     string("/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.2\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,i,n){function a(o,s){if(!i[o]){if(!e[o]){var l=\"function\"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var u=new Error(\"Cannot find module '\"+o+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var d=i[o]={exports:{}};e[o][0].call(d.exports,function(t){var i=e[o][1][t];return a(i||t)},d,d.exports,t,e,i,n)}return i[o].exports}for(var r=\"function\"==typeof require&&require,o=0;o<n.length;o++)a(n[o]);return a}({1:[function(t,e,i){var n=t(5);function a(t){if(t){var e=[0,0,0],i=1,a=t.match(/^#([a-fA-F0-9]{3})$/i);if(a){a=a[1];for(var r=0;r<e.length;r++)e[r]=parseInt(a[r]+a[r],16)}else if(a=t.match(/^#([a-fA-F0-9]{6})$/i)){a=a[1];for(r=0;r<e.length;r++)e[r]=parseInt(a.slice(2*r,2*r+2),16)}else if(a=t.match(/^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i)){for(r=0;r<e.length;r++)e[r]=parseInt(a[r+1]);i=parseFloat(a[4])}else if(a=t.match(/^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i)){for(r=0;r<e.length;r++)e[r]=Math.round(2.55*parseFloat(a[r+1]));i=parseFloat(a[4])}else if(a=t.match(/(\\w+)/)){if(\"transparent\"==a[1])return[0,0,0,0];if(!(e=n[a[1]]))return}for(r=0;r<e.length;r++)e[r]=d(e[r],0,255);return i=i||0==i?d(i,0,1):1,e[3]=i,e}}function r(t){if(t){var e=t.match(/^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),\"rgba(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+e+\")\"}function l(t,e){return\"rgba(\"+Math.round(t[0]/255*100)+\"%, \"+Math.round(t[1]/255*100)+\"%, \"+Math.round(t[2]/255*100)+\"%, \"+(e||t[3]||1)+\")\"}function u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),\"hsla(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%, \"+e+\")\"}function d(t,e,i){return Math.min(Math.max(e,t),i)}function h(t){var e=t.toString(16).toUpperCase();return e.length<2?\"0\"+e:e}e.exports={getRgba:a,getHsla:r,getRgb:function(t){var e=a(t);return e&&e.slice(0,3)},getHsl:function(t){var e=r(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=a(t);{if(e)return e[3];if(e=r(t))return e[3];if(e=o(t))return e[3]}},hexString:function(t){return\"#\"+h(t[0])+h(t[1])+h(t[2])},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return s(t,e);return\"rgb(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},rgbaString:s,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return l(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return\"rgb(\"+i+\"%, \"+n+\"%, \"+a+\"%)\"},percentaString:l,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return u(t,e);return\"hsl(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%)\"},hslaString:u,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return\"hwb(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%\"+(void 0!==e&&1!==e?\", \"+e:\"\")+\")\"},keyword:function(t){return c[t.slice(0,3)]}};var c={};for(var f in n)c[n[f]]=f},{5:5}],2:[function(t,e,i){var n=t(4),a=t(1),r=function(t){return t instanceof r?t:this instanceof r?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void(\"string\"==typeof t?(e=a.getRgba(t))?this.setValues(\"rgb\",e):(e=a.getHsla(t))?this.setValues(\"hsl\",e):(e=a.getHwb(t))&&this.setValues(\"hwb\",e):\"object\"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues(\"rgb\",e):void 0!==e.l||void 0!==e.lightness?this.setValues(\"hsl\",e):void 0!==e.v||void 0!==e.value?this.setValues(\"hsv\",e):void 0!==e.w||void 0!==e.whiteness?this.setValues(\"hwb\",e):void 0===e.c&&void 0===e.cyan||this.setValues(\"cmyk\",e)))):new r(t);var e};r.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace(\"rgb\",arguments)},hsl:function(){return this.setSpace(\"hsl\",arguments)},hsv:function(){return this.setSpace(\"hsv\",arguments)},hwb:function(){return this.setSpace(\"hwb\",arguments)},cmyk:function(){return this.setSpace(\"cmyk\",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues(\"alpha\",t),this)},red:function(t){return this.setChannel(\"rgb\",0,t)},green:function(t){return this.setChannel(\"rgb\",1,t)},blue:function(t){return this.setChannel(\"rgb\",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel(\"hsl\",0,t)},saturation:function(t){return this.setChannel(\"hsl\",1,t)},lightness:function(t){return this.setChannel(\"hsl\",2,t)},saturationv:function(t){return this.setChannel(\"hsv\",1,t)},whiteness:function(t){return this.setChannel(\"hwb\",1,t)},blackness:function(t){return this.setChannel(\"hwb\",2,t)},value:function(t){return this.setChannel(\"hsv\",2,t)},cyan:function(t){return this.setChannel(\"cmyk\",0,t)},magenta:function(t){return this.setChannel(\"cmyk\",1,t)},yellow:function(t){return this.setChannel(\"cmyk\",2,t)},black:function(t){return this.setChannel(\"cmyk\",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?\"AAA\":e>=4.5?\"AA\":\"\"},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues(\"rgb\",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues(\"hsl\",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues(\"hsl\",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues(\"hsl\",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues(\"hsl\",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues(\"hwb\",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues(\"hwb\",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues(\"rgb\",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues(\"hsl\",e),this},mix:function(t,e){var i=this,n=t,a=void 0===e?.5:e,r=2*a-1,o=i.alpha()-n.alpha(),s=((r*o==-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return this.rgb(s*i.red()+l*n.red(),s*i.green()+l*n.green(),s*i.blue()+l*n.blue()).alpha(i.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new r,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],\"[object Array]\"===(e={}.toString.call(t))?a[o]=t.slice(0):\"[object Number]\"===e?a[o]=t:console.error(\"unexpected color value:\",t));return i}},r.prototype.spaces={rgb:[\"red\",\"green\",\"blue\"],hsl:[\"hue\",\"saturation\",\"lightness\"],hsv:[\"hue\",\"saturation\",\"value\"],hwb:[\"hue\",\"whiteness\",\"blackness\"],cmyk:[\"cyan\",\"magenta\",\"yellow\",\"black\"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},r.prototype.setValues=function(t,e){var i,a,r=this.values,o=this.spaces,s=this.maxes,l=1;if(this.valid=!0,\"alpha\"===t)l=e;else if(e.length)r[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)r[t][i]=e[t.charAt(i)];l=e.a}else if(void 0!==e[o[t][0]]){var u=o[t];for(i=0;i<t.length;i++)r[t][i]=e[u[i]];l=e.alpha}if(r.alpha=Math.max(0,Math.min(1,void 0===l?r.alpha:l)),\"alpha\"===t)return!1;for(i=0;i<t.length;i++)a=Math.max(0,Math.min(s[t][i],r[t][i])),r[t][i]=Math.round(a);for(var d in o)d!==t&&(r[d]=n[t][d](r[t]));return!0},r.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):(\"number\"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},r.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:i===n[e]?this:(n[e]=i,this.setValues(t,n),this)},\"undefined\"!=typeof window&&(window.Color=r),e.exports=r},{1:1,4:4}],3:[function(t,e,i){function n(t){var e,i,n=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(o+s)/2,[e,100*(s==o?0:i<=.5?l/(s+o):l/(2-s-o)),100*i]}function a(t){var e,i,n=t[0],a=t[1],r=t[2],o=Math.min(n,a,r),s=Math.max(n,a,r),l=s-o;return i=0==s?0:l/s*1e3/10,s==o?e=0:n==s?e=(a-r)/l:a==s?e=2+(r-n)/l:r==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function o(t){var e=t[0],i=t[1],a=t[2];return[n(t)[0],100*(1/255*Math.min(e,Math.min(i,a))),100*(a=1-1/255*Math.max(e,Math.max(i,a)))]}function s(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=u(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function h(t){var e,i,n,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=o+1/3*-(u-1))<0&&n++,n>1&&n--,r=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*r;return a}function c(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*n*(1-i),s=255*n*(1-i*r),l=255*n*(1-i*(1-r));n*=255;switch(a){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}}function f(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function m(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,r=t[1]/100,o=t[2]/100;return i=-.9689*a+1.8758*r+.0415*o,n=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function v(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function y(t){var e,i,n,a,r=t[0],o=t[1],s=t[2];return r<=8?a=(i=100*r/903.3)/100*7.787+16/116:(i=100*Math.pow((r+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function _(t){return p(y(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}e.exports={rgb2hsl:n,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:h,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return o(h(t))},hsl2cmyk:function(t){return s(h(t))},hsl2keyword:function(t){return l(h(t))},hsv2rgb:c,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,r=t[2]/100;return e=a*r,[n,100*(e=(e/=(i=(2-a)*r)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return o(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return l(c(t))},hwb2rgb:f,hwb2hsl:function(t){return n(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:m,cmyk2hsl:function(t){return n(m(t))},cmyk2hsv:function(t){return a(m(t))},cmyk2hwb:function(t){return o(m(t))},cmyk2keyword:function(t){return l(m(t))},keyword2rgb:w,keyword2hsl:function(t){return n(w(t))},keyword2hsv:function(t){return a(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:p,xyz2lab:v,xyz2lch:function(t){return x(v(t))},lab2xyz:y,lab2rgb:_,lab2lch:x,lch2lab:k,lch2xyz:function(t){return y(k(t))},lch2rgb:function(t){return _(k(t))}};var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},S={};for(var D in M)S[JSON.stringify(M[D])]=D},{}],4:[function(t,e,i){var n=t(3),a=function(){return new u};for(var r in n){a[r+\"Raw\"]=function(t){return function(e){return\"number\"==typeof e&&(e=Array.prototype.slice.call(arguments)),n[t](e)}}(r);var o=/(\\w+)2(\\w+)/.exec(r),s=o[1],l=o[2];(a[s]=a[s]||{})[l]=a[r]=function(t){return function(e){\"number\"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=n[t](e);if(\"string\"==typeof i||void 0===i)return i;for(var a=0;a<i.length;a++)i[a]=Math.round(i[a]);return i}}(r)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):(\"number\"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=a[i][t](n),this.convs[t]=e}return e},[\"rgb\",\"hsl\",\"hsv\",\"cmyk\",\"keyword\"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{3:3}],5:[function(t,e,i){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],6:[function(t,e,i){var n,a;n=this,a=function(){\"use strict\";var i,n;function a(){return i.apply(null,arguments)}function r(t){return t instanceof Array||\"[object Array]\"===Object.prototype.toString.call(t)}function o(t){return null!=t&&\"[object Object]\"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function l(t){return\"number\"==typeof t||\"[object Number]\"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||\"[object Date]\"===Object.prototype.toString.call(t)}function d(t,e){var i,n=[];for(i=0;i<t.length;++i)n.push(e(t[i],i));return n}function h(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t,e){for(var i in e)h(e,i)&&(t[i]=e[i]);return h(e,\"toString\")&&(t.toString=e.toString),h(e,\"valueOf\")&&(t.valueOf=e.valueOf),t}function f(t,e,i,n){return Pe(t,e,i,n,!0).utc()}function g(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function m(t){if(null==t._isValid){var e=g(t),i=n.call(e.parsedDateParts,function(t){return null!=t}),a=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&i);if(t._strict&&(a=a&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return a;t._isValid=a}return t._isValid}function p(t){var e=f(NaN);return null!=t?c(g(e),t):g(e).userInvalidated=!0,e}n=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,n=0;n<i;n++)if(n in e&&t.call(this,e[n],n,e))return!0;return!1};var v=a.momentProperties=[];function y(t,e){var i,n,a;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=g(e)),s(e._locale)||(t._locale=e._locale),v.length>0)for(i=0;i<v.length;i++)s(a=e[n=v[i]])||(t[n]=a);return t}var b=!1;function x(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,a.updateOffset(this),b=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function k(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=k(e)),i}function M(t,e,i){var n,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(n=0;n<a;n++)(i&&t[n]!==e[n]||!i&&w(t[n])!==w(e[n]))&&o++;return o+r}function S(t){!1===a.suppressDeprecationWarnings&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+t)}function D(t,e){var i=!0;return c(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,t),i){for(var n,r=[],o=0;o<arguments.length;o++){if(n=\"\",\"object\"==typeof arguments[o]){for(var s in n+=\"\\n[\"+o+\"] \",arguments[0])n+=s+\": \"+arguments[0][s]+\", \";n=n.slice(0,-2)}else n=arguments[o];r.push(n)}S(t+\"\\nArguments: \"+Array.prototype.slice.call(r).join(\"\")+\"\\n\"+(new Error).stack),i=!1}return e.apply(this,arguments)},e)}var C,P={};function T(t,e){null!=a.deprecationHandler&&a.deprecationHandler(t,e),P[t]||(S(e),P[t]=!0)}function O(t){return t instanceof Function||\"[object Function]\"===Object.prototype.toString.call(t)}function I(t,e){var i,n=c({},t);for(i in e)h(e,i)&&(o(t[i])&&o(e[i])?(n[i]={},c(n[i],t[i]),c(n[i],e[i])):null!=e[i]?n[i]=e[i]:delete n[i]);for(i in t)h(t,i)&&!h(e,i)&&o(t[i])&&(n[i]=c({},n[i]));return n}function A(t){null!=t&&this.set(t)}a.suppressDeprecationWarnings=!1,a.deprecationHandler=null,C=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)h(t,e)&&i.push(e);return i};var F={};function R(t,e){var i=t.toLowerCase();F[i]=F[i+\"s\"]=F[e]=t}function L(t){return\"string\"==typeof t?F[t]||F[t.toLowerCase()]:void 0}function W(t){var e,i,n={};for(i in t)h(t,i)&&(e=L(i))&&(n[e]=t[i]);return n}var Y={};function N(t,e){Y[t]=e}function z(t,e,i){var n=\"\"+Math.abs(t),a=e-n.length;return(t>=0?i?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,a)).toString().substr(1)+n}var H=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,B={},E={};function j(t,e,i,n){var a=n;\"string\"==typeof n&&(a=function(){return this[n]()}),t&&(E[t]=a),e&&(E[e[0]]=function(){return z(a.apply(this,arguments),e[1],e[2])}),i&&(E[i]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=q(e,t.localeData()),B[e]=B[e]||function(t){var e,i,n,a=t.match(H);for(e=0,i=a.length;e<i;e++)E[a[e]]?a[e]=E[a[e]]:a[e]=(n=a[e]).match(/\\[[\\s\\S]/)?n.replace(/^\\[|\\]$/g,\"\"):n.replace(/\\\\/g,\"\");return function(e){var n,r=\"\";for(n=0;n<i;n++)r+=O(a[n])?a[n].call(e,t):a[n];return r}}(e),B[e](t)):t.localeData().invalidDate()}function q(t,e){var i=5;function n(t){return e.longDateFormat(t)||t}for(V.lastIndex=0;i>=0&&V.test(t);)t=t.replace(V,n),V.lastIndex=0,i-=1;return t}var G=/\\d/,Z=/\\d\\d/,X=/\\d{3}/,J=/\\d{4}/,K=/[+-]?\\d{6}/,$=/\\d\\d?/,Q=/\\d\\d\\d\\d?/,tt=/\\d\\d\\d\\d\\d\\d?/,et=/\\d{1,3}/,it=/\\d{1,4}/,nt=/[+-]?\\d{1,6}/,at=/\\d+/,rt=/[+-]?\\d+/,ot=/Z|[+-]\\d\\d:?\\d\\d/gi,st=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,lt=/[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,ut={};function dt(t,e,i){ut[t]=O(e)?e:function(t,n){return t&&i?i:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ct(t.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(t,e,i,n,a){return e||i||n||a})))}function ct(t){return t.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var ft={};function gt(t,e){var i,n=e;for(\"string\"==typeof t&&(t=[t]),l(e)&&(n=function(t,i){i[e]=w(t)}),i=0;i<t.length;i++)ft[t[i]]=n}function mt(t,e){gt(t,function(t,i,n,a){n._w=n._w||{},e(t,n._w,n,a)})}var pt=0,vt=1,yt=2,bt=3,xt=4,_t=5,kt=6,wt=7,Mt=8;function St(t){return Dt(t)?366:365}function Dt(t){return t%4==0&&t%100!=0||t%400==0}j(\"Y\",0,0,function(){var t=this.year();return t<=9999?\"\"+t:\"+\"+t}),j(0,[\"YY\",2],0,function(){return this.year()%100}),j(0,[\"YYYY\",4],0,\"year\"),j(0,[\"YYYYY\",5],0,\"year\"),j(0,[\"YYYYYY\",6,!0],0,\"year\"),R(\"year\",\"y\"),N(\"year\",1),dt(\"Y\",rt),dt(\"YY\",$,Z),dt(\"YYYY\",it,J),dt(\"YYYYY\",nt,K),dt(\"YYYYYY\",nt,K),gt([\"YYYYY\",\"YYYYYY\"],pt),gt(\"YYYY\",function(t,e){e[pt]=2===t.length?a.parseTwoDigitYear(t):w(t)}),gt(\"YY\",function(t,e){e[pt]=a.parseTwoDigitYear(t)}),gt(\"Y\",function(t,e){e[pt]=parseInt(t,10)}),a.parseTwoDigitYear=function(t){return w(t)+(w(t)>68?1900:2e3)};var Ct,Pt=Tt(\"FullYear\",!0);function Tt(t,e){return function(i){return null!=i?(It(this,t,i),a.updateOffset(this,e),this):Ot(this,t)}}function Ot(t,e){return t.isValid()?t._d[\"get\"+(t._isUTC?\"UTC\":\"\")+e]():NaN}function It(t,e,i){t.isValid()&&!isNaN(i)&&(\"FullYear\"===e&&Dt(t.year())&&1===t.month()&&29===t.date()?t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+e](i,t.month(),At(i,t.month())):t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+e](i))}function At(t,e){if(isNaN(t)||isNaN(e))return NaN;var i,n=(e%(i=12)+i)%i;return t+=(e-n)/12,1===n?Dt(t)?29:28:31-n%7%2}Ct=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},j(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),j(\"MMM\",0,0,function(t){return this.localeData().monthsShort(this,t)}),j(\"MMMM\",0,0,function(t){return this.localeData().months(this,t)}),R(\"month\",\"M\"),N(\"month\",8),dt(\"M\",$),dt(\"MM\",$,Z),dt(\"MMM\",function(t,e){return e.monthsShortRegex(t)}),dt(\"MMMM\",function(t,e){return e.monthsRegex(t)}),gt([\"M\",\"MM\"],function(t,e){e[vt]=w(t)-1}),gt([\"MMM\",\"MMMM\"],function(t,e,i,n){var a=i._locale.monthsParse(t,n,i._strict);null!=a?e[vt]=a:g(i).invalidMonth=t});var Ft=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,Rt=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");var Lt=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function Wt(t,e){var i;if(!t.isValid())return t;if(\"string\"==typeof e)if(/^\\d+$/.test(e))e=w(e);else if(!l(e=t.localeData().monthsParse(e)))return t;return i=Math.min(t.date(),At(t.year(),e)),t._d[\"set\"+(t._isUTC?\"UTC\":\"\")+\"Month\"](e,i),t}function Yt(t){return null!=t?(Wt(this,t),a.updateOffset(this,!0),this):Ot(this,\"Month\")}var Nt=lt;var zt=lt;function Ht(){function t(t,e){return e.length-t.length}var e,i,n=[],a=[],r=[];for(e=0;e<12;e++)i=f([2e3,e]),n.push(this.monthsShort(i,\"\")),a.push(this.months(i,\"\")),r.push(this.months(i,\"\")),r.push(this.monthsShort(i,\"\"));for(n.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)n[e]=ct(n[e]),a[e]=ct(a[e]);for(e=0;e<24;e++)r[e]=ct(r[e]);this._monthsRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+n.join(\"|\")+\")\",\"i\")}function Vt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Bt(t,e,i){var n=7+e-i;return-((7+Vt(t,0,n).getUTCDay()-e)%7)+n-1}function Et(t,e,i,n,a){var r,o,s=1+7*(e-1)+(7+i-n)%7+Bt(t,n,a);return s<=0?o=St(r=t-1)+s:s>St(t)?(r=t+1,o=s-St(t)):(r=t,o=s),{year:r,dayOfYear:o}}function jt(t,e,i){var n,a,r=Bt(t.year(),e,i),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?n=o+Ut(a=t.year()-1,e,i):o>Ut(t.year(),e,i)?(n=o-Ut(t.year(),e,i),a=t.year()+1):(a=t.year(),n=o),{week:n,year:a}}function Ut(t,e,i){var n=Bt(t,e,i),a=Bt(t+1,e,i);return(St(t)-n+a)/7}j(\"w\",[\"ww\",2],\"wo\",\"week\"),j(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),R(\"week\",\"w\"),R(\"isoWeek\",\"W\"),N(\"week\",5),N(\"isoWeek\",5),dt(\"w\",$),dt(\"ww\",$,Z),dt(\"W\",$),dt(\"WW\",$,Z),mt([\"w\",\"ww\",\"W\",\"WW\"],function(t,e,i,n){e[n.substr(0,1)]=w(t)});j(\"d\",0,\"do\",\"day\"),j(\"dd\",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),j(\"ddd\",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),j(\"dddd\",0,0,function(t){return this.localeData().weekdays(this,t)}),j(\"e\",0,0,\"weekday\"),j(\"E\",0,0,\"isoWeekday\"),R(\"day\",\"d\"),R(\"weekday\",\"e\"),R(\"isoWeekday\",\"E\"),N(\"day\",11),N(\"weekday\",11),N(\"isoWeekday\",11),dt(\"d\",$),dt(\"e\",$),dt(\"E\",$),dt(\"dd\",function(t,e){return e.weekdaysMinRegex(t)}),dt(\"ddd\",function(t,e){return e.weekdaysShortRegex(t)}),dt(\"dddd\",function(t,e){return e.weekdaysRegex(t)}),mt([\"dd\",\"ddd\",\"dddd\"],function(t,e,i,n){var a=i._locale.weekdaysParse(t,n,i._strict);null!=a?e.d=a:g(i).invalidWeekday=t}),mt([\"d\",\"e\",\"E\"],function(t,e,i,n){e[n]=w(t)});var qt=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");var Gt=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");var Zt=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");var Xt=lt;var Jt=lt;var Kt=lt;function $t(){function t(t,e){return e.length-t.length}var e,i,n,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)i=f([2e3,1]).day(e),n=this.weekdaysMin(i,\"\"),a=this.weekdaysShort(i,\"\"),r=this.weekdays(i,\"\"),o.push(n),s.push(a),l.push(r),u.push(n),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ct(s[e]),l[e]=ct(l[e]),u[e]=ct(u[e]);this._weekdaysRegex=new RegExp(\"^(\"+u.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+l.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+s.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\")}function Qt(){return this.hours()%12||12}function te(t,e){j(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ee(t,e){return e._meridiemParse}j(\"H\",[\"HH\",2],0,\"hour\"),j(\"h\",[\"hh\",2],0,Qt),j(\"k\",[\"kk\",2],0,function(){return this.hours()||24}),j(\"hmm\",0,0,function(){return\"\"+Qt.apply(this)+z(this.minutes(),2)}),j(\"hmmss\",0,0,function(){return\"\"+Qt.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),j(\"Hmm\",0,0,function(){return\"\"+this.hours()+z(this.minutes(),2)}),j(\"Hmmss\",0,0,function(){return\"\"+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),te(\"a\",!0),te(\"A\",!1),R(\"hour\",\"h\"),N(\"hour\",13),dt(\"a\",ee),dt(\"A\",ee),dt(\"H\",$),dt(\"h\",$),dt(\"k\",$),dt(\"HH\",$,Z),dt(\"hh\",$,Z),dt(\"kk\",$,Z),dt(\"hmm\",Q),dt(\"hmmss\",tt),dt(\"Hmm\",Q),dt(\"Hmmss\",tt),gt([\"H\",\"HH\"],bt),gt([\"k\",\"kk\"],function(t,e,i){var n=w(t);e[bt]=24===n?0:n}),gt([\"a\",\"A\"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),gt([\"h\",\"hh\"],function(t,e,i){e[bt]=w(t),g(i).bigHour=!0}),gt(\"hmm\",function(t,e,i){var n=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n)),g(i).bigHour=!0}),gt(\"hmmss\",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(a)),g(i).bigHour=!0}),gt(\"Hmm\",function(t,e,i){var n=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n))}),gt(\"Hmmss\",function(t,e,i){var n=t.length-4,a=t.length-2;e[bt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(a))});var ie,ne=Tt(\"Hours\",!0),ae={calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},longDateFormat:{LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:/\\d{1,2}/,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},months:Rt,monthsShort:Lt,week:{dow:0,doy:6},weekdays:qt,weekdaysMin:Zt,weekdaysShort:Gt,meridiemParse:/[ap]\\.?m?\\.?/i},re={},oe={};function se(t){return t?t.toLowerCase().replace(\"_\",\"-\"):t}function le(i){var n=null;if(!re[i]&&void 0!==e&&e&&e.exports)try{n=ie._abbr,t(\"./locale/\"+i),ue(n)}catch(t){}return re[i]}function ue(t,e){var i;return t&&(i=s(e)?he(t):de(t,e))&&(ie=i),ie._abbr}function de(t,e){if(null!==e){var i=ae;if(e.abbr=t,null!=re[t])T(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),i=re[t]._config;else if(null!=e.parentLocale){if(null==re[e.parentLocale])return oe[e.parentLocale]||(oe[e.parentLocale]=[]),oe[e.parentLocale].push({name:t,config:e}),null;i=re[e.parentLocale]._config}return re[t]=new A(I(i,e)),oe[t]&&oe[t].forEach(function(t){de(t.name,t.config)}),ue(t),re[t]}return delete re[t],null}function he(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ie;if(!r(t)){if(e=le(t))return e;t=[t]}return function(t){for(var e,i,n,a,r=0;r<t.length;){for(e=(a=se(t[r]).split(\"-\")).length,i=(i=se(t[r+1]))?i.split(\"-\"):null;e>0;){if(n=le(a.slice(0,e).join(\"-\")))return n;if(i&&i.length>=e&&M(a,i,!0)>=e-1)break;e--}r++}return null}(t)}function ce(t){var e,i=t._a;return i&&-2===g(t).overflow&&(e=i[vt]<0||i[vt]>11?vt:i[yt]<1||i[yt]>At(i[pt],i[vt])?yt:i[bt]<0||i[bt]>24||24===i[bt]&&(0!==i[xt]||0!==i[_t]||0!==i[kt])?bt:i[xt]<0||i[xt]>59?xt:i[_t]<0||i[_t]>59?_t:i[kt]<0||i[kt]>999?kt:-1,g(t)._overflowDayOfYear&&(e<pt||e>yt)&&(e=yt),g(t)._overflowWeeks&&-1===e&&(e=wt),g(t)._overflowWeekday&&-1===e&&(e=Mt),g(t).overflow=e),t}function fe(t,e,i){return null!=t?t:null!=e?e:i}function ge(t){var e,i,n,r,o,s=[];if(!t._d){var l,u;for(l=t,u=new Date(a.now()),n=l._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],t._w&&null==t._a[yt]&&null==t._a[vt]&&function(t){var e,i,n,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,i=fe(e.GG,t._a[pt],jt(Te(),1,4).year),n=fe(e.W,1),((a=fe(e.E,1))<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=jt(Te(),r,o);i=fe(e.gg,t._a[pt],u.year),n=fe(e.w,u.week),null!=e.d?((a=e.d)<0||a>6)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}n<1||n>Ut(i,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=Et(i,n,a,r,o),t._a[pt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=fe(t._a[pt],n[pt]),(t._dayOfYear>St(o)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),i=Vt(o,0,t._dayOfYear),t._a[vt]=i.getUTCMonth(),t._a[yt]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=n[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[bt]&&0===t._a[xt]&&0===t._a[_t]&&0===t._a[kt]&&(t._nextDay=!0,t._a[bt]=0),t._d=(t._useUTC?Vt:function(t,e,i,n,a,r,o){var s=new Date(t,e,i,n,a,r,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,s),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[bt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(g(t).weekdayMismatch=!0)}}var me=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,pe=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,ve=/Z|[+-]\\d\\d(?::?\\d\\d)?/,ye=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],be=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],xe=/^\\/?Date\\((\\-?\\d+)/i;function _e(t){var e,i,n,a,r,o,s=t._i,l=me.exec(s)||pe.exec(s);if(l){for(g(t).iso=!0,e=0,i=ye.length;e<i;e++)if(ye[e][1].exec(l[1])){a=ye[e][0],n=!1!==ye[e][2];break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,i=be.length;e<i;e++)if(be[e][1].exec(l[3])){r=(l[2]||\" \")+be[e][0];break}if(null==r)return void(t._isValid=!1)}if(!n&&null!=r)return void(t._isValid=!1);if(l[4]){if(!ve.exec(l[4]))return void(t._isValid=!1);o=\"Z\"}t._f=a+(r||\"\")+(o||\"\"),De(t)}else t._isValid=!1}var ke=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function we(t,e,i,n,a,r){var o=[function(t){var e=parseInt(t,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(t),Lt.indexOf(e),parseInt(i,10),parseInt(n,10),parseInt(a,10)];return r&&o.push(parseInt(r,10)),o}var Me={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Se(t){var e,i,n,a=ke.exec(t._i.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").trim());if(a){var r=we(a[4],a[3],a[2],a[5],a[6],a[7]);if(e=a[1],i=r,n=t,e&&Gt.indexOf(e)!==new Date(i[0],i[1],i[2]).getDay()&&(g(n).weekdayMismatch=!0,n._isValid=!1,1))return;t._a=r,t._tzm=function(t,e,i){if(t)return Me[t];if(e)return 0;var n=parseInt(i,10),a=n%100;return(n-a)/100*60+a}(a[8],a[9],a[10]),t._d=Vt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),g(t).rfc2822=!0}else t._isValid=!1}function De(t){if(t._f!==a.ISO_8601)if(t._f!==a.RFC_2822){t._a=[],g(t).empty=!0;var e,i,n,r,o,s,l,u,d=\"\"+t._i,c=d.length,f=0;for(n=q(t._f,t._locale).match(H)||[],e=0;e<n.length;e++)r=n[e],(i=(d.match(ht(r,t))||[])[0])&&((o=d.substr(0,d.indexOf(i))).length>0&&g(t).unusedInput.push(o),d=d.slice(d.indexOf(i)+i.length),f+=i.length),E[r]?(i?g(t).empty=!1:g(t).unusedTokens.push(r),s=r,u=t,null!=(l=i)&&h(ft,s)&&ft[s](l,u._a,u,s)):t._strict&&!i&&g(t).unusedTokens.push(r);g(t).charsLeftOver=c-f,d.length>0&&g(t).unusedInput.push(d),t._a[bt]<=12&&!0===g(t).bigHour&&t._a[bt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[bt]=function(t,e,i){var n;if(null==i)return e;return null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?((n=t.isPM(i))&&e<12&&(e+=12),n||12!==e||(e=0),e):e}(t._locale,t._a[bt],t._meridiem),ge(t),ce(t)}else Se(t);else _e(t)}function Ce(t){var e,i,n,h,f=t._i,v=t._f;return t._locale=t._locale||he(t._l),null===f||void 0===v&&\"\"===f?p({nullInput:!0}):(\"string\"==typeof f&&(t._i=f=t._locale.preparse(f)),_(f)?new x(ce(f)):(u(f)?t._d=f:r(v)?function(t){var e,i,n,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)r=0,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],De(e),m(e)&&(r+=g(e).charsLeftOver,r+=10*g(e).unusedTokens.length,g(e).score=r,(null==n||r<n)&&(n=r,i=e));c(t,i||e)}(t):v?De(t):s(i=(e=t)._i)?e._d=new Date(a.now()):u(i)?e._d=new Date(i.valueOf()):\"string\"==typeof i?(n=e,null===(h=xe.exec(n._i))?(_e(n),!1===n._isValid&&(delete n._isValid,Se(n),!1===n._isValid&&(delete n._isValid,a.createFromInputFallback(n)))):n._d=new Date(+h[1])):r(i)?(e._a=d(i.slice(0),function(t){return parseInt(t,10)}),ge(e)):o(i)?function(t){if(!t._d){var e=W(t._i);t._a=d([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),ge(t)}}(e):l(i)?e._d=new Date(i):a.createFromInputFallback(e),m(t)||(t._d=null),t))}function Pe(t,e,i,n,a){var s,l={};return!0!==i&&!1!==i||(n=i,i=void 0),(o(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||r(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=a,l._l=i,l._i=t,l._f=e,l._strict=n,(s=new x(ce(Ce(l))))._nextDay&&(s.add(1,\"d\"),s._nextDay=void 0),s}function Te(t,e,i,n){return Pe(t,e,i,n,!1)}a.createFromInputFallback=D(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(t){t._d=new Date(t._i+(t._useUTC?\" UTC\":\"\"))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Oe=D(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:p()}),Ie=D(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:p()});function Ae(t,e){var i,n;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Te();for(i=e[0],n=1;n<e.length;++n)e[n].isValid()&&!e[n][t](i)||(i=e[n]);return i}var Fe=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function Re(t){var e=W(t),i=e.year||0,n=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===Ct.call(Fe,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var i=!1,n=0;n<Fe.length;++n)if(t[Fe[n]]){if(i)return!1;parseFloat(t[Fe[n]])!==w(t[Fe[n]])&&(i=!0)}return!0}(e),this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*n+12*i,this._data={},this._locale=he(),this._bubble()}function Le(t){return t instanceof Re}function We(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ye(t,e){j(t,0,0,function(){var t=this.utcOffset(),i=\"+\";return t<0&&(t=-t,i=\"-\"),i+z(~~(t/60),2)+e+z(~~t%60,2)})}Ye(\"Z\",\":\"),Ye(\"ZZ\",\"\"),dt(\"Z\",st),dt(\"ZZ\",st),gt([\"Z\",\"ZZ\"],function(t,e,i){i._useUTC=!0,i._tzm=ze(st,t)});var Ne=/([\\+\\-]|\\d\\d)/gi;function ze(t,e){var i=(e||\"\").match(t);if(null===i)return null;var n=((i[i.length-1]||[])+\"\").match(Ne)||[\"-\",0,0],a=60*n[1]+w(n[2]);return 0===a?0:\"+\"===n[0]?a:-a}function He(t,e){var i,n;return e._isUTC?(i=e.clone(),n=(_(t)||u(t)?t.valueOf():Te(t).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),a.updateOffset(i,!1),i):Te(t).local()}function Ve(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Be(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}a.updateOffset=function(){};var Ee=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,je=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ue(t,e){var i,n,a,r=t,o=null;return Le(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:l(t)?(r={},e?r[e]=t:r.milliseconds=t):(o=Ee.exec(t))?(i=\"-\"===o[1]?-1:1,r={y:0,d:w(o[yt])*i,h:w(o[bt])*i,m:w(o[xt])*i,s:w(o[_t])*i,ms:w(We(1e3*o[kt]))*i}):(o=je.exec(t))?(i=\"-\"===o[1]?-1:(o[1],1),r={y:qe(o[2],i),M:qe(o[3],i),w:qe(o[4],i),d:qe(o[5],i),h:qe(o[6],i),m:qe(o[7],i),s:qe(o[8],i)}):null==r?r={}:\"object\"==typeof r&&(\"from\"in r||\"to\"in r)&&(a=function(t,e){var i;if(!t.isValid()||!e.isValid())return{milliseconds:0,months:0};e=He(e,t),t.isBefore(e)?i=Ge(t,e):((i=Ge(e,t)).milliseconds=-i.milliseconds,i.months=-i.months);return i}(Te(r.from),Te(r.to)),(r={}).ms=a.milliseconds,r.M=a.months),n=new Re(r),Le(t)&&h(t,\"_locale\")&&(n._locale=t._locale),n}function qe(t,e){var i=t&&parseFloat(t.replace(\",\",\".\"));return(isNaN(i)?0:i)*e}function Ge(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,\"M\").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,\"M\"),i}function Ze(t,e){return function(i,n){var a;return null===n||isNaN(+n)||(T(e,\"moment().\"+e+\"(period, number) is deprecated. Please use moment().\"+e+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),a=i,i=n,n=a),Xe(this,Ue(i=\"string\"==typeof i?+i:i,n),t),this}}function Xe(t,e,i,n){var r=e._milliseconds,o=We(e._days),s=We(e._months);t.isValid()&&(n=null==n||n,s&&Wt(t,Ot(t,\"Month\")+s*i),o&&It(t,\"Date\",Ot(t,\"Date\")+o*i),r&&t._d.setTime(t._d.valueOf()+r*i),n&&a.updateOffset(t,o||s))}Ue.fn=Re.prototype,Ue.invalid=function(){return Ue(NaN)};var Je=Ze(1,\"add\"),Ke=Ze(-1,\"subtract\");function $e(t,e){var i=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(i,\"months\");return-(i+(e-n<0?(e-n)/(n-t.clone().add(i-1,\"months\")):(e-n)/(t.clone().add(i+1,\"months\")-n)))||0}function Qe(t){var e;return void 0===t?this._locale._abbr:(null!=(e=he(t))&&(this._locale=e),this)}a.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",a.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var ti=D(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(t){return void 0===t?this.localeData():this.locale(t)});function ei(){return this._locale}function ii(t,e){j(0,[t,t.length],0,e)}function ni(t,e,i,n,a){var r;return null==t?jt(this,n,a).year:(e>(r=Ut(t,n,a))&&(e=r),function(t,e,i,n,a){var r=Et(t,e,i,n,a),o=Vt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,i,n,a))}j(0,[\"gg\",2],0,function(){return this.weekYear()%100}),j(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),ii(\"gggg\",\"weekYear\"),ii(\"ggggg\",\"weekYear\"),ii(\"GGGG\",\"isoWeekYear\"),ii(\"GGGGG\",\"isoWeekYear\"),R(\"weekYear\",\"gg\"),R(\"isoWeekYear\",\"GG\"),N(\"weekYear\",1),N(\"isoWeekYear\",1),dt(\"G\",rt),dt(\"g\",rt),dt(\"GG\",$,Z),dt(\"gg\",$,Z),dt(\"GGGG\",it,J),dt(\"gggg\",it,J),dt(\"GGGGG\",nt,K),dt(\"ggggg\",nt,K),mt([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(t,e,i,n){e[n.substr(0,2)]=w(t)}),mt([\"gg\",\"GG\"],function(t,e,i,n){e[n]=a.parseTwoDigitYear(t)}),j(\"Q\",0,\"Qo\",\"quarter\"),R(\"quarter\",\"Q\"),N(\"quarter\",7),dt(\"Q\",G),gt(\"Q\",function(t,e){e[vt]=3*(w(t)-1)}),j(\"D\",[\"DD\",2],\"Do\",\"date\"),R(\"date\",\"D\"),N(\"date\",9),dt(\"D\",$),dt(\"DD\",$,Z),dt(\"Do\",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),gt([\"D\",\"DD\"],yt),gt(\"Do\",function(t,e){e[yt]=w(t.match($)[0])});var ai=Tt(\"Date\",!0);j(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),R(\"dayOfYear\",\"DDD\"),N(\"dayOfYear\",4),dt(\"DDD\",et),dt(\"DDDD\",X),gt([\"DDD\",\"DDDD\"],function(t,e,i){i._dayOfYear=w(t)}),j(\"m\",[\"mm\",2],0,\"minute\"),R(\"minute\",\"m\"),N(\"minute\",14),dt(\"m\",$),dt(\"mm\",$,Z),gt([\"m\",\"mm\"],xt);var ri=Tt(\"Minutes\",!1);j(\"s\",[\"ss\",2],0,\"second\"),R(\"second\",\"s\"),N(\"second\",15),dt(\"s\",$),dt(\"ss\",$,Z),gt([\"s\",\"ss\"],_t);var oi,si=Tt(\"Seconds\",!1);for(j(\"S\",0,0,function(){return~~(this.millisecond()/100)}),j(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),j(0,[\"SSS\",3],0,\"millisecond\"),j(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),j(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),j(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),j(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),j(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),j(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),R(\"millisecond\",\"ms\"),N(\"millisecond\",16),dt(\"S\",et,G),dt(\"SS\",et,Z),dt(\"SSS\",et,X),oi=\"SSSS\";oi.length<=9;oi+=\"S\")dt(oi,at);function li(t,e){e[kt]=w(1e3*(\"0.\"+t))}for(oi=\"S\";oi.length<=9;oi+=\"S\")gt(oi,li);var ui=Tt(\"Milliseconds\",!1);j(\"z\",0,0,\"zoneAbbr\"),j(\"zz\",0,0,\"zoneName\");var di=x.prototype;function hi(t){return t}di.add=Je,di.calendar=function(t,e){var i=t||Te(),n=He(i,this).startOf(\"day\"),r=a.calendarFormat(this,n)||\"sameElse\",o=e&&(O(e[r])?e[r].call(this,i):e[r]);return this.format(o||this.localeData().calendar(r,this,Te(i)))},di.clone=function(){return new x(this)},di.diff=function(t,e,i){var n,a,r;if(!this.isValid())return NaN;if(!(n=He(t,this)).isValid())return NaN;switch(a=6e4*(n.utcOffset()-this.utcOffset()),e=L(e)){case\"year\":r=$e(this,n)/12;break;case\"month\":r=$e(this,n);break;case\"quarter\":r=$e(this,n)/3;break;case\"second\":r=(this-n)/1e3;break;case\"minute\":r=(this-n)/6e4;break;case\"hour\":r=(this-n)/36e5;break;case\"day\":r=(this-n-a)/864e5;break;case\"week\":r=(this-n-a)/6048e5;break;default:r=this-n}return i?r:k(r)},di.endOf=function(t){return void 0===(t=L(t))||\"millisecond\"===t?this:(\"date\"===t&&(t=\"day\"),this.startOf(t).add(1,\"isoWeek\"===t?\"week\":t).subtract(1,\"ms\"))},di.format=function(t){t||(t=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},di.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Te(t).isValid())?Ue({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},di.fromNow=function(t){return this.from(Te(),t)},di.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||Te(t).isValid())?Ue({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},di.toNow=function(t){return this.to(Te(),t)},di.get=function(t){return O(this[t=L(t)])?this[t]():this},di.invalidAt=function(){return g(this).overflow},di.isAfter=function(t,e){var i=_(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&(\"millisecond\"===(e=L(s(e)?\"millisecond\":e))?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf())},di.isBefore=function(t,e){var i=_(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&(\"millisecond\"===(e=L(s(e)?\"millisecond\":e))?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf())},di.isBetween=function(t,e,i,n){return(\"(\"===(n=n||\"()\")[0]?this.isAfter(t,i):!this.isBefore(t,i))&&(\")\"===n[1]?this.isBefore(e,i):!this.isAfter(e,i))},di.isSame=function(t,e){var i,n=_(t)?t:Te(t);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(e=L(e||\"millisecond\"))?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf()))},di.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},di.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},di.isValid=function(){return m(this)},di.lang=ti,di.locale=Qe,di.localeData=ei,di.max=Ie,di.min=Oe,di.parsingFlags=function(){return c({},g(this))},di.set=function(t,e){if(\"object\"==typeof t)for(var i=function(t){var e=[];for(var i in t)e.push({unit:i,priority:Y[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}(t=W(t)),n=0;n<i.length;n++)this[i[n].unit](t[i[n].unit]);else if(O(this[t=L(t)]))return this[t](e);return this},di.startOf=function(t){switch(t=L(t)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===t&&this.weekday(0),\"isoWeek\"===t&&this.isoWeekday(1),\"quarter\"===t&&this.month(3*Math.floor(this.month()/3)),this},di.subtract=Ke,di.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},di.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},di.toDate=function(){return new Date(this.valueOf())},di.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,i=e?this.clone().utc():this;return i.year()<0||i.year()>9999?U(i,e?\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\"):O(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this._d.valueOf()).toISOString().replace(\"Z\",U(i,\"Z\")):U(i,e?\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYY-MM-DD[T]HH:mm:ss.SSSZ\")},di.inspect=function(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var t=\"moment\",e=\"\";this.isLocal()||(t=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",e=\"Z\");var i=\"[\"+t+'(\"]',n=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",a=e+'[\")]';return this.format(i+n+\"-MM-DD[T]HH:mm:ss.SSS\"+a)},di.toJSON=function(){return this.isValid()?this.toISOString():null},di.toString=function(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")},di.unix=function(){return Math.floor(this.valueOf()/1e3)},di.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},di.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},di.year=Pt,di.isLeapYear=function(){return Dt(this.year())},di.weekYear=function(t){return ni.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},di.isoWeekYear=function(t){return ni.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},di.quarter=di.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},di.month=Yt,di.daysInMonth=function(){return At(this.year(),this.month())},di.week=di.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),\"d\")},di.isoWeek=di.isoWeeks=function(t){var e=jt(this,1,4).week;return null==t?e:this.add(7*(t-e),\"d\")},di.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},di.isoWeeksInYear=function(){return Ut(this.year(),1,4)},di.date=ai,di.day=di.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,i,n=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,i=this.localeData(),t=\"string\"!=typeof e?e:isNaN(e)?\"number\"==typeof(e=i.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-n,\"d\")):n},di.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,\"d\")},di.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=(i=t,n=this.localeData(),\"string\"==typeof i?n.weekdaysParse(i)%7||7:isNaN(i)?null:i);return this.day(this.day()%7?e:e-7)}return this.day()||7;var i,n},di.dayOfYear=function(t){var e=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==t?e:this.add(t-e,\"d\")},di.hour=di.hours=ne,di.minute=di.minutes=ri,di.second=di.seconds=si,di.millisecond=di.milliseconds=ui,di.utcOffset=function(t,e,i){var n,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if(\"string\"==typeof t){if(null===(t=ze(st,t)))return this}else Math.abs(t)<16&&!i&&(t*=60);return!this._isUTC&&e&&(n=Ve(this)),this._offset=t,this._isUTC=!0,null!=n&&this.add(n,\"m\"),r!==t&&(!e||this._changeInProgress?Xe(this,Ue(t-r,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ve(this)},di.utc=function(t){return this.utcOffset(0,t)},di.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ve(this),\"m\")),this},di.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var t=ze(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},di.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Te(t).utcOffset():0,(this.utcOffset()-t)%60==0)},di.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},di.isLocal=function(){return!!this.isValid()&&!this._isUTC},di.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},di.isUtc=Be,di.isUTC=Be,di.zoneAbbr=function(){return this._isUTC?\"UTC\":\"\"},di.zoneName=function(){return this._isUTC?\"Coordinated Universal Time\":\"\"},di.dates=D(\"dates accessor is deprecated. Use date instead.\",ai),di.months=D(\"months accessor is deprecated. Use month instead\",Yt),di.years=D(\"years accessor is deprecated. Use year instead\",Pt),di.zone=D(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",function(t,e){return null!=t?(\"string\"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),di.isDSTShifted=D(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(y(t,this),(t=Ce(t))._a){var e=t._isUTC?f(t._a):Te(t._a);this._isDSTShifted=this.isValid()&&M(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var ci=A.prototype;function fi(t,e,i,n){var a=he(),r=f().set(n,e);return a[i](r,t)}function gi(t,e,i){if(l(t)&&(e=t,t=void 0),t=t||\"\",null!=e)return fi(t,e,i,\"month\");var n,a=[];for(n=0;n<12;n++)a[n]=fi(t,n,i,\"month\");return a}function mi(t,e,i,n){\"boolean\"==typeof t?(l(e)&&(i=e,e=void 0),e=e||\"\"):(i=e=t,t=!1,l(e)&&(i=e,e=void 0),e=e||\"\");var a,r=he(),o=t?r._week.dow:0;if(null!=i)return fi(e,(i+o)%7,n,\"day\");var s=[];for(a=0;a<7;a++)s[a]=fi(e,(a+o)%7,n,\"day\");return s}ci.calendar=function(t,e,i){var n=this._calendar[t]||this._calendar.sameElse;return O(n)?n.call(e,i):n},ci.longDateFormat=function(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])},ci.invalidDate=function(){return this._invalidDate},ci.ordinal=function(t){return this._ordinal.replace(\"%d\",t)},ci.preparse=hi,ci.postformat=hi,ci.relativeTime=function(t,e,i,n){var a=this._relativeTime[i];return O(a)?a(t,e,i,n):a.replace(/%d/i,t)},ci.pastFuture=function(t,e){var i=this._relativeTime[t>0?\"future\":\"past\"];return O(i)?i(e):i.replace(/%s/i,e)},ci.set=function(t){var e,i;for(i in t)O(e=t[i])?this[i]=e:this[\"_\"+i]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)},ci.months=function(t,e){return t?r(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Ft).test(e)?\"format\":\"standalone\"][t.month()]:r(this._months)?this._months:this._months.standalone},ci.monthsShort=function(t,e){return t?r(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Ft.test(e)?\"format\":\"standalone\"][t.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ci.monthsParse=function(t,e,i){var n,a,r;if(this._monthsParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)r=f([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(r,\"\").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(r,\"\").toLocaleLowerCase();return i?\"MMM\"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:\"MMM\"===e?-1!==(a=Ct.call(this._shortMonthsParse,o))?a:-1!==(a=Ct.call(this._longMonthsParse,o))?a:null:-1!==(a=Ct.call(this._longMonthsParse,o))?a:-1!==(a=Ct.call(this._shortMonthsParse,o))?a:null}.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(a=f([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp(\"^\"+this.months(a,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[n]=new RegExp(\"^\"+this.monthsShort(a,\"\").replace(\".\",\"\")+\"$\",\"i\")),i||this._monthsParse[n]||(r=\"^\"+this.months(a,\"\")+\"|^\"+this.monthsShort(a,\"\"),this._monthsParse[n]=new RegExp(r.replace(\".\",\"\"),\"i\")),i&&\"MMMM\"===e&&this._longMonthsParse[n].test(t))return n;if(i&&\"MMM\"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}},ci.monthsRegex=function(t){return this._monthsParseExact?(h(this,\"_monthsRegex\")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,\"_monthsRegex\")||(this._monthsRegex=zt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},ci.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,\"_monthsRegex\")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,\"_monthsShortRegex\")||(this._monthsShortRegex=Nt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},ci.week=function(t){return jt(t,this._week.dow,this._week.doy).week},ci.firstDayOfYear=function(){return this._week.doy},ci.firstDayOfWeek=function(){return this._week.dow},ci.weekdays=function(t,e){return t?r(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?\"format\":\"standalone\"][t.day()]:r(this._weekdays)?this._weekdays:this._weekdays.standalone},ci.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},ci.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},ci.weekdaysParse=function(t,e,i){var n,a,r;if(this._weekdaysParseExact)return function(t,e,i){var n,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=f([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,\"\").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,\"\").toLocaleLowerCase();return i?\"dddd\"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:null:\"ddd\"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:\"dddd\"===e?-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:\"ddd\"===e?-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Ct.call(this._minWeekdaysParse,o))?a:-1!==(a=Ct.call(this._weekdaysParse,o))?a:-1!==(a=Ct.call(this._shortWeekdaysParse,o))?a:null}.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(a=f([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp(\"^\"+this.weekdays(a,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysShort(a,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[n]=new RegExp(\"^\"+this.weekdaysMin(a,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[n]||(r=\"^\"+this.weekdays(a,\"\")+\"|^\"+this.weekdaysShort(a,\"\")+\"|^\"+this.weekdaysMin(a,\"\"),this._weekdaysParse[n]=new RegExp(r.replace(\".\",\"\"),\"i\")),i&&\"dddd\"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&\"ddd\"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&\"dd\"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}},ci.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,\"_weekdaysRegex\")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},ci.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=Jt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ci.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,\"_weekdaysRegex\")||$t.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Kt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ci.isPM=function(t){return\"p\"===(t+\"\").toLowerCase().charAt(0)},ci.meridiem=function(t,e,i){return t>11?i?\"pm\":\"PM\":i?\"am\":\"AM\"},ue(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===w(t%100/10)?\"th\":1===e?\"st\":2===e?\"nd\":3===e?\"rd\":\"th\")}}),a.lang=D(\"moment.lang is deprecated. Use moment.locale instead.\",ue),a.langData=D(\"moment.langData is deprecated. Use moment.localeData instead.\",he);var pi=Math.abs;function vi(t,e,i,n){var a=Ue(e,i);return t._milliseconds+=n*a._milliseconds,t._days+=n*a._days,t._months+=n*a._months,t._bubble()}function yi(t){return t<0?Math.floor(t):Math.ceil(t)}function bi(t){return 4800*t/146097}function xi(t){return 146097*t/4800}function _i(t){return function(){return this.as(t)}}var ki=_i(\"ms\"),wi=_i(\"s\"),Mi=_i(\"m\"),Si=_i(\"h\"),Di=_i(\"d\"),Ci=_i(\"w\"),Pi=_i(\"M\"),Ti=_i(\"y\");function Oi(t){return function(){return this.isValid()?this._data[t]:NaN}}var Ii=Oi(\"milliseconds\"),Ai=Oi(\"seconds\"),Fi=Oi(\"minutes\"),Ri=Oi(\"hours\"),Li=Oi(\"days\"),Wi=Oi(\"months\"),Yi=Oi(\"years\");var Ni=Math.round,zi={ss:44,s:45,m:45,h:22,d:26,M:11};var Hi=Math.abs;function Vi(t){return(t>0)-(t<0)||+t}function Bi(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i=Hi(this._milliseconds)/1e3,n=Hi(this._days),a=Hi(this._months);e=k((t=k(i/60))/60),i%=60,t%=60;var r=k(a/12),o=a%=12,s=n,l=e,u=t,d=i?i.toFixed(3).replace(/\\.?0+$/,\"\"):\"\",h=this.asSeconds();if(!h)return\"P0D\";var c=h<0?\"-\":\"\",f=Vi(this._months)!==Vi(h)?\"-\":\"\",g=Vi(this._days)!==Vi(h)?\"-\":\"\",m=Vi(this._milliseconds)!==Vi(h)?\"-\":\"\";return c+\"P\"+(r?f+r+\"Y\":\"\")+(o?f+o+\"M\":\"\")+(s?g+s+\"D\":\"\")+(l||u||d?\"T\":\"\")+(l?m+l+\"H\":\"\")+(u?m+u+\"M\":\"\")+(d?m+d+\"S\":\"\")}var Ei=Re.prototype;return Ei.isValid=function(){return this._isValid},Ei.abs=function(){var t=this._data;return this._milliseconds=pi(this._milliseconds),this._days=pi(this._days),this._months=pi(this._months),t.milliseconds=pi(t.milliseconds),t.seconds=pi(t.seconds),t.minutes=pi(t.minutes),t.hours=pi(t.hours),t.months=pi(t.months),t.years=pi(t.years),this},Ei.add=function(t,e){return vi(this,t,e,1)},Ei.subtract=function(t,e){return vi(this,t,e,-1)},Ei.as=function(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if(\"month\"===(t=L(t))||\"year\"===t)return e=this._days+n/864e5,i=this._months+bi(e),\"month\"===t?i:i/12;switch(e=this._days+Math.round(xi(this._months)),t){case\"week\":return e/7+n/6048e5;case\"day\":return e+n/864e5;case\"hour\":return 24*e+n/36e5;case\"minute\":return 1440*e+n/6e4;case\"second\":return 86400*e+n/1e3;case\"millisecond\":return Math.floor(864e5*e)+n;default:throw new Error(\"Unknown unit \"+t)}},Ei.asMilliseconds=ki,Ei.asSeconds=wi,Ei.asMinutes=Mi,Ei.asHours=Si,Ei.asDays=Di,Ei.asWeeks=Ci,Ei.asMonths=Pi,Ei.asYears=Ti,Ei.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Ei._bubble=function(){var t,e,i,n,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*yi(xi(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=k(r/1e3),l.seconds=t%60,e=k(t/60),l.minutes=e%60,i=k(e/60),l.hours=i%24,s+=a=k(bi(o+=k(i/24))),o-=yi(xi(a)),n=k(s/12),s%=12,l.days=o,l.months=s,l.years=n,this},Ei.clone=function(){return Ue(this)},Ei.get=function(t){return t=L(t),this.isValid()?this[t+\"s\"]():NaN},Ei.milliseconds=Ii,Ei.seconds=Ai,Ei.minutes=Fi,Ei.hours=Ri,Ei.days=Li,Ei.weeks=function(){return k(this.days()/7)},Ei.months=Wi,Ei.years=Yi,Ei.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,i,n,a,r,o,s,l,u,d,h,c=this.localeData(),f=(i=!t,n=c,a=Ue(e=this).abs(),r=Ni(a.as(\"s\")),o=Ni(a.as(\"m\")),s=Ni(a.as(\"h\")),l=Ni(a.as(\"d\")),u=Ni(a.as(\"M\")),d=Ni(a.as(\"y\")),(h=r<=zi.ss&&[\"s\",r]||r<zi.s&&[\"ss\",r]||o<=1&&[\"m\"]||o<zi.m&&[\"mm\",o]||s<=1&&[\"h\"]||s<zi.h&&[\"hh\",s]||l<=1&&[\"d\"]||l<zi.d&&[\"dd\",l]||u<=1&&[\"M\"]||u<zi.M&&[\"MM\",u]||d<=1&&[\"y\"]||[\"yy\",d])[2]=i,h[3]=+e>0,h[4]=n,function(t,e,i,n,a){return a.relativeTime(e||1,!!i,t,n)}.apply(null,h));return t&&(f=c.pastFuture(+this,f)),c.postformat(f)},Ei.toISOString=Bi,Ei.toString=Bi,Ei.toJSON=Bi,Ei.locale=Qe,Ei.localeData=ei,Ei.toIsoString=D(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",Bi),Ei.lang=ti,j(\"X\",0,0,\"unix\"),j(\"x\",0,0,\"valueOf\"),dt(\"x\",rt),dt(\"X\",/[+-]?\\d+(\\.\\d{1,3})?/),gt(\"X\",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),gt(\"x\",function(t,e,i){i._d=new Date(w(t))}),a.version=\"2.20.1\",i=Te,a.fn=di,a.min=function(){return Ae(\"isBefore\",[].slice.call(arguments,0))},a.max=function(){return Ae(\"isAfter\",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=f,a.unix=function(t){return Te(1e3*t)},a.months=function(t,e){return gi(t,e,\"months\")},a.isDate=u,a.locale=ue,a.invalid=p,a.duration=Ue,a.isMoment=_,a.weekdays=function(t,e,i){return mi(t,e,i,\"weekdays\")},a.parseZone=function(){return Te.apply(null,arguments).parseZone()},a.localeData=he,a.isDuration=Le,a.monthsShort=function(t,e){return gi(t,e,\"monthsShort\")},a.weekdaysMin=function(t,e,i){return mi(t,e,i,\"weekdaysMin\")},a.defineLocale=de,a.updateLocale=function(t,e){if(null!=e){var i,n,a=ae;null!=(n=le(t))&&(a=n._config),(i=new A(e=I(a,e))).parentLocale=re[t],re[t]=i,ue(t)}else null!=re[t]&&(null!=re[t].parentLocale?re[t]=re[t].parentLocale:null!=re[t]&&delete re[t]);return re[t]},a.locales=function(){return C(re)},a.weekdaysShort=function(t,e,i){return mi(t,e,i,\"weekdaysShort\")},a.normalizeUnits=L,a.relativeTimeRounding=function(t){return void 0===t?Ni:\"function\"==typeof t&&(Ni=t,!0)},a.relativeTimeThreshold=function(t,e){return void 0!==zi[t]&&(void 0===e?zi[t]:(zi[t]=e,\"s\"===t&&(zi.ss=e-1),!0))},a.calendarFormat=function(t,e){var i=t.diff(e,\"days\",!0);return i<-6?\"sameElse\":i<-1?\"lastWeek\":i<0?\"lastDay\":i<1?\"sameDay\":i<2?\"nextDay\":i<7?\"nextWeek\":\"sameElse\"},a.prototype=di,a.HTML5_FMT={DATETIME_LOCAL:\"YYYY-MM-DDTHH:mm\",DATETIME_LOCAL_SECONDS:\"YYYY-MM-DDTHH:mm:ss\",DATETIME_LOCAL_MS:\"YYYY-MM-DDTHH:mm:ss.SSS\",DATE:\"YYYY-MM-DD\",TIME:\"HH:mm\",TIME_SECONDS:\"HH:mm:ss\",TIME_MS:\"HH:mm:ss.SSS\",WEEK:\"YYYY-[W]WW\",MONTH:\"YYYY-MM\"},a},\"object\"==typeof i&&void 0!==e?e.exports=a():n.moment=a()},{}],7:[function(t,e,i){var n=t(29)();n.helpers=t(45),t(27)(n),n.defaults=t(25),n.Element=t(26),n.elements=t(40),n.Interaction=t(28),n.layouts=t(30),n.platform=t(48),n.plugins=t(31),n.Ticks=t(34),t(22)(n),t(23)(n),t(24)(n),t(33)(n),t(32)(n),t(35)(n),t(55)(n),t(53)(n),t(54)(n),t(56)(n),t(57)(n),t(58)(n),t(15)(n),t(16)(n),t(17)(n),t(18)(n),t(19)(n),t(20)(n),t(21)(n),t(8)(n),t(9)(n),t(10)(n),t(11)(n),t(12)(n),t(13)(n),t(14)(n);var a=t(49);for(var r in a)a.hasOwnProperty(r)&&n.plugins.register(a[r]);n.platform.initialize(),e.exports=n,\"undefined\"!=typeof window&&(window.Chart=n),n.Legend=a.legend._element,n.Title=a.title._element,n.pluginService=n.plugins,n.PluginBase=n.Element.extend({}),n.canvasHelpers=n.helpers.canvas,n.layoutService=n.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,40:40,45:45,48:48,49:49,53:53,54:54,55:55,56:56,57:57,58:58,8:8,9:9}],8:[function(t,e,i){\"use strict\";e.exports=function(t){t.Bar=function(e,i){return i.type=\"bar\",new t(e,i)}}},{}],9:[function(t,e,i){\"use strict\";e.exports=function(t){t.Bubble=function(e,i){return i.type=\"bubble\",new t(e,i)}}},{}],10:[function(t,e,i){\"use strict\";e.exports=function(t){t.Doughnut=function(e,i){return i.type=\"doughnut\",new t(e,i)}}},{}],11:[function(t,e,i){\"use strict\";e.exports=function(t){t.Line=function(e,i){return i.type=\"line\",new t(e,i)}}},{}],12:[function(t,e,i){\"use strict\";e.exports=function(t){t.PolarArea=function(e,i){return i.type=\"polarArea\",new t(e,i)}}},{}],13:[function(t,e,i){\"use strict\";e.exports=function(t){t.Radar=function(e,i){return i.type=\"radar\",new t(e,i)}}},{}],14:[function(t,e,i){\"use strict\";e.exports=function(t){t.Scatter=function(e,i){return i.type=\"scatter\",new t(e,i)}}},{}],15:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"bar\",{hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:\"linear\"}]}}),n._set(\"horizontalBar\",{hover:{mode:\"index\",axis:\"y\"},scales:{xAxes:[{type:\"linear\",position:\"bottom\"}],yAxes:[{position:\"left\",type:\"category\",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:\"left\"}},tooltips:{callbacks:{title:function(t,e){var i=\"\";return t.length>0&&(t[0].yLabel?i=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},label:function(t,e){return(e.datasets[t.datasetIndex].label||\"\")+\": \"+t.xLabel}},mode:\"index\",axis:\"y\"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e;t.DatasetController.prototype.initialize.apply(this,arguments),(e=this.getMeta()).stack=this.getDataset().stack,e.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getMeta(),s=n.getDataset(),l=t.custom||{},u=a.options.elements.rectangle;t._xScale=n.getScaleForId(o.xAxisID),t._yScale=n.getScaleForId(o.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={datasetLabel:s.label,label:a.data.labels[e],borderSkipped:l.borderSkipped?l.borderSkipped:u.borderSkipped,backgroundColor:l.backgroundColor?l.backgroundColor:r.valueAtIndexOrDefault(s.backgroundColor,e,u.backgroundColor),borderColor:l.borderColor?l.borderColor:r.valueAtIndexOrDefault(s.borderColor,e,u.borderColor),borderWidth:l.borderWidth?l.borderWidth:r.valueAtIndexOrDefault(s.borderWidth,e,u.borderWidth)},n.updateElementGeometry(t,e,i),t.pivot()},updateElementGeometry:function(t,e,i){var n=this,a=t._model,r=n.getValueScale(),o=r.getBasePixel(),s=r.isHorizontal(),l=n._ruler||n.getRuler(),u=n.calculateBarValuePixels(n.index,e),d=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?o:u.base,a.x=s?i?o:u.head:d.center,a.y=s?d.center:i?o:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},_getStacks:function(t){var e,i,n=this.chart,a=this.getIndexScale().options.stacked,r=void 0===t?n.data.datasets.length:t+1,o=[];for(e=0;e<r;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===o.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===o.indexOf(i.stack)))&&o.push(i.stack);return o},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this.getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),s=o?i.left:i.top,l=s+(o?i.width:i.height),u=[];for(t=0,e=this.getMeta().data.length;t<e;++t)u.push(i.getPixelForValue(null,t,a));return{min:r.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,r,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,r=e.length;a<r;++a)o=Math.min(o,e[a]-e[a-1]);for(a=0,r=s.length;a<r;++a)n=t.getPixelForTick(a),o=a>0?Math.min(o,n-i):o,i=n;return o}(i,u):-1,pixels:u,start:s,end:l,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,r,o,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),h=l.data.datasets,c=d.getRightValue(h[t].data[e]),f=d.options.stacked,g=u.stack,m=0;if(f||void 0===f&&void 0!==g)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===g&&n.controller.getValueScaleId()===d.id&&l.isDatasetVisible(i)&&(a=d.getRightValue(h[i].data[e]),(c<0&&a<0||c>=0&&a>0)&&(m+=a));return r=d.getPixelForValue(m),{size:s=((o=d.getPixelForValue(m+c))-r)/2,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,i){var n,a,o,s,l,u,d,h,c,f,g,m,p,v,y,b,x,_=i.scale.options,k=\"flex\"===_.barThickness?(c=e,g=_,p=(f=i).pixels,v=p[c],y=c>0?p[c-1]:null,b=c<p.length-1?p[c+1]:null,x=g.categoryPercentage,null===y&&(y=v-(null===b?f.end-v:b-v)),null===b&&(b=v+v-y),m=v-(v-y)/2*x,{chunk:(b-y)/2*x/f.stackCount,ratio:g.barPercentage,start:m}):(n=e,a=i,u=(o=_).barThickness,d=a.stackCount,h=a.pixels[n],r.isNullOrUndef(u)?(s=a.min*o.categoryPercentage,l=o.barPercentage):(s=u*d,l=1),{chunk:s/d,ratio:l,start:h-s/2}),w=this.getStackIndex(t,this.getMeta().stack),M=k.start+k.chunk*w+k.chunk/2,S=Math.min(r.valueOrDefault(_.maxBarThickness,1/0),k.chunk*k.ratio);return{base:M-S/2,head:M+S/2,center:M,size:S}},draw:function(){var t=this.chart,e=this.getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(r.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();r.canvas.unclipArea(t.ctx)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model;a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:r.valueAtIndexOrDefault(e.hoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:r.valueAtIndexOrDefault(e.hoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:r.valueAtIndexOrDefault(e.hoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model,o=this.chart.options.elements.rectangle;a.backgroundColor=n.backgroundColor?n.backgroundColor:r.valueAtIndexOrDefault(e.backgroundColor,i,o.backgroundColor),a.borderColor=n.borderColor?n.borderColor:r.valueAtIndexOrDefault(e.borderColor,i,o.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:r.valueAtIndexOrDefault(e.borderWidth,i,o.borderWidth)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{25:25,40:40,45:45}],16:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"bubble\",{hover:{mode:\"single\"},scales:{xAxes:[{type:\"linear\",position:\"bottom\",id:\"x-axis-0\"}],yAxes:[{type:\"linear\",position:\"left\",id:\"y-axis-0\"}]},tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){var i=e.datasets[t.datasetIndex].label||\"\",n=e.datasets[t.datasetIndex].data[t.index];return i+\": (\"+t.xLabel+\", \"+t.yLabel+\", \"+n.r+\")\"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,i=e.getMeta().data;r.each(i,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),r=t.custom||{},o=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),u=n.getDataset().data[e],d=n.index,h=i?o.getPixelForDecimal(.5):o.getPixelForValue(\"object\"==typeof u?u:NaN,e,d),c=i?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,radius:i?0:l.radius,skip:r.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options;e.backgroundColor=r.valueOrDefault(i.hoverBackgroundColor,r.getHoverColor(i.backgroundColor)),e.borderColor=r.valueOrDefault(i.hoverBorderColor,r.getHoverColor(i.borderColor)),e.borderWidth=r.valueOrDefault(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},removeHoverStyle:function(t){var e=t._model,i=t._options;e.backgroundColor=i.backgroundColor,e.borderColor=i.borderColor,e.borderWidth=i.borderWidth,e.radius=i.radius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,s=o.data.datasets[this.index],l=t.custom||{},u=o.options.elements.point,d=r.options.resolve,h=s.data[e],c={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},g=[\"backgroundColor\",\"borderColor\",\"borderWidth\",\"hoverBackgroundColor\",\"hoverBorderColor\",\"hoverBorderWidth\",\"hoverRadius\",\"hitRadius\",\"pointStyle\"];for(i=0,n=g.length;i<n;++i)c[a=g[i]]=d([l[a],s[a],u[a]],f,e);return c.radius=d([l.radius,h?h.r:void 0,s.radius,u.radius],f,e),c}})}},{25:25,40:40,45:45}],17:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"doughnut\",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:\"single\"},legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r<n[0].data.length;++r)e.push('<li><span style=\"background-color:'+n[0].backgroundColor[r]+'\"></span>'),a[r]&&e.push(a[r]),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[n],l=s&&s.custom||{},u=r.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:i,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,n,d.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,n,d.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,n,d.borderWidth),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i<n;++i)(a=o.getDatasetMeta(i)).data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){var i=e.labels[t.index],n=\": \"+e.datasets[t.datasetIndex].data[t.index];return r.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}}),n._set(\"pie\",r.clone(n.doughnut)),n._set(\"pie\",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var e=this,i=e.chart,n=i.chartArea,a=i.options,o=a.elements.arc,s=n.right-n.left-o.borderWidth,l=n.bottom-n.top-o.borderWidth,u=Math.min(s,l),d={x:0,y:0},h=e.getMeta(),c=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),m=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,p=Math.cos(g),v=Math.sin(g),y=Math.cos(m),b=Math.sin(m),x=g<=0&&m>=0||g<=2*Math.PI&&2*Math.PI<=m,_=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,k=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,w=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,M=c/100,S=k?-1:Math.min(p*(p<0?1:M),y*(y<0?1:M)),D=w?-1:Math.min(v*(v<0?1:M),b*(b<0?1:M)),C=x?1:Math.max(p*(p>0?1:M),y*(y>0?1:M)),P=_?1:Math.max(v*(v>0?1:M),b*(b>0?1:M)),T=.5*(C-S),O=.5*(P-D);u=Math.min(s/T,l/O),d={x:-.5*(C+S),y:-.5*(P+D)}}i.borderWidth=e.getMaxBorderWidth(h.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(c?i.outerRadius/100*c:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,h.total=e.calculateTotal(),e.outerRadius=i.outerRadius-i.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-i.radiusLength,0),r.each(h.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,s=a.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,h=s.rotation,c=s.rotation,f=n.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI)),m=i&&l.animateScale?0:n.innerRadius,p=i&&l.animateScale?0:n.outerRadius,v=r.valueAtIndexOrDefault;r.extend(t,{_datasetIndex:n.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:h,endAngle:c,circumference:g,outerRadius:p,innerRadius:m,label:v(f.label,e,a.data.labels[e])}});var y=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(y.startAngle=0===e?s.rotation:n.getMeta().data[e-1]._model.endAngle,y.endAngle=y.startAngle+y.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return r.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,i,n=0,a=this.index,r=t.length,o=0;o<r;o++)e=t[o]._model?t[o]._model.borderWidth:0,n=(i=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0)>(n=e>n?e:n)?i:n;return n}})}},{25:25,40:40,45:45}],18:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"line\",{showLines:!0,spanGaps:!1,hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",id:\"x-axis-0\"}],yAxes:[{type:\"linear\",id:\"y-axis-0\"}]}}),e.exports=function(t){function e(t,e){return r.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var i,n,a,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,h=d.elements.line,c=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(a=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=c,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:r.valueOrDefault(f.lineTension,h.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||h.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||h.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||h.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||h.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||h.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||h.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||h.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:h.fill,steppedLine:a.steppedLine?a.steppedLine:r.valueOrDefault(f.steppedLine,h.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:r.valueOrDefault(f.cubicInterpolationMode,h.cubicInterpolationMode)},l.pivot()),i=0,n=u.length;i<n;++i)o.updateElement(u[i],i,t);for(g&&0!==l._model.tension&&o.updateBezierControlPoints(),i=0,n=u.length;i<n;++i)u[i].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,n=this.getDataset(),a=t.custom||{};return a.backgroundColor?i=a.backgroundColor:n.pointBackgroundColor?i=r.valueAtIndexOrDefault(n.pointBackgroundColor,e,i):n.backgroundColor&&(i=n.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,n=this.getDataset(),a=t.custom||{};return a.borderColor?i=a.borderColor:n.pointBorderColor?i=r.valueAtIndexOrDefault(n.pointBorderColor,e,i):n.borderColor&&(i=n.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,n=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(n.pointBorderWidth)||r.isArray(n.pointBorderWidth)?i=r.valueAtIndexOrDefault(n.pointBorderWidth,e,i):isNaN(n.borderWidth)||(i=n.borderWidth):i=a.borderWidth,i},updateElement:function(t,e,i){var n,a,o=this,s=o.getMeta(),l=t.custom||{},u=o.getDataset(),d=o.index,h=u.data[e],c=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),g=o.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),n=f.getPixelForValue(\"object\"==typeof h?h:NaN,e,d),a=i?c.getBasePixel():o.calculatePointY(h,e,d),t._xScale=f,t._yScale=c,t._datasetIndex=d,t._index=e,t._model={x:n,y:a,skip:l.skip||isNaN(n)||isNaN(a),radius:l.radius||r.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:l.pointStyle||r.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:l.hitRadius||r.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,i){var n,a,r,o=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=o.data.datasets[n],\"line\"===(r=o.getDatasetMeta(n)).type&&r.yAxisID===l.id&&o.isDatasetVisible(n)){var h=Number(l.getRightValue(a.data[e]));h<0?d+=h||0:u+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(d+c):l.getPixelForValue(u+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,s=a.data||[];function l(t,e,i){return Math.max(Math.min(t,i),e)}if(a.dataset._model.spanGaps&&(s=s.filter(function(t){return!t._model.skip})),\"monotone\"===a.dataset._model.cubicInterpolationMode)r.splineCurveMonotone(s);else for(t=0,e=s.length;t<e;++t)i=s[t]._model,n=r.splineCurve(r.previousItem(s,t)._model,i,r.nextItem(s,t)._model,a.dataset._model.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=s.length;t<e;++t)(i=s[t]._model).controlPointPreviousX=l(i.controlPointPreviousX,o.left,o.right),i.controlPointPreviousY=l(i.controlPointPreviousY,o.top,o.bottom),i.controlPointNextX=l(i.controlPointNextX,o.left,o.right),i.controlPointNextY=l(i.controlPointNextY,o.top,o.bottom)},draw:function(){var t=this.chart,i=this.getMeta(),n=i.data||[],a=t.chartArea,o=n.length,s=0;for(r.canvas.clipArea(t.ctx,a),e(this.getDataset(),t.options)&&i.dataset.draw(),r.canvas.unclipArea(t.ctx);s<o;++s)n[s].draw(a)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model;a.radius=n.hoverRadius||r.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor||r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,r.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor||r.valueAtIndexOrDefault(e.pointHoverBorderColor,i,r.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth||r.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this,i=e.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=t._model;void 0!==i.radius&&void 0===i.pointRadius&&(i.pointRadius=i.radius),o.radius=a.radius||r.valueAtIndexOrDefault(i.pointRadius,n,e.chart.options.elements.point.radius),o.backgroundColor=e.getPointBackgroundColor(t,n),o.borderColor=e.getPointBorderColor(t,n),o.borderWidth=e.getPointBorderWidth(t,n)}})}},{25:25,40:40,45:45}],19:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"polarArea\",{scale:{type:\"radialLinear\",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var r=0;r<n[0].data.length;++r)e.push('<li><span style=\"background-color:'+n[0].backgroundColor[r]+'\"></span>'),a[r]&&e.push(a[r]),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],s=a.data[n].custom||{},l=r.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:i,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,n,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,n,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,n,u.borderWidth),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,r=e.index,o=this.chart;for(i=0,n=(o.data.datasets||[]).length;i<n;++i)(a=o.getDatasetMeta(i)).data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return\"\"},label:function(t,e){return e.labels[t.index]+\": \"+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:r.noop,update:function(t){var e=this,i=e.chart,n=i.chartArea,a=e.getMeta(),o=i.options,s=o.elements.arc,l=Math.min(n.right-n.left,n.bottom-n.top);i.outerRadius=Math.max((l-s.borderWidth/2)/2,0),i.innerRadius=Math.max(o.cutoutPercentage?i.outerRadius/100*o.cutoutPercentage:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),e.outerRadius=i.outerRadius-i.radiusLength*e.index,e.innerRadius=e.outerRadius-i.radiusLength,a.count=e.countVisibleElements(),r.each(a.data,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){for(var n=this,a=n.chart,o=n.getDataset(),s=a.options,l=s.animation,u=a.scale,d=a.data.labels,h=n.calculateCircumference(o.data[e]),c=u.xCenter,f=u.yCenter,g=0,m=n.getMeta(),p=0;p<e;++p)isNaN(o.data[p])||m.data[p].hidden||++g;var v=s.startAngle,y=t.hidden?0:u.getDistanceFromCenterForValue(o.data[e]),b=v+h*g,x=b+(t.hidden?0:h),_=l.animateScale?0:u.getDistanceFromCenterForValue(o.data[e]);r.extend(t,{_datasetIndex:n.index,_index:e,_scale:u,_model:{x:c,y:f,innerRadius:0,outerRadius:i?_:y,startAngle:i&&l.animateRotate?v:b,endAngle:i&&l.animateRotate?v:x,label:r.valueAtIndexOrDefault(d,e,d[e])}}),n.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),i=0;return r.each(e.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"radar\",{scale:{type:\"radialLinear\"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:r.noop,update:function(t){var e=this,i=e.getMeta(),n=i.dataset,a=i.data,o=n.custom||{},s=e.getDataset(),l=e.chart.options.elements.line,u=e.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),r.extend(i.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:o.tension?o.tension:r.valueOrDefault(s.lineTension,l.tension),backgroundColor:o.backgroundColor?o.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:s.borderWidth||l.borderWidth,borderColor:o.borderColor?o.borderColor:s.borderColor||l.borderColor,fill:o.fill?o.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:o.borderCapStyle?o.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:o.borderDash?o.borderDash:s.borderDash||l.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle}}),i.dataset.pivot(),r.each(a,function(i,n){e.updateElement(i,n,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),s=n.chart.scale,l=n.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),r.extend(t,{_datasetIndex:n.index,_index:e,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:a.tension?a.tension:r.valueOrDefault(o.lineTension,n.chart.options.elements.line.tension),radius:a.radius?a.radius:r.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:a.backgroundColor?a.backgroundColor:r.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:a.borderColor?a.borderColor:r.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:a.borderWidth?a.borderWidth:r.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:a.pointStyle?a.pointStyle:r.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),hitRadius:a.hitRadius?a.hitRadius:r.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();r.each(e.data,function(i,n){var a=i._model,o=r.splineCurve(r.previousItem(e.data,n,!0)._model,a,r.nextItem(e.data,n,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),i.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model;a.radius=i.hoverRadius?i.hoverRadius:r.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:r.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,r.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:r.valueAtIndexOrDefault(e.pointHoverBorderColor,n,r.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:r.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model,o=this.chart.options.elements.point;a.radius=i.radius?i.radius:r.valueAtIndexOrDefault(e.pointRadius,n,o.radius),a.backgroundColor=i.backgroundColor?i.backgroundColor:r.valueAtIndexOrDefault(e.pointBackgroundColor,n,o.backgroundColor),a.borderColor=i.borderColor?i.borderColor:r.valueAtIndexOrDefault(e.pointBorderColor,n,o.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:r.valueAtIndexOrDefault(e.pointBorderWidth,n,o.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,i){\"use strict\";t(25)._set(\"scatter\",{hover:{mode:\"single\"},scales:{xAxes:[{id:\"x-axis-1\",type:\"linear\",position:\"bottom\"}],yAxes:[{id:\"y-axis-1\",type:\"linear\",position:\"left\"}]},showLines:!1,tooltips:{callbacks:{title:function(){return\"\"},label:function(t){return\"(\"+t.xLabel+\", \"+t.yLabel+\")\"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{animation:{duration:1e3,easing:\"easeOutQuart\",onProgress:r.noop,onComplete:r.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:\"\",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,n){var a,r,o=this.animations;for(e.chart=t,n||(t.animating=!0),a=0,r=o.length;a<r;++a)if(o[a].chart===t)return void(o[a]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=r.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=r.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),i=0;t.dropFrames>1&&(i=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+i);var n=Date.now();t.dropFrames+=(n-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,i,n=this.animations,a=0;a<n.length;)i=(e=n[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),r.callback(e.render,[i,e],i),r.callback(e.onAnimationProgress,[e],i),e.currentStep>=e.numSteps?(r.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,\"animationObject\",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,\"chartInstance\",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(28),o=t(30),s=t(48),l=t(31);e.exports=function(t){function e(t){return\"top\"===t||\"bottom\"===t}t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(e,i){var r,o,l=this;(o=(r=(r=i)||{}).data=r.data||{}).datasets=o.datasets||[],o.labels=o.labels||[],r.options=a.configMerge(n.global,n[r.type],r.options||{}),i=r;var u=s.acquireContext(e,i),d=u&&u.canvas,h=d&&d.height,c=d&&d.width;l.id=a.uid(),l.ctx=u,l.canvas=d,l.config=i,l.width=c,l.height=h,l.aspectRatio=h?c/h:null,l.options=i.options,l._bufferedRender=!1,l.chart=l,l.controller=l,t.instances[l.id]=l,Object.defineProperty(l,\"data\",{get:function(){return l.config.data},set:function(t){l.config.data=t}}),u&&d?(l.initialize(),l.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")},initialize:function(){var t=this;return l.notify(t,\"beforeInit\"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,\"afterInit\"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,r=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(a.getMaximumWidth(n))),s=Math.max(0,Math.floor(r?o/r:a.getMaximumHeight(n)));if((e.width!==o||e.height!==s)&&(n.width=e.width=o,n.height=e.height=s,n.style.width=o+\"px\",n.style.height=s+\"px\",a.retinaScale(e,i.devicePixelRatio),!t)){var u={width:o,height:s};l.notify(e,\"resize\",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||\"x-axis-\"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||\"y-axis-\"+e}),i&&(i.id=i.id||\"scale\")},buildOrUpdateScales:function(){var i=this,n=i.options,r=i.scales||{},o=[],s=Object.keys(r).reduce(function(t,e){return t[e]=!1,t},{});n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:\"category\",dposition:\"bottom\"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:\"linear\",dposition:\"left\"}}))),n.scale&&o.push({options:n.scale,dtype:\"radialLinear\",isDefault:!0,dposition:\"chartArea\"}),a.each(o,function(n){var o=n.options,l=o.id,u=a.valueOrDefault(o.type,n.dtype);e(o.position)!==e(n.dposition)&&(o.position=n.dposition),s[l]=!0;var d=null;if(l in r&&r[l].type===u)(d=r[l]).options=o,d.ctx=i.ctx,d.chart=i;else{var h=t.scaleService.getScaleConstructor(u);if(!h)return;d=new h({id:l,type:u,options:o,ctx:i.ctx,chart:i}),r[d.id]=d}d.mergeTicksOptions(),n.isDefault&&(i.scale=d)}),a.each(s,function(t,e){t||delete r[e]}),i.scales=r,t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,i=[],n=[];return a.each(e.data.datasets,function(a,r){var o=e.getDatasetMeta(r),s=a.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(r),o=e.getDatasetMeta(r)),o.type=s,i.push(o.type),o.controller)o.controller.updateIndex(r),o.controller.linkScales();else{var l=t.controllers[o.type];if(void 0===l)throw new Error('\"'+o.type+'\" is not a chart type.');o.controller=new l(e,r),n.push(o.controller)}},e),n},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(e){var i,n,r=this;if(e&&\"object\"==typeof e||(e={duration:e,lazy:arguments[1]}),n=(i=r).options,a.each(i.scales,function(t){o.removeBox(i,t)}),n=a.configMerge(t.defaults.global,t.defaults[i.config.type],n),i.options=i.config.options=n,i.ensureScalesHaveIDs(),i.buildOrUpdateScales(),i.tooltip._options=n.tooltips,i.tooltip.initialize(),l._invalidate(r),!1!==l.notify(r,\"beforeUpdate\")){r.tooltip._data=r.data;var s=r.buildOrUpdateControllers();a.each(r.data.datasets,function(t,e){r.getDatasetMeta(e).controller.buildOrUpdateElements()},r),r.updateLayout(),r.options.animation&&r.options.animation.duration&&a.each(s,function(t){t.reset()}),r.updateDatasets(),r.tooltip.initialize(),r.lastActive=[],l.notify(r,\"afterUpdate\"),r._bufferedRender?r._bufferedRequest={duration:e.duration,easing:e.easing,lazy:e.lazy}:r.render(e)}},updateLayout:function(){!1!==l.notify(this,\"beforeLayout\")&&(o.update(this,this.width,this.height),l.notify(this,\"afterScaleUpdate\"),l.notify(this,\"afterLayout\"))},updateDatasets:function(){if(!1!==l.notify(this,\"beforeDatasetsUpdate\")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);l.notify(this,\"afterDatasetsUpdate\")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==l.notify(this,\"beforeDatasetUpdate\",[i])&&(e.controller.update(),l.notify(this,\"afterDatasetUpdate\",[i]))},render:function(e){var i=this;e&&\"object\"==typeof e||(e={duration:e,lazy:arguments[1]});var n=e.duration,r=e.lazy;if(!1!==l.notify(i,\"beforeRender\")){var o=i.options.animation,s=function(t){l.notify(i,\"afterRender\"),a.callback(o&&o.onComplete,[t],i)};if(o&&(void 0!==n&&0!==n||void 0===n&&0!==o.duration)){var u=new t.Animation({numSteps:(n||o.duration)/16.66,easing:e.easing||o.easing,render:function(t,e){var i=a.easing.effects[e.easing],n=e.currentStep,r=n/e.numSteps;t.draw(i(r),r,n)},onAnimationProgress:o.onProgress,onAnimationComplete:s});t.animationService.addAnimation(i,u,n,r)}else i.draw(),s(new t.Animation({numSteps:0,chart:i}));return i}},draw:function(t){var e=this;e.clear(),a.isNullOrUndef(t)&&(t=1),e.transition(t),!1!==l.notify(e,\"beforeDraw\",[t])&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),l.notify(e,\"afterDraw\",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==l.notify(e,\"beforeDatasetsDraw\",[t])){for(var i=(e.data.datasets||[]).length-1;i>=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);l.notify(e,\"afterDatasetsDraw\",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==l.notify(this,\"beforeDatasetDraw\",[n])&&(i.controller.draw(e),l.notify(this,\"afterDatasetDraw\",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==l.notify(this,\"beforeTooltipDraw\",[i])&&(e.draw(),l.notify(this,\"afterTooltipDraw\",[i]))},getElementAtEvent:function(t){return r.modes.single(this,t)},getElementsAtEvent:function(t){return r.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return r.modes[\"x-axis\"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=r.modes[e];return\"function\"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return r.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return\"boolean\"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var e,i,n=this,r=n.canvas;for(n.stop(),e=0,i=n.data.datasets.length;e<i;++e)n.destroyDatasetMeta(e);r&&(n.unbindEvents(),a.canvas.clear(n),s.releaseContext(n.ctx),n.canvas=null,n.ctx=null),l.notify(n,\"destroy\"),delete t.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this,e=t._listeners={},i=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(n){s.addEventListener(t,n,i),e[n]=i}),t.options.responsive&&(i=function(){t.resize()},s.addEventListener(t,\"resize\",i),e.resize=i)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,i){s.removeEventListener(t,i,e)}))},updateHoverStyle:function(t,e,i){var n,a,r,o=i?\"setHoverStyle\":\"removeHoverStyle\";for(a=0,r=t.length;a<r;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[o](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==l.notify(e,\"beforeEvent\",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),l.notify(e,\"afterEvent\",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},r=n.hover;return i.lastActive=i.lastActive||[],\"mouseout\"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,r.mode,r),a.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),\"mouseup\"!==t.type&&\"click\"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,r.mode,!1),i.active.length&&r.mode&&i.updateHoverStyle(i.active,r.mode,!0),e=!a.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),t.Controller=t}},{25:25,28:28,30:30,31:31,45:45,48:48}],24:[function(t,e,i){\"use strict\";var n=t(45);e.exports=function(t){var e=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function i(t,i){var n=t._chartjs;if(n){var a=n.listeners,r=a.indexOf(i);-1!==r&&a.splice(r,1),a.length>0||(e.forEach(function(e){delete t[e]}),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},n.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&i(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,a,r=this,o=r.getDataset(),s=o.data||(o.data=[]);r._data!==s&&(r._data&&i(r._data,r),a=r,(t=s)._chartjs?t._chartjs.listeners.push(a):(Object.defineProperty(t,\"_chartjs\",{configurable:!0,enumerable:!1,value:{listeners:[a]}}),e.forEach(function(e){var i=\"onData\"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return n.each(t._chartjs.listeners,function(t){\"function\"==typeof t[i]&&t[i].apply(t,e)}),r}})})),r._data=s),r.resyncElements()},update:n.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t,e){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,r=t.custom||{},o=n.valueAtIndexOrDefault,s=t._model;s.backgroundColor=r.backgroundColor?r.backgroundColor:o(i.backgroundColor,a,e.backgroundColor),s.borderColor=r.borderColor?r.borderColor:o(i.borderColor,a,e.borderColor),s.borderWidth=r.borderWidth?r.borderWidth:o(i.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=n.valueAtIndexOrDefault,o=n.getHoverColor,s=t._model;s.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:r(e.hoverBackgroundColor,i,o(s.backgroundColor)),s.borderColor=a.hoverBorderColor?a.hoverBorderColor:r(e.hoverBorderColor,i,o(s.borderColor)),s.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:r(e.hoverBorderWidth,i,s.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):n>i&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=n.inherits}},{45:45}],25:[function(t,e,i){\"use strict\";var n=t(45);e.exports={_set:function(t,e){return n.merge(this[t]||(this[t]={}),e)}}},{45:45}],26:[function(t,e,i){\"use strict\";var n=t(2),a=t(45);var r=function(t){a.extend(this,t),this.initialize.apply(this,arguments)};a.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=a.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,a=e._start,r=e._view;return i&&1!==t?(r||(r=e._view={}),a||(a=e._start={}),function(t,e,i,a){var r,o,s,l,u,d,h,c,f,g=Object.keys(i);for(r=0,o=g.length;r<o;++r)if(d=i[s=g[r]],e.hasOwnProperty(s)||(e[s]=d),(l=e[s])!==d&&\"_\"!==s[0]){if(t.hasOwnProperty(s)||(t[s]=l),(h=typeof d)==typeof(u=t[s]))if(\"string\"===h){if((c=n(u)).valid&&(f=n(d)).valid){e[s]=f.mix(c,a).rgbString();continue}}else if(\"number\"===h&&isFinite(u)&&isFinite(d)){e[s]=u+(d-u)*a;continue}e[s]=d}}(a,r,i,t),e):(e._view=i,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return a.isNumber(this._model.x)&&a.isNumber(this._model.y)}}),r.extend=a.inherits,e.exports=r},{2:2,45:45}],27:[function(t,e,i){\"use strict\";var n=t(2),a=t(25),r=t(45);e.exports=function(t){function e(t,e,i){var n;return\"string\"==typeof t?(n=parseInt(t,10),-1!==t.indexOf(\"%\")&&(n=n/100*e.parentNode[i])):n=t,n}function i(t){return null!=t&&\"none\"!==t}function o(t,n,a){var r=document.defaultView,o=t.parentNode,s=r.getComputedStyle(t)[n],l=r.getComputedStyle(o)[n],u=i(s),d=i(l),h=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(s,t,a):h,d?e(l,o,a):h):\"none\"}r.configMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,i,n,a){var o=i[e]||{},s=n[e];\"scales\"===e?i[e]=r.scaleMerge(o,s):\"scale\"===e?i[e]=r.merge(o,[t.scaleService.getScaleDefaults(s.type),s]):r._merger(e,i,n,a)}})},r.scaleMerge=function(){return r.merge(r.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,i,n,a){if(\"xAxes\"===e||\"yAxes\"===e){var o,s,l,u=n[e].length;for(i[e]||(i[e]=[]),o=0;o<u;++o)l=n[e][o],s=r.valueOrDefault(l.type,\"xAxes\"===e?\"category\":\"linear\"),o>=i[e].length&&i[e].push({}),!i[e][o].type||l.type&&l.type!==i[e][o].type?r.merge(i[e][o],[t.scaleService.getScaleDefaults(s),l]):r.merge(i[e][o],l)}else r._merger(e,i,n,a)}})},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return r.each(t,function(t){e(t)&&i.push(t)}),i},r.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},r.findNextWhere=function(t,e,i){r.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},r.findPreviousWhere=function(t,e,i){r.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;n>=0;n--){var a=t[n];if(e(a))return a}},r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,i){return Math.abs(t-e)<i},r.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&i+e>t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},r.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),r=Math.atan2(n,i);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2==0?0:.5},r.splineCurve=function(t,e,i,n){var a=t.skip?e:t,r=e,o=i.skip?e:i,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=n*(u=isNaN(u)?0:u),c=n*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,i,n,a,o,s,l,u,d,h=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),c=h.length;for(e=0;e<c;++e)if(!(n=h[e]).model.skip){if(i=e>0?h[e-1]:null,(a=e<c-1?h[e+1]:null)&&!a.model.skip){var f=a.model.x-n.model.x;n.deltaK=0!==f?(a.model.y-n.model.y)/f:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<c-1;++e)n=h[e],a=h[e+1],n.model.skip||a.model.skip||(r.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,s=a.mK/n.deltaK,(u=Math.pow(o,2)+Math.pow(s,2))<=9||(l=3/Math.sqrt(u),n.mK=o*l*n.deltaK,a.mK=s*l*n.deltaK)));for(e=0;e<c;++e)(n=h[e]).model.skip||(i=e>0?h[e-1]:null,a=e<c-1?h[e+1]:null,i&&!i.model.skip&&(d=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-d,n.model.controlPointPreviousY=n.model.y-d*n.mK),a&&!a.model.skip&&(d=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+d,n.model.controlPointNextY=n.model.y+d*n.mK))},r.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},r.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var i=Math.floor(r.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},r.requestAnimFrame=\"undefined\"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},r.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.currentTarget||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(i=l[0].clientX,n=l[0].clientY):(i=a.clientX,n=a.clientY);var u=parseFloat(r.getStyle(o,\"padding-left\")),d=parseFloat(r.getStyle(o,\"padding-top\")),h=parseFloat(r.getStyle(o,\"padding-right\")),c=parseFloat(r.getStyle(o,\"padding-bottom\")),f=s.right-s.left-u-h,g=s.bottom-s.top-d-c;return{x:i=Math.round((i-s.left-u)/f*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-s.top-d)/g*o.height/e.currentDevicePixelRatio)}},r.getConstraintWidth=function(t){return o(t,\"max-width\",\"clientWidth\")},r.getConstraintHeight=function(t){return o(t,\"max-height\",\"clientHeight\")},r.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var i=parseInt(r.getStyle(e,\"padding-left\"),10),n=parseInt(r.getStyle(e,\"padding-right\"),10),a=e.clientWidth-i-n,o=r.getConstraintWidth(t);return isNaN(o)?a:Math.min(a,o)},r.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var i=parseInt(r.getStyle(e,\"padding-top\"),10),n=parseInt(r.getStyle(e,\"padding-bottom\"),10),a=e.clientHeight-i-n,o=r.getConstraintHeight(t);return isNaN(o)?a:Math.min(a,o)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,r=t.width;n.height=a*i,n.width=r*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+\"px\",n.style.width=r+\"px\")}},r.fontString=function(t,e,i){return e+\" \"+t+\"px \"+i},r.longestText=function(t,e,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(a=n.data={},o=n.garbageCollect=[],n.font=e),t.font=e;var s=0;r.each(i,function(e){null!=e&&!0!==r.isArray(e)?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){null==e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>i.length){for(var u=0;u<l;u++)delete a[o[u]];o.splice(0,l)}return s},r.measureText=function(t,e,i,n,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,i.push(a)),r>n&&(n=r),n},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error(\"Color.js not found!\"),t},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,25:25,45:45}],28:[function(t,e,i){\"use strict\";var n=t(45);function a(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function r(t,e){var i,n,a,r,o;for(n=0,r=t.data.datasets.length;n<r;++n)if(t.isDatasetVisible(n))for(a=0,o=(i=t.getDatasetMeta(n)).data.length;a<o;++a){var s=i.data[a];s._view.skip||e(s)}}function o(t,e){var i=[];return r(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function s(t,e,i,n){var a=Number.POSITIVE_INFINITY,o=[];return r(t,function(t){if(!i||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=n(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function l(t){var e=-1!==t.indexOf(\"x\"),i=-1!==t.indexOf(\"y\");return function(t,n){var a=e?Math.abs(t.x-n.x):0,r=i?Math.abs(t.y-n.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(r,2))}}function u(t,e,i){var n=a(e,t);i.axis=i.axis||\"x\";var r=l(i.axis),u=i.intersect?o(t,n):s(t,n,!1,r),d=[];return u.length?(t.data.datasets.forEach(function(e,i){if(t.isDatasetVisible(i)){var n=t.getDatasetMeta(i).data[u[0]._index];n&&!n._view.skip&&d.push(n)}}),d):[]}e.exports={modes:{single:function(t,e){var i=a(e,t),n=[];return r(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:u,index:u,dataset:function(t,e,i){var n=a(e,t);i.axis=i.axis||\"xy\";var r=l(i.axis),u=i.intersect?o(t,n):s(t,n,!1,r);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},\"x-axis\":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return o(t,a(e,t))},nearest:function(t,e,i){var n=a(e,t);i.axis=i.axis||\"xy\";var r=l(i.axis),o=s(t,n,i.intersect,r);return o.length>1&&o.sort(function(t,e){var i=t.getArea()-e.getArea();return 0===i&&(i=t._datasetIndex-e._datasetIndex),i}),o.slice(0,1)},x:function(t,e,i){var n=a(e,t),o=[],s=!1;return r(t,function(t){t.inXRange(n.x)&&o.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(o=[]),o},y:function(t,e,i){var n=a(e,t),o=[],s=!1;return r(t,function(t){t.inYRange(n.y)&&o.push(t),t.inRange(n.x,n.y)&&(s=!0)}),i.intersect&&!s&&(o=[]),o}}}},{45:45}],29:[function(t,e,i){\"use strict\";t(25)._set(\"global\",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],hover:{onHover:null,mode:\"nearest\",intersect:!0,animationDuration:400},onClick:null,defaultColor:\"rgba(0,0,0,0.1)\",defaultFontColor:\"#666\",defaultFontFamily:\"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",defaultFontSize:12,defaultFontStyle:\"normal\",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,i){\"use strict\";var n=t(45);function a(t,e){return n.where(t,function(t){return t.position===e})}function r(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||\"top\",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=[\"fullWidth\",\"position\",\"weight\"],r=a.length,o=0;o<r;++o)n=a[o],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(t,e,i){if(t){var o=t.options.layout||{},s=n.options.toPadding(o.padding),l=s.left,u=s.right,d=s.top,h=s.bottom,c=a(t.boxes,\"left\"),f=a(t.boxes,\"right\"),g=a(t.boxes,\"top\"),m=a(t.boxes,\"bottom\"),p=a(t.boxes,\"chartArea\");r(c,!0),r(f,!1),r(g,!0),r(m,!1);var v=e-l-u,y=i-d-h,b=y/2,x=(e-v/2)/(c.length+f.length),_=(i-b)/(g.length+m.length),k=v,w=y,M=[];n.each(c.concat(f,g,m),function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?v:k,_),w-=e.height):(e=t.update(x,w),k-=e.width),M.push({horizontal:i,minSize:e,box:t})});var S=0,D=0,C=0,P=0;n.each(g.concat(m),function(t){if(t.getPadding){var e=t.getPadding();S=Math.max(S,e.left),D=Math.max(D,e.right)}}),n.each(c.concat(f),function(t){if(t.getPadding){var e=t.getPadding();C=Math.max(C,e.top),P=Math.max(P,e.bottom)}});var T=l,O=u,I=d,A=h;n.each(c.concat(f),z),n.each(c,function(t){T+=t.width}),n.each(f,function(t){O+=t.width}),n.each(g.concat(m),z),n.each(g,function(t){I+=t.height}),n.each(m,function(t){A+=t.height}),n.each(c.concat(f),function(t){var e=n.findNextWhere(M,function(e){return e.box===t}),i={left:0,right:0,top:I,bottom:A};e&&t.update(e.minSize.width,w,i)}),T=l,O=u,I=d,A=h,n.each(c,function(t){T+=t.width}),n.each(f,function(t){O+=t.width}),n.each(g,function(t){I+=t.height}),n.each(m,function(t){A+=t.height});var F=Math.max(S-T,0);T+=F,O+=Math.max(D-O,0);var R=Math.max(C-I,0);I+=R,A+=Math.max(P-A,0);var L=i-I-A,W=e-T-O;W===k&&L===w||(n.each(c,function(t){t.height=L}),n.each(f,function(t){t.height=L}),n.each(g,function(t){t.fullWidth||(t.width=W)}),n.each(m,function(t){t.fullWidth||(t.width=W)}),w=L,k=W);var Y=l+F,N=d+R;n.each(c.concat(g),H),Y+=k,N+=w,n.each(f,H),n.each(m,H),t.chartArea={left:T,top:I,right:T+k,bottom:I+w},n.each(p,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,w)})}function z(t){var e=n.findNextWhere(M,function(e){return e.box===t});if(e)if(t.isHorizontal()){var i={left:Math.max(T,S),right:Math.max(O,D),top:0,bottom:0};t.update(t.fullWidth?v:k,y/2,i)}else t.update(e.minSize.width,w)}function H(t){t.isHorizontal()?(t.left=t.fullWidth?l:T,t.right=t.fullWidth?e-u:T+k,t.top=N,t.bottom=N+t.height,N=t.bottom):(t.left=Y,t.right=Y+t.width,t.top=I,t.bottom=I+w,Y=t.right)}}}},{45:45}],31:[function(t,e,i){\"use strict\";var n=t(25),a=t(45);n._set(\"global\",{plugins:{}}),e.exports={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,r,o,s,l=this.descriptors(t),u=l.length;for(n=0;n<u;++n)if(\"function\"==typeof(s=(r=(a=l[n]).plugin)[e])&&((o=[t].concat(i||[])).push(a.options),!1===s.apply(r,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],r=[],o=t&&t.config||{},s=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,o=s[e];!1!==o&&(!0===o&&(o=a.clone(n.global.plugins[e])),i.push(t),r.push({plugin:t,options:o||{}}))}}),e.descriptors=r,e.id=this._cacheId,r},_invalidate:function(t){delete t.$plugins}}},{25:25,45:45}],32:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(34);function s(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function l(t,e,i){var n=t.getPixelForTick(e);return i&&(n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}n._set(\"scale\",{display:!0,position:\"left\",offset:!1,gridLines:{display:!0,color:\"rgba(0, 0, 0, 0.1)\",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:\"rgba(0,0,0,0.25)\",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:\"\",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:o.formatters.values,minor:{},major:{}}}),e.exports=function(t){function e(t,e,i){return r.isArray(e)?r.longestText(t,i,e):t.measureText(e).width}function i(t){var e=r.valueOrDefault,i=n.global,a=e(t.fontSize,i.defaultFontSize),o=e(t.fontStyle,i.defaultFontStyle),s=e(t.fontFamily,i.defaultFontFamily);return{size:a,style:o,family:s,font:r.fontString(a,o,s)}}function o(t){return r.options.toLineHeight(r.valueOrDefault(t.lineHeight,1.2),r.valueOrDefault(t.fontSize,n.global.defaultFontSize))}t.Scale=a.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)\"major\"!==e&&\"minor\"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){r.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,s,l,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=r.extend({left:0,right:0,top:0,bottom:0},i),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),l=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(l)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,n=0,a=o.length;n<a;++n)s=o[n],(u=l[n])?u.label=s:l.push(u={label:s,major:!1});return d._ticks=l,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){r.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){r.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){r.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){r.callback(this.options.beforeDataLimits,[this])},determineDataLimits:r.noop,afterDataLimits:function(){r.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){r.callback(this.options.beforeBuildTicks,[this])},buildTicks:r.noop,afterBuildTicks:function(){r.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){r.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){r.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){r.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,a=s(t._ticks),o=i(n);e.font=o.font;var l=n.minRotation||0;if(a.length&&t.options.display&&t.isHorizontal())for(var u,d=r.longestText(e,o.font,a,t.longestTextCache),h=d,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;h>c&&l<n.maxRotation;){var f=r.toRadians(l);if(u=Math.cos(f),Math.sin(f)*d>t.maxHeight){l--;break}l++,h=u*d}t.labelRotation=l},afterCalculateTickRotation:function(){r.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){r.callback(this.options.beforeFit,[this])},fit:function(){var t=this,n=t.minSize={width:0,height:0},a=s(t._ticks),l=t.options,u=l.ticks,d=l.scaleLabel,h=l.gridLines,c=l.display,f=t.isHorizontal(),g=i(u),m=l.gridLines.tickMarkLength;if(n.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:c&&h.drawTicks?m:0,n.height=f?c&&h.drawTicks?m:0:t.maxHeight,d.display&&c){var p=o(d)+r.options.toPadding(d.padding).height;f?n.height+=p:n.width+=p}if(u.display&&c){var v=r.longestText(t.ctx,g.font,a,t.longestTextCache),y=r.numberOfLabelLines(a),b=.5*g.size,x=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var _=r.toRadians(t.labelRotation),k=Math.cos(_),w=Math.sin(_)*v+g.size*y+b*(y-1)+b;n.height=Math.min(t.maxHeight,n.height+w+x),t.ctx.font=g.font;var M=e(t.ctx,a[0],g.font),S=e(t.ctx,a[a.length-1],g.font);0!==t.labelRotation?(t.paddingLeft=\"bottom\"===l.position?k*M+3:k*b+3,t.paddingRight=\"bottom\"===l.position?k*b+3:k*S+3):(t.paddingLeft=M/2+3,t.paddingRight=S/2+3)}else u.mirror?v=0:v+=x+b,n.width=Math.min(t.maxWidth,n.width+v),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=n.width,t.height=n.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){r.callback(this.options.afterFit,[this])},isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(r.isNullOrUndef(t))return NaN;if(\"number\"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:r.noop,getPixelForValue:r.noop,getValueForPixel:r.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var r=e.left+Math.round(a);return r+=e.isFullWidth()?e.margins.left:0}var o=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(o/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n,a,o=this,s=o.isHorizontal(),l=o.options.ticks.minor,u=t.length,d=r.toRadians(o.labelRotation),h=Math.cos(d),c=o.longestLabelWidth*h,f=[];for(l.maxTicksLimit&&(a=l.maxTicksLimit),s&&(e=!1,(c+l.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+l.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),i=0;i<u;i++)n=t[i],(e>1&&i%e>0||i%e==0&&i+e>=u)&&i!==u-1&&delete n.label,f.push(n);return f},draw:function(t){var e=this,a=e.options;if(a.display){var s=e.ctx,u=n.global,d=a.ticks.minor,h=a.ticks.major||d,c=a.gridLines,f=a.scaleLabel,g=0!==e.labelRotation,m=e.isHorizontal(),p=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=r.valueOrDefault(d.fontColor,u.defaultFontColor),y=i(d),b=r.valueOrDefault(h.fontColor,u.defaultFontColor),x=i(h),_=c.drawTicks?c.tickMarkLength:0,k=r.valueOrDefault(f.fontColor,u.defaultFontColor),w=i(f),M=r.options.toPadding(f.padding),S=r.toRadians(e.labelRotation),D=[],C=e.options.gridLines.lineWidth,P=\"right\"===a.position?e.right:e.right-C-_,T=\"right\"===a.position?e.right+_:e.right,O=\"bottom\"===a.position?e.top+C:e.bottom-_-C,I=\"bottom\"===a.position?e.top+C+_:e.bottom+C;if(r.each(p,function(i,n){if(!r.isNullOrUndef(i.label)){var o,s,h,f,v,y,b,x,k,w,M,A,F,R,L=i.label;n===e.zeroLineIndex&&a.offset===c.offsetGridLines?(o=c.zeroLineWidth,s=c.zeroLineColor,h=c.zeroLineBorderDash,f=c.zeroLineBorderDashOffset):(o=r.valueAtIndexOrDefault(c.lineWidth,n),s=r.valueAtIndexOrDefault(c.color,n),h=r.valueOrDefault(c.borderDash,u.borderDash),f=r.valueOrDefault(c.borderDashOffset,u.borderDashOffset));var W=\"middle\",Y=\"middle\",N=d.padding;if(m){var z=_+N;\"bottom\"===a.position?(Y=g?\"middle\":\"top\",W=g?\"right\":\"center\",R=e.top+z):(Y=g?\"middle\":\"bottom\",W=g?\"left\":\"center\",R=e.bottom-z);var H=l(e,n,c.offsetGridLines&&p.length>1);H<e.left&&(s=\"rgba(0,0,0,0)\"),H+=r.aliasPixel(o),F=e.getPixelForTick(n)+d.labelOffset,v=b=k=M=H,y=O,x=I,w=t.top,A=t.bottom+C}else{var V,B=\"left\"===a.position;d.mirror?(W=B?\"left\":\"right\",V=N):(W=B?\"right\":\"left\",V=_+N),F=B?e.right-V:e.left+V;var E=l(e,n,c.offsetGridLines&&p.length>1);E<e.top&&(s=\"rgba(0,0,0,0)\"),E+=r.aliasPixel(o),R=e.getPixelForTick(n)+d.labelOffset,v=P,b=T,k=t.left,M=t.right+C,y=x=w=A=E}D.push({tx1:v,ty1:y,tx2:b,ty2:x,x1:k,y1:w,x2:M,y2:A,labelX:F,labelY:R,glWidth:o,glColor:s,glBorderDash:h,glBorderDashOffset:f,rotation:-1*S,label:L,major:i.major,textBaseline:Y,textAlign:W})}}),r.each(D,function(t){if(c.display&&(s.save(),s.lineWidth=t.glWidth,s.strokeStyle=t.glColor,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),c.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=t.major?x.font:y.font,s.fillStyle=t.major?b:v,s.textBaseline=t.textBaseline,s.textAlign=t.textAlign;var i=t.label;if(r.isArray(i))for(var n=i.length,a=1.5*y.size,o=e.isHorizontal()?0:-a*(n-1)/2,l=0;l<n;++l)s.fillText(\"\"+i[l],0,o),o+=a;else s.fillText(i,0,0);s.restore()}}),f.display){var A,F,R=0,L=o(f)/2;if(m)A=e.left+(e.right-e.left)/2,F=\"bottom\"===a.position?e.bottom-L-M.bottom:e.top+L+M.top;else{var W=\"left\"===a.position;A=W?e.left+L+M.top:e.right-L-M.top,F=e.top+(e.bottom-e.top)/2,R=W?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(A,F),s.rotate(R),s.textAlign=\"center\",s.textBaseline=\"middle\",s.fillStyle=k,s.font=w.font,s.fillText(f.labelString,0,0),s.restore()}if(c.drawBorder){s.lineWidth=r.valueAtIndexOrDefault(c.lineWidth,0),s.strokeStyle=r.valueAtIndexOrDefault(c.color,0);var Y=e.left,N=e.right+C,z=e.top,H=e.bottom+C,V=r.aliasPixel(s.lineWidth);m?(z=H=\"top\"===a.position?e.bottom:e.top,z+=V,H+=V):(Y=N=\"left\"===a.position?e.right:e.left,Y+=V,N+=V),s.beginPath(),s.moveTo(Y,z),s.lineTo(N,H),s.stroke()}}}})}},{25:25,26:26,34:34,45:45}],33:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(30);e.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=a.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[n.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(t){a.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,r.addBox(t,e)})}}}},{25:25,30:30,45:45}],34:[function(t,e,i){\"use strict\";var n=t(45);e.exports={formatters:{values:function(t){return n.isArray(t)?t:\"\"+t},linear:function(t,e,i){var a=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=n.log10(Math.abs(a)),o=\"\";if(0!==t){var s=-1*Math.floor(r);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o=\"0\";return o},logarithmic:function(t,e,i){var a=t/Math.pow(10,Math.floor(n.log10(t)));return 0===t?\"0\":1===a||2===a||5===a||0===e||e===i.length-1?t.toExponential():\"\"}}}},{45:45}],35:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{tooltips:{enabled:!0,custom:null,mode:\"nearest\",position:\"average\",intersect:!0,backgroundColor:\"rgba(0,0,0,0.8)\",titleFontStyle:\"bold\",titleSpacing:2,titleMarginBottom:6,titleFontColor:\"#fff\",titleAlign:\"left\",bodySpacing:2,bodyFontColor:\"#fff\",bodyAlign:\"left\",footerFontStyle:\"bold\",footerSpacing:2,footerMarginTop:6,footerFontColor:\"#fff\",footerAlign:\"left\",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:\"#fff\",displayColors:!0,borderColor:\"rgba(0,0,0,0)\",borderWidth:0,callbacks:{beforeTitle:r.noop,title:function(t,e){var i=\"\",n=e.labels,a=n?n.length:0;if(t.length>0){var r=t[0];r.xLabel?i=r.xLabel:a>0&&r.index<a&&(i=n[r.index])}return i},afterTitle:r.noop,beforeBody:r.noop,beforeLabel:r.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||\"\";return i&&(i+=\": \"),i+=t.yLabel},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:r.noop,afterBody:r.noop,beforeFooter:r.noop,footer:r.noop,afterFooter:r.noop}}}),e.exports=function(t){function e(t,e){var i=r.color(t);return i.alpha(e*i.alpha()).rgbaString()}function i(t,e){return e&&(r.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function o(t){var e=n.global,i=r.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:i(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:i(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:i(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:i(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:i(t.titleFontStyle,e.defaultFontStyle),titleFontSize:i(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:i(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:i(t.footerFontStyle,e.defaultFontStyle),footerFontSize:i(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}t.Tooltip=a.extend({initialize:function(){this._model=o(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),a=t.afterTitle.apply(this,arguments),r=[];return r=i(r=i(r=i(r,e),n),a)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var n=this,a=n._options.callbacks,o=[];return r.each(t,function(t){var r={before:[],lines:[],after:[]};i(r.before,a.beforeLabel.call(n,t,e)),i(r.lines,a.label.call(n,t,e)),i(r.after,a.afterLabel.call(n,t,e)),o.push(r)}),o},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return r.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),a=t.afterFooter.apply(this,arguments),r=[];return r=i(r=i(r=i(r,e),n),a)},update:function(e){var i,n,a,s,l,u,d,h,c,f,g,m,p,v,y,b,x,_,k,w,M=this,S=M._options,D=M._model,C=M._model=o(S),P=M._active,T=M._data,O={xAlign:D.xAlign,yAlign:D.yAlign},I={x:D.x,y:D.y},A={width:D.width,height:D.height},F={x:D.caretX,y:D.caretY};if(P.length){C.opacity=1;var R=[],L=[];F=t.Tooltip.positioners[S.position].call(M,P,M._eventPosition);var W=[];for(i=0,n=P.length;i<n;++i)W.push((b=P[i],x=void 0,_=void 0,void 0,void 0,x=b._xScale,_=b._yScale||b._scale,k=b._index,w=b._datasetIndex,{xLabel:x?x.getLabelForIndex(k,w):\"\",yLabel:_?_.getLabelForIndex(k,w):\"\",index:k,datasetIndex:w,x:b._model.x,y:b._model.y}));S.filter&&(W=W.filter(function(t){return S.filter(t,T)})),S.itemSort&&(W=W.sort(function(t,e){return S.itemSort(t,e,T)})),r.each(W,function(t){R.push(S.callbacks.labelColor.call(M,t,M._chart)),L.push(S.callbacks.labelTextColor.call(M,t,M._chart))}),C.title=M.getTitle(W,T),C.beforeBody=M.getBeforeBody(W,T),C.body=M.getBody(W,T),C.afterBody=M.getAfterBody(W,T),C.footer=M.getFooter(W,T),C.x=Math.round(F.x),C.y=Math.round(F.y),C.caretPadding=S.caretPadding,C.labelColors=R,C.labelTextColors=L,C.dataPoints=W,O=function(t,e){var i,n,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d=\"center\",h=\"center\";s.y<e.height?h=\"top\":s.y>l.height-e.height&&(h=\"bottom\");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;\"center\"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?\"top\":\"bottom\"},i(s.x)?(d=\"left\",a(s.x)&&(d=\"center\",h=o(s.y))):n(s.x)&&(d=\"right\",r(s.x)&&(d=\"center\",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,A=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,s=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);s+=e.beforeBody.length+e.afterBody.length;var l=e.title.length,u=e.footer.length,d=e.titleFontSize,h=e.bodyFontSize,c=e.footerFontSize;n+=l*d,n+=l?(l-1)*e.titleSpacing:0,n+=l?e.titleMarginBottom:0,n+=s*h,n+=s?(s-1)*e.bodySpacing:0,n+=u?e.footerMarginTop:0,n+=u*c,n+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,i.measureText(t).width+f)};return i.font=r.fontString(d,e._titleFontStyle,e._titleFontFamily),r.each(e.title,g),i.font=r.fontString(h,e._bodyFontStyle,e._bodyFontFamily),r.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?h+2:0,r.each(o,function(t){r.each(t.before,g),r.each(t.lines,g),r.each(t.after,g)}),f=0,i.font=r.fontString(c,e._footerFontStyle,e._footerFontFamily),r.each(e.footer,g),{width:a+=2*e.xPadding,height:n}}(this,C)),a=C,s=A,l=O,u=M._chart,d=a.x,h=a.y,c=a.caretSize,f=a.caretPadding,g=a.cornerRadius,m=l.xAlign,p=l.yAlign,v=c+f,y=g+f,\"right\"===m?d-=s.width:\"center\"===m&&((d-=s.width/2)+s.width>u.width&&(d=u.width-s.width),d<0&&(d=0)),\"top\"===p?h+=v:h-=\"bottom\"===p?s.height+v:s.height/2,\"center\"===p?\"left\"===m?d+=v:\"right\"===m&&(d-=v):\"left\"===m?d-=y:\"right\"===m&&(d+=y),I={x:d,y:h}}else C.opacity=0;return C.xAlign=O.xAlign,C.yAlign=O.yAlign,C.x=I.x,C.y=I.y,C.width=A.width,C.height=A.height,C.caretX=F.x,C.caretY=F.y,M._model=C,e&&S.custom&&S.custom.call(M,C),M},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,r,o,s,l,u=i.caretSize,d=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if(\"center\"===c)s=g+p/2,\"left\"===h?(a=(n=f)-u,r=n,o=s+u,l=s-u):(a=(n=f+m)+u,r=n,o=s-u,l=s+u);else if(\"left\"===h?(n=(a=f+d+u)-u,r=a+u):\"right\"===h?(n=(a=f+m-d-u)-u,r=a+u):(n=(a=i.caretX)-u,r=a+u),\"top\"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=n,n=v}return{x1:n,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,i,n,a){var o=i.title;if(o.length){n.textAlign=i._titleAlign,n.textBaseline=\"top\";var s,l,u=i.titleFontSize,d=i.titleSpacing;for(n.fillStyle=e(i.titleFontColor,a),n.font=r.fontString(u,i._titleFontStyle,i._titleFontFamily),s=0,l=o.length;s<l;++s)n.fillText(o[s],t.x,t.y),t.y+=u+d,s+1===o.length&&(t.y+=i.titleMarginBottom-d)}},drawBody:function(t,i,n,a){var o=i.bodyFontSize,s=i.bodySpacing,l=i.body;n.textAlign=i._bodyAlign,n.textBaseline=\"top\",n.font=r.fontString(o,i._bodyFontStyle,i._bodyFontFamily);var u=0,d=function(e){n.fillText(e,t.x+u,t.y),t.y+=o+s};n.fillStyle=e(i.bodyFontColor,a),r.each(i.beforeBody,d);var h=i.displayColors;u=h?o+2:0,r.each(l,function(s,l){var u=e(i.labelTextColors[l],a);n.fillStyle=u,r.each(s.before,d),r.each(s.lines,function(r){h&&(n.fillStyle=e(i.legendColorBackground,a),n.fillRect(t.x,t.y,o,o),n.lineWidth=1,n.strokeStyle=e(i.labelColors[l].borderColor,a),n.strokeRect(t.x,t.y,o,o),n.fillStyle=e(i.labelColors[l].backgroundColor,a),n.fillRect(t.x+1,t.y+1,o-2,o-2),n.fillStyle=u),d(r)}),r.each(s.after,d)}),u=0,r.each(i.afterBody,d),t.y-=s},drawFooter:function(t,i,n,a){var o=i.footer;o.length&&(t.y+=i.footerMarginTop,n.textAlign=i._footerAlign,n.textBaseline=\"top\",n.fillStyle=e(i.footerFontColor,a),n.font=r.fontString(i.footerFontSize,i._footerFontStyle,i._footerFontFamily),r.each(o,function(e){n.fillText(e,t.x,t.y),t.y+=i.footerFontSize+i.footerSpacing}))},drawBackground:function(t,i,n,a,r){n.fillStyle=e(i.backgroundColor,r),n.strokeStyle=e(i.borderColor,r),n.lineWidth=i.borderWidth;var o=i.xAlign,s=i.yAlign,l=t.x,u=t.y,d=a.width,h=a.height,c=i.cornerRadius;n.beginPath(),n.moveTo(l+c,u),\"top\"===s&&this.drawCaret(t,a),n.lineTo(l+d-c,u),n.quadraticCurveTo(l+d,u,l+d,u+c),\"center\"===s&&\"right\"===o&&this.drawCaret(t,a),n.lineTo(l+d,u+h-c),n.quadraticCurveTo(l+d,u+h,l+d-c,u+h),\"bottom\"===s&&this.drawCaret(t,a),n.lineTo(l+c,u+h),n.quadraticCurveTo(l,u+h,l,u+h-c),\"center\"===s&&\"left\"===o&&this.drawCaret(t,a),n.lineTo(l,u+c),n.quadraticCurveTo(l,u,l+c,u),n.closePath(),n.fill(),i.borderWidth>0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(this.drawBackground(n,e,t,i,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,a),this.drawBody(n,e,t,a),this.drawFooter(n,e,t,a))}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],\"mouseout\"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!r.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,r=0;for(e=0,i=t.length;e<i;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();n+=s.x,a+=s.y,++r}}return{x:Math.round(n/r),y:Math.round(a/r)}},nearest:function(t,e){var i,n,a,o=e.x,s=e.y,l=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var u=t[i];if(u&&u.hasValue()){var d=u.getCenterPoint(),h=r.distanceBetweenPoints(e,d);h<l&&(l=h,a=u)}}if(a){var c=a.tooltipPosition();o=c.x,s=c.y}return{x:o,y:s}}}}},{25:25,26:26,45:45}],36:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45);n._set(\"global\",{elements:{arc:{backgroundColor:n.global.defaultColor,borderColor:\"#fff\",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=r.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,s=i.startAngle,l=i.endAngle;l<s;)l+=2*Math.PI;for(;a>l;)a-=2*Math.PI;for(;a<s;)a+=2*Math.PI;var u=a>=s&&a<=l,d=o>=i.innerRadius&&o<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin=\"bevel\",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=n.global;n._set(\"global\",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:\"butt\",borderDash:[],borderDashOffset:0,borderJoinStyle:\"miter\",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,s=this._chart.ctx,l=a.spanGaps,u=this._children.slice(),d=o.elements.line,h=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=a.borderCapStyle||d.borderCapStyle,s.setLineDash&&s.setLineDash(a.borderDash||d.borderDash),s.lineDashOffset=a.borderDashOffset||d.borderDashOffset,s.lineJoin=a.borderJoinStyle||d.borderJoinStyle,s.lineWidth=a.borderWidth||d.borderWidth,s.strokeStyle=a.borderColor||o.defaultColor,s.beginPath(),h=-1,t=0;t<u.length;++t)e=u[t],i=r.previousItem(u,t),n=e._view,0===t?n.skip||(s.moveTo(n.x,n.y),h=t):(i=-1===h?i:u[h],n.skip||(h!==t-1&&!l||-1===h?s.moveTo(n.x,n.y):r.canvas.lineTo(s,i._view,e._view),h=t));s.stroke(),s.restore()}})},{25:25,26:26,45:45}],38:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=n.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}n._set(\"global\",{elements:{point:{radius:3,pointStyle:\"circle\",backgroundColor:o,borderColor:o,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=a.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:s,inXRange:s,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._model,a=this._chart.ctx,s=e.pointStyle,l=e.radius,u=e.x,d=e.y,h=r.color,c=0;e.skip||(a.strokeStyle=e.borderColor||o,a.lineWidth=r.valueOrDefault(e.borderWidth,n.global.elements.point.borderWidth),a.fillStyle=e.backgroundColor||o,void 0!==t&&(i.x<t.left||1.01*t.right<i.x||i.y<t.top||1.01*t.bottom<i.y)&&(i.x<t.left?c=(u-i.x)/(t.left-i.x):1.01*t.right<i.x?c=(i.x-u)/(i.x-t.right):i.y<t.top?c=(d-i.y)/(t.top-i.y):1.01*t.bottom<i.y&&(c=(i.y-d)/(i.y-t.bottom)),c=Math.round(100*c)/100,a.strokeStyle=h(a.strokeStyle).alpha(c).rgbString(),a.fillStyle=h(a.fillStyle).alpha(c).rgbString()),r.canvas.drawPoint(a,s,l,u,d))}})},{25:25,26:26,45:45}],39:[function(t,e,i){\"use strict\";var n=t(25),a=t(26);function r(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(r(t)){var s=o.width/2;e=o.x-s,i=o.x+s,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var l=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-l,a=o.y+l}return{left:e,top:n,right:i,bottom:a}}n._set(\"global\",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:\"bottom\",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,r,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=e>t?1:-1,r=1,o=l.borderSkipped||\"left\"):(t=l.x-l.width/2,e=l.x+l.width/2,i=l.y,a=1,r=(n=l.base)>i?1:-1,o=l.borderSkipped||\"bottom\"),u){var d=Math.min(Math.abs(t-e),Math.abs(i-n)),h=(u=u>d?d:u)/2,c=t+(\"left\"!==o?h*a:0),f=e+(\"right\"!==o?-h*a:0),g=i+(\"top\"!==o?h*r:0),m=n+(\"bottom\"!==o?-h*r:0);c!==f&&(i=g,n=m),g!==m&&(t=c,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var p=[[t,n],[t,i],[e,i],[e,n]],v=[\"bottom\",\"left\",\"top\",\"right\"].indexOf(o,0);function y(t){return p[(v+t)%4]}-1===v&&(v=0);var b=y(0);s.moveTo(b[0],b[1]);for(var x=1;x<4;x++)b=y(x),s.lineTo(b[0],b[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=o(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return r(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return r(this)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,i){\"use strict\";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,i){\"use strict\";var n=t(42);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,r){if(r){var o=Math.min(r,n/2),s=Math.min(r,a/2);t.moveTo(e+o,i),t.lineTo(e+n-o,i),t.quadraticCurveTo(e+n,i,e+n,i+s),t.lineTo(e+n,i+a-s),t.quadraticCurveTo(e+n,i+a,e+n-o,i+a),t.lineTo(e+o,i+a),t.quadraticCurveTo(e,i+a,e,i+a-s),t.lineTo(e,i+s),t.quadraticCurveTo(e,i,e+o,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a){var r,o,s,l,u,d;if(!e||\"object\"!=typeof e||\"[object HTMLImageElement]\"!==(r=e.toString())&&\"[object HTMLCanvasElement]\"!==r){if(!(isNaN(i)||i<=0)){switch(e){default:t.beginPath(),t.arc(n,a,i,0,2*Math.PI),t.closePath(),t.fill();break;case\"triangle\":t.beginPath(),u=(o=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(n-o/2,a+u/3),t.lineTo(n+o/2,a+u/3),t.lineTo(n,a-2*u/3),t.closePath(),t.fill();break;case\"rect\":d=1/Math.SQRT2*i,t.beginPath(),t.fillRect(n-d,a-d,2*d,2*d),t.strokeRect(n-d,a-d,2*d,2*d);break;case\"rectRounded\":var h=i/Math.SQRT2,c=n-h,f=a-h,g=Math.SQRT2*i;t.beginPath(),this.roundedRect(t,c,f,g,g,i/2),t.closePath(),t.fill();break;case\"rectRot\":d=1/Math.SQRT2*i,t.beginPath(),t.moveTo(n-d,a),t.lineTo(n,a+d),t.lineTo(n+d,a),t.lineTo(n,a-d),t.closePath(),t.fill();break;case\"cross\":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case\"crossRot\":t.beginPath(),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case\"star\":t.beginPath(),t.moveTo(n,a+i),t.lineTo(n,a-i),t.moveTo(n-i,a),t.lineTo(n+i,a),s=Math.cos(Math.PI/4)*i,l=Math.sin(Math.PI/4)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n-s,a+l),t.lineTo(n+s,a-l),t.closePath();break;case\"line\":t.beginPath(),t.moveTo(n-i,a),t.lineTo(n+i,a),t.closePath();break;case\"dash\":t.beginPath(),t.moveTo(n,a),t.lineTo(n+i,a),t.closePath()}t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return\"after\"===i.steppedLine&&!n||\"after\"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments),t.closePath()}},{42:42}],42:[function(t,e,i){\"use strict\";var n,a={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&\"[object Object]\"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return a.valueOrDefault(a.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&\"function\"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var r,o,s;if(a.isArray(t))if(o=t.length,n)for(r=o-1;r>=0;r--)e.call(i,t[r],r);else for(r=0;r<o;r++)e.call(i,t[r],r);else if(a.isObject(t))for(o=(s=Object.keys(t)).length,r=0;r<o;r++)e.call(i,t[s[r]],s[r])},arrayEquals:function(t,e){var i,n,r,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(r=t[i],o=e[i],r instanceof Array&&o instanceof Array){if(!a.arrayEquals(r,o))return!1}else if(r!==o)return!1;return!0},clone:function(t){if(a.isArray(t))return t.map(a.clone);if(a.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,r=0;r<n;++r)e[i[r]]=a.clone(t[i[r]]);return e}return t},_merger:function(t,e,i,n){var r=e[t],o=i[t];a.isObject(r)&&a.isObject(o)?a.merge(r,o,n):e[t]=a.clone(o)},_mergerIf:function(t,e,i){var n=e[t],r=i[t];a.isObject(n)&&a.isObject(r)?a.mergeIf(n,r):e.hasOwnProperty(t)||(e[t]=a.clone(r))},merge:function(t,e,i){var n,r,o,s,l,u=a.isArray(e)?e:[e],d=u.length;if(!a.isObject(t))return t;for(n=(i=i||{}).merger||a._merger,r=0;r<d;++r)if(e=u[r],a.isObject(e))for(l=0,s=(o=Object.keys(e)).length;l<s;++l)n(o[l],t,e,i);return t},mergeIf:function(t,e){return a.merge(t,e,{merger:a._mergerIf})},extend:function(t){for(var e=function(e,i){t[i]=e},i=1,n=arguments.length;i<n;++i)a.each(arguments[i],e);return t},inherits:function(t){var e=this,i=t&&t.hasOwnProperty(\"constructor\")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=a.inherits,t&&a.extend(i.prototype,t),i.__super__=e.prototype,i}};e.exports=a,a.callCallback=a.callback,a.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},a.getValueOrDefault=a.valueOrDefault,a.getValueAtIndexOrDefault=a.valueAtIndexOrDefault},{}],43:[function(t,e,i){\"use strict\";var n=t(42),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},n.easingEffects=a},{42:42}],44:[function(t,e,i){\"use strict\";var n=t(42);e.exports={toLineHeight:function(t,e){var i=(\"\"+t).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);if(!i||\"normal\"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case\"px\":return t;case\"%\":t/=100}return e*t},toPadding:function(t){var e,i,a,r;return n.isObject(t)?(e=+t.top||0,i=+t.right||0,a=+t.bottom||0,r=+t.left||0):e=i=a=r=+t||0,{top:e,right:i,bottom:a,left:r,height:e+a,width:r+i}},resolve:function(t,e,i){var a,r,o;for(a=0,r=t.length;a<r;++a)if(void 0!==(o=t[a])&&(void 0!==e&&\"function\"==typeof o&&(o=o(e)),void 0!==i&&n.isArray(o)&&(o=o[i]),void 0!==o))return o}}},{42:42}],45:[function(t,e,i){\"use strict\";e.exports=t(42),e.exports.easing=t(43),e.exports.canvas=t(41),e.exports.options=t(44)},{41:41,42:42,43:43,44:44}],46:[function(t,e,i){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext(\"2d\")||null}}},{}],47:[function(t,e,i){\"use strict\";var n=t(45),a=\"$chartjs\",r=\"chartjs-\",o=r+\"render-monitor\",s=r+\"render-animation\",l=[\"animationstart\",\"webkitAnimationStart\"],u={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"};function d(t,e){var i=n.getStyle(t,e),a=i&&i.match(/^(\\d+)(\\.\\d+)?px$/);return a?Number(a[1]):void 0}var h=!!function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"e\",null,e)}catch(t){}return t}()&&{passive:!0};function c(t,e,i){t.addEventListener(e,i,h)}function f(t,e,i){t.removeEventListener(e,i,h)}function g(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function m(t,e,i){var u,d,h,f,m,p,v,y,b=t[a]||(t[a]={}),x=b.resizer=function(t){var e=document.createElement(\"div\"),i=r+\"size-monitor\",n=\"position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;\";e.style.cssText=n,e.className=i,e.innerHTML='<div class=\"'+i+'-expand\" style=\"'+n+'\"><div style=\"position:absolute;width:1000000px;height:1000000px;left:0;top:0\"></div></div><div class=\"'+i+'-shrink\" style=\"'+n+'\"><div style=\"position:absolute;width:200%;height:200%;left:0; top:0\"></div></div>';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var s=function(){e._reset(),t()};return c(a,\"scroll\",s.bind(a,\"expand\")),c(o,\"scroll\",s.bind(o,\"shrink\")),e}((u=function(){if(b.resizer)return e(g(\"resize\",i))},h=!1,f=[],function(){f=Array.prototype.slice.call(arguments),d=d||this,h||(h=!0,n.requestAnimFrame.call(window,function(){h=!1,u.apply(d,f)}))}));p=function(){if(b.resizer){var e=t.parentNode;e&&e!==x.parentNode&&e.insertBefore(x,e.firstChild),x._reset()}},v=(m=t)[a]||(m[a]={}),y=v.renderProxy=function(t){t.animationName===s&&p()},n.each(l,function(t){c(m,t,y)}),v.reflow=!!m.offsetParent,m.classList.add(o)}function p(t){var e,i,r,s=t[a]||{},u=s.resizer;delete s.resizer,i=(e=t)[a]||{},(r=i.renderProxy)&&(n.each(l,function(t){f(e,t,r)}),delete i.renderProxy),e.classList.remove(o),u&&u.parentNode&&u.parentNode.removeChild(u)}e.exports={_enabled:\"undefined\"!=typeof window&&\"undefined\"!=typeof document,initialize:function(){var t,e,i,n=\"from{opacity:0.99}to{opacity:1}\";e=\"@-webkit-keyframes \"+s+\"{\"+n+\"}@keyframes \"+s+\"{\"+n+\"}.\"+o+\"{-webkit-animation:\"+s+\" 0.001s;animation:\"+s+\" 0.001s;}\",i=(t=this)._style||document.createElement(\"style\"),t._style||(t._style=i,e=\"/* Chart.js */\\n\"+e,i.setAttribute(\"type\",\"text/css\"),document.getElementsByTagName(\"head\")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){\"string\"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext(\"2d\");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute(\"height\"),r=t.getAttribute(\"width\");if(t[a]={initial:{height:n,width:r,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||\"block\",null===r||\"\"===r){var o=d(t,\"width\");void 0!==o&&(t.width=o)}if(null===n||\"\"===n)if(\"\"===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var s=d(t,\"height\");void 0!==o&&(t.height=s)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[a]){var i=e[a].initial;[\"height\",\"width\"].forEach(function(t){var a=i[t];n.isNullOrUndef(a)?e.removeAttribute(t):e.setAttribute(t,a)}),n.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[a]}},addEventListener:function(t,e,i){var r=t.canvas;if(\"resize\"!==e){var o=i[a]||(i[a]={});c(r,e,(o.proxies||(o.proxies={}))[t.id+\"_\"+e]=function(e){var a,r,o,s;i((r=t,o=u[(a=e).type]||a.type,s=n.getRelativePosition(a,r),g(o,r,s.x,s.y,a)))})}else m(r,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if(\"resize\"!==e){var r=((i[a]||{}).proxies||{})[t.id+\"_\"+e];r&&f(n,e,r)}else p(n)}},n.addEvent=c,n.removeEvent=f},{45:45}],48:[function(t,e,i){\"use strict\";var n=t(45),a=t(46),r=t(47),o=r._enabled?r:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},o)},{45:45,46:46,47:47}],49:[function(t,e,i){\"use strict\";e.exports={},e.exports.filler=t(50),e.exports.legend=t(51),e.exports.title=t(52)},{50:50,51:51,52:52}],50:[function(t,e,i){\"use strict\";var n=t(25),a=t(40),r=t(45);n._set(\"global\",{plugins:{filler:{propagate:!0}}});var o={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],r=a.length||0;return r?function(t,e){return e<r&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function s(t,e,i){var n,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return\"origin\";if(n=parseFloat(r,10),isFinite(n)&&Math.floor(n)===n)return\"-\"!==r[0]&&\"+\"!==r[0]||(n=e+n),!(n===e||n<0||n>=i)&&n;switch(r){case\"bottom\":return\"start\";case\"top\":return\"end\";case\"zero\":return\"origin\";case\"origin\":case\"start\":case\"end\":return r;default:return!1}}function l(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if(\"start\"===a?r=void 0===i.scaleBottom?n.bottom:i.scaleBottom:\"end\"===a?r=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?r=i.scaleZero:n.getBasePosition?r=n.getBasePosition():n.getBasePixel&&(r=n.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if(\"number\"==typeof r&&isFinite(r))return{x:(e=n.isHorizontal())?r:null,y:e?null:r}}return null}function u(t,e,i){var n,a=t[e].fill,r=[e];if(!i)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;r.push(a),a=n.fill}return!1}function d(t){return t&&!t.skip}function h(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)r.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;o>0;--o)r.canvas.lineTo(t,i[o],i[o-1],!0)}}e.exports={id:\"filler\",afterDatasetsUpdate:function(t,e){var i,n,r,d,h,c,f,g=(t.data.datasets||[]).length,m=e.propagate,p=[];for(n=0;n<g;++n)d=null,(r=(i=t.getDatasetMeta(n)).dataset)&&r._model&&r instanceof a.Line&&(d={visible:t.isDatasetVisible(n),fill:s(r,n,g),chart:t,el:r}),i.$filler=d,p.push(d);for(n=0;n<g;++n)(d=p[n])&&(d.fill=u(p,n,m),d.boundary=l(d),d.mapper=(void 0,f=void 0,c=(h=d).fill,f=\"dataset\",!1===c?null:(isFinite(c)||(f=\"boundary\"),o[f](h))))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var a=t.ctx,o=i.el,s=o._view,l=o._children||[],u=i.mapper,c=s.backgroundColor||n.global.defaultColor;u&&c&&l.length&&(r.canvas.clipArea(a,t.chartArea),function(t,e,i,n,a,r){var o,s,l,u,c,f,g,m=e.length,p=n.spanGaps,v=[],y=[],b=0,x=0;for(t.beginPath(),o=0,s=m+!!r;o<s;++o)c=i(u=e[l=o%m]._view,l,n),f=d(u),g=d(c),f&&g?(b=v.push(u),x=y.push(c)):b&&x&&(p?(f&&v.push(u),g&&y.push(c)):(h(t,v,y,b,x),b=x=0,v=[],y=[]));h(t,v,y,b,x),t.closePath(),t.fillStyle=a,t.fill()}(a,l,u,s,c,o._loop),r.canvas.unclipArea(a))}}}},{25:25,40:40,45:45}],51:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(30),s=r.noop;function l(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}n._set(\"global\",{legend:{display:!0,position:\"top\",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return r.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:r.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class=\"'+t.id+'-legend\">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style=\"background-color:'+t.data.datasets[i].backgroundColor+'\"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push(\"</li>\");return e.push(\"</ul>\"),e.join(\"\")}});var u=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},i=r.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,i=e.labels,a=e.display,o=t.ctx,s=n.global,u=r.valueOrDefault,d=u(i.fontSize,s.defaultFontSize),h=u(i.fontStyle,s.defaultFontStyle),c=u(i.fontFamily,s.defaultFontFamily),f=r.fontString(d,h,c),g=t.legendHitBoxes=[],m=t.minSize,p=t.isHorizontal();if(p?(m.width=t.maxWidth,m.height=a?10:0):(m.width=a?10:0,m.height=t.maxHeight),a)if(o.font=f,p){var v=t.lineWidths=[0],y=t.legendItems.length?d+i.padding:0;o.textAlign=\"left\",o.textBaseline=\"top\",r.each(t.legendItems,function(e,n){var a=l(i,d)+d/2+o.measureText(e.text).width;v[v.length-1]+a+i.padding>=t.width&&(y+=d+i.padding,v[v.length]=t.left),g[n]={left:0,top:0,width:a,height:d},v[v.length-1]+=a+i.padding}),m.height+=y}else{var b=i.padding,x=t.columnWidths=[],_=i.padding,k=0,w=0,M=d+b;r.each(t.legendItems,function(t,e){var n=l(i,d)+d/2+o.measureText(t.text).width;w+M>m.height&&(_+=k+i.padding,x.push(k),k=0,w=0),k=Math.max(k,n),w+=M,g[e]={left:0,top:0,width:n,height:d}}),_+=k,x.push(k),m.width+=_}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,a=n.global,o=a.elements.line,s=t.width,u=t.lineWidths;if(e.display){var d,h=t.ctx,c=r.valueOrDefault,f=c(i.fontColor,a.defaultFontColor),g=c(i.fontSize,a.defaultFontSize),m=c(i.fontStyle,a.defaultFontStyle),p=c(i.fontFamily,a.defaultFontFamily),v=r.fontString(g,m,p);h.textAlign=\"left\",h.textBaseline=\"middle\",h.lineWidth=.5,h.strokeStyle=f,h.fillStyle=f,h.font=v;var y=l(i,g),b=t.legendHitBoxes,x=t.isHorizontal();d=x?{x:t.left+(s-u[0])/2,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var _=g+i.padding;r.each(t.legendItems,function(n,l){var f,m,p,v,k,w=h.measureText(n.text).width,M=y+g/2+w,S=d.x,D=d.y;x?S+M>=s&&(D=d.y+=_,d.line++,S=d.x=t.left+(s-u[d.line])/2):D+_>t.bottom&&(S=d.x=S+t.columnWidths[d.line]+i.padding,D=d.y=t.top+i.padding,d.line++),function(t,i,n){if(!(isNaN(y)||y<=0)){h.save(),h.fillStyle=c(n.fillStyle,a.defaultColor),h.lineCap=c(n.lineCap,o.borderCapStyle),h.lineDashOffset=c(n.lineDashOffset,o.borderDashOffset),h.lineJoin=c(n.lineJoin,o.borderJoinStyle),h.lineWidth=c(n.lineWidth,o.borderWidth),h.strokeStyle=c(n.strokeStyle,a.defaultColor);var s=0===c(n.lineWidth,o.borderWidth);if(h.setLineDash&&h.setLineDash(c(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=t+u,f=i+u;r.canvas.drawPoint(h,n.pointStyle,l,d,f)}else s||h.strokeRect(t,i,y,g),h.fillRect(t,i,y,g);h.restore()}}(S,D,n),b[l].left=S,b[l].top=D,f=n,m=w,v=y+(p=g/2)+S,k=D+p,h.fillText(f.text,v,k),f.hidden&&(h.beginPath(),h.lineWidth=2,h.moveTo(v,k),h.lineTo(v+m,k),h.stroke()),x?d.x+=M+i.padding:d.y+=_})}},handleEvent:function(t){var e=this,i=e.options,n=\"mouseup\"===t.type?\"click\":t.type,a=!1;if(\"mousemove\"===n){if(!i.onHover)return}else{if(\"click\"!==n)return;if(!i.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if(\"click\"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if(\"mousemove\"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function d(t,e){var i=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,i,e),o.addBox(t,i),t.legend=i}e.exports={id:\"legend\",_element:u,beforeInit:function(t){var e=t.options.legend;e&&d(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(r.mergeIf(e,n.global.legend),i?(o.configure(t,i,e),i.options=e):d(t,e)):i&&(o.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{25:25,26:26,30:30,45:45}],52:[function(t,e,i){\"use strict\";var n=t(25),a=t(26),r=t(45),o=t(30),s=r.noop;n._set(\"global\",{title:{display:!1,fontStyle:\"bold\",fullWidth:!0,lineHeight:1.2,padding:10,position:\"top\",text:\"\",weight:2e3}});var l=a.extend({initialize:function(t){r.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:s,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:s,afterBuildLabels:s,beforeFit:s,fit:function(){var t=r.valueOrDefault,e=this.options,i=e.display,a=t(e.fontSize,n.global.defaultFontSize),o=this.minSize,s=r.isArray(e.text)?e.text.length:1,l=r.options.toLineHeight(e.lineHeight,a),u=i?s*l+2*e.padding:0;this.isHorizontal()?(o.width=this.maxWidth,o.height=u):(o.width=u,o.height=this.maxHeight),this.width=o.width,this.height=o.height},afterFit:s,isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},draw:function(){var t=this.ctx,e=r.valueOrDefault,i=this.options,a=n.global;if(i.display){var o,s,l,u=e(i.fontSize,a.defaultFontSize),d=e(i.fontStyle,a.defaultFontStyle),h=e(i.fontFamily,a.defaultFontFamily),c=r.fontString(u,d,h),f=r.options.toLineHeight(i.lineHeight,u),g=f/2+i.padding,m=0,p=this.top,v=this.left,y=this.bottom,b=this.right;t.fillStyle=e(i.fontColor,a.defaultFontColor),t.font=c,this.isHorizontal()?(s=v+(b-v)/2,l=p+g,o=b-v):(s=\"left\"===i.position?v+g:b-g,l=p+(y-p)/2,o=y-p,m=Math.PI*(\"left\"===i.position?-.5:.5)),t.save(),t.translate(s,l),t.rotate(m),t.textAlign=\"center\",t.textBaseline=\"middle\";var x=i.text;if(r.isArray(x))for(var _=0,k=0;k<x.length;++k)t.fillText(x[k],0,_,o),_+=f;else t.fillText(x,0,0,o);t.restore()}}});function u(t,e){var i=new l({ctx:t.ctx,options:e,chart:t});o.configure(t,i,e),o.addBox(t,i),t.titleBlock=i}e.exports={id:\"title\",_element:l,beforeInit:function(t){var e=t.options.title;e&&u(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(r.mergeIf(e,n.global.title),i?(o.configure(t,i,e),i.options=e):u(t,e)):i&&(o.removeBox(t,i),delete t.titleBlock)}}},{25:25,26:26,30:30,45:45}],53:[function(t,e,i){\"use strict\";e.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this.getLabels();this.ticks=0===this.minIndex&&this.maxIndex===t.length-1?t:t.slice(this.minIndex,this.maxIndex+1)},getLabelForIndex:function(t,e){var i=this.chart.data,n=this.isHorizontal();return i.yLabels&&!n?this.getRightValue(i.datasets[e].data[t]):this.ticks[t-this.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,r=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var o=n.getLabels().indexOf(t);e=-1!==o?o:e}if(n.isHorizontal()){var s=n.width/r,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+Math.round(l)}var u=n.height/r,d=u*(e-n.minIndex);return a&&(d+=u/2),n.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this.options.offset,i=Math.max(this._ticks.length-(e?0:1),1),n=this.isHorizontal(),a=(n?this.width:this.height)/i;return t-=n?this.left:this.top,e&&(t-=a/2),(t<=0?0:Math.round(t/a))+this.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType(\"category\",e,{position:\"bottom\"})}},{}],54:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(34);e.exports=function(t){var e={position:\"left\",ticks:{callback:r.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,r=t.isHorizontal();function o(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&a.each(n,function(t,e){if(!s){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(s=!0)}}),e.stacked||s){var l={};a.each(n,function(n,r){var s=i.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:\"\",s.stack].join(\".\");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var d=l[u].positiveValues,h=l[u].negativeValues;i.isDatasetVisible(r)&&o(s)&&a.each(n.data,function(i,n){var a=+t.getRightValue(i);isNaN(a)||s.data[n].hidden||(d[n]=d[n]||0,h[n]=h[n]||0,e.relativePoints?d[n]=100:a<0?h[n]+=a:d[n]+=a)})}),a.each(l,function(e){var i=e.positiveValues.concat(e.negativeValues),n=a.min(i),r=a.max(i);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?r:Math.max(t.max,r)})}else a.each(n,function(e,n){var r=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(r)&&a.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||r.data[i].hidden||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=a.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this.start,i=+this.getRightValue(t),n=this.end-e;return this.isHorizontal()?this.left+this.width/n*(i-e):this.bottom-this.height/n*(i-e)},getValueForPixel:function(t){var e=this.isHorizontal(),i=e?this.width:this.height,n=(e?t-this.left:this.bottom-t)/i;return this.start+(this.end-this.start)*n},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType(\"linear\",i,e)}},{25:25,34:34,45:45}],55:[function(t,e,i){\"use strict\";var n=t(45);e.exports=function(t){var e=n.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return\"string\"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=n.sign(t.min),a=n.sign(t.max);i<0&&a<0?t.max=0:i>0&&a>0&&(t.min=0)}var r=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),r!==o&&t.min>=t.max&&(r?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),a={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,stepSize:n.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=function(t,e){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var r=n.niceNum(e.max-e.min,!1);i=n.niceNum(r/(t.maxTicks-1),!0)}var o=Math.floor(e.min/i)*i,s=Math.ceil(e.max/i)*i;t.min&&t.max&&t.stepSize&&n.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(o=t.min,s=t.max);var l=(s-o)/i;l=n.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l);var u=1;i<1&&(u=Math.pow(10,i.toString().length-2),o=Math.round(o*u)/u,s=Math.round(s*u)/u),a.push(void 0!==t.min?t.min:o);for(var d=1;d<l;++d)a.push(Math.round((o+d*i)*u)/u);return a.push(void 0!==t.max?t.max:s),a}(a,t);t.handleDirectionalChanges(),t.max=n.max(r),t.min=n.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.ticksAsNumbers=this.ticks.slice(),this.zeroLineIndex=this.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(this)}})}},{45:45}],56:[function(t,e,i){\"use strict\";var n=t(45),a=t(34);e.exports=function(t){var e={position:\"left\",ticks:{callback:a.formatters.logarithmic}},i=t.Scale.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,a=i.data.datasets,r=t.isHorizontal();function o(e){return r?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&n.each(a,function(t,e){if(!s){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(s=!0)}}),e.stacked||s){var l={};n.each(a,function(a,r){var s=i.getDatasetMeta(r),u=[s.type,void 0===e.stacked&&void 0===s.stack?r:\"\",s.stack].join(\".\");i.isDatasetVisible(r)&&o(s)&&(void 0===l[u]&&(l[u]=[]),n.each(a.data,function(e,i){var n=l[u],a=+t.getRightValue(e);isNaN(a)||s.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),n.each(l,function(e){if(e.length>0){var i=n.min(e),a=n.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?a:Math.max(t.max,a)}})}else n.each(a,function(e,a){var r=i.getDatasetMeta(a);i.isDatasetVisible(a)&&o(r)&&n.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||r.data[i].hidden||n<0||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n),0!==n&&(null===t.minNotZero||n<t.minNotZero)&&(t.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,i=n.valueOrDefault;t.min=i(e.min,t.min),t.max=i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(n.log10(t.min))-1),t.max=Math.pow(10,Math.floor(n.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(n.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(n.log10(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(n.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),a={min:e.min,max:e.max},r=t.ticks=function(t,e){var i,a,r=[],o=n.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(n.log10(e.min)))),l=Math.floor(n.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(i=Math.floor(n.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,i)),r.push(s),s=a*Math.pow(10,i)):(i=Math.floor(n.log10(s)),a=Math.floor(s/Math.pow(10,i)));for(var d=i<0?Math.pow(10,Math.abs(i)):1;r.push(s),10==++a&&(a=1,d=++i>=0?1:d),s=Math.round(a*Math.pow(10,i)*d)/d,i<l||i===l&&a<u;);var h=o(t.max,s);return r.push(h),r}(a,t);t.max=n.max(r),t.min=n.min(r),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&r.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(n.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(e){var i,a,r,o,s,l=this,u=l.options.ticks.reverse,d=n.log10,h=l._getFirstTickValue(l.minNotZero),c=0;return e=+l.getRightValue(e),u?(r=l.end,o=l.start,s=-1):(r=l.start,o=l.end,s=1),l.isHorizontal()?(i=l.width,a=u?l.right:l.left):(i=l.height,s*=-1,a=u?l.top:l.bottom),e!==r&&(0===r&&(i-=c=n.getValueOrDefault(l.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=h),0!==e&&(c+=i/(d(o)-d(r))*(d(e)-d(r))),a+=s*c),a},getValueForPixel:function(e){var i,a,r,o,s=this,l=s.options.ticks.reverse,u=n.log10,d=s._getFirstTickValue(s.minNotZero);if(l?(a=s.end,r=s.start):(a=s.start,r=s.end),s.isHorizontal()?(i=s.width,o=l?s.right-e:e-s.left):(i=s.height,o=l?e-s.top:s.bottom-e),o!==a){if(0===a){var h=n.getValueOrDefault(s.options.ticks.fontSize,t.defaults.global.defaultFontSize);o-=h,i-=h,a=d}o*=u(r)-u(a),o/=i,o=Math.pow(10,u(a)+o)}return o}});t.scaleService.registerScaleType(\"logarithmic\",i,e)}},{34:34,45:45}],57:[function(t,e,i){\"use strict\";var n=t(25),a=t(45),r=t(34);e.exports=function(t){var e=n.global,i={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,color:\"rgba(0, 0, 0, 0.1)\",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:\"rgba(255,255,255,0.75)\",backdropPaddingY:2,backdropPaddingX:2,callback:r.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function o(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function s(t){var i=t.options.pointLabels,n=a.valueOrDefault(i.fontSize,e.defaultFontSize),r=a.valueOrDefault(i.fontStyle,e.defaultFontStyle),o=a.valueOrDefault(i.fontFamily,e.defaultFontFamily);return{size:n,style:r,family:o,font:a.fontString(n,r,o)}}function l(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||t>a?{start:e-i-5,end:e}:{start:e,end:e+i+5}}function u(t,e,i,n){if(a.isArray(e))for(var r=i.y,o=1.5*n,s=0;s<e.length;++s)t.fillText(e[s],i.x,r),r+=o;else t.fillText(e,i.x,i.y)}function d(t){return a.isNumber(t)?t:0}var h=t.LinearScaleBase.extend({setDimensions:function(){var t=this,i=t.options,n=i.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var r=a.min([t.height,t.width]),o=a.valueOrDefault(n.fontSize,e.defaultFontSize);t.drawingArea=i.display?r/2-(o/2+n.backdropPaddingY):r/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(r,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);a.each(r.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||s.data[a].hidden||(i=Math.min(r,i),n=Math.max(r,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,i=a.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*i)))},convertTicksToLabels:function(){t.LinearScaleBase.prototype.convertTicksToLabels.call(this),this.pointLabels=this.chart.data.labels.map(this.options.pointLabels.callback,this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e;this.options.pointLabels.display?function(t){var e,i,n,r=s(t),u=Math.min(t.height/2,t.width/2),d={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=r.font,t._pointLabelSizes=[];var c,f,g,m=o(t);for(e=0;e<m;e++){n=t.getPointPosition(e,u),c=t.ctx,f=r.size,g=t.pointLabels[e]||\"\",i=a.isArray(g)?{w:a.longestText(c,c.font,g),h:g.length*f+1.5*(g.length-1)*f}:{w:c.measureText(g).width,h:f},t._pointLabelSizes[e]=i;var p=t.getIndexAngle(e),v=a.toDegrees(p)%360,y=l(v,n.x,i.w,0,180),b=l(v,n.y,i.h,90,270);y.start<d.l&&(d.l=y.start,h.l=p),y.end>d.r&&(d.r=y.end,h.r=p),b.start<d.t&&(d.t=b.start,h.t=p),b.end>d.b&&(d.b=b.end,h.b=p)}t.setReductions(u,d,h)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),o=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=d(n),a=d(a),r=d(r),o=d(o),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(r+o)/2)),this.setCenterPoint(n,a,r,o)},setCenterPoint:function(t,e,i,n){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((o+r)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/o(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){if(null===t)return 0;var e=this.drawingArea/(this.max-this.min);return this.options.ticks.reverse?(this.max-t)*e:(t-this.min)*e},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,i=t.options,n=i.gridLines,r=i.ticks,l=a.valueOrDefault;if(i.display){var d=t.ctx,h=this.getIndexAngle(0),c=l(r.fontSize,e.defaultFontSize),f=l(r.fontStyle,e.defaultFontStyle),g=l(r.fontFamily,e.defaultFontFamily),m=a.fontString(c,f,g);a.each(t.ticks,function(i,s){if(s>0||r.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(n.display&&0!==s&&function(t,e,i,n){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(e.color,n-1),r.lineWidth=a.valueAtIndexOrDefault(e.lineWidth,n-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var s=o(t);if(0===s)return;r.beginPath();var l=t.getPointPosition(0,i);r.moveTo(l.x,l.y);for(var u=1;u<s;u++)l=t.getPointPosition(u,i),r.lineTo(l.x,l.y);r.closePath(),r.stroke()}}(t,n,u,s),r.display){var f=l(r.fontColor,e.defaultFontColor);if(d.font=m,d.save(),d.translate(t.xCenter,t.yCenter),d.rotate(h),r.showLabelBackdrop){var g=d.measureText(i).width;d.fillStyle=r.backdropColor,d.fillRect(-g/2-r.backdropPaddingX,-u-c/2-r.backdropPaddingY,g+2*r.backdropPaddingX,c+2*r.backdropPaddingY)}d.textAlign=\"center\",d.textBaseline=\"middle\",d.fillStyle=f,d.fillText(i,0,-u),d.restore()}}}),(i.angleLines.display||i.pointLabels.display)&&function(t){var i=t.ctx,n=t.options,r=n.angleLines,l=n.pointLabels;i.lineWidth=r.lineWidth,i.strokeStyle=r.color;var d,h,c,f,g=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),m=s(t);i.textBaseline=\"top\";for(var p=o(t)-1;p>=0;p--){if(r.display){var v=t.getPointPosition(p,g);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(v.x,v.y),i.stroke(),i.closePath()}if(l.display){var y=t.getPointPosition(p,g+5),b=a.valueAtIndexOrDefault(l.fontColor,p,e.defaultFontColor);i.font=m.font,i.fillStyle=b;var x=t.getIndexAngle(p),_=a.toDegrees(x);i.textAlign=0===(f=_)||180===f?\"center\":f<180?\"left\":\"right\",d=_,h=t._pointLabelSizes[p],c=y,90===d||270===d?c.y-=h.h/2:(d>270||d<90)&&(c.y-=h.h),u(i,t.pointLabels[p]||\"\",y,m.size)}}}(t)}}});t.scaleService.registerScaleType(\"radialLinear\",h,i)}},{25:25,34:34,45:45}],58:[function(t,e,i){\"use strict\";var n=t(6);n=\"function\"==typeof n?n:window.moment;var a=t(25),r=t(45),o=Number.MIN_SAFE_INTEGER||-9007199254740991,s=Number.MAX_SAFE_INTEGER||9007199254740991,l={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},u=Object.keys(l);function d(t,e){return t-e}function h(t){var e,i,n,a={},r=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,r.push(n));return r}function c(t,e,i,n){var a=function(t,e,i){for(var n,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(n=o+s>>1)-1]||null,r=t[n],!a)return{lo:null,hi:r};if(r[e]<i)o=n+1;else{if(!(a[e]>i))return{lo:a,hi:r};s=n-1}}return{lo:r,hi:null}}(t,e,i),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(i-r[e])/s:0,u=(o[n]-r[n])*l;return r[n]+u}function f(t,e){var i=e.parser,a=e.parser||e.format;return\"function\"==typeof i?i(t):\"string\"==typeof t&&\"string\"==typeof a?n(t,a):(t instanceof n||(t=n(t)),t.isValid()?t:\"function\"==typeof a?a(t):t)}function g(t,e){if(r.isNullOrUndef(t))return null;var i=e.options.time,n=f(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function m(t){for(var e=u.indexOf(t)+1,i=u.length;e<i;++e)if(l[u[e]].common)return u[e]}function p(t,e,i,a){var o,d=a.time,h=d.unit||function(t,e,i,n){var a,r,o,d=u.length;for(a=u.indexOf(t);a<d-1;++a)if(o=(r=l[u[a]]).steps?r.steps[r.steps.length-1]:s,r.common&&Math.ceil((i-e)/(o*r.size))<=n)return u[a];return u[d-1]}(d.minUnit,t,e,i),c=m(h),f=r.valueOrDefault(d.stepSize,d.unitStepSize),g=\"week\"===h&&d.isoWeekday,p=a.ticks.major.enabled,v=l[h],y=n(t),b=n(e),x=[];for(f||(f=function(t,e,i,n){var a,r,o,s=e-t,u=l[i],d=u.size,h=u.steps;if(!h)return Math.ceil(s/(n*d));for(a=0,r=h.length;a<r&&(o=h[a],!(Math.ceil(s/(d*o))<=n));++a);return o}(t,e,h,i)),g&&(y=y.isoWeekday(g),b=b.isoWeekday(g)),y=y.startOf(g?\"day\":h),(b=b.startOf(g?\"day\":h))<e&&b.add(1,h),o=n(y),p&&c&&!g&&!d.round&&(o.startOf(c),o.add(~~((y-o)/(v.size*f))*f,h));o<b;o.add(f,h))x.push(+o);return x.push(+o),x}e.exports=function(t){var e=t.Scale.extend({initialize:function(){if(!n)throw new Error(\"Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com\");this.mergeTicksOptions(),t.Scale.prototype.initialize.call(this)},update:function(){var e=this.options;return e.time&&e.time.format&&console.warn(\"options.time.format is deprecated and replaced by options.time.parser.\"),t.Scale.prototype.update.apply(this,arguments)},getRightValue:function(e){return e&&void 0!==e.t&&(e=e.t),t.Scale.prototype.getRightValue.call(this,e)},determineDataLimits:function(){var t,e,i,a,l,u,c=this,f=c.chart,m=c.options.time,p=m.unit||\"day\",v=s,y=o,b=[],x=[],_=[];for(t=0,i=f.data.labels.length;t<i;++t)_.push(g(f.data.labels[t],c));for(t=0,i=(f.data.datasets||[]).length;t<i;++t)if(f.isDatasetVisible(t))if(l=f.data.datasets[t].data,r.isObject(l[0]))for(x[t]=[],e=0,a=l.length;e<a;++e)u=g(l[e],c),b.push(u),x[t][e]=u;else b.push.apply(b,_),x[t]=_.slice(0);else x[t]=[];_.length&&(_=h(_).sort(d),v=Math.min(v,_[0]),y=Math.max(y,_[_.length-1])),b.length&&(b=h(b).sort(d),v=Math.min(v,b[0]),y=Math.max(y,b[b.length-1])),v=g(m.min,c)||v,y=g(m.max,c)||y,v=v===s?+n().startOf(p):v,y=y===o?+n().endOf(p)+1:y,c.min=Math.min(v,y),c.max=Math.max(v+1,y),c._horizontal=c.isHorizontal(),c._table=[],c._timestamps={data:b,datasets:x,labels:_}},buildTicks:function(){var t,e,i,a,r,o,s,d,h,v,y,b,x=this,_=x.min,k=x.max,w=x.options,M=w.time,S=[],D=[];switch(w.ticks.source){case\"data\":S=x._timestamps.data;break;case\"labels\":S=x._timestamps.labels;break;case\"auto\":default:S=p(_,k,x.getLabelCapacity(_),w)}for(\"ticks\"===w.bounds&&S.length&&(_=S[0],k=S[S.length-1]),_=g(M.min,x)||_,k=g(M.max,x)||k,t=0,e=S.length;t<e;++t)(i=S[t])>=_&&i<=k&&D.push(i);return x.min=_,x.max=k,x._unit=M.unit||function(t,e,i,a){var r,o,s=n.duration(n(a).diff(n(i)));for(r=u.length-1;r>=u.indexOf(e);r--)if(o=u[r],l[o].common&&s.as(o)>=t.length)return o;return u[e?u.indexOf(e):0]}(D,M.minUnit,x.min,x.max),x._majorUnit=m(x._unit),x._table=function(t,e,i,n){if(\"linear\"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,r,o,s,l,u=[],d=[e];for(a=0,r=t.length;a<r;++a)(s=t[a])>e&&s<i&&d.push(s);for(d.push(i),a=0,r=d.length;a<r;++a)l=d[a+1],o=d[a-1],s=d[a],void 0!==o&&void 0!==l&&Math.round((l+o)/2)===s||u.push({time:s,pos:a/(r-1)});return u}(x._timestamps.data,_,k,w.distribution),x._offsets=(a=x._table,r=D,o=_,s=k,y=0,b=0,(d=w).offset&&r.length&&(d.time.min||(h=r.length>1?r[1]:s,v=r[0],y=(c(a,\"time\",h,\"pos\")-c(a,\"time\",v,\"pos\"))/2),d.time.max||(h=r[r.length-1],v=r.length>1?r[r.length-2]:o,b=(c(a,\"time\",h,\"pos\")-c(a,\"time\",v,\"pos\"))/2)),{left:y,right:b}),x._labelFormat=function(t,e){var i,n,a,r=t.length;for(i=0;i<r;i++){if(0!==(n=f(t[i],e)).millisecond())return\"MMM D, YYYY h:mm:ss.SSS a\";0===n.second()&&0===n.minute()&&0===n.hour()||(a=!0)}return a?\"MMM D, YYYY h:mm:ss a\":\"MMM D, YYYY\"}(x._timestamps.data,M),function(t,e){var i,a,r,o,s=[];for(i=0,a=t.length;i<a;++i)r=t[i],o=!!e&&r===+n(r).startOf(e),s.push({value:r,major:o});return s}(D,x._majorUnit)},getLabelForIndex:function(t,e){var i=this.chart.data,n=this.options.time,a=i.labels&&t<i.labels.length?i.labels[t]:\"\",o=i.datasets[e].data[t];return r.isObject(o)&&(a=this.getRightValue(o)),n.tooltipFormat?f(a,n).format(n.tooltipFormat):\"string\"==typeof a?a:f(a,n).format(this._labelFormat)},tickFormatFunction:function(t,e,i,n){var a=this.options,o=t.valueOf(),s=a.time.displayFormats,l=s[this._unit],u=this._majorUnit,d=s[u],h=t.clone().startOf(u).valueOf(),c=a.ticks.major,f=c.enabled&&u&&d&&o===h,g=t.format(n||(f?d:l)),m=f?c:a.ticks.minor,p=r.valueOrDefault(m.callback,m.userCallback);return p?p(g,e,i):g},convertTicksToLabels:function(t){var e,i,a=[];for(e=0,i=t.length;e<i;++e)a.push(this.tickFormatFunction(n(t[e].value),e,t));return a},getPixelForOffset:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=c(e._table,\"time\",t,\"pos\");return n+i*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=g(t,this)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,a=e._horizontal?e.left:e.top,r=(i?(t-a)/i:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=c(e._table,\"pos\",r,\"time\");return n(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=r.toRadians(e.maxRotation),o=Math.cos(n),s=Math.sin(n);return i*o+r.valueOrDefault(e.fontSize,a.global.defaultFontSize)*s},getLabelCapacity:function(t){var e=this.options.time.displayFormats.millisecond,i=this.tickFormatFunction(n(t),0,[],e),a=this.getLabelWidth(i),r=this.isHorizontal()?this.width:this.height,o=Math.floor(r/a);return o>0?o:1}});t.scaleService.registerScaleType(\"time\",e,{position:\"bottom\",distribution:\"linear\",bounds:\"data\",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{millisecond:\"h:mm:ss.SSS a\",second:\"h:mm:ss a\",minute:\"h:mm a\",hour:\"hA\",day:\"MMM D\",week:\"ll\",month:\"MMM YYYY\",quarter:\"[Q]Q - YYYY\",year:\"YYYY\"}},ticks:{autoSkip:!1,source:\"auto\",major:{enabled:!1}}})}},{25:25,45:45,6:6}]},{},[7])(7)});"),
71
        }
72
        file8 := &embedded.EmbeddedFile{
73
                Filename:    "bootstrap.min.js",
74
                FileModTime: time.Unix(1528732500, 0),
75
                Content:     string("/*!\n  * Bootstrap v4.1.0 (https://getbootstrap.com/)\n  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n  */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"jquery\"),require(\"popper.js\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"jquery\",\"popper.js\"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,c){\"use strict\";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function o(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function h(r){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{},e=Object.keys(s);\"function\"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(s).filter(function(t){return Object.getOwnPropertyDescriptor(s,t).enumerable}))),e.forEach(function(t){var e,n,i;e=r,i=s[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return r}e=e&&e.hasOwnProperty(\"default\")?e.default:e,c=c&&c.hasOwnProperty(\"default\")?c.default:c;var r,n,s,a,l,u,f,d,_,g,m,p,v,E,y,T,C,I,A,D,b,S,w,N,O,k,P,L,j,R,H,W,M,x,U,K,F,V,Q,B,Y,G,q,z,X,J,Z,$,tt,et,nt,it,rt,st,ot,at,lt,ht,ct,ut,ft,dt,_t,gt,mt,pt,vt,Et,yt,Tt,Ct,It,At,Dt,bt,St,wt,Nt,Ot,kt,Pt,Lt,jt,Rt,Ht,Wt,Mt,xt,Ut,Kt,Ft,Vt,Qt,Bt,Yt,Gt,qt,zt,Xt,Jt,Zt,$t,te,ee,ne,ie,re,se,oe,ae,le,he,ce,ue,fe,de,_e,ge,me,pe,ve,Ee,ye,Te,Ce,Ie,Ae,De,be,Se,we,Ne,Oe,ke,Pe,Le,je,Re,He,We,Me,xe,Ue,Ke,Fe,Ve,Qe,Be,Ye,Ge,qe,ze,Xe,Je,Ze,$e,tn,en,nn,rn,sn,on,an,ln,hn,cn,un,fn,dn,_n,gn,mn,pn,vn,En,yn,Tn,Cn=function(i){var e=\"transitionend\";function t(t){var e=this,n=!1;return i(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(e)},t),this}var l={TRANSITION_END:\"bsTransitionEnd\",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute(\"data-target\");e&&\"#\"!==e||(e=t.getAttribute(\"href\")||\"\");try{return 0<i(document).find(e).length?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=i(t).css(\"transition-duration\");return parseFloat(e)?(e=e.split(\",\")[0],1e3*parseFloat(e)):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){i(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var r=n[i],s=e[i],o=s&&l.isElement(s)?\"element\":(a=s,{}.toString.call(a).match(/\\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(r).test(o))throw new Error(t.toUpperCase()+': Option \"'+i+'\" provided type \"'+o+'\" but expected type \"'+r+'\".')}var a}};return i.fn.emulateTransitionEnd=t,i.event.special[l.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(i(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}},l}(e),In=(n=\"alert\",a=\".\"+(s=\"bs.alert\"),l=(r=e).fn[n],u={CLOSE:\"close\"+a,CLOSED:\"closed\"+a,CLICK_DATA_API:\"click\"+a+\".data-api\"},f=\"alert\",d=\"fade\",_=\"show\",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){r.removeData(this._element,s),this._element=null},t._getRootElement=function(t){var e=Cn.getSelectorFromElement(t),n=!1;return e&&(n=r(e)[0]),n||(n=r(t).closest(\".\"+f)[0]),n},t._triggerCloseEvent=function(t){var e=r.Event(u.CLOSE);return r(t).trigger(e),e},t._removeElement=function(e){var n=this;if(r(e).removeClass(_),r(e).hasClass(d)){var t=Cn.getTransitionDurationFromElement(e);r(e).one(Cn.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){r(t).detach().trigger(u.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=r(this),e=t.data(s);e||(e=new i(this),t.data(s,e)),\"close\"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),i}(),r(document).on(u.CLICK_DATA_API,'[data-dismiss=\"alert\"]',g._handleDismiss(new g)),r.fn[n]=g._jQueryInterface,r.fn[n].Constructor=g,r.fn[n].noConflict=function(){return r.fn[n]=l,g._jQueryInterface},g),An=(p=\"button\",E=\".\"+(v=\"bs.button\"),y=\".data-api\",T=(m=e).fn[p],C=\"active\",I=\"btn\",D='[data-toggle^=\"button\"]',b='[data-toggle=\"buttons\"]',S=\"input\",w=\".active\",N=\".btn\",O={CLICK_DATA_API:\"click\"+E+y,FOCUS_BLUR_DATA_API:(A=\"focus\")+E+y+\" blur\"+E+y},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=m(this._element).closest(b)[0];if(n){var i=m(this._element).find(S)[0];if(i){if(\"radio\"===i.type)if(i.checked&&m(this._element).hasClass(C))t=!1;else{var r=m(n).find(w)[0];r&&m(r).removeClass(C)}if(t){if(i.hasAttribute(\"disabled\")||n.hasAttribute(\"disabled\")||i.classList.contains(\"disabled\")||n.classList.contains(\"disabled\"))return;i.checked=!m(this._element).hasClass(C),m(i).trigger(\"change\")}i.focus(),e=!1}}e&&this._element.setAttribute(\"aria-pressed\",!m(this._element).hasClass(C)),t&&m(this._element).toggleClass(C)},t.dispose=function(){m.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=m(this).data(v);t||(t=new n(this),m(this).data(v,t)),\"toggle\"===e&&t[e]()})},o(n,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),n}(),m(document).on(O.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;m(e).hasClass(I)||(e=m(e).closest(N)),k._jQueryInterface.call(m(e),\"toggle\")}).on(O.FOCUS_BLUR_DATA_API,D,function(t){var e=m(t.target).closest(N)[0];m(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),m.fn[p]=k._jQueryInterface,m.fn[p].Constructor=k,m.fn[p].noConflict=function(){return m.fn[p]=T,k._jQueryInterface},k),Dn=(L=\"carousel\",R=\".\"+(j=\"bs.carousel\"),H=\".data-api\",W=(P=e).fn[L],M={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0},x={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\"},U=\"next\",K=\"prev\",F=\"left\",V=\"right\",Q={SLIDE:\"slide\"+R,SLID:\"slid\"+R,KEYDOWN:\"keydown\"+R,MOUSEENTER:\"mouseenter\"+R,MOUSELEAVE:\"mouseleave\"+R,TOUCHEND:\"touchend\"+R,LOAD_DATA_API:\"load\"+R+H,CLICK_DATA_API:\"click\"+R+H},B=\"carousel\",Y=\"active\",G=\"slide\",q=\"carousel-item-right\",z=\"carousel-item-left\",X=\"carousel-item-next\",J=\"carousel-item-prev\",Z={ACTIVE:\".active\",ACTIVE_ITEM:\".active.carousel-item\",ITEM:\".carousel-item\",NEXT_PREV:\".carousel-item-next, .carousel-item-prev\",INDICATORS:\".carousel-indicators\",DATA_SLIDE:\"[data-slide], [data-slide-to]\",DATA_RIDE:'[data-ride=\"carousel\"]'},$=function(){function s(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(e),this._element=P(t)[0],this._indicatorsElement=P(this._element).find(Z.INDICATORS)[0],this._addEventListeners()}var t=s.prototype;return t.next=function(){this._isSliding||this._slide(U)},t.nextWhenVisible=function(){!document.hidden&&P(this._element).is(\":visible\")&&\"hidden\"!==P(this._element).css(\"visibility\")&&this.next()},t.prev=function(){this._isSliding||this._slide(K)},t.pause=function(t){t||(this._isPaused=!0),P(this._element).find(Z.NEXT_PREV)[0]&&(Cn.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=P(this._element).find(Z.ACTIVE_ITEM)[0];var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?U:K;this._slide(i,this._items[t])}},t.dispose=function(){P(this._element).off(R),P.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=h({},M,t),Cn.typeCheckConfig(L,t,x),t},t._addEventListeners=function(){var e=this;this._config.keyboard&&P(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),\"hover\"===this._config.pause&&(P(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),\"ontouchstart\"in document.documentElement&&P(this._element).on(Q.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=P.makeArray(P(t).parent().find(Z.ITEM)),this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===U,i=t===K,r=this._getItemIndex(e),s=this._items.length-1;if((i&&0===r||n&&r===s)&&!this._config.wrap)return e;var o=(r+(t===K?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(P(this._element).find(Z.ACTIVE_ITEM)[0]),r=P.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return P(this._element).trigger(r),r},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){P(this._indicatorsElement).find(Z.ACTIVE).removeClass(Y);var e=this._indicatorsElement.children[this._getItemIndex(t)];e&&P(e).addClass(Y)}},t._slide=function(t,e){var n,i,r,s=this,o=P(this._element).find(Z.ACTIVE_ITEM)[0],a=this._getItemIndex(o),l=e||o&&this._getItemByDirection(t,o),h=this._getItemIndex(l),c=Boolean(this._interval);if(t===U?(n=z,i=X,r=F):(n=q,i=J,r=V),l&&P(l).hasClass(Y))this._isSliding=!1;else if(!this._triggerSlideEvent(l,r).isDefaultPrevented()&&o&&l){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(l);var u=P.Event(Q.SLID,{relatedTarget:l,direction:r,from:a,to:h});if(P(this._element).hasClass(G)){P(l).addClass(i),Cn.reflow(l),P(o).addClass(n),P(l).addClass(n);var f=Cn.getTransitionDurationFromElement(o);P(o).one(Cn.TRANSITION_END,function(){P(l).removeClass(n+\" \"+i).addClass(Y),P(o).removeClass(Y+\" \"+i+\" \"+n),s._isSliding=!1,setTimeout(function(){return P(s._element).trigger(u)},0)}).emulateTransitionEnd(f)}else P(o).removeClass(Y),P(l).addClass(Y),this._isSliding=!1,P(this._element).trigger(u);c&&this.cycle()}},s._jQueryInterface=function(i){return this.each(function(){var t=P(this).data(j),e=h({},M,P(this).data());\"object\"==typeof i&&(e=h({},e,i));var n=\"string\"==typeof i?i:e.slide;if(t||(t=new s(this,e),P(this).data(j,t)),\"number\"==typeof i)t.to(i);else if(\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},s._dataApiClickHandler=function(t){var e=Cn.getSelectorFromElement(this);if(e){var n=P(e)[0];if(n&&P(n).hasClass(B)){var i=h({},P(n).data(),P(this).data()),r=this.getAttribute(\"data-slide-to\");r&&(i.interval=!1),s._jQueryInterface.call(P(n),i),r&&P(n).data(j).to(r),t.preventDefault()}}},o(s,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return M}}]),s}(),P(document).on(Q.CLICK_DATA_API,Z.DATA_SLIDE,$._dataApiClickHandler),P(window).on(Q.LOAD_DATA_API,function(){P(Z.DATA_RIDE).each(function(){var t=P(this);$._jQueryInterface.call(t,t.data())})}),P.fn[L]=$._jQueryInterface,P.fn[L].Constructor=$,P.fn[L].noConflict=function(){return P.fn[L]=W,$._jQueryInterface},$),bn=(et=\"collapse\",it=\".\"+(nt=\"bs.collapse\"),rt=(tt=e).fn[et],st={toggle:!0,parent:\"\"},ot={toggle:\"boolean\",parent:\"(string|element)\"},at={SHOW:\"show\"+it,SHOWN:\"shown\"+it,HIDE:\"hide\"+it,HIDDEN:\"hidden\"+it,CLICK_DATA_API:\"click\"+it+\".data-api\"},lt=\"show\",ht=\"collapse\",ct=\"collapsing\",ut=\"collapsed\",ft=\"width\",dt=\"height\",_t={ACTIVES:\".show, .collapsing\",DATA_TOGGLE:'[data-toggle=\"collapse\"]'},gt=function(){function a(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=tt.makeArray(tt('[data-toggle=\"collapse\"][href=\"#'+t.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+t.id+'\"]'));for(var n=tt(_t.DATA_TOGGLE),i=0;i<n.length;i++){var r=n[i],s=Cn.getSelectorFromElement(r);null!==s&&0<tt(s).filter(t).length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){tt(this._element).hasClass(lt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!tt(this._element).hasClass(lt)&&(this._parent&&0===(t=tt.makeArray(tt(this._parent).find(_t.ACTIVES).filter('[data-parent=\"'+this._config.parent+'\"]'))).length&&(t=null),!(t&&(e=tt(t).not(this._selector).data(nt))&&e._isTransitioning))){var i=tt.Event(at.SHOW);if(tt(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(tt(t).not(this._selector),\"hide\"),e||tt(t).data(nt,null));var r=this._getDimension();tt(this._element).removeClass(ht).addClass(ct),(this._element.style[r]=0)<this._triggerArray.length&&tt(this._triggerArray).removeClass(ut).attr(\"aria-expanded\",!0),this.setTransitioning(!0);var s=\"scroll\"+(r[0].toUpperCase()+r.slice(1)),o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){tt(n._element).removeClass(ct).addClass(ht).addClass(lt),n._element.style[r]=\"\",n.setTransitioning(!1),tt(n._element).trigger(at.SHOWN)}).emulateTransitionEnd(o),this._element.style[r]=this._element[s]+\"px\"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&tt(this._element).hasClass(lt)){var e=tt.Event(at.HIDE);if(tt(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();if(this._element.style[n]=this._element.getBoundingClientRect()[n]+\"px\",Cn.reflow(this._element),tt(this._element).addClass(ct).removeClass(ht).removeClass(lt),0<this._triggerArray.length)for(var i=0;i<this._triggerArray.length;i++){var r=this._triggerArray[i],s=Cn.getSelectorFromElement(r);if(null!==s)tt(s).hasClass(lt)||tt(r).addClass(ut).attr(\"aria-expanded\",!1)}this.setTransitioning(!0);this._element.style[n]=\"\";var o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){t.setTransitioning(!1),tt(t._element).removeClass(ct).addClass(ht).trigger(at.HIDDEN)}).emulateTransitionEnd(o)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){tt.removeData(this._element,nt),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=h({},st,t)).toggle=Boolean(t.toggle),Cn.typeCheckConfig(et,t,ot),t},t._getDimension=function(){return tt(this._element).hasClass(ft)?ft:dt},t._getParent=function(){var n=this,t=null;Cn.isElement(this._config.parent)?(t=this._config.parent,\"undefined\"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=tt(this._config.parent)[0];var e='[data-toggle=\"collapse\"][data-parent=\"'+this._config.parent+'\"]';return tt(t).find(e).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){if(t){var n=tt(t).hasClass(lt);0<e.length&&tt(e).toggleClass(ut,!n).attr(\"aria-expanded\",n)}},a._getTargetFromElement=function(t){var e=Cn.getSelectorFromElement(t);return e?tt(e)[0]:null},a._jQueryInterface=function(i){return this.each(function(){var t=tt(this),e=t.data(nt),n=h({},st,t.data(),\"object\"==typeof i&&i);if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(nt,e)),\"string\"==typeof i){if(\"undefined\"==typeof e[i])throw new TypeError('No method named \"'+i+'\"');e[i]()}})},o(a,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return st}}]),a}(),tt(document).on(at.CLICK_DATA_API,_t.DATA_TOGGLE,function(t){\"A\"===t.currentTarget.tagName&&t.preventDefault();var n=tt(this),e=Cn.getSelectorFromElement(this);tt(e).each(function(){var t=tt(this),e=t.data(nt)?\"toggle\":n.data();gt._jQueryInterface.call(t,e)})}),tt.fn[et]=gt._jQueryInterface,tt.fn[et].Constructor=gt,tt.fn[et].noConflict=function(){return tt.fn[et]=rt,gt._jQueryInterface},gt),Sn=(pt=\"dropdown\",Et=\".\"+(vt=\"bs.dropdown\"),yt=\".data-api\",Tt=(mt=e).fn[pt],Ct=new RegExp(\"38|40|27\"),It={HIDE:\"hide\"+Et,HIDDEN:\"hidden\"+Et,SHOW:\"show\"+Et,SHOWN:\"shown\"+Et,CLICK:\"click\"+Et,CLICK_DATA_API:\"click\"+Et+yt,KEYDOWN_DATA_API:\"keydown\"+Et+yt,KEYUP_DATA_API:\"keyup\"+Et+yt},At=\"disabled\",Dt=\"show\",bt=\"dropup\",St=\"dropright\",wt=\"dropleft\",Nt=\"dropdown-menu-right\",Ot=\"position-static\",kt='[data-toggle=\"dropdown\"]',Pt=\".dropdown form\",Lt=\".dropdown-menu\",jt=\".navbar-nav\",Rt=\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",Ht=\"top-start\",Wt=\"top-end\",Mt=\"bottom-start\",xt=\"bottom-end\",Ut=\"right-start\",Kt=\"left-start\",Ft={offset:0,flip:!0,boundary:\"scrollParent\",reference:\"toggle\",display:\"dynamic\"},Vt={offset:\"(number|string|function)\",flip:\"boolean\",boundary:\"(string|element)\",reference:\"(string|element)\",display:\"string\"},Qt=function(){function l(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=l.prototype;return t.toggle=function(){if(!this._element.disabled&&!mt(this._element).hasClass(At)){var t=l._getParentFromElement(this._element),e=mt(this._menu).hasClass(Dt);if(l._clearMenus(),!e){var n={relatedTarget:this._element},i=mt.Event(It.SHOW,n);if(mt(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if(\"undefined\"==typeof c)throw new TypeError(\"Bootstrap dropdown require Popper.js (https://popper.js.org)\");var r=this._element;\"parent\"===this._config.reference?r=t:Cn.isElement(this._config.reference)&&(r=this._config.reference,\"undefined\"!=typeof this._config.reference.jquery&&(r=this._config.reference[0])),\"scrollParent\"!==this._config.boundary&&mt(t).addClass(Ot),this._popper=new c(r,this._menu,this._getPopperConfig())}\"ontouchstart\"in document.documentElement&&0===mt(t).closest(jt).length&&mt(document.body).children().on(\"mouseover\",null,mt.noop),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),mt(this._menu).toggleClass(Dt),mt(t).toggleClass(Dt).trigger(mt.Event(It.SHOWN,n))}}}},t.dispose=function(){mt.removeData(this._element,vt),mt(this._element).off(Et),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;mt(this._element).on(It.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=h({},this.constructor.Default,mt(this._element).data(),t),Cn.typeCheckConfig(pt,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=l._getParentFromElement(this._element);this._menu=mt(t).find(Lt)[0]}return this._menu},t._getPlacement=function(){var t=mt(this._element).parent(),e=Mt;return t.hasClass(bt)?(e=Ht,mt(this._menu).hasClass(Nt)&&(e=Wt)):t.hasClass(St)?e=Ut:t.hasClass(wt)?e=Kt:mt(this._menu).hasClass(Nt)&&(e=xt),e},t._detectNavbar=function(){return 0<mt(this._element).closest(\".navbar\").length},t._getPopperConfig=function(){var e=this,t={};\"function\"==typeof this._config.offset?t.fn=function(t){return t.offsets=h({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return\"static\"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},l._jQueryInterface=function(e){return this.each(function(){var t=mt(this).data(vt);if(t||(t=new l(this,\"object\"==typeof e?e:null),mt(this).data(vt,t)),\"string\"==typeof e){if(\"undefined\"==typeof t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},l._clearMenus=function(t){if(!t||3!==t.which&&(\"keyup\"!==t.type||9===t.which))for(var e=mt.makeArray(mt(kt)),n=0;n<e.length;n++){var i=l._getParentFromElement(e[n]),r=mt(e[n]).data(vt),s={relatedTarget:e[n]};if(r){var o=r._menu;if(mt(i).hasClass(Dt)&&!(t&&(\"click\"===t.type&&/input|textarea/i.test(t.target.tagName)||\"keyup\"===t.type&&9===t.which)&&mt.contains(i,t.target))){var a=mt.Event(It.HIDE,s);mt(i).trigger(a),a.isDefaultPrevented()||(\"ontouchstart\"in document.documentElement&&mt(document.body).children().off(\"mouseover\",null,mt.noop),e[n].setAttribute(\"aria-expanded\",\"false\"),mt(o).removeClass(Dt),mt(i).removeClass(Dt).trigger(mt.Event(It.HIDDEN,s)))}}}},l._getParentFromElement=function(t){var e,n=Cn.getSelectorFromElement(t);return n&&(e=mt(n)[0]),e||t.parentNode},l._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||mt(t.target).closest(Lt).length)):Ct.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!mt(this).hasClass(At))){var e=l._getParentFromElement(this),n=mt(e).hasClass(Dt);if((n||27===t.which&&32===t.which)&&(!n||27!==t.which&&32!==t.which)){var i=mt(e).find(Rt).get();if(0!==i.length){var r=i.indexOf(t.target);38===t.which&&0<r&&r--,40===t.which&&r<i.length-1&&r++,r<0&&(r=0),i[r].focus()}}else{if(27===t.which){var s=mt(e).find(kt)[0];mt(s).trigger(\"focus\")}mt(this).trigger(\"click\")}}},o(l,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Ft}},{key:\"DefaultType\",get:function(){return Vt}}]),l}(),mt(document).on(It.KEYDOWN_DATA_API,kt,Qt._dataApiKeydownHandler).on(It.KEYDOWN_DATA_API,Lt,Qt._dataApiKeydownHandler).on(It.CLICK_DATA_API+\" \"+It.KEYUP_DATA_API,Qt._clearMenus).on(It.CLICK_DATA_API,kt,function(t){t.preventDefault(),t.stopPropagation(),Qt._jQueryInterface.call(mt(this),\"toggle\")}).on(It.CLICK_DATA_API,Pt,function(t){t.stopPropagation()}),mt.fn[pt]=Qt._jQueryInterface,mt.fn[pt].Constructor=Qt,mt.fn[pt].noConflict=function(){return mt.fn[pt]=Tt,Qt._jQueryInterface},Qt),wn=(Yt=\"modal\",qt=\".\"+(Gt=\"bs.modal\"),zt=(Bt=e).fn[Yt],Xt={backdrop:!0,keyboard:!0,focus:!0,show:!0},Jt={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\",show:\"boolean\"},Zt={HIDE:\"hide\"+qt,HIDDEN:\"hidden\"+qt,SHOW:\"show\"+qt,SHOWN:\"shown\"+qt,FOCUSIN:\"focusin\"+qt,RESIZE:\"resize\"+qt,CLICK_DISMISS:\"click.dismiss\"+qt,KEYDOWN_DISMISS:\"keydown.dismiss\"+qt,MOUSEUP_DISMISS:\"mouseup.dismiss\"+qt,MOUSEDOWN_DISMISS:\"mousedown.dismiss\"+qt,CLICK_DATA_API:\"click\"+qt+\".data-api\"},$t=\"modal-scrollbar-measure\",te=\"modal-backdrop\",ee=\"modal-open\",ne=\"fade\",ie=\"show\",re={DIALOG:\".modal-dialog\",DATA_TOGGLE:'[data-toggle=\"modal\"]',DATA_DISMISS:'[data-dismiss=\"modal\"]',FIXED_CONTENT:\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",STICKY_CONTENT:\".sticky-top\",NAVBAR_TOGGLER:\".navbar-toggler\"},se=function(){function r(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=Bt(t).find(re.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._scrollbarWidth=0}var t=r.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isTransitioning&&!this._isShown){Bt(this._element).hasClass(ne)&&(this._isTransitioning=!0);var n=Bt.Event(Zt.SHOW,{relatedTarget:t});Bt(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),Bt(document.body).addClass(ee),this._setEscapeEvent(),this._setResizeEvent(),Bt(this._element).on(Zt.CLICK_DISMISS,re.DATA_DISMISS,function(t){return e.hide(t)}),Bt(this._dialog).on(Zt.MOUSEDOWN_DISMISS,function(){Bt(e._element).one(Zt.MOUSEUP_DISMISS,function(t){Bt(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),!this._isTransitioning&&this._isShown){var n=Bt.Event(Zt.HIDE);if(Bt(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=Bt(this._element).hasClass(ne);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),Bt(document).off(Zt.FOCUSIN),Bt(this._element).removeClass(ie),Bt(this._element).off(Zt.CLICK_DISMISS),Bt(this._dialog).off(Zt.MOUSEDOWN_DISMISS),i){var r=Cn.getTransitionDurationFromElement(this._element);Bt(this._element).one(Cn.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(r)}else this._hideModal()}}},t.dispose=function(){Bt.removeData(this._element,Gt),Bt(window,document,this._element,this._backdrop).off(qt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=h({},Xt,t),Cn.typeCheckConfig(Yt,t,Jt),t},t._showElement=function(t){var e=this,n=Bt(this._element).hasClass(ne);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.scrollTop=0,n&&Cn.reflow(this._element),Bt(this._element).addClass(ie),this._config.focus&&this._enforceFocus();var i=Bt.Event(Zt.SHOWN,{relatedTarget:t}),r=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,Bt(e._element).trigger(i)};if(n){var s=Cn.getTransitionDurationFromElement(this._element);Bt(this._dialog).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()},t._enforceFocus=function(){var e=this;Bt(document).off(Zt.FOCUSIN).on(Zt.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===Bt(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?Bt(this._element).on(Zt.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||Bt(this._element).off(Zt.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?Bt(window).on(Zt.RESIZE,function(t){return e.handleUpdate(t)}):Bt(window).off(Zt.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._isTransitioning=!1,this._showBackdrop(function(){Bt(document.body).removeClass(ee),t._resetAdjustments(),t._resetScrollbar(),Bt(t._element).trigger(Zt.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(Bt(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=Bt(this._element).hasClass(ne)?ne:\"\";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement(\"div\"),this._backdrop.className=te,n&&Bt(this._backdrop).addClass(n),Bt(this._backdrop).appendTo(document.body),Bt(this._element).on(Zt.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&(\"static\"===e._config.backdrop?e._element.focus():e.hide())}),n&&Cn.reflow(this._backdrop),Bt(this._backdrop).addClass(ie),!t)return;if(!n)return void t();var i=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){Bt(this._backdrop).removeClass(ie);var r=function(){e._removeBackdrop(),t&&t()};if(Bt(this._element).hasClass(ne)){var s=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},t._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var r=this;if(this._isBodyOverflowing){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e)[0].style.paddingRight,i=Bt(e).css(\"padding-right\");Bt(e).data(\"padding-right\",n).css(\"padding-right\",parseFloat(i)+r._scrollbarWidth+\"px\")}),Bt(re.STICKY_CONTENT).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css(\"margin-right\");Bt(e).data(\"margin-right\",n).css(\"margin-right\",parseFloat(i)-r._scrollbarWidth+\"px\")}),Bt(re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css(\"margin-right\");Bt(e).data(\"margin-right\",n).css(\"margin-right\",parseFloat(i)+r._scrollbarWidth+\"px\")});var t=document.body.style.paddingRight,e=Bt(document.body).css(\"padding-right\");Bt(document.body).data(\"padding-right\",t).css(\"padding-right\",parseFloat(e)+this._scrollbarWidth+\"px\")}},t._resetScrollbar=function(){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e).data(\"padding-right\");\"undefined\"!=typeof n&&Bt(e).css(\"padding-right\",n).removeData(\"padding-right\")}),Bt(re.STICKY_CONTENT+\", \"+re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e).data(\"margin-right\");\"undefined\"!=typeof n&&Bt(e).css(\"margin-right\",n).removeData(\"margin-right\")});var t=Bt(document.body).data(\"padding-right\");\"undefined\"!=typeof t&&Bt(document.body).css(\"padding-right\",t).removeData(\"padding-right\")},t._getScrollbarWidth=function(){var t=document.createElement(\"div\");t.className=$t,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},r._jQueryInterface=function(n,i){return this.each(function(){var t=Bt(this).data(Gt),e=h({},r.Default,Bt(this).data(),\"object\"==typeof n&&n);if(t||(t=new r(this,e),Bt(this).data(Gt,t)),\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n](i)}else e.show&&t.show(i)})},o(r,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Xt}}]),r}(),Bt(document).on(Zt.CLICK_DATA_API,re.DATA_TOGGLE,function(t){var e,n=this,i=Cn.getSelectorFromElement(this);i&&(e=Bt(i)[0]);var r=Bt(e).data(Gt)?\"toggle\":h({},Bt(e).data(),Bt(this).data());\"A\"!==this.tagName&&\"AREA\"!==this.tagName||t.preventDefault();var s=Bt(e).one(Zt.SHOW,function(t){t.isDefaultPrevented()||s.one(Zt.HIDDEN,function(){Bt(n).is(\":visible\")&&n.focus()})});se._jQueryInterface.call(Bt(e),r,this)}),Bt.fn[Yt]=se._jQueryInterface,Bt.fn[Yt].Constructor=se,Bt.fn[Yt].noConflict=function(){return Bt.fn[Yt]=zt,se._jQueryInterface},se),Nn=(ae=\"tooltip\",he=\".\"+(le=\"bs.tooltip\"),ce=(oe=e).fn[ae],ue=\"bs-tooltip\",fe=new RegExp(\"(^|\\\\s)\"+ue+\"\\\\S+\",\"g\"),ge={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!(_e={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"}),selector:!(de={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\"}),placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\"},pe=\"out\",ve={HIDE:\"hide\"+he,HIDDEN:\"hidden\"+he,SHOW:(me=\"show\")+he,SHOWN:\"shown\"+he,INSERTED:\"inserted\"+he,CLICK:\"click\"+he,FOCUSIN:\"focusin\"+he,FOCUSOUT:\"focusout\"+he,MOUSEENTER:\"mouseenter\"+he,MOUSELEAVE:\"mouseleave\"+he},Ee=\"fade\",ye=\"show\",Te=\".tooltip-inner\",Ce=\".arrow\",Ie=\"hover\",Ae=\"focus\",De=\"click\",be=\"manual\",Se=function(){function i(t,e){if(\"undefined\"==typeof c)throw new TypeError(\"Bootstrap tooltips require Popper.js (https://popper.js.org)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=oe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(oe(this.getTipElement()).hasClass(ye))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),oe.removeData(this.element,this.constructor.DATA_KEY),oe(this.element).off(this.constructor.EVENT_KEY),oe(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&oe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if(\"none\"===oe(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var t=oe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){oe(this.element).trigger(t);var n=oe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Cn.getUID(this.constructor.NAME);i.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&oe(i).addClass(Ee);var s=\"function\"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,o=this._getAttachment(s);this.addAttachmentClass(o);var a=!1===this.config.container?document.body:oe(this.config.container);oe(i).data(this.constructor.DATA_KEY,this),oe.contains(this.element.ownerDocument.documentElement,this.tip)||oe(i).appendTo(a),oe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new c(this.element,i,{placement:o,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Ce},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),oe(i).addClass(ye),\"ontouchstart\"in document.documentElement&&oe(document.body).children().on(\"mouseover\",null,oe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,oe(e.element).trigger(e.constructor.Event.SHOWN),t===pe&&e._leave(null,e)};if(oe(this.tip).hasClass(Ee)){var h=Cn.getTransitionDurationFromElement(this.tip);oe(this.tip).one(Cn.TRANSITION_END,l).emulateTransitionEnd(h)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=oe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==me&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute(\"aria-describedby\"),oe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(oe(this.element).trigger(i),!i.isDefaultPrevented()){if(oe(n).removeClass(ye),\"ontouchstart\"in document.documentElement&&oe(document.body).children().off(\"mouseover\",null,oe.noop),this._activeTrigger[De]=!1,this._activeTrigger[Ae]=!1,this._activeTrigger[Ie]=!1,oe(this.tip).hasClass(Ee)){var s=Cn.getTransitionDurationFromElement(n);oe(n).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r();this._hoverState=\"\"}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){oe(this.getTipElement()).addClass(ue+\"-\"+t)},t.getTipElement=function(){return this.tip=this.tip||oe(this.config.template)[0],this.tip},t.setContent=function(){var t=oe(this.getTipElement());this.setElementContent(t.find(Te),this.getTitle()),t.removeClass(Ee+\" \"+ye)},t.setElementContent=function(t,e){var n=this.config.html;\"object\"==typeof e&&(e.nodeType||e.jquery)?n?oe(e).parent().is(t)||t.empty().append(e):t.text(oe(e).text()):t[n?\"html\":\"text\"](e)},t.getTitle=function(){var t=this.element.getAttribute(\"data-original-title\");return t||(t=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return _e[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(t){if(\"click\"===t)oe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==be){var e=t===Ie?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Ie?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;oe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}oe(i.element).closest(\".modal\").on(\"hide.bs.modal\",function(){return i.hide()})}),this.config.selector?this.config=h({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==t)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusin\"===t.type?Ae:Ie]=!0),oe(e.getTipElement()).hasClass(ye)||e._hoverState===me?e._hoverState=me:(clearTimeout(e._timeout),e._hoverState=me,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===me&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger[\"focusout\"===t.type?Ae:Ie]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=pe,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===pe&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return\"number\"==typeof(t=h({},this.constructor.Default,oe(this.element).data(),t)).delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),Cn.typeCheckConfig(ae,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=oe(this.getTipElement()),e=t.attr(\"class\").match(fe);null!==e&&0<e.length&&t.removeClass(e.join(\"\"))},t._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute(\"x-placement\")&&(oe(t).removeClass(Ee),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=oe(this).data(le),e=\"object\"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),oe(this).data(le,t)),\"string\"==typeof n)){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return ge}},{key:\"NAME\",get:function(){return ae}},{key:\"DATA_KEY\",get:function(){return le}},{key:\"Event\",get:function(){return ve}},{key:\"EVENT_KEY\",get:function(){return he}},{key:\"DefaultType\",get:function(){return de}}]),i}(),oe.fn[ae]=Se._jQueryInterface,oe.fn[ae].Constructor=Se,oe.fn[ae].noConflict=function(){return oe.fn[ae]=ce,Se._jQueryInterface},Se),On=(Ne=\"popover\",ke=\".\"+(Oe=\"bs.popover\"),Pe=(we=e).fn[Ne],Le=\"bs-popover\",je=new RegExp(\"(^|\\\\s)\"+Le+\"\\\\S+\",\"g\"),Re=h({},Nn.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'}),He=h({},Nn.DefaultType,{content:\"(string|element|function)\"}),We=\"fade\",xe=\".popover-header\",Ue=\".popover-body\",Ke={HIDE:\"hide\"+ke,HIDDEN:\"hidden\"+ke,SHOW:(Me=\"show\")+ke,SHOWN:\"shown\"+ke,INSERTED:\"inserted\"+ke,CLICK:\"click\"+ke,FOCUSIN:\"focusin\"+ke,FOCUSOUT:\"focusout\"+ke,MOUSEENTER:\"mouseenter\"+ke,MOUSELEAVE:\"mouseleave\"+ke},Fe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){we(this.getTipElement()).addClass(Le+\"-\"+t)},r.getTipElement=function(){return this.tip=this.tip||we(this.config.template)[0],this.tip},r.setContent=function(){var t=we(this.getTipElement());this.setElementContent(t.find(xe),this.getTitle());var e=this._getContent();\"function\"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ue),e),t.removeClass(We+\" \"+Me)},r._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},r._cleanTipClass=function(){var t=we(this.getTipElement()),e=t.attr(\"class\").match(je);null!==e&&0<e.length&&t.removeClass(e.join(\"\"))},i._jQueryInterface=function(n){return this.each(function(){var t=we(this).data(Oe),e=\"object\"==typeof n?n:null;if((t||!/destroy|hide/.test(n))&&(t||(t=new i(this,e),we(this).data(Oe,t)),\"string\"==typeof n)){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return Re}},{key:\"NAME\",get:function(){return Ne}},{key:\"DATA_KEY\",get:function(){return Oe}},{key:\"Event\",get:function(){return Ke}},{key:\"EVENT_KEY\",get:function(){return ke}},{key:\"DefaultType\",get:function(){return He}}]),i}(Nn),we.fn[Ne]=Fe._jQueryInterface,we.fn[Ne].Constructor=Fe,we.fn[Ne].noConflict=function(){return we.fn[Ne]=Pe,Fe._jQueryInterface},Fe),kn=(Qe=\"scrollspy\",Ye=\".\"+(Be=\"bs.scrollspy\"),Ge=(Ve=e).fn[Qe],qe={offset:10,method:\"auto\",target:\"\"},ze={offset:\"number\",method:\"string\",target:\"(string|element)\"},Xe={ACTIVATE:\"activate\"+Ye,SCROLL:\"scroll\"+Ye,LOAD_DATA_API:\"load\"+Ye+\".data-api\"},Je=\"dropdown-item\",Ze=\"active\",$e={DATA_SPY:'[data-spy=\"scroll\"]',ACTIVE:\".active\",NAV_LIST_GROUP:\".nav, .list-group\",NAV_LINKS:\".nav-link\",NAV_ITEMS:\".nav-item\",LIST_ITEMS:\".list-group-item\",DROPDOWN:\".dropdown\",DROPDOWN_ITEMS:\".dropdown-item\",DROPDOWN_TOGGLE:\".dropdown-toggle\"},tn=\"offset\",en=\"position\",nn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement=\"BODY\"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+\" \"+$e.NAV_LINKS+\",\"+this._config.target+\" \"+$e.LIST_ITEMS+\",\"+this._config.target+\" \"+$e.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Ve(this._scrollElement).on(Xe.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?tn:en,r=\"auto\"===this._config.method?t:this._config.method,s=r===en?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),Ve.makeArray(Ve(this._selector)).map(function(t){var e,n=Cn.getSelectorFromElement(t);if(n&&(e=Ve(n)[0]),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[Ve(e)[r]().top+s,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){Ve.removeData(this._element,Be),Ve(this._scrollElement).off(Ye),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if(\"string\"!=typeof(t=h({},qe,t)).target){var e=Ve(t.target).attr(\"id\");e||(e=Cn.getUID(Qe),Ve(t.target).attr(\"id\",e)),t.target=\"#\"+e}return Cn.typeCheckConfig(Qe,t,ze),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&(\"undefined\"==typeof this._offsets[r+1]||t<this._offsets[r+1])&&this._activate(this._targets[r])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(\",\");t=t.map(function(t){return t+'[data-target=\"'+e+'\"],'+t+'[href=\"'+e+'\"]'});var n=Ve(t.join(\",\"));n.hasClass(Je)?(n.closest($e.DROPDOWN).find($e.DROPDOWN_TOGGLE).addClass(Ze),n.addClass(Ze)):(n.addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_LINKS+\", \"+$e.LIST_ITEMS).addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_ITEMS).children($e.NAV_LINKS).addClass(Ze)),Ve(this._scrollElement).trigger(Xe.ACTIVATE,{relatedTarget:e})},t._clear=function(){Ve(this._selector).filter($e.ACTIVE).removeClass(Ze)},n._jQueryInterface=function(e){return this.each(function(){var t=Ve(this).data(Be);if(t||(t=new n(this,\"object\"==typeof e&&e),Ve(this).data(Be,t)),\"string\"==typeof e){if(\"undefined\"==typeof t[e])throw new TypeError('No method named \"'+e+'\"');t[e]()}})},o(n,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}},{key:\"Default\",get:function(){return qe}}]),n}(),Ve(window).on(Xe.LOAD_DATA_API,function(){for(var t=Ve.makeArray(Ve($e.DATA_SPY)),e=t.length;e--;){var n=Ve(t[e]);nn._jQueryInterface.call(n,n.data())}}),Ve.fn[Qe]=nn._jQueryInterface,Ve.fn[Qe].Constructor=nn,Ve.fn[Qe].noConflict=function(){return Ve.fn[Qe]=Ge,nn._jQueryInterface},nn),Pn=(on=\".\"+(sn=\"bs.tab\"),an=(rn=e).fn.tab,ln={HIDE:\"hide\"+on,HIDDEN:\"hidden\"+on,SHOW:\"show\"+on,SHOWN:\"shown\"+on,CLICK_DATA_API:\"click\"+on+\".data-api\"},hn=\"dropdown-menu\",cn=\"active\",un=\"disabled\",fn=\"fade\",dn=\"show\",_n=\".dropdown\",gn=\".nav, .list-group\",mn=\".active\",pn=\"> li > .active\",vn='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',En=\".dropdown-toggle\",yn=\"> .dropdown-menu .active\",Tn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&rn(this._element).hasClass(cn)||rn(this._element).hasClass(un))){var t,i,e=rn(this._element).closest(gn)[0],r=Cn.getSelectorFromElement(this._element);if(e){var s=\"UL\"===e.nodeName?pn:mn;i=(i=rn.makeArray(rn(e).find(s)))[i.length-1]}var o=rn.Event(ln.HIDE,{relatedTarget:this._element}),a=rn.Event(ln.SHOW,{relatedTarget:i});if(i&&rn(i).trigger(o),rn(this._element).trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){r&&(t=rn(r)[0]),this._activate(this._element,e);var l=function(){var t=rn.Event(ln.HIDDEN,{relatedTarget:n._element}),e=rn.Event(ln.SHOWN,{relatedTarget:i});rn(i).trigger(t),rn(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){rn.removeData(this._element,sn),this._element=null},t._activate=function(t,e,n){var i=this,r=(\"UL\"===e.nodeName?rn(e).find(pn):rn(e).children(mn))[0],s=n&&r&&rn(r).hasClass(fn),o=function(){return i._transitionComplete(t,r,n)};if(r&&s){var a=Cn.getTransitionDurationFromElement(r);rn(r).one(Cn.TRANSITION_END,o).emulateTransitionEnd(a)}else o()},t._transitionComplete=function(t,e,n){if(e){rn(e).removeClass(dn+\" \"+cn);var i=rn(e.parentNode).find(yn)[0];i&&rn(i).removeClass(cn),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}if(rn(t).addClass(cn),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),Cn.reflow(t),rn(t).addClass(dn),t.parentNode&&rn(t.parentNode).hasClass(hn)){var r=rn(t).closest(_n)[0];r&&rn(r).find(En).addClass(cn),t.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=rn(this),e=t.data(sn);if(e||(e=new i(this),t.data(sn,e)),\"string\"==typeof n){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},o(i,null,[{key:\"VERSION\",get:function(){return\"4.1.0\"}}]),i}(),rn(document).on(ln.CLICK_DATA_API,vn,function(t){t.preventDefault(),Tn._jQueryInterface.call(rn(this),\"show\")}),rn.fn.tab=Tn._jQueryInterface,rn.fn.tab.Constructor=Tn,rn.fn.tab.noConflict=function(){return rn.fn.tab=an,Tn._jQueryInterface},Tn);!function(t){if(\"undefined\"==typeof t)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var e=t.fn.jquery.split(\" \")[0].split(\".\");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}(e),t.Util=Cn,t.Alert=In,t.Button=An,t.Carousel=Dn,t.Collapse=bn,t.Dropdown=Sn,t.Modal=wn,t.Popover=On,t.Scrollspy=kn,t.Tab=Pn,t.Tooltip=Nn,Object.defineProperty(t,\"__esModule\",{value:!0})});\n//# sourceMappingURL=bootstrap.min.js.map"),
76
        }
77
        file9 := &embedded.EmbeddedFile{
78
                Filename:    "chart_index.js",
79
                FileModTime: time.Unix(1538522004, 0),
80
                Content:     string("{{define \"chartIndex\"}}\nvar ctx_{{js .Id}} = document.getElementById(\"service_{{js .Id}}\").getContext('2d');\nvar chartdata_{{js .Id}} = new Chart(ctx_{{js .Id}}, {\n  type: 'line',\n    data: {\n    datasets: [{\n      label: 'Response Time (Milliseconds)',\n      data: [],\n      backgroundColor: ['{{if .Online}}rgba(47, 206, 30, 0.92){{else}}rgb(221, 53, 69){{end}}'],\n      borderColor: ['{{if .Online}}rgb(47, 171, 34){{else}}rgb(183, 32, 47){{end}}'],\n      borderWidth: 1\n    }]\n  },\n  options: {\n    maintainAspectRatio: !1,\n      scaleShowValues: !0,\n      layout: {\n      padding: {\n        left: 0,\n          right: 0,\n          top: 0,\n          bottom: -10\n      }\n    },\n    hover: {\n      animationDuration: 0,\n    },\n    responsiveAnimationDuration: 0,\n      animation: {\n      duration: 3500,\n        onComplete: function() {\n        var chartInstance = this.chart,\n          ctx = chartInstance.ctx;\n        var controller = this.chart.controller;\n        var xAxis = controller.scales['x-axis-0'];\n        var yAxis = controller.scales['y-axis-0'];\n        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n        ctx.textAlign = 'center';\n        ctx.textBaseline = 'bottom';\n        var numTicks = xAxis.ticks.length;\n        var yOffsetStart = xAxis.width / numTicks;\n        var halfBarWidth = (xAxis.width / (numTicks * 2));\n        xAxis.ticks.forEach(function(value, index) {\n          var xOffset = 20;\n          var yOffset = (yOffsetStart * index) + halfBarWidth;\n          ctx.fillStyle = '#e2e2e2';\n          ctx.fillText(value, yOffset, xOffset)\n        });\n        this.data.datasets.forEach(function(dataset, i) {\n          var meta = chartInstance.controller.getDatasetMeta(i);\n          var hxH = 0;\n          var hyH = 0;\n          var hxL = 0;\n          var hyL = 0;\n          var highestNum = 0;\n          var lowestnum = 999999999999;\n          meta.data.forEach(function(bar, index) {\n            var data = dataset.data[index];\n            if (lowestnum > data.y) {\n              lowestnum = data.y;\n              hxL = bar._model.x;\n              hyL = bar._model.y\n            }\n            if (data.y > highestNum) {\n              highestNum = data.y;\n              hxH = bar._model.x;\n              hyH = bar._model.y\n            }\n          });\n          if (hxH >= 820) {\n            hxH = 820\n          } else if (50 >= hxH) {\n            hxH = 50\n          }\n          if (hxL >= 820) {\n            hxL = 820\n          } else if (70 >= hxL) {\n            hxL = 70\n          }\n          ctx.fillStyle = '#ffa7a2';\n          ctx.fillText(highestNum + \"ms\", hxH - 40, hyH + 15);\n          ctx.fillStyle = '#45d642';\n          ctx.fillText(lowestnum + \"ms\", hxL, hyL + 10);\n        })\n      }\n    },\n    legend: {\n      display: !1\n    },\n    tooltips: {\n      enabled: !1\n    },\n    scales: {\n      yAxes: [{\n        display: !1,\n        ticks: {\n          fontSize: 20,\n          display: !1,\n          beginAtZero: !1\n        },\n        gridLines: {\n          display: !1\n        }\n      }],\n        xAxes: [{\n        type: 'time',\n        distribution: 'series',\n        autoSkip: !1,\n        time: {\n          displayFormats: {\n            'hour': 'MMM DD hA'\n          },\n          source: 'auto'\n        },\n        gridLines: {\n          display: !1\n        },\n        ticks: {\n          source: 'auto',\n          stepSize: 1,\n          min: 0,\n          fontColor: \"white\",\n          fontSize: 20,\n          display: !1\n        }\n      }]\n    },\n    elements: {\n      point: {\n        radius: 0\n      }\n    }\n  }\n});\n\nAjaxChart(chartdata_{{js .Id}},{{js .Id}},0,99999999999,\"hour\");\n{{end}}\n"),
81
        }
82
        filea := &embedded.EmbeddedFile{
83
                Filename:    "charts.js",
84
                FileModTime: time.Unix(1538579801, 0),
85
                Content:     string("{{define \"charts\"}}\n{{$start := .Start}}\n{{$end := .End}}\n{{ range .Services }}\nvar ctx_{{js .Id}} = document.getElementById(\"service_{{js .Id}}\").getContext('2d');\nvar chartdata_{{js .Id}} = new Chart(ctx_{{js .Id}}, {\n  type: 'line',\n    data: {\n    datasets: [{\n      label: 'Response Time (Milliseconds)',\n      data: [],\n      backgroundColor: ['{{if .Online}}rgba(47, 206, 30, 0.92){{else}}rgb(221, 53, 69){{end}}'],\n      borderColor: ['{{if .Online}}rgb(47, 171, 34){{else}}rgb(183, 32, 47){{end}}'],\n      borderWidth: 1\n    }]\n  },\n  options: {\n    maintainAspectRatio: !1,\n      scaleShowValues: !0,\n      layout: {\n      padding: {\n        left: 0,\n          right: 0,\n          top: 0,\n          bottom: -10\n      }\n    },\n    hover: {\n      animationDuration: 0,\n    },\n    responsiveAnimationDuration: 0,\n      animation: {\n      duration: 3500,\n        onComplete: function() {\n        var chartInstance = this.chart,\n          ctx = chartInstance.ctx;\n        var controller = this.chart.controller;\n        var xAxis = controller.scales['x-axis-0'];\n        var yAxis = controller.scales['y-axis-0'];\n        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);\n        ctx.textAlign = 'center';\n        ctx.textBaseline = 'bottom';\n        var numTicks = xAxis.ticks.length;\n        var yOffsetStart = xAxis.width / numTicks;\n        var halfBarWidth = (xAxis.width / (numTicks * 2));\n        xAxis.ticks.forEach(function(value, index) {\n          var xOffset = 20;\n          var yOffset = (yOffsetStart * index) + halfBarWidth;\n          ctx.fillStyle = '#e2e2e2';\n          ctx.fillText(value, yOffset, xOffset)\n        });\n        this.data.datasets.forEach(function(dataset, i) {\n          var meta = chartInstance.controller.getDatasetMeta(i);\n          var hxH = 0;\n          var hyH = 0;\n          var hxL = 0;\n          var hyL = 0;\n          var highestNum = 0;\n          var lowestnum = 999999999999;\n          meta.data.forEach(function(bar, index) {\n            var data = dataset.data[index];\n            if (lowestnum > data.y) {\n              lowestnum = data.y;\n              hxL = bar._model.x;\n              hyL = bar._model.y\n            }\n            if (data.y > highestNum) {\n              highestNum = data.y;\n              hxH = bar._model.x;\n              hyH = bar._model.y\n            }\n          });\n          if (hxH >= 820) {\n            hxH = 820\n          } else if (50 >= hxH) {\n            hxH = 50\n          }\n          if (hxL >= 820) {\n            hxL = 820\n          } else if (70 >= hxL) {\n            hxL = 70\n          }\n          ctx.fillStyle = '#ffa7a2';\n          ctx.fillText(highestNum + \"ms\", hxH - 40, hyH + 15);\n          ctx.fillStyle = '#45d642';\n          ctx.fillText(lowestnum + \"ms\", hxL, hyL + 10);\n        })\n      }\n    },\n    legend: {\n      display: !1\n    },\n    tooltips: {\n      enabled: !1\n    },\n    scales: {\n      yAxes: [{\n        display: !1,\n        ticks: {\n          fontSize: 20,\n          display: !1,\n          beginAtZero: !1\n        },\n        gridLines: {\n          display: !1\n        }\n      }],\n        xAxes: [{\n        type: 'time',\n        distribution: 'series',\n        autoSkip: !1,\n        time: {\n          displayFormats: {\n            'hour': 'MMM DD hA'\n          },\n          source: 'auto'\n        },\n        gridLines: {\n          display: !1\n        },\n        ticks: {\n          source: 'auto',\n          stepSize: 1,\n          min: 0,\n          fontColor: \"white\",\n          fontSize: 20,\n          display: !1\n        }\n      }]\n    },\n    elements: {\n      point: {\n        radius: 0\n      }\n    }\n  }\n});\n\nAjaxChart(chartdata_{{js .Id}},{{js .Id}},{{$start}},{{$end}},\"hour\");\n{{end}}{{end}}\n"),
86
        }
87
        fileb := &embedded.EmbeddedFile{
88
                Filename:    "jquery-3.3.1.min.js",
89
                FileModTime: time.Unix(1534926456, 0),
90
                Content:     string("/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){\"use strict\";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return\"function\"==typeof t&&\"number\"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement(\"script\");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?l[c.call(e)]||\"object\":typeof e}var b=\"3.3.1\",w=function(e,t){return new w.fn.init(e,t)},T=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;w.fn=w.prototype={jquery:\"3.3.1\",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:\"jQuery\"+(\"3.3.1\"+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==c.call(e))&&(!(t=i(e))||\"function\"==typeof(n=f.call(t,\"constructor\")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(T,\"\")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,\"string\"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),\"function\"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){l[\"[object \"+t+\"]\"]=t.toLowerCase()});function C(e){var t=!!e&&\"length\"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b=\"sizzle\"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",R=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",I=\"\\\\[\"+M+\"*(\"+R+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+R+\"))|)\"+M+\"*\\\\]\",W=\":(\"+R+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+I+\")*)|.*)\\\\)|)\",$=new RegExp(M+\"+\",\"g\"),B=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),F=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),_=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),z=new RegExp(\"=\"+M+\"*([^\\\\]'\\\"]*?)\"+M+\"*\\\\]\",\"g\"),X=new RegExp(W),U=new RegExp(\"^\"+R+\"$\"),V={ID:new RegExp(\"^#(\"+R+\")\"),CLASS:new RegExp(\"^\\\\.(\"+R+\")\"),TAG:new RegExp(\"^(\"+R+\"|[*])\"),ATTR:new RegExp(\"^\"+I),PSEUDO:new RegExp(\"^\"+W),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+P+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\\d$/i,Q=/^[^{]+\\{\\s*\\[native \\w/,J=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,K=/[+~]/,Z=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),ee=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ne=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&(\"form\"in e||\"label\"in e)},{dir:\"parentNode\",next:\"legend\"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+\" \"]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if(\"object\"!==t.nodeName.toLowerCase()){(c=t.getAttribute(\"id\"))?c=c.replace(te,ne):t.setAttribute(\"id\",c=b),s=(h=a(e)).length;while(s--)h[s]=\"#\"+c+\" \"+ve(h[s]);v=h.join(\",\"),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace(B,\"$1\"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split(\"|\"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function de(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",re,!1):i.attachEvent&&i.attachEvent(\"onunload\",re)),n.attributes=ue(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML=\"<a id='\"+b+\"'></a><select id='\"+b+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&y.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||y.push(\"\\\\[\"+M+\"*(?:value|\"+P+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||y.push(\"~=\"),e.querySelectorAll(\":checked\").length||y.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||y.push(\".#.+[+~]\")}),ue(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&y.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&y.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&y.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),y.push(\",.*:\")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),v.push(\"!=\",W)}),y=y.length&&new RegExp(y.join(\"|\")),v=v.length&&new RegExp(v.join(\"|\")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,\"='$1']\"),n.matchesSelector&&g&&!S[t+\" \"]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+\"\").replace(te,ne)},oe.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||\"\").replace(Z,ee),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&E(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace($,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,\"$1\"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||\"\")||oe.error(\"unsupported lang: \"+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+\" \"];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B,\" \")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&\"parentNode\"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||\"*\",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace(B,\"$1\"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+\" \"];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(D).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))}),ue(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||le(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||le(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute(\"disabled\")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,\"string\"==typeof e){if(!(i=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,\"parentNode\")},parentsUntil:function(e,t,n){return k(e,\"parentNode\",n)},next:function(e){return P(e,\"nextSibling\")},prev:function(e){return P(e,\"previousSibling\")},nextAll:function(e){return k(e,\"nextSibling\")},prevAll:function(e){return k(e,\"previousSibling\")},nextUntil:function(e,t,n){return k(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return k(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,\"iframe\")?e.contentDocument:(N(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e=\"string\"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:\"\")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&\"string\"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},\"catch\":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError(\"Thenable self-resolution\");l=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener(\"DOMContentLoaded\",_),e.removeEventListener(\"load\",_),w.ready()}\"complete\"===r.readyState||\"loading\"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener(\"DOMContentLoaded\",_),e.addEventListener(\"load\",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,\"ms-\").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,ee=/[A-Z]/g;function te(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(ee,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,\"hasDataAttrs\"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf(\"data-\")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks(\"once memory\").add(function(){J.remove(e,[t+\"queue\",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=J.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+re+\")([a-z%]*)$\",\"i\"),oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&w.contains(e.ownerDocument,e)&&\"none\"===w.css(e,\"display\")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,\"\")},u=s(),l=n&&n[3]||(w.cssNumber[t]?\"\":\"px\"),c=(w.cssNumber[t]||\"px\"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===i&&(i=\"block\"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?(\"none\"===n&&(i[o]=J.get(r,\"display\")||null,i[o]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(i[o]=ce(r))):\"none\"!==n&&(i[o]=\"none\",J.set(r,\"display\",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,he=/^$|^module$|\\/(?:java|ecma)script/i,ge={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],\"globalEval\",!t||J.get(t[n],\"globalEval\"))}var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),\"script\"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement(\"div\")),t=r.createElement(\"input\");t.setAttribute(\"type\",\"radio\"),t.setAttribute(\"checked\",\"checked\"),t.setAttribute(\"name\",\"t\"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML=\"<textarea>x</textarea>\",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return\"undefined\"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||\"\").match(M)||[\"\"]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||\"\").split(\".\").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,\"handle events\")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,\"events\")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type&&this.click&&N(this,\"input\"))return this.click(),!1},_default:function(e){return N(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,Ae=/<script|<style|<link/i,je=/checked\\s*(?:[^=]|=\\s*.checked.)/i,qe=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Le(e,t){return N(e,\"table\")&&N(11!==t.nodeType?t:t.firstChild,\"tr\")?w(e).children(\"tbody\")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Oe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();\"input\"===n&&pe.test(e.type)?t.checked=e.checked:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&\"string\"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,\"script\"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,\"script\"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||\"\")&&!J.access(l,\"globalEval\")&&w.contains(c,l)&&(l.src&&\"module\"!==(l.type||\"\").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,\"\"),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,\"script\")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,\"script\")).length>0&&ve(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp(\"^(\"+re+\")(?!px)[a-z%]+$\",\"i\"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join(\"|\"),\"i\");!function(){function t(){if(c){l.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",c.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i=\"1%\"!==t.top,u=12===n(t.marginLeft),c.style.right=\"60%\",s=36===n(t.right),o=36===n(t.width),c.style.position=\"absolute\",a=36===c.offsetWidth||\"absolute\",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement(\"div\"),c=r.createElement(\"div\");c.style&&(c.style.backgroundClip=\"content-box\",c.cloneNode(!0).style.backgroundClip=\"\",h.clearCloneStyle=\"content-box\"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ve={letterSpacing:\"0\",fontWeight:\"400\"},Ge=[\"Webkit\",\"Moz\",\"ms\"],Ye=r.createElement(\"div\").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?(\"content\"===n&&(u-=w.css(e,\"padding\"+oe[a],!0,i)),\"margin\"!==n&&(u-=w.css(e,\"border\"+oe[a]+\"Width\",!0,i))):(u+=w.css(e,\"padding\"+oe[a],!0,i),\"padding\"!==n?u+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i):s+=w.css(e,\"border\"+oe[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o=\"border-box\"===w.css(e,\"boxSizing\",!1,r),a=o;if(We.test(i)){if(!n)return i;i=\"auto\"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),(\"auto\"===i||!parseFloat(i)&&\"inline\"===w.css(e,\"display\",!1,r))&&(i=e[\"offset\"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?\"border\":\"content\"),a,r,i)+\"px\"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),h.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),\"normal\"===i&&t in Ve&&(i=Ve[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a=\"border-box\"===w.css(e,\"boxSizing\",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),s&&(i=ie.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,\"marginLeft\"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),w.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=oe[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,\"fxshow\");n.queue||(null==(a=w._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,\"fx\").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,\"display\")),\"none\"===(c=w.css(e,\"display\"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,\"display\"),fe([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===w.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?\"hidden\"in y&&(g=y.hidden):y=J.access(e,\"fxshow\",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,\"fxshow\");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=[\"*\"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&\"object\"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each(function(){var t,n=J.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut(\"show\"),slideUp:ut(\"hide\"),slideToggle:ut(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement(\"input\"),t=r.createElement(\"select\").appendChild(r.createElement(\"option\"));e.type=\"checkbox\",h.checkOn=\"\"!==e.value,h.optSelected=t.selected,(e=r.createElement(\"input\")).value=\"t\",e.type=\"radio\",h.radioValue=\"t\"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&\"radio\"===t&&N(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(\" \")}function mt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function xt(e){return Array.isArray(e)?e:\"string\"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){a=0;while(o=t[a++])while(r.indexOf(\" \"+o+\" \")>-1)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&\"boolean\"!==n||((t=mt(this))&&J.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":J.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&(\" \"+vt(mt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var bt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?\"\":e+\"\"})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(bt,\"\"):null==n?\"\":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,\"optgroup\"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),h.focusin=\"onfocusin\"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,\"type\")?t.type:t,x=f.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(m=(x=m.split(\".\")).shift(),x.sort()),c=m.indexOf(\":\")<0&&\"on\"+m,t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,\"events\")||{})[t.type]&&J.get(s,\"handle\"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\\?/;w.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||w.error(\"Invalid XML: \"+t),n};var St=/\\[\\]$/,Dt=/\\r?\\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==x(t))r(e,t);else for(i in t)jt(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Dt,\"\\r\\n\")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\\/\\//,It={},Wt={},$t=\"*/\".concat(\"*\"),Bt=r.createElement(\"a\");Bt.href=Ct.href;function Ft(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:\"GET\",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":$t,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks(\"once memory\"),x=h.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+\"\").replace(Rt,Ct.protocol+\"//\"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||\"*\").toLowerCase().match(M)||[\"\"],null==h.crossDomain){l=r.createElement(\"a\");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+\"//\"+Bt.host!=l.protocol+\"//\"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&\"string\"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,\"\"),h.hasContent?h.data&&h.processData&&0===(h.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(h.data=h.data.replace(qt,\"+\")):(d=h.url.slice(o.length),h.data&&(h.processData||\"string\"==typeof h.data)&&(o+=(kt.test(o)?\"&\":\"?\")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,\"$1\"),d=(kt.test(o)?\"&\":\"?\")+\"_=\"+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[o]),w.etag[o]&&E.setRequestHeader(\"If-None-Match\",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",h.contentType),E.setRequestHeader(\"Accept\",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(\"*\"!==h.dataTypes[0]?\", \"+$t+\"; q=0.01\":\"\"):h.accepts[\"*\"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C=\"abort\",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger(\"ajaxSend\",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort(\"timeout\")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,\"No Transport\");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||\"\",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[o]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[o]=T)),204===t||\"HEAD\"===h.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?\"ajaxSuccess\":\"ajaxError\",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger(\"ajaxComplete\",[E,h]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&\"withCredentials\"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),w.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(\"<script>\").prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&o(\"error\"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\\?(?=&|$)|\\?\\?/;w.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Yt.pop()||w.expando+\"_\"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Qt.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,\"$1\"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||w.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),\"script\"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument(\"\").body;return e.innerHTML=\"<form></form><form></form>\",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if(\"string\"!=typeof e)return[];\"boolean\"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&w.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?w(\"<div>\").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,\"position\"),f=w(e),p={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=w.css(e,\"top\"),u=w.css(e,\"left\"),(l=(\"absolute\"===c||\"fixed\"===c)&&(o+u).indexOf(\"auto\")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),\"using\"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===w.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===w.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,\"borderTopWidth\",!0),i.left+=w.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-w.css(r,\"marginTop\",!0),left:t.left-i.left-w.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===w.css(e,\"position\"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=\"pageYOffset\"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each([\"top\",\"left\"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+\"px\":n})}),w.each({Height:\"height\",Width:\"width\"},function(e,t){w.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||\"boolean\"!=typeof i),s=n||(!0===i||!0===o?\"margin\":\"border\");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),w.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});"),
91
        }
92
        filec := &embedded.EmbeddedFile{
93
                Filename:    "main.js",
94
                FileModTime: time.Unix(1538894434, 0),
95
                Content:     string("/*\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n$('.service_li').on('click', function() {\n    var id = $(this).attr('data-id');\n    var position = $('#service_id_' + id).offset();\n    window.scroll(0, position.top - 23);\n    return false;\n});\n\n$('.test_notifier').on('click', function(e) {\n    var btn = $(this);\n    var form = $(this).parents('form:first');\n    var values = form.serialize();\n    var notifier = form.find('input[name=notifier]').val();\n    var success = $('#'+notifier+'-success');\n    var error = $('#'+notifier+'-error');\n    btn.prop(\"disabled\", true);\n    $.ajax({\n        url: form.attr(\"action\")+\"/test\",\n        type: 'POST',\n        data: values,\n        success: function(data) {\n          if (data === 'ok') {\n              success.removeClass('d-none');\n              setTimeout(function() {\n                  success.addClass('d-none');\n              }, 5000)\n          } else {\n              error.removeClass('d-none');\n              error.html(data);\n              setTimeout(function() {\n                  error.addClass('d-none');\n              }, 8000)\n          }\n            btn.prop(\"disabled\", false);\n        }\n    });\n    e.preventDefault();\n});\n\n$('form').submit(function() {\n    console.log(this);\n    $(this).find('button[type=submit]').prop('disabled', true);\n});\n\n$('select#service_type').on('change', function() {\n    var selected = $('#service_type option:selected').val();\n    var typeLabel = $('#service_type_label');\n    if (selected === 'tcp' || selected === 'udp') {\n        if (selected === 'tcp') {\n            typeLabel.html('TCP Port')\n        } else {\n            typeLabel.html('UDP Port')\n        }\n        $('#service_port').parent().parent().removeClass('d-none');\n        $('#service_check_type').parent().parent().addClass('d-none');\n        $('#service_url').attr('placeholder', 'localhost');\n        $('#post_data').parent().parent().addClass('d-none');\n        $('#service_response').parent().parent().addClass('d-none');\n        $('#service_response_code').parent().parent().addClass('d-none');\n    } else {\n        $('#post_data').parent().parent().removeClass('d-none');\n        $('#service_response').parent().parent().removeClass('d-none');\n        $('#service_response_code').parent().parent().removeClass('d-none');\n        $('#service_check_type').parent().parent().removeClass('d-none');\n        $('#service_url').attr('placeholder', 'https://google.com');\n        $('#service_port').parent().parent().addClass('d-none');\n    }\n});\n\nfunction AjaxChart(chart, service, start=0, end=9999999999, group=\"hour\") {\n  $.ajax({\n    url: \"/api/services/\"+service+\"/data?start=\"+start+\"&end=\"+end+\"&group=\"+group,\n    type: 'GET',\n    success: function(data) {\n      chart.data.labels.pop();\n      data.data.forEach(function(d) {\n        chart.data.datasets[0].data.push(d);\n      });\n      chart.update();\n    }\n  });\n}\n\nfunction PingAjaxChart(chart, service, start=0, end=9999999999, group=\"hour\") {\n  $.ajax({\n    url: \"/api/services/\"+service+\"/ping?start=\"+start+\"&end=\"+end+\"&group=\"+group,\n    type: 'GET',\n    success: function(data) {\n      chart.data.labels.pop();\n      chart.data.datasets.push({\n        label: \"Ping Time\",\n        backgroundColor: \"#bababa\"\n      });\n      chart.update();\n      data.data.forEach(function(d) {\n        chart.data.datasets[1].data.push(d);\n      });\n      chart.update();\n    }\n  });\n}\n\n$('select#service_check_type').on('change', function() {\n    var selected = $('#service_check_type option:selected').val();\n    if (selected === 'POST') {\n        $('#post_data').parent().parent().removeClass('d-none');\n    } else {\n        $('#post_data').parent().parent().addClass('d-none');\n    }\n});\n\n\n$(function() {\n    var pathname = window.location.pathname;\n    if (pathname === '/logs') {\n        var lastline;\n        var logArea = $('#live_logs');\n        setInterval(function() {\n            $.get('/logs/line', function(data, status) {\n                if (lastline !== data) {\n                    var curr = $.trim(logArea.text());\n                    var line = data.replace(/(\\r\\n|\\n|\\r)/gm, ' ');\n                    line = line + '\\n';\n                    logArea.text(line + curr);\n                    lastline = data;\n                }\n            });\n        }, 200);\n    }\n});\n\n\n$('.confirm-btn').on('click', function() {\n    var r = confirm('Are you sure you want to delete?');\n    if (r === true) {\n        return true;\n    } else {\n        return false;\n    }\n});\n\n\n$('.select-input').on('click', function() {\n    $(this).select();\n});\n\n\n// $('input[name=password], input[name=password_confirm]').on('change keyup input paste', function() {\n//     var password = $('input[name=password]'),\n//         repassword = $('input[name=password_confirm]'),\n//         both = password.add(repassword).removeClass('is-valid is-invalid');\n//\n//     var btn = $(this).parents('form:first').find('button[type=submit]');\n//     password.addClass(\n//         password.val().length > 0 ? 'is-valid' : 'is-invalid'\n//     );\n//     repassword.addClass(\n//         password.val().length > 0 ? 'is-valid' : 'is-invalid'\n//     );\n//\n//     if (password.val() !== repassword.val()) {\n//         both.addClass('is-invalid');\n//         btn.prop('disabled', true);\n//     } else {\n//         btn.prop('disabled', false);\n//     }\n// });\n\n\nvar ranVar = false;\nvar ranTheme = false;\nvar ranMobile = false;\n$('a[data-toggle=pill]').on('shown.bs.tab', function(e) {\n    var target = $(e.target).attr('href');\n    if (target === '#v-pills-style' && !ranVar) {\n        var sass_vars = CodeMirror.fromTextArea(document.getElementById('sass_vars'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        sass_vars.setSize(null, 900);\n        ranVar = true;\n    } else if (target === '#pills-theme' && !ranTheme) {\n        var theme_css = CodeMirror.fromTextArea(document.getElementById('theme_css'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        theme_css.setSize(null, 900);\n        ranTheme = true;\n    } else if (target === '#pills-mobile' && !ranMobile) {\n        var mobile_css = CodeMirror.fromTextArea(document.getElementById('mobile_css'), {\n            lineNumbers: true,\n            matchBrackets: true,\n            mode: 'text/x-scss',\n            colorpicker: true\n        });\n        mobile_css.setSize(null, 900);\n        ranMobile = true;\n    }\n});\n"),
96
        }
97
        filed := &embedded.EmbeddedFile{
98
                Filename:    "pikaday.js",
99
                FileModTime: time.Unix(1537243030, 0),
100
                Content:     string("/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n */\n\n(function (root, factory)\n{\n  'use strict';\n\n  var moment;\n  if (typeof exports === 'object') {\n    // CommonJS module\n    // Load moment.js as an optional dependency\n    try { moment = require('moment'); } catch (e) {}\n    module.exports = factory(moment);\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(function (req)\n    {\n      // Load moment.js as an optional dependency\n      var id = 'moment';\n      try { moment = req(id); } catch (e) {}\n      return factory(moment);\n    });\n  } else {\n    root.Pikaday = factory(root.moment);\n  }\n}(this, function (moment)\n{\n  'use strict';\n\n  /**\n   * feature detection and helper functions\n   */\n  var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n      if (hasEventListeners) {\n        el.addEventListener(e, callback, !!capture);\n      } else {\n        el.attachEvent('on' + e, callback);\n      }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n      if (hasEventListeners) {\n        el.removeEventListener(e, callback, !!capture);\n      } else {\n        el.detachEvent('on' + e, callback);\n      }\n    },\n\n    trim = function(str)\n    {\n      return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n      return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n      if (!hasClass(el, cn)) {\n        el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n      }\n    },\n\n    removeClass = function(el, cn)\n    {\n      el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n      return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n      return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n      var day = date.getDay();\n      return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n      // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n      return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n      return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n      if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n      // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n      return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n      var prop, hasProp;\n      for (prop in from) {\n        hasProp = to[prop] !== undefined;\n        if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n          if (isDate(from[prop])) {\n            if (overwrite) {\n              to[prop] = new Date(from[prop].getTime());\n            }\n          }\n          else if (isArray(from[prop])) {\n            if (overwrite) {\n              to[prop] = from[prop].slice(0);\n            }\n          } else {\n            to[prop] = extend({}, from[prop], overwrite);\n          }\n        } else if (overwrite || !hasProp) {\n          to[prop] = from[prop];\n        }\n      }\n      return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n      var ev;\n\n      if (document.createEvent) {\n        ev = document.createEvent('HTMLEvents');\n        ev.initEvent(eventName, true, false);\n        ev = extend(ev, data);\n        el.dispatchEvent(ev);\n      } else if (document.createEventObject) {\n        ev = document.createEventObject();\n        ev = extend(ev, data);\n        el.fireEvent('on' + eventName, ev);\n      }\n    },\n\n    adjustCalendar = function(calendar) {\n      if (calendar.month < 0) {\n        calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n        calendar.month += 12;\n      }\n      if (calendar.month > 11) {\n        calendar.year += Math.floor(Math.abs(calendar.month)/12);\n        calendar.month -= 12;\n      }\n      return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n      // bind the picker to a form field\n      field: null,\n\n      // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n      bound: undefined,\n\n      // data-attribute on the input field with an aria assistance tekst (only applied when `bound` is set)\n      ariaLabel: 'Use the arrow keys to pick a date',\n\n      // position of the datepicker, relative to the field (default to bottom & left)\n      // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n      position: 'bottom left',\n\n      // automatically fit in the viewport even if it means repositioning from the position option\n      reposition: true,\n\n      // the default output format for `.toString()` and `field` value\n      format: 'YYYY-MM-DD',\n\n      // the toString function which gets passed a current date object and format\n      // and returns a string\n      toString: null,\n\n      // used to create date object from current input string\n      parse: null,\n\n      // the initial date to view when first opened\n      defaultDate: null,\n\n      // make the `defaultDate` the initial selected value\n      setDefaultDate: false,\n\n      // first day of week (0: Sunday, 1: Monday etc)\n      firstDay: 0,\n\n      // the default flag for moment's strict date parsing\n      formatStrict: false,\n\n      // the minimum/earliest date that can be selected\n      minDate: null,\n      // the maximum/latest date that can be selected\n      maxDate: null,\n\n      // number of years either side, or array of upper/lower range\n      yearRange: 10,\n\n      // show week numbers at head of row\n      showWeekNumber: false,\n\n      // Week picker mode\n      pickWholeWeek: false,\n\n      // used internally (don't config outside)\n      minYear: 0,\n      maxYear: 9999,\n      minMonth: undefined,\n      maxMonth: undefined,\n\n      startRange: null,\n      endRange: null,\n\n      isRTL: false,\n\n      // Additional text to append to the year in the calendar title\n      yearSuffix: '',\n\n      // Render the month after year in the calendar title\n      showMonthAfterYear: false,\n\n      // Render days of the calendar grid that fall in the next or previous month\n      showDaysInNextAndPreviousMonths: false,\n\n      // Allows user to select days that fall in the next or previous month\n      enableSelectionDaysInNextAndPreviousMonths: false,\n\n      // how many months are visible\n      numberOfMonths: 1,\n\n      // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n      // only used for the first display or when a selected date is not visible\n      mainCalendar: 'left',\n\n      // Specify a DOM element to render the calendar in\n      container: undefined,\n\n      // Blur field when date is selected\n      blurFieldOnSelect : true,\n\n      // internationalization\n      i18n: {\n        previousMonth : 'Previous Month',\n        nextMonth     : 'Next Month',\n        months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n        weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n        weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n      },\n\n      // Theme Classname\n      theme: null,\n\n      // events array\n      events: [],\n\n      // callback function\n      onSelect: null,\n      onOpen: null,\n      onClose: null,\n      onDraw: null,\n\n      // Enable keyboard input\n      keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n      day += opts.firstDay;\n      while (day >= 7) {\n        day -= 7;\n      }\n      return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n      var arr = [];\n      var ariaSelected = 'false';\n      if (opts.isEmpty) {\n        if (opts.showDaysInNextAndPreviousMonths) {\n          arr.push('is-outside-current-month');\n\n          if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n            arr.push('is-selection-disabled');\n          }\n\n        } else {\n          return '<td class=\"is-empty\"></td>';\n        }\n      }\n      if (opts.isDisabled) {\n        arr.push('is-disabled');\n      }\n      if (opts.isToday) {\n        arr.push('is-today');\n      }\n      if (opts.isSelected) {\n        arr.push('is-selected');\n        ariaSelected = 'true';\n      }\n      if (opts.hasEvent) {\n        arr.push('has-event');\n      }\n      if (opts.isInRange) {\n        arr.push('is-inrange');\n      }\n      if (opts.isStartRange) {\n        arr.push('is-startrange');\n      }\n      if (opts.isEndRange) {\n        arr.push('is-endrange');\n      }\n      return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n        '<button class=\"pika-button pika-day\" type=\"button\" ' +\n        'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n        opts.day +\n        '</button>' +\n        '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n      // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n      var onejan = new Date(y, 0, 1),\n        weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n      return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n      return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n      return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n      var i, arr = [];\n      if (opts.showWeekNumber) {\n        arr.push('<th></th>');\n      }\n      for (i = 0; i < 7; i++) {\n        arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n      }\n      return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n      var i, j, arr,\n        opts = instance._o,\n        isMinYear = year === opts.minYear,\n        isMaxYear = year === opts.maxYear,\n        html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n        monthHtml,\n        yearHtml,\n        prev = true,\n        next = true;\n\n      for (arr = [], i = 0; i < 12; i++) {\n        arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n          (i === month ? ' selected=\"selected\"': '') +\n          ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n          opts.i18n.months[i] + '</option>');\n      }\n\n      monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n      if (isArray(opts.yearRange)) {\n        i = opts.yearRange[0];\n        j = opts.yearRange[1] + 1;\n      } else {\n        i = year - opts.yearRange;\n        j = 1 + year + opts.yearRange;\n      }\n\n      for (arr = []; i < j && i <= opts.maxYear; i++) {\n        if (i >= opts.minYear) {\n          arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n        }\n      }\n      yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n      if (opts.showMonthAfterYear) {\n        html += yearHtml + monthHtml;\n      } else {\n        html += monthHtml + yearHtml;\n      }\n\n      if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n        prev = false;\n      }\n\n      if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n        next = false;\n      }\n\n      if (c === 0) {\n        html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n      }\n      if (c === (instance._o.numberOfMonths - 1) ) {\n        html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n      }\n\n      return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n      return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n      var self = this,\n        opts = self.config(options);\n\n      self._onMouseDown = function(e)\n      {\n        if (!self._v) {\n          return;\n        }\n        e = e || window.event;\n        var target = e.target || e.srcElement;\n        if (!target) {\n          return;\n        }\n\n        if (!hasClass(target, 'is-disabled')) {\n          if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n            self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n            if (opts.bound) {\n              sto(function() {\n                self.hide();\n                if (opts.blurFieldOnSelect && opts.field) {\n                  opts.field.blur();\n                }\n              }, 100);\n            }\n          }\n          else if (hasClass(target, 'pika-prev')) {\n            self.prevMonth();\n          }\n          else if (hasClass(target, 'pika-next')) {\n            self.nextMonth();\n          }\n        }\n        if (!hasClass(target, 'pika-select')) {\n          // if this is touch event prevent mouse events emulation\n          if (e.preventDefault) {\n            e.preventDefault();\n          } else {\n            e.returnValue = false;\n            return false;\n          }\n        } else {\n          self._c = true;\n        }\n      };\n\n      self._onChange = function(e)\n      {\n        e = e || window.event;\n        var target = e.target || e.srcElement;\n        if (!target) {\n          return;\n        }\n        if (hasClass(target, 'pika-select-month')) {\n          self.gotoMonth(target.value);\n        }\n        else if (hasClass(target, 'pika-select-year')) {\n          self.gotoYear(target.value);\n        }\n      };\n\n      self._onKeyChange = function(e)\n      {\n        e = e || window.event;\n\n        if (self.isVisible()) {\n\n          switch(e.keyCode){\n            case 13:\n            case 27:\n              if (opts.field) {\n                opts.field.blur();\n              }\n              break;\n            case 37:\n              e.preventDefault();\n              self.adjustDate('subtract', 1);\n              break;\n            case 38:\n              self.adjustDate('subtract', 7);\n              break;\n            case 39:\n              self.adjustDate('add', 1);\n              break;\n            case 40:\n              self.adjustDate('add', 7);\n              break;\n          }\n        }\n      };\n\n      self._onInputChange = function(e)\n      {\n        var date;\n\n        if (e.firedBy === self) {\n          return;\n        }\n        if (opts.parse) {\n          date = opts.parse(opts.field.value, opts.format);\n        } else if (hasMoment) {\n          date = moment(opts.field.value, opts.format, opts.formatStrict);\n          date = (date && date.isValid()) ? date.toDate() : null;\n        }\n        else {\n          date = new Date(Date.parse(opts.field.value));\n        }\n        if (isDate(date)) {\n          self.setDate(date);\n        }\n        if (!self._v) {\n          self.show();\n        }\n      };\n\n      self._onInputFocus = function()\n      {\n        self.show();\n      };\n\n      self._onInputClick = function()\n      {\n        self.show();\n      };\n\n      self._onInputBlur = function()\n      {\n        // IE allows pika div to gain focus; catch blur the input field\n        var pEl = document.activeElement;\n        do {\n          if (hasClass(pEl, 'pika-single')) {\n            return;\n          }\n        }\n        while ((pEl = pEl.parentNode));\n\n        if (!self._c) {\n          self._b = sto(function() {\n            self.hide();\n          }, 50);\n        }\n        self._c = false;\n      };\n\n      self._onClick = function(e)\n      {\n        e = e || window.event;\n        var target = e.target || e.srcElement,\n          pEl = target;\n        if (!target) {\n          return;\n        }\n        if (!hasEventListeners && hasClass(target, 'pika-select')) {\n          if (!target.onchange) {\n            target.setAttribute('onchange', 'return;');\n            addEvent(target, 'change', self._onChange);\n          }\n        }\n        do {\n          if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n            return;\n          }\n        }\n        while ((pEl = pEl.parentNode));\n        if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n          self.hide();\n        }\n      };\n\n      self.el = document.createElement('div');\n      self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n      addEvent(self.el, 'mousedown', self._onMouseDown, true);\n      addEvent(self.el, 'touchend', self._onMouseDown, true);\n      addEvent(self.el, 'change', self._onChange);\n\n      if (opts.keyboardInput) {\n        addEvent(document, 'keydown', self._onKeyChange);\n      }\n\n      if (opts.field) {\n        if (opts.container) {\n          opts.container.appendChild(self.el);\n        } else if (opts.bound) {\n          document.body.appendChild(self.el);\n        } else {\n          opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n        }\n        addEvent(opts.field, 'change', self._onInputChange);\n\n        if (!opts.defaultDate) {\n          if (hasMoment && opts.field.value) {\n            opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n          } else {\n            opts.defaultDate = new Date(Date.parse(opts.field.value));\n          }\n          opts.setDefaultDate = true;\n        }\n      }\n\n      var defDate = opts.defaultDate;\n\n      if (isDate(defDate)) {\n        if (opts.setDefaultDate) {\n          self.setDate(defDate, true);\n        } else {\n          self.gotoDate(defDate);\n        }\n      } else {\n        self.gotoDate(new Date());\n      }\n\n      if (opts.bound) {\n        this.hide();\n        self.el.className += ' is-bound';\n        addEvent(opts.trigger, 'click', self._onInputClick);\n        addEvent(opts.trigger, 'focus', self._onInputFocus);\n        addEvent(opts.trigger, 'blur', self._onInputBlur);\n      } else {\n        this.show();\n      }\n    };\n\n\n  /**\n   * public Pikaday API\n   */\n  Pikaday.prototype = {\n\n\n    /**\n     * configure functionality\n     */\n    config: function(options)\n    {\n      if (!this._o) {\n        this._o = extend({}, defaults, true);\n      }\n\n      var opts = extend(this._o, options, true);\n\n      opts.isRTL = !!opts.isRTL;\n\n      opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n      opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n      opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n      opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n      opts.disableWeekends = !!opts.disableWeekends;\n\n      opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n      var nom = parseInt(opts.numberOfMonths, 10) || 1;\n      opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n      if (!isDate(opts.minDate)) {\n        opts.minDate = false;\n      }\n      if (!isDate(opts.maxDate)) {\n        opts.maxDate = false;\n      }\n      if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n        opts.maxDate = opts.minDate = false;\n      }\n      if (opts.minDate) {\n        this.setMinDate(opts.minDate);\n      }\n      if (opts.maxDate) {\n        this.setMaxDate(opts.maxDate);\n      }\n\n      if (isArray(opts.yearRange)) {\n        var fallback = new Date().getFullYear() - 10;\n        opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n        opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n      } else {\n        opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n        if (opts.yearRange > 100) {\n          opts.yearRange = 100;\n        }\n      }\n\n      return opts;\n    },\n\n    /**\n     * return a formatted string of the current selection (using Moment.js if available)\n     */\n    toString: function(format)\n    {\n      format = format || this._o.format;\n      if (!isDate(this._d)) {\n        return '';\n      }\n      if (this._o.toString) {\n        return this._o.toString(this._d, format);\n      }\n      if (hasMoment) {\n        return moment(this._d).format(format);\n      }\n      return this._d.toDateString();\n    },\n\n    /**\n     * return a Moment.js object of the current selection (if available)\n     */\n    getMoment: function()\n    {\n      return hasMoment ? moment(this._d) : null;\n    },\n\n    /**\n     * set the current selection from a Moment.js object (if available)\n     */\n    setMoment: function(date, preventOnSelect)\n    {\n      if (hasMoment && moment.isMoment(date)) {\n        this.setDate(date.toDate(), preventOnSelect);\n      }\n    },\n\n    /**\n     * return a Date object of the current selection\n     */\n    getDate: function()\n    {\n      return isDate(this._d) ? new Date(this._d.getTime()) : null;\n    },\n\n    /**\n     * set the current selection\n     */\n    setDate: function(date, preventOnSelect)\n    {\n      if (!date) {\n        this._d = null;\n\n        if (this._o.field) {\n          this._o.field.value = '';\n          fireEvent(this._o.field, 'change', { firedBy: this });\n        }\n\n        return this.draw();\n      }\n      if (typeof date === 'string') {\n        date = new Date(Date.parse(date));\n      }\n      if (!isDate(date)) {\n        return;\n      }\n\n      var min = this._o.minDate,\n        max = this._o.maxDate;\n\n      if (isDate(min) && date < min) {\n        date = min;\n      } else if (isDate(max) && date > max) {\n        date = max;\n      }\n\n      this._d = new Date(date.getTime());\n      setToStartOfDay(this._d);\n      this.gotoDate(this._d);\n\n      if (this._o.field) {\n        this._o.field.value = this.toString();\n        fireEvent(this._o.field, 'change', { firedBy: this });\n      }\n      if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n        this._o.onSelect.call(this, this.getDate());\n      }\n    },\n\n    /**\n     * change view to a specific date\n     */\n    gotoDate: function(date)\n    {\n      var newCalendar = true;\n\n      if (!isDate(date)) {\n        return;\n      }\n\n      if (this.calendars) {\n        var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n          lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n          visibleDate = date.getTime();\n        // get the end of the month\n        lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n        lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n        newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n      }\n\n      if (newCalendar) {\n        this.calendars = [{\n          month: date.getMonth(),\n          year: date.getFullYear()\n        }];\n        if (this._o.mainCalendar === 'right') {\n          this.calendars[0].month += 1 - this._o.numberOfMonths;\n        }\n      }\n\n      this.adjustCalendars();\n    },\n\n    adjustDate: function(sign, days) {\n\n      var day = this.getDate() || new Date();\n      var difference = parseInt(days)*24*60*60*1000;\n\n      var newDay;\n\n      if (sign === 'add') {\n        newDay = new Date(day.valueOf() + difference);\n      } else if (sign === 'subtract') {\n        newDay = new Date(day.valueOf() - difference);\n      }\n\n      this.setDate(newDay);\n    },\n\n    adjustCalendars: function() {\n      this.calendars[0] = adjustCalendar(this.calendars[0]);\n      for (var c = 1; c < this._o.numberOfMonths; c++) {\n        this.calendars[c] = adjustCalendar({\n          month: this.calendars[0].month + c,\n          year: this.calendars[0].year\n        });\n      }\n      this.draw();\n    },\n\n    gotoToday: function()\n    {\n      this.gotoDate(new Date());\n    },\n\n    /**\n     * change view to a specific month (zero-index, e.g. 0: January)\n     */\n    gotoMonth: function(month)\n    {\n      if (!isNaN(month)) {\n        this.calendars[0].month = parseInt(month, 10);\n        this.adjustCalendars();\n      }\n    },\n\n    nextMonth: function()\n    {\n      this.calendars[0].month++;\n      this.adjustCalendars();\n    },\n\n    prevMonth: function()\n    {\n      this.calendars[0].month--;\n      this.adjustCalendars();\n    },\n\n    /**\n     * change view to a specific full year (e.g. \"2012\")\n     */\n    gotoYear: function(year)\n    {\n      if (!isNaN(year)) {\n        this.calendars[0].year = parseInt(year, 10);\n        this.adjustCalendars();\n      }\n    },\n\n    /**\n     * change the minDate\n     */\n    setMinDate: function(value)\n    {\n      if(value instanceof Date) {\n        setToStartOfDay(value);\n        this._o.minDate = value;\n        this._o.minYear  = value.getFullYear();\n        this._o.minMonth = value.getMonth();\n      } else {\n        this._o.minDate = defaults.minDate;\n        this._o.minYear  = defaults.minYear;\n        this._o.minMonth = defaults.minMonth;\n        this._o.startRange = defaults.startRange;\n      }\n\n      this.draw();\n    },\n\n    /**\n     * change the maxDate\n     */\n    setMaxDate: function(value)\n    {\n      if(value instanceof Date) {\n        setToStartOfDay(value);\n        this._o.maxDate = value;\n        this._o.maxYear = value.getFullYear();\n        this._o.maxMonth = value.getMonth();\n      } else {\n        this._o.maxDate = defaults.maxDate;\n        this._o.maxYear = defaults.maxYear;\n        this._o.maxMonth = defaults.maxMonth;\n        this._o.endRange = defaults.endRange;\n      }\n\n      this.draw();\n    },\n\n    setStartRange: function(value)\n    {\n      this._o.startRange = value;\n    },\n\n    setEndRange: function(value)\n    {\n      this._o.endRange = value;\n    },\n\n    /**\n     * refresh the HTML\n     */\n    draw: function(force)\n    {\n      if (!this._v && !force) {\n        return;\n      }\n      var opts = this._o,\n        minYear = opts.minYear,\n        maxYear = opts.maxYear,\n        minMonth = opts.minMonth,\n        maxMonth = opts.maxMonth,\n        html = '',\n        randId;\n\n      if (this._y <= minYear) {\n        this._y = minYear;\n        if (!isNaN(minMonth) && this._m < minMonth) {\n          this._m = minMonth;\n        }\n      }\n      if (this._y >= maxYear) {\n        this._y = maxYear;\n        if (!isNaN(maxMonth) && this._m > maxMonth) {\n          this._m = maxMonth;\n        }\n      }\n\n      randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n      for (var c = 0; c < opts.numberOfMonths; c++) {\n        html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n      }\n\n      this.el.innerHTML = html;\n\n      if (opts.bound) {\n        if(opts.field.type !== 'hidden') {\n          sto(function() {\n            opts.trigger.focus();\n          }, 1);\n        }\n      }\n\n      if (typeof this._o.onDraw === 'function') {\n        this._o.onDraw(this);\n      }\n\n      if (opts.bound) {\n        // let the screen reader user know to use arrow keys\n        opts.field.setAttribute('aria-label', opts.ariaLabel);\n      }\n    },\n\n    adjustPosition: function()\n    {\n      var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n      if (this._o.container) return;\n\n      this.el.style.position = 'absolute';\n\n      field = this._o.trigger;\n      pEl = field;\n      width = this.el.offsetWidth;\n      height = this.el.offsetHeight;\n      viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n      viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n      scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n      leftAligned = true;\n      bottomAligned = true;\n\n      if (typeof field.getBoundingClientRect === 'function') {\n        clientRect = field.getBoundingClientRect();\n        left = clientRect.left + window.pageXOffset;\n        top = clientRect.bottom + window.pageYOffset;\n      } else {\n        left = pEl.offsetLeft;\n        top  = pEl.offsetTop + pEl.offsetHeight;\n        while((pEl = pEl.offsetParent)) {\n          left += pEl.offsetLeft;\n          top  += pEl.offsetTop;\n        }\n      }\n\n      // default position is bottom & left\n      if ((this._o.reposition && left + width > viewportWidth) ||\n        (\n          this._o.position.indexOf('right') > -1 &&\n          left - width + field.offsetWidth > 0\n        )\n      ) {\n        left = left - width + field.offsetWidth;\n        leftAligned = false;\n      }\n      if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n        (\n          this._o.position.indexOf('top') > -1 &&\n          top - height - field.offsetHeight > 0\n        )\n      ) {\n        top = top - height - field.offsetHeight;\n        bottomAligned = false;\n      }\n\n      this.el.style.left = left + 'px';\n      this.el.style.top = top + 'px';\n\n      addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n      addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n      removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n      removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n    },\n\n    /**\n     * render HTML for a particular month\n     */\n    render: function(year, month, randId)\n    {\n      var opts   = this._o,\n        now    = new Date(),\n        days   = getDaysInMonth(year, month),\n        before = new Date(year, month, 1).getDay(),\n        data   = [],\n        row    = [];\n      setToStartOfDay(now);\n      if (opts.firstDay > 0) {\n        before -= opts.firstDay;\n        if (before < 0) {\n          before += 7;\n        }\n      }\n      var previousMonth = month === 0 ? 11 : month - 1,\n        nextMonth = month === 11 ? 0 : month + 1,\n        yearOfPreviousMonth = month === 0 ? year - 1 : year,\n        yearOfNextMonth = month === 11 ? year + 1 : year,\n        daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n      var cells = days + before,\n        after = cells;\n      while(after > 7) {\n        after -= 7;\n      }\n      cells += 7 - after;\n      var isWeekSelected = false;\n      for (var i = 0, r = 0; i < cells; i++)\n      {\n        var day = new Date(year, month, 1 + (i - before)),\n          isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n          isToday = compareDates(day, now),\n          hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n          isEmpty = i < before || i >= (days + before),\n          dayNumber = 1 + (i - before),\n          monthNumber = month,\n          yearNumber = year,\n          isStartRange = opts.startRange && compareDates(opts.startRange, day),\n          isEndRange = opts.endRange && compareDates(opts.endRange, day),\n          isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n          isDisabled = (opts.minDate && day < opts.minDate) ||\n            (opts.maxDate && day > opts.maxDate) ||\n            (opts.disableWeekends && isWeekend(day)) ||\n            (opts.disableDayFn && opts.disableDayFn(day));\n\n        if (isEmpty) {\n          if (i < before) {\n            dayNumber = daysInPreviousMonth + dayNumber;\n            monthNumber = previousMonth;\n            yearNumber = yearOfPreviousMonth;\n          } else {\n            dayNumber = dayNumber - days;\n            monthNumber = nextMonth;\n            yearNumber = yearOfNextMonth;\n          }\n        }\n\n        var dayConfig = {\n          day: dayNumber,\n          month: monthNumber,\n          year: yearNumber,\n          hasEvent: hasEvent,\n          isSelected: isSelected,\n          isToday: isToday,\n          isDisabled: isDisabled,\n          isEmpty: isEmpty,\n          isStartRange: isStartRange,\n          isEndRange: isEndRange,\n          isInRange: isInRange,\n          showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n          enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n        };\n\n        if (opts.pickWholeWeek && isSelected) {\n          isWeekSelected = true;\n        }\n\n        row.push(renderDay(dayConfig));\n\n        if (++r === 7) {\n          if (opts.showWeekNumber) {\n            row.unshift(renderWeek(i - before, month, year));\n          }\n          data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n          row = [];\n          r = 0;\n          isWeekSelected = false;\n        }\n      }\n      return renderTable(opts, data, randId);\n    },\n\n    isVisible: function()\n    {\n      return this._v;\n    },\n\n    show: function()\n    {\n      if (!this.isVisible()) {\n        this._v = true;\n        this.draw();\n        removeClass(this.el, 'is-hidden');\n        if (this._o.bound) {\n          addEvent(document, 'click', this._onClick);\n          this.adjustPosition();\n        }\n        if (typeof this._o.onOpen === 'function') {\n          this._o.onOpen.call(this);\n        }\n      }\n    },\n\n    hide: function()\n    {\n      var v = this._v;\n      if (v !== false) {\n        if (this._o.bound) {\n          removeEvent(document, 'click', this._onClick);\n        }\n        this.el.style.position = 'static'; // reset\n        this.el.style.left = 'auto';\n        this.el.style.top = 'auto';\n        addClass(this.el, 'is-hidden');\n        this._v = false;\n        if (v !== undefined && typeof this._o.onClose === 'function') {\n          this._o.onClose.call(this);\n        }\n      }\n    },\n\n    /**\n     * GAME OVER\n     */\n    destroy: function()\n    {\n      var opts = this._o;\n\n      this.hide();\n      removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n      removeEvent(this.el, 'touchend', this._onMouseDown, true);\n      removeEvent(this.el, 'change', this._onChange);\n      if (opts.keyboardInput) {\n        removeEvent(document, 'keydown', this._onKeyChange);\n      }\n      if (opts.field) {\n        removeEvent(opts.field, 'change', this._onInputChange);\n        if (opts.bound) {\n          removeEvent(opts.trigger, 'click', this._onInputClick);\n          removeEvent(opts.trigger, 'focus', this._onInputFocus);\n          removeEvent(opts.trigger, 'blur', this._onInputBlur);\n        }\n      }\n      if (this.el.parentNode) {\n        this.el.parentNode.removeChild(this.el);\n      }\n    }\n\n  };\n\n  return Pikaday;\n}));\n"),
101
        }
102
        filee := &embedded.EmbeddedFile{
103
                Filename:    "setup.js",
104
                FileModTime: time.Unix(1534396043, 0),
105
                Content:     string("/*\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\nvar currentLocation = window.location;\n$(\"#domain_input\").val(currentLocation.origin);\n\n$('select#database_type').on('change', function(){\n    var selected = $('#database_type option:selected').val();\n    if (selected==\"sqlite\") {\n        $(\"#db_host\").hide();\n        $(\"#db_password\").hide();\n        $(\"#db_port\").hide();\n        $(\"#db_user\").hide();\n        $(\"#db_database\").hide();\n    } else {\n        $(\"#db_host\").show();\n        $(\"#db_password\").show();\n        $(\"#db_port\").show();\n        $(\"#db_user\").show();\n        $(\"#db_database\").show();\n    }\n    if (selected==\"mysql\") {\n        $(\"#db_port_in\").val('3306');\n    } else if (selected==\"postgres\") {\n        $(\"#db_port_in\").val('5432');\n    }\n\n});\n\n$(\"#setup_form\").submit(function() {\n    $(\"#setup_button\").prop(\"disabled\", true);\n    $(\"#setup_button\").text(\"Creating Statup...\");\n    return true;\n});\n\n\n$('form').submit(function() {\n    $(this).find(\"button[type='submit']\").prop('disabled',true);\n    $(this).find(\"button[type='submit']\").text('Loading...');\n});"),
106
        }
107
        filef := &embedded.EmbeddedFile{
108
                Filename:    "sortable.min.js",
109
                FileModTime: time.Unix(1538283453, 0),
110
                Content:     string("var sortable=function(){\"use strict\";function d(e,t,n){if(void 0===n)return e&&e.h5s&&e.h5s.data&&e.h5s.data[t];e.h5s=e.h5s||{},e.h5s.data=e.h5s.data||{},e.h5s.data[t]=n}function u(e,t){if(!(e instanceof NodeList||e instanceof HTMLCollection||e instanceof Array))throw new Error(\"You must provide a nodeList/HTMLCollection/Array of elements to be filtered.\");return\"string\"!=typeof t?Array.from(e):Array.from(e).filter(function(e){return 1===e.nodeType&&e.matches(t)})}var p=new Map,t=function(){function e(){this._config=new Map,this._placeholder=void 0,this._data=new Map}return Object.defineProperty(e.prototype,\"config\",{get:function(){var n={};return this._config.forEach(function(e,t){n[t]=e}),n},set:function(e){if(\"object\"!=typeof e)throw new Error(\"You must provide a valid configuration object to the config setter.\");var t=Object.assign({},e);this._config=new Map(Object.entries(t))},enumerable:!0,configurable:!0}),e.prototype.setConfig=function(e,t){if(!this._config.has(e))throw new Error(\"Trying to set invalid configuration item: \"+e);this._config.set(e,t)},e.prototype.getConfig=function(e){if(!this._config.has(e))throw new Error(\"Invalid configuration item requested: \"+e);return this._config.get(e)},Object.defineProperty(e.prototype,\"placeholder\",{get:function(){return this._placeholder},set:function(e){if(!(e instanceof HTMLElement)&&null!==e)throw new Error(\"A placeholder must be an html element or null.\");this._placeholder=e},enumerable:!0,configurable:!0}),e.prototype.setData=function(e,t){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");this._data.set(e,t)},e.prototype.getData=function(e){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");return this._data.get(e)},e.prototype.deleteData=function(e){if(\"string\"!=typeof e)throw new Error(\"The key must be a string.\");return this._data.delete(e)},e}();function m(e){if(!(e instanceof HTMLElement))throw new Error(\"Please provide a sortable to the store function.\");return p.has(e)||p.set(e,new t),p.get(e)}function g(e,t,n){if(e instanceof Array)for(var r=0;r<e.length;++r)g(e[r],t,n);else e.addEventListener(t,n),m(e).setData(\"event\"+t,n)}function l(e,t){if(e instanceof Array)for(var n=0;n<e.length;++n)l(e[n],t);else e.removeEventListener(t,m(e).getData(\"event\"+t)),m(e).deleteData(\"event\"+t)}function h(e,t,n){if(e instanceof Array)for(var r=0;r<e.length;++r)h(e[r],t,n);else e.setAttribute(t,n)}function s(e,t){if(e instanceof Array)for(var n=0;n<e.length;++n)s(e[n],t);else e.removeAttribute(t)}function v(e){if(!e.parentElement||0===e.getClientRects().length)throw new Error(\"target element must be part of the dom\");var t=e.getClientRects()[0];return{left:t.left+window.scrollX,right:t.right+window.scrollX,top:t.top+window.scrollY,bottom:t.bottom+window.scrollY}}function y(e,t){if(!(e instanceof HTMLElement&&(t instanceof NodeList||t instanceof HTMLCollection||t instanceof Array)))throw new Error(\"You must provide an element and a list of elements.\");return Array.from(t).indexOf(e)}function E(e){if(!(e instanceof HTMLElement))throw new Error(\"Element is not a node element.\");return null!==e.parentNode}var n=function(e,t,n){if(!(e instanceof HTMLElement&&e.parentElement instanceof HTMLElement))throw new Error(\"target and element must be a node\");e.parentElement.insertBefore(t,\"before\"===n?e:e.nextElementSibling)},b=function(e,t){return n(e,t,\"before\")},w=function(e,t){return n(e,t,\"after\")};function T(e){if(!(e instanceof HTMLElement))throw new Error(\"You must provide a valid dom element\");var n=window.getComputedStyle(e);return[\"height\",\"padding-top\",\"padding-bottom\"].map(function(e){var t=parseInt(n.getPropertyValue(e),10);return isNaN(t)?0:t}).reduce(function(e,t){return e+t})}function c(e,t){if(!(e instanceof Array))throw new Error(\"You must provide a Array of HTMLElements to be filtered.\");return\"string\"!=typeof t?e:e.filter(function(e){return e.querySelector(t)instanceof HTMLElement}).map(function(e){return e.querySelector(t)})}var C=function(e,t,n){return{element:e,posX:n.pageX-t.left,posY:n.pageY-t.top}};function L(e,t){if(!0===e.isSortable){var n=m(e).getConfig(\"acceptFrom\");if(null!==n&&!1!==n&&\"string\"!=typeof n)throw new Error('HTML5Sortable: Wrong argument, \"acceptFrom\" must be \"null\", \"false\", or a valid selector string.');if(null!==n)return!1!==n&&0<n.split(\",\").filter(function(e){return 0<e.length&&t.matches(e)}).length;if(e===t)return!0;if(void 0!==m(e).getConfig(\"connectWith\")&&null!==m(e).getConfig(\"connectWith\"))return m(e).getConfig(\"connectWith\")===m(t).getConfig(\"connectWith\")}return!1}var M,x,D,A,H,I,S,Y={items:null,connectWith:null,disableIEFix:null,acceptFrom:null,copy:!1,placeholder:null,placeholderClass:\"sortable-placeholder\",draggingClass:\"sortable-dragging\",hoverClass:!1,debounce:0,throttleTime:100,maxItems:0,itemSerializer:void 0,containerSerializer:void 0,customDragImage:null};function _(e,t){if(\"string\"==typeof m(e).getConfig(\"hoverClass\")){var o=m(e).getConfig(\"hoverClass\").split(\" \");!0===t?(g(e,\"mousemove\",function(r,o){var i=this;if(void 0===o&&(o=250),\"function\"!=typeof r)throw new Error(\"You must provide a function as the first argument for throttle.\");if(\"number\"!=typeof o)throw new Error(\"You must provide a number as the second argument for throttle.\");var a=null;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=Date.now();(null===a||o<=n-a)&&(a=n,r.apply(i,e))}}(function(r){0===r.buttons&&u(e.children,m(e).getConfig(\"items\")).forEach(function(e){var t,n;e!==r.target?(t=e.classList).remove.apply(t,o):(n=e.classList).add.apply(n,o)})},m(e).getConfig(\"throttleTime\"))),g(e,\"mouseleave\",function(){u(e.children,m(e).getConfig(\"items\")).forEach(function(e){var t;(t=e.classList).remove.apply(t,o)})})):(l(e,\"mousemove\"),l(e,\"mouseleave\"))}}var f=function(e){l(e,\"dragstart\"),l(e,\"dragend\"),l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\"),l(e,\"mouseenter\"),l(e,\"mouseleave\")},O=function(e,t){var n=e;return!0===m(t).getConfig(\"copy\")&&(h(n=e.cloneNode(!0),\"aria-copied\",\"true\"),e.parentElement.appendChild(n),n.style.display=\"none\",n.oldDisplay=e.style.display),n};function F(e){for(;!0!==e.isSortable;)e=e.parentElement;return e}function W(e,t){var n=d(e,\"opts\"),r=u(e.children,n.items).filter(function(e){return e.contains(t)});return 0<r.length?r[0]:t}var r=function(e){var t,n,r,o=d(e,\"opts\")||{},i=u(e.children,o.items),a=c(i,o.handle);l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\"),(n=t=e).h5s&&delete n.h5s.data,s(t,\"aria-dropeffect\"),l(a,\"mousedown\"),f(i),s(r=i,\"aria-grabbed\"),s(r,\"aria-copied\"),s(r,\"draggable\"),s(r,\"role\")},j=function(e){var t=d(e,\"opts\"),n=u(e.children,t.items),r=c(n,t.handle);(h(e,\"aria-dropeffect\",\"move\"),d(e,\"_disabled\",\"false\"),h(r,\"draggable\",\"true\"),!1===t.disableIEFix)&&(\"function\"==typeof(document||window.document).createElement(\"span\").dragDrop&&g(r,\"mousedown\",function(){if(-1!==n.indexOf(this))this.dragDrop();else{for(var e=this.parentElement;-1===n.indexOf(e);)e=e.parentElement;e.dragDrop()}}))},z=function(e){var t=d(e,\"opts\"),n=u(e.children,t.items),r=c(n,t.handle);d(e,\"_disabled\",\"false\"),f(n),l(r,\"mousedown\"),l(e,\"dragover\"),l(e,\"dragenter\"),l(e,\"drop\")};function N(e,f){var c=String(f);return f=Object.assign({connectWith:null,acceptFrom:null,copy:!1,placeholder:null,disableIEFix:null,placeholderClass:\"sortable-placeholder\",draggingClass:\"sortable-dragging\",hoverClass:!1,debounce:0,maxItems:0,itemSerializer:void 0,containerSerializer:void 0,customDragImage:null,items:null},\"object\"==typeof f?f:{}),\"string\"==typeof e&&(e=document.querySelectorAll(e)),e instanceof HTMLElement&&(e=[e]),e=Array.prototype.slice.call(e),/serialize/.test(c)?e.map(function(e){var t=d(e,\"opts\");return function(t,n,e){if(void 0===n&&(n=function(e,t){return e}),void 0===e&&(e=function(e){return e}),!(t instanceof HTMLElement)||1==!t.isSortable)throw new Error(\"You need to provide a sortableContainer to be serialized.\");if(\"function\"!=typeof n||\"function\"!=typeof e)throw new Error(\"You need to provide a valid serializer for items and the container.\");var r=d(t,\"opts\").items,o=u(t.children,r),i=o.map(function(e){return{parent:t,node:e,html:e.outerHTML,index:y(e,o)}});return{container:e({node:t,itemCount:i.length}),items:i.map(function(e){return n(e,t)})}}(e,t.itemSerializer,t.containerSerializer)}):(e.forEach(function(s){if(/enable|disable|destroy/.test(c))return N[c](s);[\"connectWith\",\"disableIEFix\"].forEach(function(e){f.hasOwnProperty(e)&&null!==f[e]&&console.warn('HTML5Sortable: You are using the deprecated configuration \"'+e+'\". This will be removed in an upcoming version, make sure to migrate to the new options when updating.')}),f=Object.assign({},Y,f),m(s).config=f,f=d(s,\"opts\")||f,d(s,\"opts\",f),s.isSortable=!0,z(s);var e,t=u(s.children,f.items);if(null!==f.placeholder&&void 0!==f.placeholder){var n=document.createElement(s.tagName);n.innerHTML=f.placeholder,e=n.children[0]}m(s).placeholder=function(e,t,n){if(void 0===n&&(n=\"sortable-placeholder\"),!(e instanceof HTMLElement))throw new Error(\"You must provide a valid element as a sortable.\");if(!(t instanceof HTMLElement)&&void 0!==t)throw new Error(\"You must provide a valid element as a placeholder or set ot to undefined.\");return void 0===t&&([\"UL\",\"OL\"].includes(e.tagName)?t=document.createElement(\"li\"):[\"TABLE\",\"TBODY\"].includes(e.tagName)?(t=document.createElement(\"tr\")).innerHTML='<td colspan=\"100\"></td>':t=document.createElement(\"div\")),\"string\"==typeof n&&(r=t.classList).add.apply(r,n.split(\" \")),t;var r}(s,e,f.placeholderClass),d(s,\"items\",f.items),f.acceptFrom?d(s,\"acceptFrom\",f.acceptFrom):f.connectWith&&d(s,\"connectWith\",f.connectWith),j(s),h(t,\"role\",\"option\"),h(t,\"aria-grabbed\",\"false\"),_(s,!0),g(s,\"dragstart\",function(e){if(!0!==e.target.isSortable&&(e.stopImmediatePropagation(),(!f.handle||e.target.matches(f.handle))&&\"false\"!==e.target.getAttribute(\"draggable\"))){var t=F(e.target),n=W(t,e.target);I=u(t.children,f.items),A=I.indexOf(n),H=y(n,t.children),D=t,function(e,t,n){if(!(e instanceof Event))throw new Error(\"setDragImage requires a DragEvent as the first argument.\");if(!(t instanceof HTMLElement))throw new Error(\"setDragImage requires the dragged element as the second argument.\");if(n||(n=C),e.dataTransfer&&e.dataTransfer.setDragImage){var r=n(t,v(t),e);if(!(r.element instanceof HTMLElement)||\"number\"!=typeof r.posX||\"number\"!=typeof r.posY)throw new Error(\"The customDragImage function you provided must return and object with the properties element[string], posX[integer], posY[integer].\");e.dataTransfer.effectAllowed=\"copyMove\",e.dataTransfer.setData(\"text/plain\",e.target.id),e.dataTransfer.setDragImage(r.element,r.posX,r.posY)}}(e,n,f.customDragImage),x=T(n),n.classList.add(f.draggingClass),h(M=O(n,t),\"aria-grabbed\",\"true\"),t.dispatchEvent(new CustomEvent(\"sortstart\",{detail:{origin:{elementIndex:H,index:A,container:D},item:M}}))}}),g(s,\"dragenter\",function(e){if(!0!==e.target.isSortable){var t=F(e.target);S=u(t.children,d(t,\"items\")).filter(function(e){return e!==m(s).placeholder})}}),g(s,\"dragend\",function(e){if(M){M.classList.remove(f.draggingClass),h(M,\"aria-grabbed\",\"false\"),\"true\"===M.getAttribute(\"aria-copied\")&&\"true\"!==d(M,\"dropped\")&&M.remove(),M.style.display=M.oldDisplay,delete M.oldDisplay;var t=Array.from(p.values()).map(function(e){return e.placeholder}).filter(function(e){return e instanceof HTMLElement}).filter(E)[0];t&&t.remove(),s.dispatchEvent(new CustomEvent(\"sortstop\",{detail:{origin:{elementIndex:H,index:A,container:D},item:M}})),x=M=null}}),g(s,\"drop\",function(e){if(L(s,M.parentElement)){e.preventDefault(),e.stopPropagation(),d(M,\"dropped\",\"true\");var t=Array.from(p.values()).map(function(e){return e.placeholder}).filter(function(e){return e instanceof HTMLElement}).filter(E)[0];w(t,M),t.remove(),s.dispatchEvent(new CustomEvent(\"sortstop\",{detail:{origin:{elementIndex:H,index:A,container:D},item:M}}));var n=m(s).placeholder,r=u(D.children,f.items).filter(function(e){return e!==n}),o=!0===this.isSortable?this:this.parentElement,i=u(o.children,d(o,\"items\")).filter(function(e){return e!==n}),a=y(M,Array.from(M.parentElement.children).filter(function(e){return e!==n})),l=y(M,i);H===a&&D===o||s.dispatchEvent(new CustomEvent(\"sortupdate\",{detail:{origin:{elementIndex:H,index:A,container:D,itemsBeforeUpdate:I,items:r},destination:{index:l,elementIndex:a,container:o,itemsBeforeUpdate:S,items:i},item:M}}))}});var r,o,i,a=(r=function(t,e,n){if(M)if(f.forcePlaceholderSize&&(m(t).placeholder.style.height=x+\"px\"),-1<Array.from(t.children).indexOf(e)){var r=T(e),o=y(m(t).placeholder,e.parentElement.children),i=y(e,e.parentElement.children);if(x<r){var a=r-x,l=v(e).top;if(o<i&&n<l)return;if(i<o&&l+r-a<n)return}void 0===M.oldDisplay&&(M.oldDisplay=M.style.display),\"none\"!==M.style.display&&(M.style.display=\"none\");var s=!1;try{s=v(e).top+e.offsetHeight/2<=n}catch(e){s=o<i}s?w(e,m(t).placeholder):b(e,m(t).placeholder),Array.from(p.values()).filter(function(e){return void 0!==e.placeholder}).forEach(function(e){e.placeholder!==m(t).placeholder&&e.placeholder.remove()})}else{var c=Array.from(p.values()).filter(function(e){return void 0!==e.placeholder}).map(function(e){return e.placeholder});-1!==c.indexOf(e)||t!==e||u(e.children,f.items).length||(c.forEach(function(e){return e.remove()}),e.appendChild(m(t).placeholder))}},void 0===(o=f.debounce)&&(o=0),function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];clearTimeout(i),i=setTimeout(function(){r.apply(void 0,e)},o)}),l=function(e){var t=e.target,n=!0===t.isSortable?t:F(t);if(t=W(n,t),M&&L(n,M.parentElement)&&\"true\"!==d(n,\"_disabled\")){var r=d(n,\"opts\");parseInt(r.maxItems)&&u(n.children,d(n,\"items\")).length>=parseInt(r.maxItems)&&M.parentElement!==n||(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=!0===m(n).getConfig(\"copy\")?\"copy\":\"move\",a(n,t,e.pageY))}};g(t.concat(s),\"dragover\",l),g(t.concat(s),\"dragenter\",l)}),e)}return N.destroy=function(e){r(e)},N.enable=function(e){j(e)},N.disable=function(e){var t,n,r;n=d(t=e,\"opts\"),r=c(u(t.children,n.items),n.handle),h(t,\"aria-dropeffect\",\"none\"),d(t,\"_disabled\",\"true\"),h(r,\"draggable\",\"false\"),l(r,\"mousedown\")},N}();\n//# sourceMappingURL=html5sortable.min.js.map\n"),
111
        }
112
113
        // define dirs
114
        dir6 := &embedded.EmbeddedDir{
115
                Filename:   "",
116
                DirModTime: time.Unix(1538894434, 0),
117
                ChildFiles: []*embedded.EmbeddedFile{
118
                        file7, // "Chart.bundle.min.js"
119
                        file8, // "bootstrap.min.js"
120
                        file9, // "chart_index.js"
121
                        filea, // "charts.js"
122
                        fileb, // "jquery-3.3.1.min.js"
123
                        filec, // "main.js"
124
                        filed, // "pikaday.js"
125
                        filee, // "setup.js"
126
                        filef, // "sortable.min.js"
127
128
                },
129
        }
130
131
        // link ChildDirs
132
        dir6.ChildDirs = []*embedded.EmbeddedDir{}
133
134
        // register embeddedBox
135
        embedded.RegisterEmbeddedBox(`js`, &embedded.EmbeddedBox{
136
                Name: `js`,
137
                Time: time.Unix(1538894434, 0),
138
                Dirs: map[string]*embedded.EmbeddedDir{
139
                        "": dir6,
140
                },
141
                Files: map[string]*embedded.EmbeddedFile{
142
                        "Chart.bundle.min.js": file7,
143
                        "bootstrap.min.js":    file8,
144
                        "chart_index.js":      file9,
145
                        "charts.js":           filea,
146
                        "jquery-3.3.1.min.js": fileb,
147
                        "main.js":             filec,
148
                        "pikaday.js":          filed,
149
                        "setup.js":            filee,
150
                        "sortable.min.js":     filef,
151
                },
152
        })
153
}
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/rice-box.go:

-
8
func init() {
9
10
        // define files
11
        file2 := &embedded.EmbeddedFile{
12
                Filename:    "base.css",
13
                FileModTime: time.Unix(1539229503, 0),
14
                Content:     string("@charset \"UTF-8\";\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n/*    Index Page      */\n/*    Status Container   */\n/*    Button Colors      */\n/*   Footer Settings   */\n/*   Global Settings */\n/*   Mobile Settings   */\n/*   Mobile Service Container   */\nHTML, BODY {\n  background-color: #fcfcfc; }\n\n.container {\n  padding-top: 20px;\n  padding-bottom: 20px;\n  max-width: 860px; }\n\n.header-title {\n  color: #464646; }\n\n.header-desc {\n  color: #939393; }\n\n.btn {\n  border-radius: 0.2rem; }\n\n.online_list .badge {\n  margin-top: 0.2rem; }\n\n.navbar {\n  margin-bottom: 30px; }\n\n.btn-sm {\n  line-height: 1.3;\n  font-size: 0.75rem; }\n\n.view_service_btn {\n  position: absolute;\n  bottom: -40px;\n  right: 40px; }\n\n.service_lower_info {\n  position: absolute;\n  bottom: -40px;\n  left: 40px;\n  color: #d1ffca;\n  font-size: 0.85rem; }\n\n.lg_number {\n  font-size: 2.3rem;\n  font-weight: bold;\n  display: block;\n  color: #4f4f4f; }\n\n.stats_area {\n  text-align: center;\n  color: #a5a5a5; }\n\n.lower_canvas {\n  height: 3.4rem;\n  width: 100%;\n  background-color: #48d338;\n  padding: 15px 10px;\n  margin-left: 0px !important;\n  margin-right: 0px !important; }\n\n.lower_canvas SPAN {\n  font-size: 1rem;\n  color: #fff; }\n\n.footer {\n  text-decoration: none;\n  margin-top: 20px; }\n\n.footer A {\n  color: #8d8d8d;\n  text-decoration: none; }\n\n.footer A:HOVER {\n  color: #6d6d6d; }\n\n.badge {\n  color: white;\n  border-radius: 0.2rem; }\n\n.btn-group {\n  height: 25px; }\n  .btn-group A {\n    padding: 0.1rem .75rem;\n    font-size: 0.8rem; }\n\n.card-body .badge {\n  color: #fff; }\n\n.nav-pills .nav-link {\n  border-radius: 0.2rem; }\n\n.form-control {\n  border-radius: 0.2rem; }\n\n.card {\n  background-color: #ffffff;\n  border: 1px solid rgba(0, 0, 0, 0.125); }\n\n.card-body {\n  overflow: hidden; }\n\n.card-body H4 A {\n  color: #444444;\n  text-decoration: none; }\n\n.chart-container {\n  position: relative;\n  height: 170px;\n  width: 100%; }\n\n.service-chart-container {\n  position: relative;\n  height: 400px;\n  width: 100%; }\n\n.btn-primary {\n  background-color: #3e9bff;\n  border-color: #006fe6;\n  color: white; }\n  .btn-primary.dyn-dark {\n    background-color: #32a825 !important;\n    border-color: #2c9320 !important; }\n  .btn-primary.dyn-light {\n    background-color: #75de69 !important;\n    border-color: #88e37e !important; }\n\n.btn-success {\n  background-color: #47d337; }\n  .btn-success.dyn-dark {\n    background-color: #32a825 !important;\n    border-color: #2c9320 !important; }\n  .btn-success.dyn-light {\n    background-color: #75de69 !important;\n    border-color: #88e37e !important; }\n\n.btn-danger {\n  background-color: #dd3545; }\n  .btn-danger.dyn-dark {\n    background-color: #b61f2d !important;\n    border-color: #a01b28 !important; }\n  .btn-danger.dyn-light {\n    background-color: #e66975 !important;\n    border-color: #e97f89 !important; }\n\n.bg-success {\n  background-color: #47d337 !important; }\n\n.bg-danger {\n  background-color: #dd3545 !important; }\n\n.bg-success .dyn-dark {\n  background-color: #35b027 !important; }\n\n.bg-danger .dyn-dark {\n  background-color: #bf202f !important; }\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n  background-color: #13a00d; }\n\n.nav-pills A {\n  color: #424242; }\n\n.CodeMirror {\n  /* Bootstrap Settings */\n  box-sizing: border-box;\n  margin: 0;\n  font: inherit;\n  overflow: auto;\n  font-family: inherit;\n  display: block;\n  width: 100%;\n  padding: 0px;\n  font-size: 14px;\n  line-height: 1.5;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  /* Code Mirror Settings */\n  font-family: monospace;\n  position: relative;\n  overflow: hidden;\n  height: 80vh; }\n\n.CodeMirror-focused {\n  /* Bootstrap Settings */\n  border-color: #66afe9;\n  outline: 0;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }\n\n.switch {\n  font-size: 1rem;\n  position: relative; }\n\n.switch input {\n  position: absolute;\n  height: 1px;\n  width: 1px;\n  background: none;\n  border: 0;\n  clip: rect(0 0 0 0);\n  clip-path: inset(50%);\n  overflow: hidden;\n  padding: 0; }\n\n.switch input + label {\n  position: relative;\n  min-width: calc(calc(2.375rem * .8) * 2);\n  border-radius: calc(2.375rem * .8);\n  height: calc(2.375rem * .8);\n  line-height: calc(2.375rem * .8);\n  display: inline-block;\n  cursor: pointer;\n  outline: none;\n  user-select: none;\n  vertical-align: middle;\n  text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem); }\n\n.switch input + label::before,\n.switch input + label::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: calc(calc(2.375rem * .8) * 2);\n  bottom: 0;\n  display: block; }\n\n.switch input + label::before {\n  right: 0;\n  background-color: #dee2e6;\n  border-radius: calc(2.375rem * .8);\n  transition: 0.2s all; }\n\n.switch input + label::after {\n  top: 2px;\n  left: 2px;\n  width: calc(calc(2.375rem * .8) - calc(2px * 2));\n  height: calc(calc(2.375rem * .8) - calc(2px * 2));\n  border-radius: 50%;\n  background-color: white;\n  transition: 0.2s all; }\n\n.switch input:checked + label::before {\n  background-color: #08d; }\n\n.switch input:checked + label::after {\n  margin-left: calc(2.375rem * .8); }\n\n.switch input:focus + label::before {\n  outline: none;\n  box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25); }\n\n.switch input:disabled + label {\n  color: #868e96;\n  cursor: not-allowed; }\n\n.switch input:disabled + label::before {\n  background-color: #e9ecef; }\n\n.switch.switch-sm {\n  font-size: 0.875rem; }\n\n.switch.switch-sm input + label {\n  min-width: calc(calc(1.9375rem * .8) * 2);\n  height: calc(1.9375rem * .8);\n  line-height: calc(1.9375rem * .8);\n  text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem); }\n\n.switch.switch-sm input + label::before {\n  width: calc(calc(1.9375rem * .8) * 2); }\n\n.switch.switch-sm input + label::after {\n  width: calc(calc(1.9375rem * .8) - calc(2px * 2));\n  height: calc(calc(1.9375rem * .8) - calc(2px * 2)); }\n\n.switch.switch-sm input:checked + label::after {\n  margin-left: calc(1.9375rem * .8); }\n\n.switch.switch-lg {\n  font-size: 1.25rem; }\n\n.switch.switch-lg input + label {\n  min-width: calc(calc(3rem * .8) * 2);\n  height: calc(3rem * .8);\n  line-height: calc(3rem * .8);\n  text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem); }\n\n.switch.switch-lg input + label::before {\n  width: calc(calc(3rem * .8) * 2); }\n\n.switch.switch-lg input + label::after {\n  width: calc(calc(3rem * .8) - calc(2px * 2));\n  height: calc(calc(3rem * .8) - calc(2px * 2)); }\n\n.switch.switch-lg input:checked + label::after {\n  margin-left: calc(3rem * .8); }\n\n.switch + .switch {\n  margin-left: 1rem; }\n\n@keyframes pulse_animation {\n  0% {\n    transform: scale(1); }\n  30% {\n    transform: scale(1); }\n  40% {\n    transform: scale(1.02); }\n  50% {\n    transform: scale(1); }\n  60% {\n    transform: scale(1); }\n  70% {\n    transform: scale(1.05); }\n  80% {\n    transform: scale(1); }\n  100% {\n    transform: scale(1); } }\n.pulse {\n  animation-name: pulse_animation;\n  animation-duration: 1500ms;\n  transform-origin: 70% 70%;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear; }\n\n@keyframes glow-grow {\n  0% {\n    opacity: 0;\n    transform: scale(1); }\n  80% {\n    opacity: 1; }\n  100% {\n    transform: scale(2);\n    opacity: 0; } }\n.pulse-glow {\n  animation-name: glow-grown;\n  animation-duration: 100ms;\n  transform-origin: 70% 30%;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear; }\n\n.pulse-glow:before,\n.pulse-glow:after {\n  position: absolute;\n  content: '';\n  height: 0.5rem;\n  width: 1.75rem;\n  top: 1.2rem;\n  right: 2.15rem;\n  border-radius: 0;\n  box-shadow: 0 0 7px #47d337;\n  animation: glow-grow 2s ease-out infinite; }\n\n.sortable_drag {\n  background-color: #0000000f; }\n\n.drag_icon {\n  cursor: move;\n  /* fallback if grab cursor is unsupported */\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n  width: 25px;\n  height: 25px;\n  display: inline-block;\n  margin-right: 5px;\n  margin-left: -10px;\n  text-align: center;\n  color: #b1b1b1; }\n\n/* (Optional) Apply a \"closed-hand\" cursor during drag operation. */\n.drag_icon:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing; }\n\n.switch_btn {\n  float: right;\n  margin: -1px 0px 0px 0px;\n  display: block; }\n\n#start_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px; }\n\n#end_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n  right: 0; }\n\n.pointer {\n  cursor: pointer; }\n\n/*!\n * Pikaday\n * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/\n */\n.pika-single {\n  z-index: 9999;\n  display: block;\n  position: relative;\n  color: #333;\n  background: #fff;\n  border: 1px solid #ccc;\n  border-bottom-color: #bbb;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif; }\n  .pika-single.is-hidden {\n    display: none; }\n  .pika-single.is-bound {\n    position: absolute;\n    box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); }\n\n.pika-single {\n  *zoom: 1; }\n  .pika-single:before, .pika-single:after {\n    content: \" \";\n    display: table; }\n  .pika-single:after {\n    clear: both; }\n\n.pika-lendar {\n  float: left;\n  width: 240px;\n  margin: 8px; }\n\n.pika-title {\n  position: relative;\n  text-align: center; }\n  .pika-title select {\n    cursor: pointer;\n    position: absolute;\n    z-index: 9998;\n    margin: 0;\n    left: 0;\n    top: 5px;\n    filter: alpha(opacity=0);\n    opacity: 0; }\n\n.pika-label {\n  display: inline-block;\n  *display: inline;\n  position: relative;\n  z-index: 9999;\n  overflow: hidden;\n  margin: 0;\n  padding: 5px 3px;\n  font-size: 14px;\n  line-height: 20px;\n  font-weight: bold;\n  color: #333;\n  background-color: #fff; }\n\n.pika-prev,\n.pika-next {\n  display: block;\n  cursor: pointer;\n  position: relative;\n  outline: none;\n  border: 0;\n  padding: 0;\n  width: 20px;\n  height: 30px;\n  text-indent: 20px;\n  white-space: nowrap;\n  overflow: hidden;\n  background-color: transparent;\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: 75% 75%;\n  opacity: .5;\n  *position: absolute;\n  *top: 0; }\n  .pika-prev:hover,\n  .pika-next:hover {\n    opacity: 1; }\n  .pika-prev.is-disabled,\n  .pika-next.is-disabled {\n    cursor: default;\n    opacity: .2; }\n\n.pika-prev,\n.is-rtl .pika-next {\n  float: left;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==\");\n  *left: 0; }\n\n.pika-next,\n.is-rtl .pika-prev {\n  float: right;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=\");\n  *right: 0; }\n\n.pika-select {\n  display: inline-block;\n  *display: inline; }\n\n.pika-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  border: 0; }\n  .pika-table th,\n  .pika-table td {\n    width: 14.285714285714286%;\n    padding: 0; }\n  .pika-table th {\n    color: #999;\n    font-size: 12px;\n    line-height: 25px;\n    font-weight: bold;\n    text-align: center; }\n  .pika-table abbr {\n    border-bottom: none;\n    cursor: help; }\n\n.pika-button {\n  cursor: pointer;\n  display: block;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  outline: none;\n  border: 0;\n  margin: 0;\n  width: 100%;\n  padding: 5px;\n  color: #666;\n  font-size: 12px;\n  line-height: 15px;\n  text-align: right;\n  background: #f5f5f5; }\n  .is-today .pika-button {\n    color: #33aaff;\n    font-weight: bold; }\n  .is-selected .pika-button {\n    color: #fff;\n    font-weight: bold;\n    background: #33aaff;\n    box-shadow: inset 0 1px 3px #178fe5;\n    border-radius: 3px; }\n  .is-disabled .pika-button, .is-outside-current-month .pika-button {\n    color: #999;\n    opacity: .3; }\n  .is-disabled .pika-button {\n    pointer-events: none;\n    cursor: default; }\n  .pika-button:hover {\n    color: #fff;\n    background: #ff8000;\n    box-shadow: none;\n    border-radius: 3px; }\n  .pika-button .is-selection-disabled {\n    pointer-events: none;\n    cursor: default; }\n\n.pika-week {\n  font-size: 11px;\n  color: #999; }\n\n.is-inrange .pika-button {\n  background: #D5E9F7; }\n\n.is-startrange .pika-button {\n  color: #fff;\n  background: #6CB31D;\n  box-shadow: none;\n  border-radius: 3px; }\n\n.is-endrange .pika-button {\n  color: #fff;\n  background: #33aaff;\n  box-shadow: none;\n  border-radius: 3px; }\n\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n@media (max-width: 767px) {\n  HTML, BODY {\n    background-color: #fcfcfc; }\n\n  .sm-container {\n    margin-top: 40px !important;\n    padding: 0 !important; }\n\n  .list-group-item H5 {\n    font-size: 0.9rem; }\n\n  .container {\n    padding: 0 !important; }\n\n  .navbar {\n    margin-left: 0px;\n    margin-top: 0px;\n    width: 100%;\n    margin-bottom: 0; }\n\n  .btn-sm {\n    line-height: 0.9rem;\n    font-size: 0.65rem; }\n\n  .full-col-12 {\n    padding-left: 0px;\n    padding-right: 0px; }\n\n  .card {\n    border: 0;\n    border-radius: 0rem;\n    padding: 0;\n    background-color: #ffffff; }\n\n  .card-body {\n    font-size: 6pt;\n    padding: 5px 5px; }\n\n  .lg_number {\n    font-size: 7.8vw; }\n\n  .stats_area {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important; }\n\n  .stats_area .col-4 {\n    padding-left: 0;\n    padding-right: 0;\n    font-size: 0.6rem; }\n\n  .list-group-item {\n    border-top: 1px solid #e4e4e4;\n    border: 0px; }\n\n  .list-group-item:first-child {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n  .list-group-item:last-child {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n\n  .list-group-item P {\n    font-size: 0.7rem; }\n\n  .service-chart-container {\n    height: 200px; } }\n\n/*# sourceMappingURL=base.css.map */\n"),
15
        }
16
        file3 := &embedded.EmbeddedFile{
17
                Filename:    "base.css.map",
18
                FileModTime: time.Unix(1539229504, 0),
19
                Content:     string("{\n\"version\": 3,\n\"mappings\": \";AAAA;;;;;;;;;;;;;;;GAeG;ACfH;;;;;;;;;;;;;;;GAeG;AAEH,wBAAwB;AAMxB,2BAA2B;AAQ3B,2BAA2B;AAK3B,yBAAyB;AAKzB,uBAAuB;AAIvB,yBAAyB;AAIzB,kCAAkC;AD7BlC,UAAU;EACN,gBAAgB,ECHD,OAAO;;ADM1B,UAAW;EACP,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,SAAS,ECRD,KAAK;;ADWjB,aAAc;EACV,KAAK,ECXK,OAAO;;ADcrB,YAAa;EACT,KAAK,ECdW,OAAO;;ADiB3B,IAAK;EACD,aAAa,ECGM,MAAM;;ADA7B,mBAAoB;EAChB,UAAU,EAAE,MAAM;;AAGtB,OAAQ;EACJ,aAAa,EAAE,IAAI;;AAGvB,OAAQ;EACJ,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,OAAO;;AAGtB,iBAAkB;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAGf,mBAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,OAAO;;AAGtB,UAAW;EACP,SAAS,ECzCQ,MAAM;ED0CvB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,KAAK;EACd,KAAK,EC9Ca,OAAO;;ADiD7B,WAAY;EACR,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,OAAO;;AAGlB,aAAc;EACV,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,SAAS;EAClB,WAAW,EAAE,cAAc;EAC3B,YAAY,EAAE,cAAc;;AAGhC,kBAAmB;EACf,SAAS,EAAE,IAAI;EACf,KAAK,EChEmB,IAAI;;ADmEhC,OAAQ;EACJ,eAAe,EAAE,IAAI;EACrB,UAAU,EAAE,IAAI;;AAGpB,SAAU;EACN,KAAK,EChEW,OAAO;EDiEvB,eAAe,EAAE,IAAI;;AAGzB,eAAgB;EACZ,KAAK,EAAE,OAAO;;AAGlB,MAAO;EACH,KAAK,EAAE,KAAK;EACZ,aAAa,ECrEM,MAAM;;ADwE7B,UAAW;EACP,MAAM,EAAE,IAAI;EAEZ,YAAI;IACA,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,MAAM;;AAIzB,iBAAkB;EACd,KAAK,EAAE,IAAI;;AAGf,oBAAqB;EACjB,aAAa,ECtFM,MAAM;;ADyF7B,aAAc;EACV,aAAa,EC1FM,MAAM;;AD6F7B,KAAM;EACF,gBAAgB,EChHC,OAAO;EDiHxB,MAAM,EChHO,8BAA0B;;ADmH3C,UAAW;EACP,QAAQ,EAAE,MAAM;;AAGpB,eAAgB;EACZ,KAAK,ECvHO,OAAO;EDwHnB,eAAe,EAAE,IAAI;;AAGzB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAGb,wBAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAkCb,YAAa;EACT,gBAAgB,EC/JJ,OAAO;EDgKnB,YAAY,EAAE,OAA2B;EACzC,KAAK,EAAE,KAAK;EAdZ,qBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,sBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAYrD,YAAa;EACT,gBAAgB,ECxKJ,OAAO;EDqJnB,qBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,sBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAiBrD,WAAY;EACR,gBAAgB,EC5KL,OAAO;EDoJlB,oBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,qBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAsBrD,WAAY;EACR,gBAAgB,EAAE,kBAAyB;;AAG/C,UAAW;EACP,gBAAgB,EAAE,kBAAwB;;AAG9C,qBAAsB;EAClB,gBAAgB,EAAE,kBAAsC;;AAG5D,oBAAqB;EACjB,gBAAgB,EAAE,kBAAqC;;AAG3D,yDAAwD;EACpD,gBAAgB,EC5LJ,OAAO;;AD+LvB,YAAa;EACT,KAAK,EAAE,OAAO;;AAIlB,WAAY;EACV,wBAAwB;EACxB,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,OAAO;EACb,QAAQ,EAAE,IAAI;EACd,WAAW,EAAE,OAAO;EACpB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,IAAI;EACtB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,oCAAmC;EAC/C,UAAU,EAAE,0DAA0D;EACtE,0BAA0B;EAC1B,WAAW,EAAE,SAAS;EACtB,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAC,IAAI;;AAGb,mBAAoB;EAClB,wBAAwB;EACxB,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,sEAAiE;EAC7E,UAAU,EAAE,0DAA0D;;AAGxE,OAAQ;EACN,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,QAAQ;;AAEpB,aAAc;EACZ,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,aAAa;EACnB,SAAS,EAAE,UAAU;EACrB,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,CAAC;;AAEZ,qBAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,6BAA6B;EACxC,aAAa,EAAE,mBAAmB;EAClC,MAAM,EAAE,mBAAmB;EAC3B,WAAW,EAAE,mBAAmB;EAChC,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,2CAA2C;;AAE1D;4BAC6B;EAC3B,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,6BAA6B;EACpC,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;;AAEhB,6BAA8B;EAC5B,KAAK,EAAE,CAAC;EACR,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,mBAAmB;EAClC,UAAU,EAAE,QAAQ;;AAEtB,4BAA6B;EAC3B,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,yCAAyC;EAChD,MAAM,EAAE,yCAAyC;EACjD,aAAa,EAAE,GAAG;EAClB,gBAAgB,EAAE,KAAK;EACvB,UAAU,EAAE,QAAQ;;AAEtB,qCAAsC;EACpC,gBAAgB,EAAE,IAAI;;AAExB,oCAAqC;EACnC,WAAW,EAAE,mBAAmB;;AAElC,mCAAoC;EAClC,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,oCAAoC;;AAElD,8BAA+B;EAC7B,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,WAAW;;AAErB,sCAAuC;EACrC,gBAAgB,EAAE,OAAO;;AAE3B,iBAAkB;EAChB,SAAS,EAAE,QAAQ;;AAErB,+BAAgC;EAC9B,SAAS,EAAE,8BAA8B;EACzC,MAAM,EAAE,oBAAoB;EAC5B,WAAW,EA
+8
func init() {
9
10
        // define files
11
        file2 := &embedded.EmbeddedFile{
12
                Filename:    "base.scss",
13
                FileModTime: time.Unix(1538106377, 0),
14
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n@import 'variables';\n\n\nHTML,BODY {\n    background-color: $background-color;\n}\n\n.container {\n    padding-top: 20px;\n    padding-bottom: 20px;\n    max-width: $max-width;\n}\n\n.header-title {\n    color: $title-color;\n}\n\n.header-desc {\n    color: $description-color;\n}\n\n.btn {\n    border-radius: $global-border-radius;\n}\n\n.online_list .badge {\n    margin-top: 0.2rem;\n}\n\n.navbar {\n    margin-bottom: 30px;\n}\n\n.btn-sm {\n    line-height: 1.3;\n    font-size: 0.75rem;\n}\n\n.view_service_btn {\n    position: absolute;\n    bottom: -40px;\n    right: 40px;\n}\n\n.service_lower_info {\n    position: absolute;\n    bottom: -40px;\n    left: 40px;\n    color: #d1ffca;\n    font-size: 0.85rem;\n}\n\n.lg_number {\n    font-size: $service-stats-size;\n    font-weight: bold;\n    display: block;\n    color: $service-stats-color;\n}\n\n.stats_area {\n    text-align: center;\n    color: #a5a5a5;\n}\n\n.lower_canvas {\n    height: 3.4rem;\n    width: 100%;\n    background-color: #48d338;\n    padding: 15px 10px;\n    margin-left: 0px !important;\n    margin-right: 0px !important;\n}\n\n.lower_canvas SPAN {\n    font-size: 1rem;\n    color: $service-description-color\n}\n\n.footer {\n    text-decoration: none;\n    margin-top: 20px;\n}\n\n.footer A {\n    color: $footer-text-color;\n    text-decoration: none;\n}\n\n.footer A:HOVER {\n    color: #6d6d6d;\n}\n\n.badge {\n    color: white;\n    border-radius: $global-border-radius;\n}\n\n.btn-group {\n    height: 25px;\n\n    & A {\n        padding: 0.1rem .75rem;\n        font-size: 0.8rem;\n    }\n}\n\n.card-body .badge {\n    color: #fff;\n}\n\n.nav-pills .nav-link {\n    border-radius: $global-border-radius;\n}\n\n.form-control {\n    border-radius: $global-border-radius;\n}\n\n.card {\n    background-color: $service-background;\n    border: $service-border;\n}\n\n.card-body {\n    overflow: hidden;\n}\n\n.card-body H4 A {\n    color: $service-title;\n    text-decoration: none;\n}\n\n.chart-container {\n  position: relative;\n  height: 170px;\n  width: 100%;\n}\n\n.service-chart-container {\n  position: relative;\n  height: 400px;\n  width: 100%;\n}\n\n@mixin dynamic-color-hov($color) {\n    &.dyn-dark {\n        background-color: darken($color, 12%) !important;\n        border-color: darken($color, 17%) !important;\n    }\n    &.dyn-dark:HOVER {\n        background-color: darken($color, 17%) !important;\n        border-color: darken($color, 20%) !important;\n    }\n    &.dyn-light {\n        background-color: lighten($color, 12%) !important;\n        border-color: lighten($color, 17%) !important;\n    }\n    &.dyn-light:HOVER {\n        background-color: lighten($color, 17%) !important;\n        border-color: lighten($color, 20%) !important;\n    }\n}\n\n@mixin dynamic-color($color) {\n    &.dyn-dark {\n        background-color: darken($color, 12%) !important;\n        border-color: darken($color, 17%) !important;\n    }\n    &.dyn-light {\n        background-color: lighten($color, 12%) !important;\n        border-color: lighten($color, 17%) !important;\n    }\n}\n\n\n.btn-primary {\n    background-color: $primary-color;\n    border-color: darken($primary-color, 17%);\n    color: white;\n    @include dynamic-color($success-color);\n}\n\n.btn-success {\n    background-color: $success-color;\n    @include dynamic-color($success-color);\n}\n\n.btn-danger {\n    background-color: $danger-color;\n    @include dynamic-color($danger-color);\n}\n\n.bg-success {\n    background-color: $success-color !important;\n}\n\n.bg-danger {\n    background-color: $danger-color !important;\n}\n\n.bg-success .dyn-dark {\n    background-color: darken($success-color, 10%) !important;\n}\n\n.bg-danger .dyn-dark {\n    background-color: darken($danger-color, 10%) !important;\n}\n\n.nav-pills .nav-link.active, .nav-pills .show>.nav-link {\n    background-color: $nav-tab-color;\n}\n\n.nav-pills A {\n    color: #424242;\n}\n\n\n.CodeMirror {\n  /* Bootstrap Settings */\n  box-sizing: border-box;\n  margin: 0;\n  font: inherit;\n  overflow: auto;\n  font-family: inherit;\n  display: block;\n  width: 100%;\n  padding: 0px;\n  font-size: 14px;\n  line-height: 1.5;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  /* Code Mirror Settings */\n  font-family: monospace;\n  position: relative;\n  overflow: hidden;\n  height:80vh;\n}\n\n.CodeMirror-focused {\n  /* Bootstrap Settings */\n  border-color: #66afe9;\n  outline: 0;\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n\n.switch {\n  font-size: 1rem;\n  position: relative;\n}\n.switch input {\n  position: absolute;\n  height: 1px;\n  width: 1px;\n  background: none;\n  border: 0;\n  clip: rect(0 0 0 0);\n  clip-path: inset(50%);\n  overflow: hidden;\n  padding: 0;\n}\n.switch input + label {\n  position: relative;\n  min-width: calc(calc(2.375rem * .8) * 2);\n  border-radius: calc(2.375rem * .8);\n  height: calc(2.375rem * .8);\n  line-height: calc(2.375rem * .8);\n  display: inline-block;\n  cursor: pointer;\n  outline: none;\n  user-select: none;\n  vertical-align: middle;\n  text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem);\n}\n.switch input + label::before,\n.switch input + label::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: calc(calc(2.375rem * .8) * 2);\n  bottom: 0;\n  display: block;\n}\n.switch input + label::before {\n  right: 0;\n  background-color: #dee2e6;\n  border-radius: calc(2.375rem * .8);\n  transition: 0.2s all;\n}\n.switch input + label::after {\n  top: 2px;\n  left: 2px;\n  width: calc(calc(2.375rem * .8) - calc(2px * 2));\n  height: calc(calc(2.375rem * .8) - calc(2px * 2));\n  border-radius: 50%;\n  background-color: white;\n  transition: 0.2s all;\n}\n.switch input:checked + label::before {\n  background-color: #08d;\n}\n.switch input:checked + label::after {\n  margin-left: calc(2.375rem * .8);\n}\n.switch input:focus + label::before {\n  outline: none;\n  box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25);\n}\n.switch input:disabled + label {\n  color: #868e96;\n  cursor: not-allowed;\n}\n.switch input:disabled + label::before {\n  background-color: #e9ecef;\n}\n.switch.switch-sm {\n  font-size: 0.875rem;\n}\n.switch.switch-sm input + label {\n  min-width: calc(calc(1.9375rem * .8) * 2);\n  height: calc(1.9375rem * .8);\n  line-height: calc(1.9375rem * .8);\n  text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem);\n}\n.switch.switch-sm input + label::before {\n  width: calc(calc(1.9375rem * .8) * 2);\n}\n.switch.switch-sm input + label::after {\n  width: calc(calc(1.9375rem * .8) - calc(2px * 2));\n  height: calc(calc(1.9375rem * .8) - calc(2px * 2));\n}\n.switch.switch-sm input:checked + label::after {\n  margin-left: calc(1.9375rem * .8);\n}\n.switch.switch-lg {\n  font-size: 1.25rem;\n}\n.switch.switch-lg input + label {\n  min-width: calc(calc(3rem * .8) * 2);\n  height: calc(3rem * .8);\n  line-height: calc(3rem * .8);\n  text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem);\n}\n.switch.switch-lg input + label::before {\n  width: calc(calc(3rem * .8) * 2);\n}\n.switch.switch-lg input + label::after {\n  width: calc(calc(3rem * .8) - calc(2px * 2));\n  height: calc(calc(3rem * .8) - calc(2px * 2));\n}\n.switch.switch-lg input:checked + label::after {\n  margin-left: calc(3rem * .8);\n}\n.switch + .switch {\n  margin-left: 1rem;\n}\n\n\n@keyframes pulse_animation {\n    0% { transform: scale(1); }\n    30% { transform: scale(1); }\n    40% { transform: scale(1.02); }\n    50% { transform: scale(1); }\n    60% { transform: scale(1); }\n    70% { transform: scale(1.05); }\n    80% { transform: scale(1); }\n    100% { transform: scale(1); }\n}\n\n.pulse {\n    animation-name: pulse_animation;\n    animation-duration: 1500ms;\n    transform-origin:70% 70%;\n    animation-iteration-count: infinite;\n    animation-timing-function: linear;\n}\n\n\n@keyframes glow-grow {\n  0% {\n    opacity: 0;\n    transform: scale(1);\n  }\n  80% {\n    opacity: 1;\n  }\n  100% {\n    transform: scale(2);\n    opacity: 0;\n  }\n}\n.pulse-glow {\n    animation-name: glow-grown;\n    animation-duration: 100ms;\n    transform-origin: 70% 30%;\n    animation-iteration-count: infinite;\n    animation-timing-function: linear;\n}\n\n.pulse-glow:before,\n.pulse-glow:after {\n    position: absolute;\n    content: '';\n    height: 0.5rem;\n    width: 1.75rem;\n    top: 1.2rem;\n    right: 2.15rem;\n    border-radius: 0;\n    box-shadow: 0 0 7px #47d337;\n    animation: glow-grow 2s ease-out infinite;\n}\n\n.sortable_drag {\n  background-color: #0000000f;\n}\n\n.drag_icon {\n  cursor: move; /* fallback if grab cursor is unsupported */\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n  width: 25px;\n  height: 25px;\n  display: inline-block;\n  margin-right: 5px;\n  margin-left: -10px;\n  text-align: center;\n  color: #b1b1b1;\n}\n\n/* (Optional) Apply a \"closed-hand\" cursor during drag operation. */\n.drag_icon:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing;\n}\n\n.switch_btn {\n  float: right;\n  margin: -1px 0px 0px 0px;\n  display: block;\n}\n\n#start_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n}\n\n#end_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n  right: 0;\n}\n\n.pointer {\n  cursor: pointer;\n}\n\n@import './pikaday';\n\n@import './mobile';\n"),
15
        }
16
        file3 := &embedded.EmbeddedFile{
17
                Filename:    "mobile.scss",
18
                FileModTime: time.Unix(1538106377, 0),
19
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n@media (max-width: 767px) {\n\n    HTML,BODY {\n        background-color: $sm-background-color;\n    }\n\n    .sm-container {\n        margin-top: 40px !important;\n        padding: 0 !important;\n    }\n\n    .list-group-item H5 {\n        font-size: 0.9rem;\n    }\n\n    .container {\n        padding: 0 !important;\n    }\n\n    .navbar {\n        margin-left: 0px;\n        margin-top: 0px;\n        width: 100%;\n        margin-bottom: 0;\n    }\n\n    .btn-sm {\n        line-height: 0.9rem;\n        font-size: 0.65rem;\n    }\n\n    .full-col-12 {\n        padding-left: 0px;\n        padding-right: 0px;\n    }\n\n    .card {\n        border: 0;\n        border-radius: $sm-border-radius;\n        padding: $sm-padding;\n        background-color: $sm-service-background;\n    }\n\n    .card-body {\n        font-size: 6pt;\n        padding: 5px 5px;\n    }\n\n    .lg_number {\n        font-size: 7.8vw;\n    }\n\n    .stats_area {\n        margin-top: 1.5rem !important;\n        margin-bottom: 1.5rem !important;\n    }\n\n    .stats_area .col-4 {\n        padding-left: 0;\n        padding-right: 0;\n        font-size: 0.6rem;\n    }\n\n    .list-group-item {\n        border-top: 1px solid #e4e4e4;\n        border: 0px;\n    }\n\n    .list-group-item:first-child {\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n    }\n\n    .list-group-item:last-child {\n        border-bottom-right-radius: 0;\n        border-bottom-left-radius: 0;\n    }\n\n    .list-group-item P {\n        font-size: 0.7rem;\n    }\n\n    .service-chart-container {\n        height: 200px;\n    }\n}\n"),
20
        }
21
        file4 := &embedded.EmbeddedFile{
22
                Filename:    "pikaday.scss",
23
                FileModTime: time.Unix(1537243356, 0),
24
                Content:     string("/*!\n * Pikaday\n * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/\n */\n\n// Variables\n// Declare any of these variables before importing this SCSS file to easily override defaults\n// Variables are namespaced with the pd (pikaday) prefix\n\n// Colours\n$pd-text-color: #333 !default;\n$pd-title-color: #333 !default;\n$pd-title-bg: #fff !default;\n$pd-picker-bg: #fff !default;\n$pd-picker-border: #ccc !default;\n$pd-picker-border-bottom: #bbb !default;\n$pd-picker-shadow: rgba(0,0,0,.5) !default;\n$pd-th-color: #999 !default;\n$pd-day-color: #666 !default;\n$pd-day-bg: #f5f5f5 !default;\n$pd-day-hover-color: #fff !default;\n$pd-day-hover-bg: #ff8000 !default;\n$pd-day-today-color: #33aaff !default;\n$pd-day-selected-color: #fff !default;\n$pd-day-selected-bg: #33aaff !default;\n$pd-day-selected-shadow: #178fe5 !default;\n$pd-day-disabled-color: #999 !default;\n$pd-week-color: #999 !default;\n\n// Font\n$pd-font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif !default;\n\n\n.pika-single {\n    z-index: 9999;\n    display: block;\n    position: relative;\n    color: $pd-text-color;\n    background: $pd-picker-bg;\n    border: 1px solid $pd-picker-border;\n    border-bottom-color: $pd-picker-border-bottom;\n    font-family: $pd-font-family;\n\n    &.is-hidden {\n        display: none;\n    }\n\n    &.is-bound {\n        position: absolute;\n        box-shadow: 0 5px 15px -5px $pd-picker-shadow;\n    }\n}\n\n// clear child float (pika-lendar), using the famous micro clearfix hack\n// http://nicolasgallagher.com/micro-clearfix-hack/\n.pika-single {\n    *zoom: 1;\n\n    &:before,\n    &:after {\n        content: \" \";\n        display: table;\n    }\n\n    &:after { clear: both }\n}\n\n.pika-lendar {\n    float: left;\n    width: 240px;\n    margin: 8px;\n}\n\n.pika-title {\n    position: relative;\n    text-align: center;\n\n    select {\n        cursor: pointer;\n        position: absolute;\n        z-index: 9998;\n        margin: 0;\n        left: 0;\n        top: 5px;\n        filter: alpha(opacity=0);\n        opacity: 0;\n    }\n}\n\n.pika-label {\n    display: inline-block;\n    *display: inline;\n    position: relative;\n    z-index: 9999;\n    overflow: hidden;\n    margin: 0;\n    padding: 5px 3px;\n    font-size: 14px;\n    line-height: 20px;\n    font-weight: bold;\n    color: $pd-title-color;\n    background-color: $pd-title-bg;\n}\n\n.pika-prev,\n.pika-next {\n    display: block;\n    cursor: pointer;\n    position: relative;\n    outline: none;\n    border: 0;\n    padding: 0;\n    width: 20px;\n    height: 30px;\n    text-indent: 20px; // hide text using text-indent trick, using width value (it's enough)\n    white-space: nowrap;\n    overflow: hidden;\n    background-color: transparent;\n    background-position: center center;\n    background-repeat: no-repeat;\n    background-size: 75% 75%;\n    opacity: .5;\n    *position: absolute;\n    *top: 0;\n\n    &:hover {\n        opacity: 1;\n    }\n\n    &.is-disabled {\n        cursor: default;\n        opacity: .2;\n    }\n}\n\n.pika-prev,\n.is-rtl .pika-next {\n    float: left;\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==');\n    *left: 0;\n}\n\n.pika-next,\n.is-rtl .pika-prev {\n    float: right;\n    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=');\n    *right: 0;\n}\n\n.pika-select {\n    display: inline-block;\n    *display: inline;\n}\n\n.pika-table {\n    width: 100%;\n    border-collapse: collapse;\n    border-spacing: 0;\n    border: 0;\n\n    th,\n    td {\n        width: 14.285714285714286%;\n        padding: 0;\n    }\n\n    th {\n        color: $pd-th-color;\n        font-size: 12px;\n        line-height: 25px;\n        font-weight: bold;\n        text-align: center;\n    }\n\n    abbr {\n        border-bottom: none;\n        cursor: help;\n    }\n}\n\n.pika-button {\n    cursor: pointer;\n    display: block;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n    outline: none;\n    border: 0;\n    margin: 0;\n    width: 100%;\n    padding: 5px;\n    color: $pd-day-color;\n    font-size: 12px;\n    line-height: 15px;\n    text-align: right;\n    background: $pd-day-bg;\n\n    .is-today & {\n        color: $pd-day-today-color;\n        font-weight: bold;\n    }\n\n    .is-selected & {\n        color: $pd-day-selected-color;\n        font-weight: bold;\n        background: $pd-day-selected-bg;\n        box-shadow: inset 0 1px 3px $pd-day-selected-shadow;\n        border-radius: 3px;\n    }\n\n    .is-disabled &,\n    .is-outside-current-month & {        \n        color: $pd-day-disabled-color;\n        opacity: .3;\n    }\n\n    .is-disabled & {\n        pointer-events: none;\n        cursor: default;\n    }\n\n    &:hover {\n        color: $pd-day-hover-color;\n        background: $pd-day-hover-bg;\n        box-shadow: none;\n        border-radius: 3px;\n    }\n\n    .is-selection-disabled {\n        pointer-events: none;\n        cursor: default;\n    }\n}\n\n.pika-week {\n    font-size: 11px;\n    color: $pd-week-color;\n}\n\n.is-inrange .pika-button {\n    background: #D5E9F7;\n}\n\n.is-startrange .pika-button {\n    color: #fff;\n    background: #6CB31D;\n    box-shadow: none;\n    border-radius: 3px;\n}\n\n.is-endrange .pika-button {\n    color: #fff;\n    background: #33aaff;\n    box-shadow: none;\n    border-radius: 3px;\n}"),
25
        }
26
        file5 := &embedded.EmbeddedFile{
27
                Filename:    "variables.scss",
28
                FileModTime: time.Unix(1537299527, 0),
29
                Content:     string("/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*    Index Page      */\n$background-color: #fcfcfc;\n$max-width: 860px;\n$title-color: #464646;\n$description-color: #939393;\n\n/*    Status Container   */\n$service-background: #ffffff;\n$service-border: 1px solid rgba(0,0,0,.125);\n$service-title: #444444;\n$service-stats-color: #4f4f4f;\n$service-description-color: #fff;\n$service-stats-size: 2.3rem;\n\n/*    Button Colors      */\n$success-color: #47d337;\n$danger-color: #dd3545;\n$primary-color: #3e9bff;\n\n/*   Footer Settings   */\n$footer-text-color: #8d8d8d;\n$nav-tab-color: #13a00d;\n$footer-display: block;\n\n/*   Global Settings */\n$global-border-radius: 0.2rem;\n\n\n/*   Mobile Settings   */\n$sm-background-color: #fcfcfc;\n$sm-border-radius: 0rem;\n\n/*   Mobile Service Container   */\n$sm-service-background: #ffffff;\n$sm-padding: 0;\n$sm-service-stats-size: 1.5rem;\n"),
30
        }
31
32
        // define dirs
33
        dir1 := &embedded.EmbeddedDir{
34
                Filename:   "",
35
                DirModTime: time.Unix(1538106377, 0),
36
                ChildFiles: []*embedded.EmbeddedFile{
37
                        file2, // "base.scss"
38
                        file3, // "mobile.scss"
39
                        file4, // "pikaday.scss"
40
                        file5, // "variables.scss"
41
42
                },
43
        }
44
45
        // link ChildDirs
46
        dir1.ChildDirs = []*embedded.EmbeddedDir{}
47
48
        // register embeddedBox
49
        embedded.RegisterEmbeddedBox(`scss`, &embedded.EmbeddedBox{
50
                Name: `scss`,
51
                Time: time.Unix(1538106377, 0),
52
                Dirs: map[string]*embedded.EmbeddedDir{
53
                        "": dir1,
54
                },
55
                Files: map[string]*embedded.EmbeddedFile{
56
                        "base.scss":      file2,
57
                        "mobile.scss":    file3,
58
                        "pikaday.scss":   file4,
59
                        "variables.scss": file5,
60
                },
61
        })
62
}
+ +
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/rice-box.go:

+
365
func init() {
366
367
        // define files
368
        file18 := &embedded.EmbeddedFile{
369
                Filename:    "base.css",
370
                FileModTime: time.Unix(1539641084, 0),
371
                Content:     string("@charset \"UTF-8\";\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n/*    Index Page      */\n/*    Status Container   */\n/*    Button Colors      */\n/*   Footer Settings   */\n/*   Global Settings */\n/*   Mobile Settings   */\n/*   Mobile Service Container   */\nHTML, BODY {\n  background-color: #fcfcfc; }\n\n.container {\n  padding-top: 20px;\n  padding-bottom: 20px;\n  max-width: 860px; }\n\n.header-title {\n  color: #464646; }\n\n.header-desc {\n  color: #939393; }\n\n.btn {\n  border-radius: 0.2rem; }\n\n.online_list .badge {\n  margin-top: 0.2rem; }\n\n.navbar {\n  margin-bottom: 30px; }\n\n.btn-sm {\n  line-height: 1.3;\n  font-size: 0.75rem; }\n\n.view_service_btn {\n  position: absolute;\n  bottom: -40px;\n  right: 40px; }\n\n.service_lower_info {\n  position: absolute;\n  bottom: -40px;\n  left: 40px;\n  color: #d1ffca;\n  font-size: 0.85rem; }\n\n.lg_number {\n  font-size: 2.3rem;\n  font-weight: bold;\n  display: block;\n  color: #4f4f4f; }\n\n.stats_area {\n  text-align: center;\n  color: #a5a5a5; }\n\n.lower_canvas {\n  height: 3.4rem;\n  width: 100%;\n  background-color: #48d338;\n  padding: 15px 10px;\n  margin-left: 0px !important;\n  margin-right: 0px !important; }\n\n.lower_canvas SPAN {\n  font-size: 1rem;\n  color: #fff; }\n\n.footer {\n  text-decoration: none;\n  margin-top: 20px; }\n\n.footer A {\n  color: #8d8d8d;\n  text-decoration: none; }\n\n.footer A:HOVER {\n  color: #6d6d6d; }\n\n.badge {\n  color: white;\n  border-radius: 0.2rem; }\n\n.btn-group {\n  height: 25px; }\n  .btn-group A {\n    padding: 0.1rem .75rem;\n    font-size: 0.8rem; }\n\n.card-body .badge {\n  color: #fff; }\n\n.nav-pills .nav-link {\n  border-radius: 0.2rem; }\n\n.form-control {\n  border-radius: 0.2rem; }\n\n.card {\n  background-color: #ffffff;\n  border: 1px solid rgba(0, 0, 0, 0.125); }\n\n.card-body {\n  overflow: hidden; }\n\n.card-body H4 A {\n  color: #444444;\n  text-decoration: none; }\n\n.chart-container {\n  position: relative;\n  height: 170px;\n  width: 100%; }\n\n.service-chart-container {\n  position: relative;\n  height: 400px;\n  width: 100%; }\n\n.btn-primary {\n  background-color: #3e9bff;\n  border-color: #006fe6;\n  color: white; }\n  .btn-primary.dyn-dark {\n    background-color: #32a825 !important;\n    border-color: #2c9320 !important; }\n  .btn-primary.dyn-light {\n    background-color: #75de69 !important;\n    border-color: #88e37e !important; }\n\n.btn-success {\n  background-color: #47d337; }\n  .btn-success.dyn-dark {\n    background-color: #32a825 !important;\n    border-color: #2c9320 !important; }\n  .btn-success.dyn-light {\n    background-color: #75de69 !important;\n    border-color: #88e37e !important; }\n\n.btn-danger {\n  background-color: #dd3545; }\n  .btn-danger.dyn-dark {\n    background-color: #b61f2d !important;\n    border-color: #a01b28 !important; }\n  .btn-danger.dyn-light {\n    background-color: #e66975 !important;\n    border-color: #e97f89 !important; }\n\n.bg-success {\n  background-color: #47d337 !important; }\n\n.bg-danger {\n  background-color: #dd3545 !important; }\n\n.bg-success .dyn-dark {\n  background-color: #35b027 !important; }\n\n.bg-danger .dyn-dark {\n  background-color: #bf202f !important; }\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n  background-color: #13a00d; }\n\n.nav-pills A {\n  color: #424242; }\n\n.CodeMirror {\n  /* Bootstrap Settings */\n  box-sizing: border-box;\n  margin: 0;\n  font: inherit;\n  overflow: auto;\n  font-family: inherit;\n  display: block;\n  width: 100%;\n  padding: 0px;\n  font-size: 14px;\n  line-height: 1.5;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n  /* Code Mirror Settings */\n  font-family: monospace;\n  position: relative;\n  overflow: hidden;\n  height: 80vh; }\n\n.CodeMirror-focused {\n  /* Bootstrap Settings */\n  border-color: #66afe9;\n  outline: 0;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }\n\n.switch {\n  font-size: 1rem;\n  position: relative; }\n\n.switch input {\n  position: absolute;\n  height: 1px;\n  width: 1px;\n  background: none;\n  border: 0;\n  clip: rect(0 0 0 0);\n  clip-path: inset(50%);\n  overflow: hidden;\n  padding: 0; }\n\n.switch input + label {\n  position: relative;\n  min-width: calc(calc(2.375rem * .8) * 2);\n  border-radius: calc(2.375rem * .8);\n  height: calc(2.375rem * .8);\n  line-height: calc(2.375rem * .8);\n  display: inline-block;\n  cursor: pointer;\n  outline: none;\n  user-select: none;\n  vertical-align: middle;\n  text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem); }\n\n.switch input + label::before,\n.switch input + label::after {\n  content: '';\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: calc(calc(2.375rem * .8) * 2);\n  bottom: 0;\n  display: block; }\n\n.switch input + label::before {\n  right: 0;\n  background-color: #dee2e6;\n  border-radius: calc(2.375rem * .8);\n  transition: 0.2s all; }\n\n.switch input + label::after {\n  top: 2px;\n  left: 2px;\n  width: calc(calc(2.375rem * .8) - calc(2px * 2));\n  height: calc(calc(2.375rem * .8) - calc(2px * 2));\n  border-radius: 50%;\n  background-color: white;\n  transition: 0.2s all; }\n\n.switch input:checked + label::before {\n  background-color: #08d; }\n\n.switch input:checked + label::after {\n  margin-left: calc(2.375rem * .8); }\n\n.switch input:focus + label::before {\n  outline: none;\n  box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25); }\n\n.switch input:disabled + label {\n  color: #868e96;\n  cursor: not-allowed; }\n\n.switch input:disabled + label::before {\n  background-color: #e9ecef; }\n\n.switch.switch-sm {\n  font-size: 0.875rem; }\n\n.switch.switch-sm input + label {\n  min-width: calc(calc(1.9375rem * .8) * 2);\n  height: calc(1.9375rem * .8);\n  line-height: calc(1.9375rem * .8);\n  text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem); }\n\n.switch.switch-sm input + label::before {\n  width: calc(calc(1.9375rem * .8) * 2); }\n\n.switch.switch-sm input + label::after {\n  width: calc(calc(1.9375rem * .8) - calc(2px * 2));\n  height: calc(calc(1.9375rem * .8) - calc(2px * 2)); }\n\n.switch.switch-sm input:checked + label::after {\n  margin-left: calc(1.9375rem * .8); }\n\n.switch.switch-lg {\n  font-size: 1.25rem; }\n\n.switch.switch-lg input + label {\n  min-width: calc(calc(3rem * .8) * 2);\n  height: calc(3rem * .8);\n  line-height: calc(3rem * .8);\n  text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem); }\n\n.switch.switch-lg input + label::before {\n  width: calc(calc(3rem * .8) * 2); }\n\n.switch.switch-lg input + label::after {\n  width: calc(calc(3rem * .8) - calc(2px * 2));\n  height: calc(calc(3rem * .8) - calc(2px * 2)); }\n\n.switch.switch-lg input:checked + label::after {\n  margin-left: calc(3rem * .8); }\n\n.switch + .switch {\n  margin-left: 1rem; }\n\n@keyframes pulse_animation {\n  0% {\n    transform: scale(1); }\n  30% {\n    transform: scale(1); }\n  40% {\n    transform: scale(1.02); }\n  50% {\n    transform: scale(1); }\n  60% {\n    transform: scale(1); }\n  70% {\n    transform: scale(1.05); }\n  80% {\n    transform: scale(1); }\n  100% {\n    transform: scale(1); } }\n.pulse {\n  animation-name: pulse_animation;\n  animation-duration: 1500ms;\n  transform-origin: 70% 70%;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear; }\n\n@keyframes glow-grow {\n  0% {\n    opacity: 0;\n    transform: scale(1); }\n  80% {\n    opacity: 1; }\n  100% {\n    transform: scale(2);\n    opacity: 0; } }\n.pulse-glow {\n  animation-name: glow-grown;\n  animation-duration: 100ms;\n  transform-origin: 70% 30%;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear; }\n\n.pulse-glow:before,\n.pulse-glow:after {\n  position: absolute;\n  content: '';\n  height: 0.5rem;\n  width: 1.75rem;\n  top: 1.2rem;\n  right: 2.15rem;\n  border-radius: 0;\n  box-shadow: 0 0 7px #47d337;\n  animation: glow-grow 2s ease-out infinite; }\n\n.sortable_drag {\n  background-color: #0000000f; }\n\n.drag_icon {\n  cursor: move;\n  /* fallback if grab cursor is unsupported */\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n  width: 25px;\n  height: 25px;\n  display: inline-block;\n  margin-right: 5px;\n  margin-left: -10px;\n  text-align: center;\n  color: #b1b1b1; }\n\n/* (Optional) Apply a \"closed-hand\" cursor during drag operation. */\n.drag_icon:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing; }\n\n.switch_btn {\n  float: right;\n  margin: -1px 0px 0px 0px;\n  display: block; }\n\n#start_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px; }\n\n#end_container {\n  position: absolute;\n  z-index: 99999;\n  margin-top: 20px;\n  right: 0; }\n\n.pointer {\n  cursor: pointer; }\n\n/*!\n * Pikaday\n * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/\n */\n.pika-single {\n  z-index: 9999;\n  display: block;\n  position: relative;\n  color: #333;\n  background: #fff;\n  border: 1px solid #ccc;\n  border-bottom-color: #bbb;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif; }\n  .pika-single.is-hidden {\n    display: none; }\n  .pika-single.is-bound {\n    position: absolute;\n    box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); }\n\n.pika-single {\n  *zoom: 1; }\n  .pika-single:before, .pika-single:after {\n    content: \" \";\n    display: table; }\n  .pika-single:after {\n    clear: both; }\n\n.pika-lendar {\n  float: left;\n  width: 240px;\n  margin: 8px; }\n\n.pika-title {\n  position: relative;\n  text-align: center; }\n  .pika-title select {\n    cursor: pointer;\n    position: absolute;\n    z-index: 9998;\n    margin: 0;\n    left: 0;\n    top: 5px;\n    filter: alpha(opacity=0);\n    opacity: 0; }\n\n.pika-label {\n  display: inline-block;\n  *display: inline;\n  position: relative;\n  z-index: 9999;\n  overflow: hidden;\n  margin: 0;\n  padding: 5px 3px;\n  font-size: 14px;\n  line-height: 20px;\n  font-weight: bold;\n  color: #333;\n  background-color: #fff; }\n\n.pika-prev,\n.pika-next {\n  display: block;\n  cursor: pointer;\n  position: relative;\n  outline: none;\n  border: 0;\n  padding: 0;\n  width: 20px;\n  height: 30px;\n  text-indent: 20px;\n  white-space: nowrap;\n  overflow: hidden;\n  background-color: transparent;\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: 75% 75%;\n  opacity: .5;\n  *position: absolute;\n  *top: 0; }\n  .pika-prev:hover,\n  .pika-next:hover {\n    opacity: 1; }\n  .pika-prev.is-disabled,\n  .pika-next.is-disabled {\n    cursor: default;\n    opacity: .2; }\n\n.pika-prev,\n.is-rtl .pika-next {\n  float: left;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==\");\n  *left: 0; }\n\n.pika-next,\n.is-rtl .pika-prev {\n  float: right;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=\");\n  *right: 0; }\n\n.pika-select {\n  display: inline-block;\n  *display: inline; }\n\n.pika-table {\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  border: 0; }\n  .pika-table th,\n  .pika-table td {\n    width: 14.285714285714286%;\n    padding: 0; }\n  .pika-table th {\n    color: #999;\n    font-size: 12px;\n    line-height: 25px;\n    font-weight: bold;\n    text-align: center; }\n  .pika-table abbr {\n    border-bottom: none;\n    cursor: help; }\n\n.pika-button {\n  cursor: pointer;\n  display: block;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  outline: none;\n  border: 0;\n  margin: 0;\n  width: 100%;\n  padding: 5px;\n  color: #666;\n  font-size: 12px;\n  line-height: 15px;\n  text-align: right;\n  background: #f5f5f5; }\n  .is-today .pika-button {\n    color: #33aaff;\n    font-weight: bold; }\n  .is-selected .pika-button {\n    color: #fff;\n    font-weight: bold;\n    background: #33aaff;\n    box-shadow: inset 0 1px 3px #178fe5;\n    border-radius: 3px; }\n  .is-disabled .pika-button, .is-outside-current-month .pika-button {\n    color: #999;\n    opacity: .3; }\n  .is-disabled .pika-button {\n    pointer-events: none;\n    cursor: default; }\n  .pika-button:hover {\n    color: #fff;\n    background: #ff8000;\n    box-shadow: none;\n    border-radius: 3px; }\n  .pika-button .is-selection-disabled {\n    pointer-events: none;\n    cursor: default; }\n\n.pika-week {\n  font-size: 11px;\n  color: #999; }\n\n.is-inrange .pika-button {\n  background: #D5E9F7; }\n\n.is-startrange .pika-button {\n  color: #fff;\n  background: #6CB31D;\n  box-shadow: none;\n  border-radius: 3px; }\n\n.is-endrange .pika-button {\n  color: #fff;\n  background: #33aaff;\n  box-shadow: none;\n  border-radius: 3px; }\n\n/*!\n * Statup\n * Copyright (C) 2018.  Hunter Long and the project contributors\n * Written by Hunter Long <info@socialeck.com> and the project contributors\n *\n * https://github.com/hunterlong/statup\n *\n * The licenses for most software and other practical works are designed\n * to take away your freedom to share and change the works.  By contrast,\n * the GNU General Public License is intended to guarantee your freedom to\n * share and change all versions of a program--to make sure it remains free\n * software for all its users.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n@media (max-width: 767px) {\n  HTML, BODY {\n    background-color: #fcfcfc; }\n\n  .sm-container {\n    margin-top: 40px !important;\n    padding: 0 !important; }\n\n  .list-group-item H5 {\n    font-size: 0.9rem; }\n\n  .container {\n    padding: 0 !important; }\n\n  .navbar {\n    margin-left: 0px;\n    margin-top: 0px;\n    width: 100%;\n    margin-bottom: 0; }\n\n  .btn-sm {\n    line-height: 0.9rem;\n    font-size: 0.65rem; }\n\n  .full-col-12 {\n    padding-left: 0px;\n    padding-right: 0px; }\n\n  .card {\n    border: 0;\n    border-radius: 0rem;\n    padding: 0;\n    background-color: #ffffff; }\n\n  .card-body {\n    font-size: 6pt;\n    padding: 5px 5px; }\n\n  .lg_number {\n    font-size: 7.8vw; }\n\n  .stats_area {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important; }\n\n  .stats_area .col-4 {\n    padding-left: 0;\n    padding-right: 0;\n    font-size: 0.6rem; }\n\n  .list-group-item {\n    border-top: 1px solid #e4e4e4;\n    border: 0px; }\n\n  .list-group-item:first-child {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0; }\n\n  .list-group-item:last-child {\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0; }\n\n  .list-group-item P {\n    font-size: 0.7rem; }\n\n  .service-chart-container {\n    height: 200px; } }\n\n/*# sourceMappingURL=base.css.map */\n"),
372
        }
373
        file19 := &embedded.EmbeddedFile{
374
                Filename:    "base.css.map",
375
                FileModTime: time.Unix(1539641085, 0),
376
                Content:     string("{\n\"version\": 3,\n\"mappings\": \";AAAA;;;;;;;;;;;;;;;GAeG;ACfH;;;;;;;;;;;;;;;GAeG;AAEH,wBAAwB;AAMxB,2BAA2B;AAQ3B,2BAA2B;AAK3B,yBAAyB;AAKzB,uBAAuB;AAIvB,yBAAyB;AAIzB,kCAAkC;AD7BlC,UAAU;EACN,gBAAgB,ECHD,OAAO;;ADM1B,UAAW;EACP,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,SAAS,ECRD,KAAK;;ADWjB,aAAc;EACV,KAAK,ECXK,OAAO;;ADcrB,YAAa;EACT,KAAK,ECdW,OAAO;;ADiB3B,IAAK;EACD,aAAa,ECGM,MAAM;;ADA7B,mBAAoB;EAChB,UAAU,EAAE,MAAM;;AAGtB,OAAQ;EACJ,aAAa,EAAE,IAAI;;AAGvB,OAAQ;EACJ,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,OAAO;;AAGtB,iBAAkB;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAGf,mBAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,OAAO;;AAGtB,UAAW;EACP,SAAS,ECzCQ,MAAM;ED0CvB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,KAAK;EACd,KAAK,EC9Ca,OAAO;;ADiD7B,WAAY;EACR,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,OAAO;;AAGlB,aAAc;EACV,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,SAAS;EAClB,WAAW,EAAE,cAAc;EAC3B,YAAY,EAAE,cAAc;;AAGhC,kBAAmB;EACf,SAAS,EAAE,IAAI;EACf,KAAK,EChEmB,IAAI;;ADmEhC,OAAQ;EACJ,eAAe,EAAE,IAAI;EACrB,UAAU,EAAE,IAAI;;AAGpB,SAAU;EACN,KAAK,EChEW,OAAO;EDiEvB,eAAe,EAAE,IAAI;;AAGzB,eAAgB;EACZ,KAAK,EAAE,OAAO;;AAGlB,MAAO;EACH,KAAK,EAAE,KAAK;EACZ,aAAa,ECrEM,MAAM;;ADwE7B,UAAW;EACP,MAAM,EAAE,IAAI;EAEZ,YAAI;IACA,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,MAAM;;AAIzB,iBAAkB;EACd,KAAK,EAAE,IAAI;;AAGf,oBAAqB;EACjB,aAAa,ECtFM,MAAM;;ADyF7B,aAAc;EACV,aAAa,EC1FM,MAAM;;AD6F7B,KAAM;EACF,gBAAgB,EChHC,OAAO;EDiHxB,MAAM,EChHO,8BAA0B;;ADmH3C,UAAW;EACP,QAAQ,EAAE,MAAM;;AAGpB,eAAgB;EACZ,KAAK,ECvHO,OAAO;EDwHnB,eAAe,EAAE,IAAI;;AAGzB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAGb,wBAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;;AAkCb,YAAa;EACT,gBAAgB,EC/JJ,OAAO;EDgKnB,YAAY,EAAE,OAA2B;EACzC,KAAK,EAAE,KAAK;EAdZ,qBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,sBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAYrD,YAAa;EACT,gBAAgB,ECxKJ,OAAO;EDqJnB,qBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,sBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAiBrD,WAAY;EACR,gBAAgB,EC5KL,OAAO;EDoJlB,oBAAW;IACP,gBAAgB,EAAE,kBAA8B;IAChD,YAAY,EAAE,kBAA8B;EAEhD,qBAAY;IACR,gBAAgB,EAAE,kBAA+B;IACjD,YAAY,EAAE,kBAA+B;;AAsBrD,WAAY;EACR,gBAAgB,EAAE,kBAAyB;;AAG/C,UAAW;EACP,gBAAgB,EAAE,kBAAwB;;AAG9C,qBAAsB;EAClB,gBAAgB,EAAE,kBAAsC;;AAG5D,oBAAqB;EACjB,gBAAgB,EAAE,kBAAqC;;AAG3D,yDAAwD;EACpD,gBAAgB,EC5LJ,OAAO;;AD+LvB,YAAa;EACT,KAAK,EAAE,OAAO;;AAIlB,WAAY;EACV,wBAAwB;EACxB,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,OAAO;EACb,QAAQ,EAAE,IAAI;EACd,WAAW,EAAE,OAAO;EACpB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,IAAI;EACtB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,oCAAmC;EAC/C,UAAU,EAAE,0DAA0D;EACtE,0BAA0B;EAC1B,WAAW,EAAE,SAAS;EACtB,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAC,IAAI;;AAGb,mBAAoB;EAClB,wBAAwB;EACxB,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,sEAAiE;EAC7E,UAAU,EAAE,0DAA0D;;AAGxE,OAAQ;EACN,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,QAAQ;;AAEpB,aAAc;EACZ,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,aAAa;EACnB,SAAS,EAAE,UAAU;EACrB,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,CAAC;;AAEZ,qBAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,6BAA6B;EACxC,aAAa,EAAE,mBAAmB;EAClC,MAAM,EAAE,mBAAmB;EAC3B,WAAW,EAAE,mBAAmB;EAChC,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,2CAA2C;;AAE1D;4BAC6B;EAC3B,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,6BAA6B;EACpC,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;;AAEhB,6BAA8B;EAC5B,KAAK,EAAE,CAAC;EACR,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,mBAAmB;EAClC,UAAU,EAAE,QAAQ;;AAEtB,4BAA6B;EAC3B,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,yCAAyC;EAChD,MAAM,EAAE,yCAAyC;EACjD,aAAa,EAAE,GAAG;EAClB,gBAAgB,EAAE,KAAK;EACvB,UAAU,EAAE,QAAQ;;AAEtB,qCAAsC;EACpC,gBAAgB,EAAE,IAAI;;AAExB,oCAAqC;EACnC,WAAW,EAAE,mBAAmB;;AAElC,mCAAoC;EAClC,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,oCAAoC;;AAElD,8BAA+B;EAC7B,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,WAAW;;AAErB,sCAAuC;EACrC,gBAAgB,EAAE,OAAO;;AAE3B,iBAAkB;EAChB,SAAS,EAAE,QAAQ;;AAErB,+BAAgC;EAC9B,SAAS,EAAE,8BAA8B;EACzC,MAAM,EAAE,oBAAoB;EAC5B,WAAW,EAAE,oBAAoB;EACjC,WAAW,EAAE,4CAA4C;;AAE3D,uCAAwC;EACtC,KAAK,EAAE,8BAA8B;;AAEvC,sCAAuC;EACrC,KAAK,EAAE,0CAA0C;EACjD,MAAM,EAAE,0CAA0C;;AAEpD,8CAA+C;EAC7C,WAAW,EAAE,oBAAoB;;AAEnC,iBAAkB;EAChB,SAAS,EAAE,OAAO;;AAEpB,+BAAgC;EAC9B,SAAS,EAAE,yBAAyB;EACpC,MAAM,EAAE,eAAe;EACvB,WAAW,EAAE,eAAe;EAC5B,WAAW,EAAE,uCAAuC;;AAEtD,uCAAwC;EACtC,KAAK,EAAE,yBAAyB;;AAElC,sCAAuC;EACrC,KAAK,EAAE,qCAAqC;EAC5C,MAAM,EAAE,qCAAqC;;AAE/C,8CAA+C;EAC7C,WAAW,EAAE,eAAe;;AAE9B,iBAAkB;EAChB,WAAW,EAAE,IAAI;;AAInB,0BASC;EARG,EAAG;IAAE,SAAS,EAAE,QAAQ;EACxB,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,WAAW;EAC5B,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,GAAI;IAAE,SAAS,EAAE,WAAW;EAC5B,GAAI;IAAE,SAAS,EAAE,QAAQ;EACzB,IAAK;IAAE,SAAS,EAAE,QAAQ;AAG9B,MAAO;EACH,cAAc,EAAE,eAAe;EAC/B,kBAAkB,EAAE,MAAM;EAC1B,gBAAgB,EAAC,OAAO;EACxB,yBAAyB,EAAE,QAAQ;EACnC,yBAAyB,EAAE,MAAM;;AAIrC,oBAYC;EAXC,EAAG;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ;EAErB,GAAI;IACF,OAAO,EAAE,CAAC;EAEZ,IAAK;IACH,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,CAAC;AAGd,WAAY;EACR,cAAc,EAAE,UAAU;EAC1B,kBAAkB,EAAE,KAAK;EACzB,gBAAgB,EAAE,OAAO;EACzB,yBAAyB,EAAE,QAAQ;EACnC,yBAAyB,EAAE,MAAM;;AAGrC;iBACkB;EACd,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,OAAO;EACd,GAAG,EAAE,MAAM;EACX,KAAK,EAAE,OAAO;EACd,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,eAAe;EAC3B,SAAS,EAAE,8BAA8B;;AAG7C,cAAe;EACb,gBAAgB,EAAE,SAAS;;AAG7B,UAAW;EACT,MAAM,EAAE,IAAI;EAAE,4CAA4C;EAC1D,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,SAAS;EACjB,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,GAAG;EACjB,WAAW,EAAE,KAAK;EAClB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,OAAO;;AAGhB,oEAAoE;AACpE,iBAAkB;EAChB,MAAM,EAAE,QAAQ;EAChB,MAAM,EAAE,aAAa;EACrB,MAAM,EAAE,gBAAgB;;AAG1B,WAAY;EACV,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,gBAAgB;EACxB,OAAO,EAAE,KAAK;;AAGhB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;;AAGlB,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,CAAC;;AAGV,QAAS;EACP,MAAM,EAAE,OAAO;;AEhejB;;;GAGG;AA8BH,YAAa;EACT,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,QAAQ;EAClB,KAAK,EA3BO,IAAI;EA4BhB,UAAU,EAzBC,IAAI;EA0Bf,MAAM,EAAE,cAA2B;EACnC,mBAAmB,EAzBG,IAAI;EA0B1B,WAAW,EAXE,8CAA8C;EAa3D,sBAAY;IACR,OAAO,EAAE,IAAI;EAGjB,qBAAW;IACP,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,kCAAiC;;AAMrD,YAAa;EACT,KAAK,EAAE,CAAC;EAER,uCACQ;IACJ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAGlB,kBAAQ;IAAE,KAAK,EAAE,IAAI;;AAGzB,YAAa;EACT,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,GAAG;;AAGf,WAAY;EACR,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAElB,kBAAO;IACH,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,CAAC;;AAIlB,WAAY;EACR,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,IAAI;EACjB,KAAK,EAzFQ,IAAI;EA0FjB,gBAAgB,EAzFN,IAAI;;AA4FlB;UACW;EACP,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,WAAW;EAC7B,mBAAmB,EAAE,aAAa;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,OAAO;EACxB,OAAO,EAAE,EAAE;EACX,SAAS,EAAE,QAAQ;EACnB,IAAI,EAAE,CAAC;EAEP;kBAAQ;IACJ,OAAO,EAAE,CAAC;EAGd;wBAAc;IACV,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,EAAE;;AAInB;kBACmB;EACf,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,yNAAyN;EAC3O,KAAK,EAAE,CAAC;;AAGZ;kBACmB;EACf,KAAK,EAAE,KAAK;EACZ,gBAAgB,EAAE,yNAAyN;EAC3O,MAAM,EAAE,CAAC;;AAGb,YAAa;EACT,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,MAAM;;AAGpB,WAAY;EACR,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;EACjB,MAAM,EAAE,CAAC;EAET;gBACG;IACC,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,CAAC;EAGd,cAAG;IACC,KAAK,EAtJC,IAAI;IAuJV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;EAGtB,gBAAK;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;;AAIpB,YAAa;EACT,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,KAAK,EA5KM,IAAI;EA6Kf,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,KAAK;EACjB,UAAU,EA/KF,OAAO;EAiLf,sBAAY;IACR,KAAK,EA/KQ,OAAO;IAgLpB,WAAW,EAAE,IAAI;EAGrB,yBAAe;IACX,KAAK,EAnLW,IAAI;IAoLpB,WAAW,EAAE,IAAI;IACjB,UAAU,EApLG,OAAO;IAqLpB,UAAU,EAAE,uBAAuC;IACnD,aAAa,EAAE,GAAG;EAGtB,iEAC4B;IACxB,KAAK,EAzLW,IAAI;IA0LpB,OAAO,EAAE,EAAE;EAGf,yBAAe;IACX,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,OAAO;EAGnB,kBAAQ;IACJ,KAAK,EAzMQ,IAAI;IA0MjB,UAAU,EAzMA,OAAO;IA0MjB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,GAAG;EAGtB,mCAAuB;IACnB,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,OAAO;;AAIvB,UAAW;EACP,SAAS,EAAE,IAAI;EACf,KAAK,EAhNO,IAAI;;AAmNpB,wBAAyB;EACrB,UAAU,EAAE,OAAO;;AAGvB,2BAA4B;EACxB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG;;AAGtB,yBAA0B;EACtB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,OAAO;EACnB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG;;AC7PtB;;;;;;;;;;;;;;;GAeG;AAEH,yBAA0B;EAEtB,UAAU;IACN,gBAAgB,EF0BF,OAAO;;EEvBzB,aAAc;IACV,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,YAAY;;EAGzB,mBAAoB;IAChB,SAAS,EAAE,MAAM;;EAGrB,UAAW;IACP,OAAO,EAAE,YAAY;;EAGzB,OAAQ;IACJ,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC;;EAGpB,OAAQ;IACJ,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,OAAO;;EAGtB,YAAa;IACT,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,GAAG;;EAGtB,KAAM;IACF,MAAM,EAAE,CAAC;IACT,aAAa,EFRF,IAAI;IESf,OAAO,EFLF,CAAC;IEMN,gBAAgB,EFPA,OAAO;;EEU3B,UAAW;IACP,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,OAAO;;EAGpB,UAAW;IACP,SAAS,EAAE,KAAK;;EAGpB,WAAY;IACR,UAAU,EAAE,iBAAiB;IAC7B,aAAa,EAAE,iBAAiB;;EAGpC,kBAAmB;IACf,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM;;EAGrB,gBAAiB;IACb,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,GAAG;;EAGf,4BAA6B;IACzB,sBAAsB,EAAE,CAAC;IACzB,uBAAuB,EAAE,CAAC;;EAG9B,2BAA4B;IACxB,0BAA0B,EAAE,CAAC;IAC7B,yBAAyB,EAAE,CAAC;;EAGhC,kBAAmB;IACf,SAAS,EAAE,MAAM;;EAGrB,wBAAyB;IACrB,MAAM,EAAE,KAAK\",\n\"sources\": [\"../scss/base.scss\",\"../scss/variables.scss\",\"../scss/pikaday.scss\",\"../scss/mobile.scss\"],\n\"names\": [],\n\"file\": \"base.css\"\n}\n"),
377
        }
378
        file1a := &embedded.EmbeddedFile{
379
                Filename:    "bootstrap.min.css",
380
                FileModTime: time.Unix(1530208361, 0),
381
                Content:     string("/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:\"\\2014 \\00A0\"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:\"\"}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:\"\";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-label::after{border-color:#80bdff}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:\"Browse\"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:\"Browse\";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:not(:disabled):not(.disabled){cursor:pointer}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-item-next,.carousel-item-prev,.carousel-item.active{transition:none}}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:\"\"}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}\n/*# sourceMappingURL=bootstrap.min.css.map */"),
382
        }
383
384
        // define dirs
385
        dir17 := &embedded.EmbeddedDir{
386
                Filename:   "",
387
                DirModTime: time.Unix(1538106376, 0),
388
                ChildFiles: []*embedded.EmbeddedFile{
389
                        file18, // "base.css"
390
                        file19, // "base.css.map"
391
                        file1a, // "bootstrap.min.css"
392
393
                },
394
        }
395
396
        // link ChildDirs
397
        dir17.ChildDirs = []*embedded.EmbeddedDir{}
398
399
        // register embeddedBox
400
        embedded.RegisterEmbeddedBox(`css`, &embedded.EmbeddedBox{
401
                Name: `css`,
402
                Time: time.Unix(1538106376, 0),
403
                Dirs: map[string]*embedded.EmbeddedDir{
404
                        "": dir17,
405
                },
406
                Files: map[string]*embedded.EmbeddedFile{
407
                        "base.css":          file18,
408
                        "base.css.map":      file19,
409
                        "bootstrap.min.css": file1a,
410
                },
411
        })
412
}
+ +
func Assets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
38
func Assets() {
39
        CssBox = rice.MustFindBox("css")
40
        ScssBox = rice.MustFindBox("scss")
41
        JsBox = rice.MustFindBox("js")
42
        TmplBox = rice.MustFindBox("tmpl")
43
}
+ +
func @79:5
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
79
func() {
80
                stdout, errStdout = copyAndCapture(os.Stdout, stdoutIn)
81
        }
+ +
func @83:5
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
83
func() {
84
                stderr, errStderr = copyAndCapture(os.Stderr, stderrIn)
85
        }
+ +
func CompileSASS
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
57
func CompileSASS(folder string) error {
58
        sassBin := os.Getenv("SASS")
59
        if sassBin == "" {
60
                sassBin = "sass"
61
        }
62
63
        scssFile := fmt.Sprintf("%v/%v", folder, "assets/scss/base.scss")
64
        baseFile := fmt.Sprintf("%v/%v", folder, "assets/css/base.css")
65
66
        utils.Log(1, fmt.Sprintf("Compiling SASS %v into %v", scssFile, baseFile))
67
        command := fmt.Sprintf("%v %v %v", sassBin, scssFile, baseFile)
68
69
        utils.Log(1, fmt.Sprintf("Command: sh -c %v", command))
70
71
        testCmd := exec.Command("sh", "-c", command)
72
73
        var stdout, stderr []byte
74
        var errStdout, errStderr error
75
        stdoutIn, _ := testCmd.StdoutPipe()
76
        stderrIn, _ := testCmd.StderrPipe()
77
        testCmd.Start()
78
79
        go func() {
80
                stdout, errStdout = copyAndCapture(os.Stdout, stdoutIn)
81
        }()
82
83
        go func() {
84
                stderr, errStderr = copyAndCapture(os.Stderr, stderrIn)
85
        }()
86
87
        err := testCmd.Wait()
88
        if err != nil {
89
                utils.Log(3, err)
90
                return err
91
        }
92
93
        if errStdout != nil || errStderr != nil {
94
                utils.Log(3, fmt.Sprintf("Failed to compile assets with SASS %v", err))
95
                return errors.New("failed to capture stdout or stderr")
96
        }
97
98
        if err != nil {
99
                utils.Log(3, fmt.Sprintf("Failed to compile assets with SASS %v", err))
100
                utils.Log(3, fmt.Sprintf("bash -c %v %v %v", sassBin, scssFile, baseFile))
101
                return err
102
        }
103
104
        outStr, errStr := string(stdout), string(stderr)
105
        utils.Log(1, fmt.Sprintf("out: %v | error: %v", outStr, errStr))
106
        utils.Log(1, "SASS Compiling is complete!")
107
        return err
108
}
+ +
func MakePublicFolder
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
207
func MakePublicFolder(folder string) error {
208
        utils.Log(1, fmt.Sprintf("Creating folder '%v'", folder))
209
        if _, err := os.Stat(folder); os.IsNotExist(err) {
210
                err = os.MkdirAll(folder, 0777)
211
                if err != nil {
212
                        utils.Log(3, fmt.Sprintf("Failed to created %v directory, %v", folder, err))
213
                        return err
214
                }
215
        }
216
        return nil
217
}
+ +
func SaveAsset
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
131
func SaveAsset(data []byte, folder, file string) error {
132
        utils.Log(1, fmt.Sprintf("Saving %v/%v into assets folder", folder, file))
133
        err := ioutil.WriteFile(folder+"/assets/"+file, data, 0744)
134
        if err != nil {
135
                utils.Log(3, fmt.Sprintf("Failed to save %v/%v, %v", folder, file, err))
136
                return err
137
        }
138
        return nil
139
}
+ +
func DeleteAllAssets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
179
func DeleteAllAssets(folder string) error {
180
        err := os.RemoveAll(folder + "/assets")
181
        if err != nil {
182
                utils.Log(1, fmt.Sprintf("There was an issue deleting Statup Assets, %v", err))
183
                return err
184
        }
185
        utils.Log(1, "Statup assets have been deleted")
186
        return err
187
}
+ +
func copyAndCapture
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
220
func copyAndCapture(w io.Writer, r io.Reader) ([]byte, error) {
221
        var out []byte
222
        buf := make([]byte, 1024, 1024)
223
        for {
224
                n, err := r.Read(buf[:])
225
                if n > 0 {
226
                        d := buf[:n]
227
                        out = append(out, d...)
228
                        _, err := w.Write(d)
229
                        if err != nil {
230
                                return out, err
231
                        }
232
                }
233
                if err != nil {
234
                        // Read returns io.EOF at the end of file, which is not an error for us
235
                        if err == io.EOF {
236
                                err = nil
237
                        }
238
                        return out, err
239
                }
240
        }
241
}
+ +
func CopyToPublic
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
190
func CopyToPublic(box *rice.Box, folder, file string) error {
191
        assetFolder := fmt.Sprintf("%v/%v", folder, file)
192
        utils.Log(1, fmt.Sprintf("Copying %v to %v", file, assetFolder))
193
        base, err := box.String(file)
194
        if err != nil {
195
                utils.Log(3, fmt.Sprintf("Failed to copy %v to %v, %v.", file, assetFolder, err))
196
                return err
197
        }
198
        err = ioutil.WriteFile(assetFolder, []byte(base), 0744)
199
        if err != nil {
200
                utils.Log(3, fmt.Sprintf("Failed to write file %v to %v, %v.", file, assetFolder, err))
201
                return err
202
        }
203
        return nil
204
}
+ +
func OpenAsset
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
142
func OpenAsset(folder, file string) string {
143
        dat, err := ioutil.ReadFile(folder + "/assets/" + file)
144
        if err != nil {
145
                utils.Log(3, fmt.Sprintf("Failed to open %v, %v", file, err))
146
                return ""
147
        }
148
        return string(dat)
149
}
+ +
func UsingAssets
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
111
func UsingAssets(folder string) bool {
112
        if _, err := os.Stat(folder + "/assets"); err == nil {
113
                return true
114
        } else {
115
                if os.Getenv("USE_ASSETS") == "true" {
116
                        utils.Log(1, "Environment variable USE_ASSETS was found.")
117
                        CreateAllAssets(folder)
118
                        err := CompileSASS(folder)
119
                        if err != nil {
120
                                CopyToPublic(CssBox, folder+"/css", "base.css")
121
                                utils.Log(2, "Default 'base.css' was insert because SASS did not work.")
122
                                return true
123
                        }
124
                        return true
125
                }
126
        }
127
        return false
128
}
+ +
func HelpMarkdown
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/source/source.go:

+
46
func HelpMarkdown() string {
47
        helpSrc, err := TmplBox.Bytes("help.md")
48
        if err != nil {
49
                utils.Log(4, err)
50
                return "error generating markdown"
51
        }
52
        output := blackfriday.Run(helpSrc)
53
        return string(output)
54
}
+ + + +
Package Overview: github.com/hunterlong/statup/utils 54.76%

This is a coverage report created after analysis of the github.com/hunterlong/statup/utils package. It + has been generated with the following command:

gocov test github.com/hunterlong/statup/utils | gocov-html

Here are the stats. Please select a function name to view its implementation and see what's left for testing.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Log(...)github.com/hunterlong/statup/utils/log.go100.00%16/16
UnderScoreString(...)github.com/hunterlong/statup/utils/utils.go100.00%10/10
NewSHA1Hash(...)github.com/hunterlong/statup/utils/encryption.go100.00%8/8
RandomString(...)github.com/hunterlong/statup/utils/encryption.go100.00%5/5
DeleteFile(...)github.com/hunterlong/statup/utils/utils.go100.00%5/5
newLogRow(...)github.com/hunterlong/statup/utils/log.go100.00%4/4
Http(...)github.com/hunterlong/statup/utils/log.go100.00%4/4
Timezoner(...)github.com/hunterlong/statup/utils/utils.go100.00%4/4
rotate(...)github.com/hunterlong/statup/utils/log.go100.00%3/3
@84:5(...)github.com/hunterlong/statup/utils/log.go100.00%3/3
Timestamp.Ago(...)github.com/hunterlong/statup/utils/utils.go100.00%2/2
StringInt(...)github.com/hunterlong/statup/utils/utils.go100.00%2/2
HashPassword(...)github.com/hunterlong/statup/utils/encryption.go100.00%2/2
DeleteDirectory(...)github.com/hunterlong/statup/utils/utils.go100.00%1/1
rev(...)github.com/hunterlong/statup/utils/time.go100.00%1/1
pushLastLine(...)github.com/hunterlong/statup/utils/log.go80.00%4/5
InitLogs(...)github.com/hunterlong/statup/utils/log.go76.92%10/13
init(...)github.com/hunterlong/statup/utils/utils.go66.67%2/3
createLog(...)github.com/hunterlong/statup/utils/log.go63.64%7/11
FileExists(...)github.com/hunterlong/statup/utils/utils.go50.00%2/4
DurationReadable(...)github.com/hunterlong/statup/utils/utils.go42.86%3/7
FormatDuration(...)github.com/hunterlong/statup/utils/time.go37.50%15/40
ToString(...)github.com/hunterlong/statup/utils/utils.go25.00%2/8
Command(...)github.com/hunterlong/statup/utils/utils.go0.00%0/16
copyAndCapture(...)github.com/hunterlong/statup/utils/utils.go0.00%0/14
GetLastLine(...)github.com/hunterlong/statup/utils/log.go0.00%0/5
LogRow.lineAsString(...)github.com/hunterlong/statup/utils/log.go0.00%0/5
dir(...)github.com/hunterlong/statup/utils/utils.go0.00%0/4
SaveFile(...)github.com/hunterlong/statup/utils/utils.go0.00%0/2
@164:5(...)github.com/hunterlong/statup/utils/utils.go0.00%0/1
@168:5(...)github.com/hunterlong/statup/utils/utils.go0.00%0/1
LogRow.FormatForHtml(...)github.com/hunterlong/statup/utils/log.go0.00%0/1
github.com/hunterlong/statup/utils54.76%115/210
+ +
func Log
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
93
func Log(level int, err interface{}) error {
94
        pushLastLine(err)
95
        var outErr error
96
        switch level {
97
        case 5:
98
                _, outErr = fmt.Printf("PANIC: %v\n", err)
99
                fmtLogs.Printf("PANIC: %v\n", err)
100
        case 4:
101
                _, outErr = fmt.Printf("FATAL: %v\n", err)
102
                fmtLogs.Printf("FATAL: %v\n", err)
103
                //color.Red("ERROR: %v\n", err)
104
                //os.Exit(2)
105
        case 3:
106
                _, outErr = fmt.Printf("ERROR: %v\n", err)
107
                fmtLogs.Printf("ERROR: %v\n", err)
108
                //color.Red("ERROR: %v\n", err)
109
        case 2:
110
                _, outErr = fmt.Printf("WARNING: %v\n", err)
111
                fmtLogs.Printf("WARNING: %v\n", err)
112
                //color.Yellow("WARNING: %v\n", err)
113
        case 1:
114
                _, outErr = fmt.Printf("INFO: %v\n", err)
115
                fmtLogs.Printf("INFO: %v\n", err)
116
                //color.Blue("INFO: %v\n", err)
117
        case 0:
118
                _, outErr = fmt.Printf("%v\n", err)
119
                fmtLogs.Printf("%v\n", err)
120
                //color.White("%v\n", err)
121
        }
122
        return outErr
123
}
+ +
func UnderScoreString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
102
func UnderScoreString(str string) string {
103
104
        // convert every letter to lower case
105
        newStr := strings.ToLower(str)
106
107
        // convert all spaces/tab to underscore
108
        regExp := regexp.MustCompile("[[:space:][:blank:]]")
109
        newStrByte := regExp.ReplaceAll([]byte(newStr), []byte("_"))
110
111
        regExp = regexp.MustCompile("`[^a-z0-9]`i")
112
        newStrByte = regExp.ReplaceAll(newStrByte, []byte("_"))
113
114
        regExp = regexp.MustCompile("[!/']")
115
        newStrByte = regExp.ReplaceAll(newStrByte, []byte("_"))
116
117
        // and remove underscore from beginning and ending
118
119
        newStr = strings.TrimPrefix(string(newStrByte), "_")
120
        newStr = strings.TrimSuffix(newStr, "_")
121
122
        return newStr
123
}
+ +
func NewSHA1Hash
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/encryption.go:

+
33
func NewSHA1Hash(n ...int) string {
34
        noRandomCharacters := 32
35
        if len(n) > 0 {
36
                noRandomCharacters = n[0]
37
        }
38
        randString := RandomString(noRandomCharacters)
39
        hash := sha1.New()
40
        hash.Write([]byte(randString))
41
        bs := hash.Sum(nil)
42
        return fmt.Sprintf("%x", bs)
43
}
+ +
func RandomString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/encryption.go:

+
48
func RandomString(n int) string {
49
        b := make([]rune, n)
50
        rand.Seed(time.Now().UnixNano())
51
        for i := range b {
52
                b[i] = characterRunes[rand.Intn(len(characterRunes))]
53
        }
54
        return string(b)
55
}
+ +
func DeleteFile
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
138
func DeleteFile(file string) error {
139
        Log(1, "deleting file: "+file)
140
        err := os.Remove(file)
141
        if err != nil {
142
                return err
143
        }
144
        return nil
145
}
+ +
func newLogRow
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
158
func newLogRow(line interface{}) (logRow *LogRow) {
159
        logRow = new(LogRow)
160
        logRow.Date = time.Now()
161
        logRow.Line = line
162
        return
163
}
+ +
func Http
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
126
func Http(r *http.Request) string {
127
        msg := fmt.Sprintf("%v (%v) | IP: %v", r.RequestURI, r.Method, r.Host)
128
        fmt.Printf("WEB: %v\n", msg)
129
        pushLastLine(msg)
130
        return msg
131
}
+ +
func Timezoner
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
72
func Timezoner(t time.Time, zone float32) time.Time {
73
        zoneInt := float32(3600) * (zone + 1)
74
        loc := time.FixedZone("", int(zoneInt))
75
        timez := t.In(loc)
76
        return timez
77
}
+ +
func rotate
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
81
func rotate() {
82
        c := make(chan os.Signal, 1)
83
        signal.Notify(c, syscall.SIGHUP)
84
        go func() {
85
                for {
86
                        <-c
87
                        ljLogger.Rotate()
88
                }
89
        }()
90
}
+ +
func @84:5
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
84
func() {
85
                for {
86
                        <-c
87
                        ljLogger.Rotate()
88
                }
89
        }
+ +
func Timestamp.Ago
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
94
func (t Timestamp) Ago() string {
95
        got, _ := timeago.TimeAgoWithTime(time.Now(), time.Time(t))
96
        return got
97
}
+ +
func StringInt
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
47
func StringInt(s string) int64 {
48
        num, _ := strconv.Atoi(s)
49
        return int64(num)
50
}
+ +
func HashPassword
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/encryption.go:

+
27
func HashPassword(password string) string {
28
        bytes, _ := bcrypt.GenerateFromPassword([]byte(password), 14)
29
        return string(bytes)
30
}
+ +
func DeleteDirectory
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
149
func DeleteDirectory(directory string) error {
150
        return os.RemoveAll(directory)
151
}
+ +
func rev
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/time.go:

+
77
func rev(f float64) float64 {
78
        return f * -1
79
}
+ +
func pushLastLine
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
133
func pushLastLine(line interface{}) {
134
        LockLines.Lock()
135
        defer LockLines.Unlock()
136
        LastLines = append(LastLines, newLogRow(line))
137
        // We want to store max 1000 lines in memory (for /logs page).
138
        for len(LastLines) > 1000 {
139
                LastLines = LastLines[1:]
140
        }
141
}
+ +
func InitLogs
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
58
func InitLogs() error {
59
        err := createLog(Directory)
60
        if err != nil {
61
                return err
62
        }
63
        logFile, err = os.OpenFile(Directory+"/logs/statup.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755)
64
        if err != nil {
65
                log.Printf("ERROR opening file: %v", err)
66
                return err
67
        }
68
        ljLogger = &lumberjack.Logger{
69
                Filename:   Directory + "/logs/statup.log",
70
                MaxSize:    16,
71
                MaxBackups: 3,
72
                MaxAge:     28,
73
        }
74
        fmtLogs = log.New(logFile, "", log.Ldate|log.Ltime)
75
        log.SetOutput(ljLogger)
76
        rotate()
77
        LastLines = make([]*LogRow, 0)
78
        return err
79
}
+ +
func init
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
38
func init() {
39
        if os.Getenv("STATUP_DIR") != "" {
40
                Directory = os.Getenv("STATUP_DIR")
41
        } else {
42
                Directory = dir()
43
        }
44
}
+ +
func createLog
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
39
func createLog(dir string) error {
40
        var err error
41
        _, err = os.Stat(dir + "/logs")
42
        if err != nil {
43
                if os.IsNotExist(err) {
44
                        os.Mkdir(dir+"/logs", 0777)
45
                } else {
46
                        return err
47
                }
48
        }
49
        file, err := os.Create(dir + "/logs/statup.log")
50
        if err != nil {
51
                return err
52
        }
53
        defer file.Close()
54
        return err
55
}
+ +
func FileExists
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
127
func FileExists(name string) bool {
128
        if _, err := os.Stat(name); err != nil {
129
                if os.IsNotExist(err) {
130
                        return false
131
                }
132
        }
133
        return true
134
}
+ +
func DurationReadable
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
213
func DurationReadable(d time.Duration) string {
214
        if d.Hours() >= 1 {
215
                return fmt.Sprintf("%0.0f hours", d.Hours())
216
        } else if d.Minutes() >= 1 {
217
                return fmt.Sprintf("%0.0f minutes", d.Minutes())
218
        } else if d.Seconds() >= 1 {
219
                return fmt.Sprintf("%0.0f seconds", d.Seconds())
220
        }
221
        return d.String()
222
}
+ +
func FormatDuration
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/time.go:

+
24
func FormatDuration(d time.Duration) string {
25
        var out string
26
        if d.Hours() >= 24 {
27
                out = fmt.Sprintf("%0.0f day", d.Hours()/24)
28
                if (d.Hours() / 24) >= 2 {
29
                        out += "s"
30
                }
31
                return out
32
        } else if d.Hours() >= 1 {
33
                out = fmt.Sprintf("%0.0f hour", d.Hours())
34
                if d.Hours() >= 2 {
35
                        out += "s"
36
                }
37
                return out
38
        } else if d.Minutes() >= 1 {
39
                out = fmt.Sprintf("%0.0f minute", d.Minutes())
40
                if d.Minutes() >= 2 {
41
                        out += "s"
42
                }
43
                return out
44
        } else if d.Seconds() >= 1 {
45
                out = fmt.Sprintf("%0.0f second", d.Seconds())
46
                if d.Seconds() >= 2 {
47
                        out += "s"
48
                }
49
                return out
50
        } else if rev(d.Hours()) >= 24 {
51
                out = fmt.Sprintf("%0.0f day", rev(d.Hours()/24))
52
                if rev(d.Hours()/24) >= 2 {
53
                        out += "s"
54
                }
55
                return out
56
        } else if rev(d.Hours()) >= 1 {
57
                out = fmt.Sprintf("%0.0f hour", rev(d.Hours()))
58
                if rev(d.Hours()) >= 2 {
59
                        out += "s"
60
                }
61
                return out
62
        } else if rev(d.Minutes()) >= 1 {
63
                out = fmt.Sprintf("%0.0f minute", rev(d.Minutes()))
64
                if rev(d.Minutes()) >= 2 {
65
                        out += "s"
66
                }
67
                return out
68
        } else {
69
                out = fmt.Sprintf("%0.0f second", rev(d.Seconds()))
70
                if rev(d.Seconds()) >= 2 {
71
                        out += "s"
72
                }
73
        }
74
        return out
75
}
+ +
func ToString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
53
func ToString(s interface{}) string {
54
        switch v := s.(type) {
55
        case int, int32, int64:
56
                return fmt.Sprintf("%v", v)
57
        case float32, float64:
58
                return fmt.Sprintf("%v", v)
59
        case []byte:
60
                return string(v)
61
        case bool:
62
                if v {
63
                        return "true"
64
                }
65
                return "false"
66
        default:
67
                return fmt.Sprintf("%v", v)
68
        }
69
}
+ +
func Command
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
155
func Command(cmd string) (string, string, error) {
156
        Log(1, "running command: "+cmd)
157
        testCmd := exec.Command("sh", "-c", cmd)
158
        var stdout, stderr []byte
159
        var errStdout, errStderr error
160
        stdoutIn, _ := testCmd.StdoutPipe()
161
        stderrIn, _ := testCmd.StderrPipe()
162
        testCmd.Start()
163
164
        go func() {
165
                stdout, errStdout = copyAndCapture(os.Stdout, stdoutIn)
166
        }()
167
168
        go func() {
169
                stderr, errStderr = copyAndCapture(os.Stderr, stderrIn)
170
        }()
171
172
        err := testCmd.Wait()
173
        if err != nil {
174
                return "", "", err
175
        }
176
177
        if errStdout != nil || errStderr != nil {
178
                return "", "", errors.New("failed to capture stdout or stderr")
179
        }
180
181
        outStr, errStr := string(stdout), string(stderr)
182
        return outStr, errStr, err
183
}
+ +
func copyAndCapture
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
186
func copyAndCapture(w io.Writer, r io.Reader) ([]byte, error) {
187
        var out []byte
188
        buf := make([]byte, 1024, 1024)
189
        for {
190
                n, err := r.Read(buf[:])
191
                if n > 0 {
192
                        d := buf[:n]
193
                        out = append(out, d...)
194
                        _, err := w.Write(d)
195
                        if err != nil {
196
                                return out, err
197
                        }
198
                }
199
                if err != nil {
200
                        // Read returns io.EOF at the end of file, which is not an error for us
201
                        if err == io.EOF {
202
                                err = nil
203
                        }
204
                        return out, err
205
                }
206
        }
207
}
+ +
func GetLastLine
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
144
func GetLastLine() *LogRow {
145
        LockLines.Lock()
146
        defer LockLines.Unlock()
147
        if len(LastLines) > 0 {
148
                return LastLines[len(LastLines)-1]
149
        }
150
        return nil
151
}
+ +
func LogRow.lineAsString
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
165
func (o *LogRow) lineAsString() string {
166
        switch v := o.Line.(type) {
167
        case string:
168
                return v
169
        case error:
170
                return v.Error()
171
        case []byte:
172
                return string(v)
173
        }
174
        return ""
175
}
+ +
func dir
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
80
func dir() string {
81
        dir, err := os.Getwd()
82
        if err != nil {
83
                return "."
84
        }
85
        return dir
86
}
+ +
func SaveFile
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
226
func SaveFile(filename string, data []byte) error {
227
        err := ioutil.WriteFile(filename, data, 0644)
228
        return err
229
}
+ +
func @164:5
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
164
func() {
165
                stdout, errStdout = copyAndCapture(os.Stdout, stdoutIn)
166
        }
+ +
func @168:5
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/utils.go:

+
168
func() {
169
                stderr, errStderr = copyAndCapture(os.Stderr, stderrIn)
170
        }
+ +
func LogRow.FormatForHtml
Back

In /Users/hunterlong/go/src/github.com/hunterlong/statup/utils/log.go:

+
177
func (o *LogRow) FormatForHtml() string {
178
        return fmt.Sprintf("%s: %s", o.Date.Format("2006-01-02 15:04:05"), o.lineAsString())
179
}
+ + + +
Report Total
+
54.53%
+
+ diff --git a/dev/README.md b/dev/README.md index f37aa325..237eb457 100644 --- a/dev/README.md +++ b/dev/README.md @@ -25,19 +25,23 @@ More info on: https://github.com/ * [func CountFailures() uint64](#CountFailures) * [func DatabaseMaintence()](#DatabaseMaintence) * [func Dbtimestamp(group string, column string) string](#Dbtimestamp) +* [func DefaultPort(db string) int64](#DefaultPort) * [func DeleteAllSince(table string, date time.Time)](#DeleteAllSince) -* [func DeleteConfig()](#DeleteConfig) +* [func DeleteConfig() error](#DeleteConfig) * [func ExportChartsJs() string](#ExportChartsJs) * [func ExportIndexHTML() string](#ExportIndexHTML) * [func InitApp()](#InitApp) * [func InsertLargeSampleData() error](#InsertLargeSampleData) +* [func InsertNotifierDB() error](#InsertNotifierDB) * [func InsertSampleData() error](#InsertSampleData) * [func InsertSampleHits() error](#InsertSampleHits) * [func ReturnCheckinHit(c *types.CheckinHit) *checkinHit](#ReturnCheckinHit) * [func ReturnUser(u *types.User) *user](#ReturnUser) +* [func SampleData() error](#SampleData) * [func SelectAllUsers() ([]*user, error)](#SelectAllUsers) * [func SelectUser(id int64) (*user, error)](#SelectUser) * [func SelectUsername(username string) (*user, error)](#SelectUsername) +* [func Services() []types.ServiceInterface](#Services) * [type Checkin](#Checkin) * [func ReturnCheckin(c *types.Checkin) *Checkin](#ReturnCheckin) * [func SelectCheckin(api string) *Checkin](#SelectCheckin) @@ -69,7 +73,7 @@ More info on: https://github.com/ * [func (c Core) CurrentTime() string](#Core.CurrentTime) * [func (c Core) MobileSASS() string](#Core.MobileSASS) * [func (c Core) SassVars() string](#Core.SassVars) - * [func (c *Core) SelectAllServices() ([]*Service, error)](#Core.SelectAllServices) + * [func (c *Core) SelectAllServices(start bool) ([]*Service, error)](#Core.SelectAllServices) * [func (c *Core) ServicesCount() int](#Core.ServicesCount) * [func (c *Core) ToCore() *types.Core](#Core.ToCore) * [func (c Core) UsingAssets() bool](#Core.UsingAssets) @@ -78,7 +82,8 @@ More info on: https://github.com/ * [func GraphDataRaw(service types.ServiceInterface, start, end time.Time, group string, column string) *DateScanObj](#GraphDataRaw) * [func (d *DateScanObj) ToString() string](#DateScanObj.ToString) * [type DbConfig](#DbConfig) - * [func LoadConfig(directory string) (*DbConfig, error)](#LoadConfig) + * [func EnvToConfig() *DbConfig](#EnvToConfig) + * [func LoadConfigFile(directory string) (*DbConfig, error)](#LoadConfigFile) * [func LoadUsingEnv() (*DbConfig, error)](#LoadUsingEnv) * [func (db *DbConfig) Close() error](#DbConfig.Close) * [func (db *DbConfig) Connect(retry bool, location string) error](#DbConfig.Connect) @@ -196,7 +201,7 @@ CountFailures returns the total count of failures for all services -## func [DatabaseMaintence](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7190:7214#L249) +## func [DatabaseMaintence](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7122:7146#L243) ``` go func DatabaseMaintence() ``` @@ -205,7 +210,7 @@ this function is currently set to delete records 7+ days old every 60 minutes -## func [Dbtimestamp](https://github.com/hunterlong/statup/tree/master/core/services.go?s=5755:5807#L200) +## func [Dbtimestamp](https://github.com/hunterlong/statup/tree/master/core/services.go?s=5855:5907#L206) ``` go func Dbtimestamp(group string, column string) string ``` @@ -213,7 +218,15 @@ Dbtimestamp will return a SQL query for grouping by date -## func [DeleteAllSince](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7523:7572#L259) +## func [DefaultPort](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=3143:3176#L108) +``` go +func DefaultPort(db string) int64 +``` +DefaultPort accepts a database type and returns its default port + + + +## func [DeleteAllSince](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7455:7504#L253) ``` go func DeleteAllSince(table string, date time.Time) ``` @@ -221,15 +234,15 @@ DeleteAllSince will delete a specific table's records based on a time. -## func [DeleteConfig](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=3785:3804#L133) +## func [DeleteConfig](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=4366:4391#L163) ``` go -func DeleteConfig() +func DeleteConfig() error ``` DeleteConfig will delete the 'config.yml' file -## func [ExportChartsJs](https://github.com/hunterlong/statup/tree/master/core/export.go?s=2227:2255#L87) +## func [ExportChartsJs](https://github.com/hunterlong/statup/tree/master/core/export.go?s=2232:2260#L87) ``` go func ExportChartsJs() string ``` @@ -261,6 +274,14 @@ InsertLargeSampleData will create the example/dummy services for testing the Sta +## func [InsertNotifierDB](https://github.com/hunterlong/statup/tree/master/core/core.go?s=1924:1953#L70) +``` go +func InsertNotifierDB() error +``` +InsertNotifierDB inject the Statup database instance to the Notifier package + + + ## func [InsertSampleData](https://github.com/hunterlong/statup/tree/master/core/sample.go?s=897:926#L27) ``` go func InsertSampleData() error @@ -293,6 +314,14 @@ ReturnUser returns *core.user based off a *types.user +## func [SampleData](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=4155:4178#L152) +``` go +func SampleData() error +``` +SampleData runs all the sample data for a new Statup installation + + + ## func [SelectAllUsers](https://github.com/hunterlong/statup/tree/master/core/users.go?s=2233:2271#L81) ``` go func SelectAllUsers() ([]*user, error) @@ -317,6 +346,12 @@ SelectUsername returns the user based on the user's username +## func [Services](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1199:1239#L44) +``` go +func Services() []types.ServiceInterface +``` + + ## type [Checkin](https://github.com/hunterlong/statup/tree/master/core/checkin.go?s=818:857#L26) ``` go @@ -513,14 +548,14 @@ func NewCore() *Core NewCore return a new *core.Core struct -### func [SelectCore](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3752:3784#L136) +### func [SelectCore](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3756:3788#L136) ``` go func SelectCore() (*Core, error) ``` SelectCore will return the CoreApp global variable and the settings/configs for Statup -### func [UpdateCore](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2242:2281#L82) +### func [UpdateCore](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2246:2285#L82) ``` go func UpdateCore(c *Core) (*Core, error) ``` @@ -530,7 +565,7 @@ UpdateCore will update the CoreApp variable inside of the 'core' table in databa -### func (Core) [AllOnline](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3526:3556#L126) +### func (Core) [AllOnline](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3530:3560#L126) ``` go func (c Core) AllOnline() bool ``` @@ -539,7 +574,7 @@ AllOnline will be true if all services are online -### func (Core) [BaseSASS](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3029:3060#L109) +### func (Core) [BaseSASS](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3033:3064#L109) ``` go func (c Core) BaseSASS() string ``` @@ -557,7 +592,7 @@ Count24HFailures returns the amount of failures for a service within the last 24 -### func (\*Core) [CountOnline](https://github.com/hunterlong/statup/tree/master/core/services.go?s=11399:11431#L402) +### func (\*Core) [CountOnline](https://github.com/hunterlong/statup/tree/master/core/services.go?s=11499:11531#L408) ``` go func (c *Core) CountOnline() int ``` @@ -566,7 +601,7 @@ CountOnline -### func (Core) [CurrentTime](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2384:2418#L88) +### func (Core) [CurrentTime](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2388:2422#L88) ``` go func (c Core) CurrentTime() string ``` @@ -575,7 +610,7 @@ CurrentTime will return the current local time -### func (Core) [MobileSASS](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3314:3347#L118) +### func (Core) [MobileSASS](https://github.com/hunterlong/statup/tree/master/core/core.go?s=3318:3351#L118) ``` go func (c Core) MobileSASS() string ``` @@ -585,7 +620,7 @@ file /assets/scss/mobile.scss to be edited in Theme -### func (Core) [SassVars](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2771:2802#L101) +### func (Core) [SassVars](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2775:2806#L101) ``` go func (c Core) SassVars() string ``` @@ -594,16 +629,16 @@ SassVars opens the file /assets/scss/variables.scss to be edited in Theme -### func (\*Core) [SelectAllServices](https://github.com/hunterlong/statup/tree/master/core/services.go?s=2159:2213#L78) +### func (\*Core) [SelectAllServices](https://github.com/hunterlong/statup/tree/master/core/services.go?s=2230:2294#L82) ``` go -func (c *Core) SelectAllServices() ([]*Service, error) +func (c *Core) SelectAllServices(start bool) ([]*Service, error) ``` SelectAllServices returns a slice of *core.Service to be store on []*core.Services, should only be called once on startup. -### func (\*Core) [ServicesCount](https://github.com/hunterlong/statup/tree/master/core/services.go?s=11320:11354#L397) +### func (\*Core) [ServicesCount](https://github.com/hunterlong/statup/tree/master/core/services.go?s=11420:11454#L403) ``` go func (c *Core) ServicesCount() int ``` @@ -621,7 +656,7 @@ ToCore will convert *core.Core to *types.Core -### func (Core) [UsingAssets](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2612:2644#L96) +### func (Core) [UsingAssets](https://github.com/hunterlong/statup/tree/master/core/core.go?s=2616:2648#L96) ``` go func (c Core) UsingAssets() bool ``` @@ -630,7 +665,7 @@ UsingAssets will return true if /assets folder is present -## type [DateScan](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4111:4193#L149) +## type [DateScan](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4211:4293#L155) ``` go type DateScan struct { CreatedAt string `json:"x"` @@ -649,7 +684,7 @@ DateScan struct is for creating the charts.js graph JSON array -## type [DateScanObj](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4264:4323#L155) +## type [DateScanObj](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4364:4423#L161) ``` go type DateScanObj struct { Array []DateScan `json:"data"` @@ -664,7 +699,7 @@ DateScanObj struct is for creating the charts.js graph JSON array -### func [GraphDataRaw](https://github.com/hunterlong/statup/tree/master/core/services.go?s=6880:6993#L236) +### func [GraphDataRaw](https://github.com/hunterlong/statup/tree/master/core/services.go?s=6980:7093#L242) ``` go func GraphDataRaw(service types.ServiceInterface, start, end time.Time, group string, column string) *DateScanObj ``` @@ -674,7 +709,7 @@ GraphDataRaw will return all the hits between 2 times for a Service -### func (\*DateScanObj) [ToString](https://github.com/hunterlong/statup/tree/master/core/services.go?s=7656:7695#L258) +### func (\*DateScanObj) [ToString](https://github.com/hunterlong/statup/tree/master/core/services.go?s=7756:7795#L264) ``` go func (d *DateScanObj) ToString() string ``` @@ -695,14 +730,21 @@ DbConfig stores the config.yml file for the statup configuration -### func [LoadConfig](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=1020:1072#L34) +### func [EnvToConfig](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=3378:3406#L122) ``` go -func LoadConfig(directory string) (*DbConfig, error) +func EnvToConfig() *DbConfig ``` -LoadConfig will attempt to load the 'config.yml' file in a specific directory +EnvToConfig converts environment variables to a DbConfig variable -### func [LoadUsingEnv](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=1680:1718#L53) +### func [LoadConfigFile](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=1024:1080#L34) +``` go +func LoadConfigFile(directory string) (*DbConfig, error) +``` +LoadConfigFile will attempt to load the 'config.yml' file in a specific directory + + +### func [LoadUsingEnv](https://github.com/hunterlong/statup/tree/master/core/configs.go?s=1688:1726#L53) ``` go func LoadUsingEnv() (*DbConfig, error) ``` @@ -730,7 +772,7 @@ Connect will attempt to connect to the sqlite, postgres, or mysql database -### func (\*DbConfig) [CreateCore](https://github.com/hunterlong/statup/tree/master/core/database.go?s=8682:8719#L306) +### func (\*DbConfig) [CreateCore](https://github.com/hunterlong/statup/tree/master/core/database.go?s=8614:8651#L300) ``` go func (c *DbConfig) CreateCore() *Core ``` @@ -739,7 +781,7 @@ CreateCore will initialize the global variable 'CoreApp". This global variable c -### func (\*DbConfig) [CreateDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=9732:9774#L342) +### func (\*DbConfig) [CreateDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=9664:9706#L336) ``` go func (db *DbConfig) CreateDatabase() error ``` @@ -748,7 +790,7 @@ CreateDatabase will CREATE TABLES for each of the Statup elements -### func (\*DbConfig) [DropDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=9179:9219#L328) +### func (\*DbConfig) [DropDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=9111:9151#L322) ``` go func (db *DbConfig) DropDatabase() error ``` @@ -766,7 +808,7 @@ InsertCore create the single row for the Core settings in Statup -### func (\*DbConfig) [MigrateDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=10513:10556#L359) +### func (\*DbConfig) [MigrateDatabase](https://github.com/hunterlong/statup/tree/master/core/database.go?s=10445:10488#L353) ``` go func (db *DbConfig) MigrateDatabase() error ``` @@ -777,7 +819,7 @@ If this function has an issue, it will ROLLBACK to the previous state. -### func (\*DbConfig) [Save](https://github.com/hunterlong/statup/tree/master/core/database.go?s=8154:8199#L286) +### func (\*DbConfig) [Save](https://github.com/hunterlong/statup/tree/master/core/database.go?s=8086:8131#L280) ``` go func (db *DbConfig) Save() (*DbConfig, error) ``` @@ -786,7 +828,7 @@ Save will initially create the config.yml file -### func (\*DbConfig) [Update](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7791:7825#L268) +### func (\*DbConfig) [Update](https://github.com/hunterlong/statup/tree/master/core/database.go?s=7723:7757#L262) ``` go func (db *DbConfig) Update() error ``` @@ -893,7 +935,7 @@ func ReturnService(s *types.Service) *Service ReturnService will convert *types.Service to *core.Service -### func [SelectService](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1255:1292#L45) +### func [SelectService](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1326:1363#L49) ``` go func SelectService(id int64) *Service ``` @@ -921,7 +963,7 @@ AllFailures will return all failures attached to a service -### func (\*Service) [AvgTime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3032:3067#L108) +### func (\*Service) [AvgTime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3132:3167#L114) ``` go func (s *Service) AvgTime() float64 ``` @@ -930,7 +972,7 @@ AvgTime will return the average amount of time for a service to response back su -### func (\*Service) [AvgUptime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8401:8450#L287) +### func (\*Service) [AvgUptime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8501:8550#L293) ``` go func (s *Service) AvgUptime(ago time.Time) string ``` @@ -939,7 +981,7 @@ AvgUptime returns average online status for last 24 hours -### func (\*Service) [AvgUptime24](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8231:8269#L281) +### func (\*Service) [AvgUptime24](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8331:8369#L287) ``` go func (s *Service) AvgUptime24() string ``` @@ -975,7 +1017,7 @@ CheckQueue is the main go routine for checking a service -### func (\*Service) [CheckinProcess](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1485:1519#L55) +### func (\*Service) [CheckinProcess](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1556:1590#L59) ``` go func (s *Service) CheckinProcess() ``` @@ -984,7 +1026,7 @@ CheckinProcess runs the checkin routine for each checkin attached to service -### func (\*Service) [Checkins](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1671:1710#L64) +### func (\*Service) [Checkins](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1742:1781#L68) ``` go func (s *Service) Checkins() []*Checkin ``` @@ -993,7 +1035,7 @@ Checkins will return a slice of Checkins for a Service -### func (\*Service) [Create](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10834:10885#L381) +### func (\*Service) [Create](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10934:10985#L387) ``` go func (s *Service) Create(check bool) (int64, error) ``` @@ -1020,7 +1062,7 @@ CreateHit will create a new 'hit' record in the database for a successful/online -### func (\*Service) [Delete](https://github.com/hunterlong/statup/tree/master/core/services.go?s=9688:9720#L341) +### func (\*Service) [Delete](https://github.com/hunterlong/statup/tree/master/core/services.go?s=9788:9820#L347) ``` go func (s *Service) Delete() error ``` @@ -1038,7 +1080,7 @@ DeleteFailures will delete all failures for a service -### func (\*Service) [Downtime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=6490:6532#L222) +### func (\*Service) [Downtime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=6590:6632#L228) ``` go func (s *Service) Downtime() time.Duration ``` @@ -1047,7 +1089,7 @@ Downtime returns the amount of time of a offline service -### func (\*Service) [DowntimeText](https://github.com/hunterlong/statup/tree/master/core/services.go?s=5554:5593#L195) +### func (\*Service) [DowntimeText](https://github.com/hunterlong/statup/tree/master/core/services.go?s=5654:5693#L201) ``` go func (s *Service) DowntimeText() string ``` @@ -1060,7 +1102,7 @@ DowntimeText will return the amount of downtime for a service based on the durat -### func (\*Service) [GraphData](https://github.com/hunterlong/statup/tree/master/core/services.go?s=7887:7923#L268) +### func (\*Service) [GraphData](https://github.com/hunterlong/statup/tree/master/core/services.go?s=7987:8023#L274) ``` go func (s *Service) GraphData() string ``` @@ -1087,7 +1129,7 @@ HitsBetween returns the gorm database query for a collection of service hits bet -### func (\*Service) [LimitedCheckins](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1876:1922#L71) +### func (\*Service) [LimitedCheckins](https://github.com/hunterlong/statup/tree/master/core/services.go?s=1947:1993#L75) ``` go func (s *Service) LimitedCheckins() []*Checkin ``` @@ -1114,7 +1156,7 @@ LimitedHits returns the last 1024 successful/online 'hit' records for a service -### func (\*Service) [Online24](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3358:3394#L121) +### func (\*Service) [Online24](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3458:3494#L127) ``` go func (s *Service) Online24() float32 ``` @@ -1123,7 +1165,7 @@ Online24 returns the service's uptime percent within last 24 hours -### func (\*Service) [OnlineSince](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3558:3610#L127) +### func (\*Service) [OnlineSince](https://github.com/hunterlong/statup/tree/master/core/services.go?s=3658:3710#L133) ``` go func (s *Service) OnlineSince(ago time.Time) float32 ``` @@ -1141,7 +1183,7 @@ Select will return the *types.Service struct for Service -### func (\*Service) [SmallText](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4682:4718#L172) +### func (\*Service) [SmallText](https://github.com/hunterlong/statup/tree/master/core/services.go?s=4782:4818#L178) ``` go func (s *Service) SmallText() string ``` @@ -1163,7 +1205,7 @@ Sum returns the added value Latency for all of the services successful hits. -### func (\*Service) [ToJSON](https://github.com/hunterlong/statup/tree/master/core/services.go?s=2850:2883#L102) +### func (\*Service) [ToJSON](https://github.com/hunterlong/statup/tree/master/core/services.go?s=2950:2983#L108) ``` go func (s *Service) ToJSON() string ``` @@ -1217,7 +1259,7 @@ TotalHitsSince returns the total amount of hits based on a specific time/date -### func (\*Service) [TotalUptime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8876:8914#L309) +### func (\*Service) [TotalUptime](https://github.com/hunterlong/statup/tree/master/core/services.go?s=8976:9014#L315) ``` go func (s *Service) TotalUptime() string ``` @@ -1226,7 +1268,7 @@ TotalUptime returns the total uptime percent of a service -### func (\*Service) [Update](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10350:10394#L362) +### func (\*Service) [Update](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10450:10494#L368) ``` go func (s *Service) Update(restart bool) error ``` @@ -1235,7 +1277,7 @@ Update will update a service in the database, the service's checking routine can -### func (\*Service) [UpdateSingle](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10125:10182#L357) +### func (\*Service) [UpdateSingle](https://github.com/hunterlong/statup/tree/master/core/services.go?s=10225:10282#L363) ``` go func (s *Service) UpdateSingle(attr ...interface{}) error ``` @@ -1244,7 +1286,7 @@ UpdateSingle will update a single column for a service -## type [ServiceOrder](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4308:4350#L157) +## type [ServiceOrder](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4312:4354#L157) ``` go type ServiceOrder []types.ServiceInterface ``` @@ -1259,7 +1301,7 @@ ServiceOrder will reorder the services based on 'order_id' (Order) -### func (ServiceOrder) [Len](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4406:4437#L160) +### func (ServiceOrder) [Len](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4410:4441#L160) ``` go func (c ServiceOrder) Len() int ``` @@ -1268,14 +1310,14 @@ Sort interface for resroting the Services in order -### func (ServiceOrder) [Less](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4536:4577#L162) +### func (ServiceOrder) [Less](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4540:4581#L162) ``` go func (c ServiceOrder) Less(i, j int) bool ``` -### func (ServiceOrder) [Swap](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4466:4502#L161) +### func (ServiceOrder) [Swap](https://github.com/hunterlong/statup/tree/master/core/core.go?s=4470:4506#L161) ``` go func (c ServiceOrder) Swap(i, j int) ``` @@ -1449,7 +1491,7 @@ func LoadPlugin(file string) error ``` -## func [LoadPlugins](https://github.com/hunterlong/statup/tree/master/plugin/plugin.go?s=2708:2726#L97) +## func [LoadPlugins](https://github.com/hunterlong/statup/tree/master/plugin/plugin.go?s=2670:2688#L96) ``` go func LoadPlugins() ``` @@ -1864,7 +1906,7 @@ type DbConfig struct { DbUser string `yaml:"user"` DbPass string `yaml:"password"` DbData string `yaml:"database"` - DbPort int `yaml:"port"` + DbPort int64 `yaml:"port"` ApiKey string `yaml:"api_key"` ApiSecret string `yaml:"api_secret"` Project string `yaml:"-"` @@ -2555,7 +2597,7 @@ UnderScoreString will return a string that replaces spaces and other characters -## type [LogRow](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=3739:3795#L154) +## type [LogRow](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=3705:3761#L153) ``` go type LogRow struct { Date time.Time @@ -2569,7 +2611,7 @@ type LogRow struct { -### func [GetLastLine](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=3586:3612#L145) +### func [GetLastLine](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=3552:3578#L144) ``` go func GetLastLine() *LogRow ``` @@ -2579,7 +2621,7 @@ GetLastLine returns 1 line for a recent log entry -### func (\*LogRow) [FormatForHtml](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=4105:4144#L178) +### func (\*LogRow) [FormatForHtml](https://github.com/hunterlong/statup/tree/master/utils/log.go?s=4071:4110#L177) ``` go func (o *LogRow) FormatForHtml() string ``` diff --git a/notifiers/email.go b/notifiers/email.go index 85a08b7e..2fdc69d9 100644 --- a/notifiers/email.go +++ b/notifiers/email.go @@ -25,6 +25,7 @@ import ( "github.com/hunterlong/statup/utils" "html/template" "net/smtp" + "time" ) const ( @@ -181,11 +182,11 @@ type emailOutgoing struct { // OnFailure will trigger failing service func (u *email) OnFailure(s *types.Service, f *types.Failure) { email := &emailOutgoing{ - To: emailer.GetValue("var2"), + To: u.Var2, Subject: fmt.Sprintf("Service %v is Failing", s.Name), Template: mainEmailTemplate, Data: interface{}(s), - From: emailer.GetValue("var1"), + From: u.Var1, } u.AddQueue(email) u.Online = false @@ -195,11 +196,11 @@ func (u *email) OnFailure(s *types.Service, f *types.Failure) { func (u *email) OnSuccess(s *types.Service) { if !u.Online { email := &emailOutgoing{ - To: emailer.GetValue("var2"), + To: u.Var2, Subject: fmt.Sprintf("Service %v is Back Online", s.Name), Template: mainEmailTemplate, Data: interface{}(s), - From: emailer.GetValue("var1"), + From: u.Var1, } u.AddQueue(email) } @@ -221,13 +222,41 @@ func (u *email) OnSave() error { func (u *email) OnTest() error { host := fmt.Sprintf("%v:%v", u.Host, u.Port) dial, err := smtp.Dial(host) - dial.StartTLS(&tls.Config{InsecureSkipVerify: true}) if err != nil { - utils.Log(3, err) + return err + } + err = dial.StartTLS(&tls.Config{InsecureSkipVerify: true}) + if err != nil { return err } auth := smtp.PlainAuth("", u.Username, u.Password, host) - return dial.Auth(auth) + err = dial.Auth(auth) + if err != nil { + return err + } + testService := &types.Service{ + Id: 1, + Name: "Example Service", + Domain: "https://www.youtube.com/watch?v=-u6DvRyyKGU", + ExpectedStatus: 200, + Interval: 30, + Type: "http", + Method: "GET", + Timeout: 20, + LastStatusCode: 200, + Expected: "test example", + LastResponse: "this is an example response", + CreatedAt: time.Now().Add(-24 * time.Hour), + } + email := &emailOutgoing{ + To: u.Var2, + Subject: fmt.Sprintf("Service %v is Back Online", testService.Name), + Template: mainEmailTemplate, + Data: interface{}(testService), + From: u.Var1, + } + err = u.Send(email) + return err } func (u *email) dialSend(email *emailOutgoing) error { diff --git a/notifiers/webhook_test.go b/notifiers/webhook_test.go index db3f1dd3..5f23da02 100644 --- a/notifiers/webhook_test.go +++ b/notifiers/webhook_test.go @@ -25,7 +25,7 @@ import ( var ( WEBHOOK_URL = "https://jsonplaceholder.typicode.com/posts" webhookMessage = `{ "title": "%service.Id", "body": "%service.Name", "online": %service.Online, "userId": 19999 }` - apiKey = "application/json" + apiKey = "application/json" fullMsg string ) @@ -42,12 +42,12 @@ func TestWebhookNotifier(t *testing.T) { t.Run("Load webhooker", func(t *testing.T) { webhook.Host = WEBHOOK_URL webhook.Delay = time.Duration(100 * time.Millisecond) - webhook.ApiKey = apiKey + webhook.ApiKey = apiKey err := notifier.AddNotifier(webhook) assert.Nil(t, err) assert.Equal(t, "Hunter Long", webhook.Author) assert.Equal(t, WEBHOOK_URL, webhook.Host) - assert.Equal(t, apiKey, webhook.ApiKey) + assert.Equal(t, apiKey, webhook.ApiKey) }) t.Run("Load webhooker Notifier", func(t *testing.T) { diff --git a/source/tmpl/form_notifier.html b/source/tmpl/form_notifier.html index c65e66da..cd39aa5e 100644 --- a/source/tmpl/form_notifier.html +++ b/source/tmpl/form_notifier.html @@ -2,7 +2,7 @@ {{$n := .Select}}
{{if $n.Title}}

{{$n.Title}}

{{end}} -{{if $n.Description}}

{{$n.Description}}

{{end}} +{{if $n.Description}}

{{safe $n.Description}}

{{end}} {{range $n.Form}}