diff --git a/Sources/API/Gin Gonic/.idea/vcs.xml b/Sources/API/Gin Gonic/.idea/vcs.xml new file mode 100644 index 0000000..c2365ab --- /dev/null +++ b/Sources/API/Gin Gonic/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Sources/API/Gin Gonic/.idea/workspace.xml b/Sources/API/Gin Gonic/.idea/workspace.xml new file mode 100644 index 0000000..608ec2f --- /dev/null +++ b/Sources/API/Gin Gonic/.idea/workspace.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + { + "keyToString": { + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.go.formatter.settings.were.checked": "true", + "RunOnceActivity.go.migrated.go.modules.settings": "true", + "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true", + "WebServerToolWindowFactoryState": "false", + "go.import.settings.migrated": "true", + "go.sdk.automatically.set": "true", + "last_opened_file_path": "C:/Users/Siph9/Desktop/Bowl_in_Benchmark/Sources/API/Iris", + "node.js.detected.package.eslint": "true", + "node.js.selected.package.eslint": "(autodetect)" + } +} + + + + + + + + + + + + + + + + + + + + + true + + \ No newline at end of file diff --git a/Sources/API/Gin Gonic/docs/docs.go b/Sources/API/Gin Gonic/docs/docs.go new file mode 100644 index 0000000..8344a23 --- /dev/null +++ b/Sources/API/Gin Gonic/docs/docs.go @@ -0,0 +1,211 @@ +// Package docs GENERATED BY SWAG; DO NOT EDIT +// This file was generated by swaggo/swag +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": { + "name": "VALIN Arthur", + "email": "arthur.valin@etu.uca.fr" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/users": { + "get": { + "description": "Responds with the list of all users as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get users array", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "post": { + "description": "Takes a user JSON and store in DB. Return saved JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Store a new user", + "parameters": [ + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "/users/:id": { + "get": { + "description": "responds with the user whose ID value matches the id as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get user by id", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "put": { + "description": "takes a user JSON and updates user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a user", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + }, + "delete": { + "description": "delete user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a user", + "parameters": [ + { + "type": "string", + "description": "delete user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "User successfully deleted", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "model.User": { + "type": "object", + "properties": { + "createdAt": { + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "localhost:8080", + BasePath: "/", + Schemes: []string{}, + Title: "Bowl'in API", + Description: "A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in]", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/Sources/API/Gin Gonic/docs/swagger.json b/Sources/API/Gin Gonic/docs/swagger.json new file mode 100644 index 0000000..dcf7586 --- /dev/null +++ b/Sources/API/Gin Gonic/docs/swagger.json @@ -0,0 +1,188 @@ +{ + "swagger": "2.0", + "info": { + "description": "A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in]", + "title": "Bowl'in API", + "contact": { + "name": "VALIN Arthur", + "email": "arthur.valin@etu.uca.fr" + }, + "version": "1.0" + }, + "host": "localhost:8080", + "basePath": "/", + "paths": { + "/users": { + "get": { + "description": "Responds with the list of all users as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get users array", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "post": { + "description": "Takes a user JSON and store in DB. Return saved JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Store a new user", + "parameters": [ + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "/users/:id": { + "get": { + "description": "responds with the user whose ID value matches the id as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get user by id", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "put": { + "description": "takes a user JSON and updates user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a user", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + }, + "delete": { + "description": "delete user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a user", + "parameters": [ + { + "type": "string", + "description": "delete user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "User successfully deleted", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "model.User": { + "type": "object", + "properties": { + "createdAt": { + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/Sources/API/Gin Gonic/docs/swagger.yaml b/Sources/API/Gin Gonic/docs/swagger.yaml new file mode 100644 index 0000000..cebb3cf --- /dev/null +++ b/Sources/API/Gin Gonic/docs/swagger.yaml @@ -0,0 +1,124 @@ +basePath: / +definitions: + model.User: + properties: + createdAt: + type: string + deletedAt: + type: string + id: + type: integer + name: + type: string + password: + type: string + updatedAt: + type: string + type: object +host: localhost:8080 +info: + contact: + email: arthur.valin@etu.uca.fr + name: VALIN Arthur + description: A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in] + title: Bowl'in API + version: "1.0" +paths: + /users: + get: + description: Responds with the list of all users as JSON. + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/model.User' + type: array + summary: Get users array + tags: + - user + post: + description: Takes a user JSON and store in DB. Return saved JSON. + parameters: + - description: User JSON + in: body + name: user + required: true + schema: + $ref: '#/definitions/model.User' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/model.User' + summary: Store a new user + tags: + - user + /users/:id: + delete: + description: delete user whose ID value matches id. + parameters: + - description: delete user by id + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: User successfully deleted + schema: + type: string + summary: Delete a user + tags: + - user + get: + description: responds with the user whose ID value matches the id as JSON. + parameters: + - description: search user by id + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/model.User' + type: array + summary: Get user by id + tags: + - user + put: + description: takes a user JSON and updates user whose ID value matches id. + parameters: + - description: search user by id + in: path + name: id + required: true + type: string + - description: User JSON + in: body + name: user + required: true + schema: + $ref: '#/definitions/model.User' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/model.User' + summary: Update a user + tags: + - user +swagger: "2.0" diff --git a/Sources/API/Gin Gonic/go.mod b/Sources/API/Gin Gonic/go.mod new file mode 100644 index 0000000..5485d09 --- /dev/null +++ b/Sources/API/Gin Gonic/go.mod @@ -0,0 +1,43 @@ +module awesomeProject + +go 1.19 + +require ( + github.com/gin-gonic/gin v1.7.7 + github.com/jinzhu/gorm v1.9.16 + github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180 + github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2 + github.com/swaggo/gin-swagger v1.4.3 + github.com/swaggo/swag v1.8.9 +) + +require ( + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/spec v0.20.8 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-playground/locales v0.14.0 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-playground/validator/v10 v10.11.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/lib/pq v1.1.1 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/ugorji/go/codec v1.2.7 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/net v0.5.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect + golang.org/x/tools v0.5.0 // indirect + google.golang.org/protobuf v1.28.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/Sources/API/Gin Gonic/go.sum b/Sources/API/Gin Gonic/go.sum new file mode 100644 index 0000000..787fcea --- /dev/null +++ b/Sources/API/Gin Gonic/go.sum @@ -0,0 +1,224 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY= +github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM= +github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/gzip v0.0.5 h1:mhnVU32YnnBh2LPH2iqRqsA/eR7SAqRaD388jL2s/j0= +github.com/gin-contrib/gzip v0.0.5/go.mod h1:OPIK6HR0Um2vNmBUTlayD7qle4yVVRZT0PyhdUigrKk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= +github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= +github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= +github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= +github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180 h1:houhKtoTI0PBSiaSVCkIyavSo4sxf3FHo3HzQZAhJuc= +github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180/go.mod h1:vcljLtYRV+geYpIbqcw+yxDF8WgUNBg8queTd6Bm5mo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2 h1:+iNTcqQJy0OZ5jk6a5NLib47eqXK8uYcPX+O4+cBpEM= +github.com/swaggo/files v0.0.0-20210815190702-a29dd2bc99b2/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w= +github.com/swaggo/gin-swagger v1.4.3 h1:mHJz+yzJne0udgYnC5qlDf4e7KuxUbVNX2dhD/cw2rU= +github.com/swaggo/gin-swagger v1.4.3/go.mod h1:hBg6tGeKJsUu/P79BH+WGUR8nq2LuGE0O160+s4iefo= +github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ= +github.com/swaggo/swag v1.8.9 h1:kHtaBe/Ob9AZzAANfcn5c6RyCke9gG9QpH0jky0I/sA= +github.com/swaggo/swag v1.8.9/go.mod h1:ezQVUUhly8dludpVk+/PuwJWvLLanB13ygV5Pr9enSk= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/Sources/API/Gin Gonic/https/cert.pem b/Sources/API/Gin Gonic/https/cert.pem new file mode 100644 index 0000000..b98b78d --- /dev/null +++ b/Sources/API/Gin Gonic/https/cert.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIB2jCCAYECFBwIPBAUu6ZnjZfyz2fHOZDYruJOMAoGCCqGSM49BAMCMG8xCzAJ +BgNVBAYTAkZSMR4wHAYDVQQIDBVBdXZlcmduZS1SaMO0bmUtQWxwZXMxGTAXBgNV +BAcMEENsZXJtb250LUZlcnJhbmQxFDASBgNVBAoMC0Jvd2xpbiBUZWFtMQ8wDQYD +VQQDDAZib3dsaW4wIBcNMjMwMTI0MTY1OTAzWhgPMjA1MDA2MTAxNjU5MDNaMG8x +CzAJBgNVBAYTAkZSMR4wHAYDVQQIDBVBdXZlcmduZS1SaMO0bmUtQWxwZXMxGTAX +BgNVBAcMEENsZXJtb250LUZlcnJhbmQxFDASBgNVBAoMC0Jvd2xpbiBUZWFtMQ8w +DQYDVQQDDAZib3dsaW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASYZGCAPV1k +97fTG7ppTyNPn0pG6Ot3EOcxb+Ry2RVgK8LnBWwUDwEKYSqqUca0tunprNJ4grIz +q8FqbBvHaeA7MAoGCCqGSM49BAMCA0cAMEQCIClj9ou4+ZUbqK/CYIQSsWKGUKE4 +C8vo7dBePVRi8VBPAiBYnZvVIGzQgjrsQneYmn6TVeIGk1cp1QVQUORDz16EKw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Sources/API/Gin Gonic/https/privkey.pem b/Sources/API/Gin Gonic/https/privkey.pem new file mode 100644 index 0000000..8a12d5a --- /dev/null +++ b/Sources/API/Gin Gonic/https/privkey.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BggqhkjOPQMBBw== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIGHElOTi79aG/KASlgz4FLkC7e/lHd9zsatRQNvH4uWJoAoGCCqGSM49 +AwEHoUQDQgAEmGRggD1dZPe30xu6aU8jT59KRujrdxDnMW/kctkVYCvC5wVsFA8B +CmEqqlHGtLbp6azSeIKyM6vBamwbx2ngOw== +-----END EC PRIVATE KEY----- \ No newline at end of file diff --git a/Sources/API/Gin Gonic/https/pubkey.pem b/Sources/API/Gin Gonic/https/pubkey.pem new file mode 100644 index 0000000..22f4ada --- /dev/null +++ b/Sources/API/Gin Gonic/https/pubkey.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmGRggD1dZPe30xu6aU8jT59KRujr +dxDnMW/kctkVYCvC5wVsFA8BCmEqqlHGtLbp6azSeIKyM6vBamwbx2ngOw== +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/Sources/API/Gin Gonic/main.go b/Sources/API/Gin Gonic/main.go new file mode 100644 index 0000000..13f11fe --- /dev/null +++ b/Sources/API/Gin Gonic/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "awesomeProject/model" + "awesomeProject/routing" + "fmt" + _ "github.com/jinzhu/gorm/dialects/postgres" + _ "github.com/santosh/gingo/docs" + swaggerFiles "github.com/swaggo/files" + "github.com/swaggo/gin-swagger" +) + +// Model for our User + +// @title Bowl'in API +// @version 1.0 +// @description A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in] + +// @contact.name VALIN Arthur +// @contact.email arthur.valin@etu.uca.fr + +// @host localhost:8080 +// @BasePath / +func main() { + + model.InitializeDatabase() + model.InitializeApp() + + var url = ginSwagger.URL("/docs") + model.App.GET("/swagger/*any", ginSwagger.WrapHandler( + swaggerFiles.Handler, url)) + model.App.StaticFile("/docs", "./docs/swagger.json") + + routing.SetUserRoutes() + + fmt.Println("Server running ! ") + model.Err = model.App.RunTLS("localhost:8080", "https/cert.pem", "https/privkey.pem") + if model.Err != nil { + return + } + defer model.Db.Close() + +} diff --git a/Sources/API/Gin Gonic/model/app.go b/Sources/API/Gin Gonic/model/app.go new file mode 100644 index 0000000..8f9faf1 --- /dev/null +++ b/Sources/API/Gin Gonic/model/app.go @@ -0,0 +1,11 @@ +package model + +import ( + "github.com/gin-gonic/gin" +) + +var App *gin.Engine + +func InitializeApp() { + App = gin.Default() +} diff --git a/Sources/API/Gin Gonic/model/database.go b/Sources/API/Gin Gonic/model/database.go new file mode 100644 index 0000000..1de54bc --- /dev/null +++ b/Sources/API/Gin Gonic/model/database.go @@ -0,0 +1,18 @@ +package model + +import ( + "github.com/jinzhu/gorm" + "log" +) + +var Db *gorm.DB +var Err error + +func InitializeDatabase() { + Db, Err = gorm.Open("postgres", "host=localhost port=5432 user=bowlin_team dbname=bowlin password=bowlin") + if Err != nil { + log.Fatal(Err) + } + // Automatically create the "users" table based on the User model + Db.AutoMigrate(&User{}) +} diff --git a/Sources/API/Gin Gonic/model/userModel.go b/Sources/API/Gin Gonic/model/userModel.go new file mode 100644 index 0000000..8d4fa9e --- /dev/null +++ b/Sources/API/Gin Gonic/model/userModel.go @@ -0,0 +1,9 @@ +package model + +import "github.com/jinzhu/gorm" + +type User struct { + gorm.Model + Name string `json:"name"` + Password string `json:"password"` +} diff --git a/Sources/API/Gin Gonic/routing/userRoutes.go b/Sources/API/Gin Gonic/routing/userRoutes.go new file mode 100644 index 0000000..9be9413 --- /dev/null +++ b/Sources/API/Gin Gonic/routing/userRoutes.go @@ -0,0 +1,97 @@ +package routing + +import ( + "awesomeProject/model" + "github.com/gin-gonic/gin" + _ "github.com/santosh/gingo/docs" +) + +type User = model.User + +// getUsers responds with the list of all users as JSON. +// getUsers godoc +// @Summary Get users array +// @Description Responds with the list of all users as JSON. +// @Tags user +// @Produce json +// @Success 200 {array} model.User +// @Router /users [get] +func getUsers(c *gin.Context) { + var users []User + model.Db.Find(&users) + c.JSON(200, users) +} + +// getUser responds with the user whose ID value matches the id as JSON. +// getUser godoc +// @Summary Get user by id +// @Description responds with the user whose ID value matches the id as JSON. +// @Tags user +// @Produce json +// @Param id path string true "search user by id" +// @Success 200 {array} model.User +// @Router /users/:id [get] +func getUser(c *gin.Context) { + var user User + model.Db.First(&user, c.Param("id")) + c.JSON(200, user) +} + +// postUser takes a user JSON and store in DB. +// postUser godoc +// @Summary Store a new user +// @Description Takes a user JSON and store in DB. Return saved JSON. +// @Tags user +// @Produce json +// @Param user body model.User true "User JSON" +// @Success 201 {object} model.User +// @Router /users [post] +func postUser(c *gin.Context) { + var user User + c.BindJSON(&user) + println(user.Name) + model.Db.Create(&user) + c.JSON(201, user) +} + +// putUser takes a user JSON and updates user whose ID value matches id. +// putUser godoc +// @Summary Update a user +// @Description takes a user JSON and updates user whose ID value matches id. +// @Tags user +// @Produce json +// @Param id path string true "search user by id" +// @Param user body model.User true "User JSON" +// @Success 200 {object} model.User +// @Router /users/:id [put] +func putUser(c *gin.Context) { + var user User + model.Db.First(&user, c.Param("id")) + c.BindJSON(&user) + model.Db.Save(&user) + c.JSON(200, user) +} + +// deleteUser delete user whose ID value matches id. +// deleteUser godoc +// @Summary Delete a user +// @Description delete user whose ID value matches id. +// @Tags user +// @Produce json +// @Param id path string true "delete user by id" +// @Success 200 string "User successfully deleted" +// @Router /users/:id [delete] +func deleteUser(c *gin.Context) { + var user User + model.Db.First(&user, c.Param("id")) + model.Db.Delete(&user) + c.JSON(200, gin.H{"message": "User successfully deleted"}) +} + +func SetUserRoutes() { + model.App.GET("/users", getUsers) + model.App.GET("/users/:id", getUser) + model.App.POST("/users", postUser) + model.App.PUT("/users/:id", putUser) + model.App.DELETE("/users/:id", deleteUser) +} diff --git a/Sources/API/Iris/.idea/.gitignore b/Sources/API/Iris/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/Sources/API/Iris/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Sources/API/Iris/.idea/BowlinAPI.iml b/Sources/API/Iris/.idea/BowlinAPI.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/Sources/API/Iris/.idea/BowlinAPI.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Sources/API/Iris/.idea/modules.xml b/Sources/API/Iris/.idea/modules.xml new file mode 100644 index 0000000..56bed50 --- /dev/null +++ b/Sources/API/Iris/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Sources/API/Iris/.idea/vcs.xml b/Sources/API/Iris/.idea/vcs.xml new file mode 100644 index 0000000..def3818 --- /dev/null +++ b/Sources/API/Iris/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Sources/API/Iris/docs/docs.go b/Sources/API/Iris/docs/docs.go new file mode 100644 index 0000000..8344a23 --- /dev/null +++ b/Sources/API/Iris/docs/docs.go @@ -0,0 +1,211 @@ +// Package docs GENERATED BY SWAG; DO NOT EDIT +// This file was generated by swaggo/swag +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": { + "name": "VALIN Arthur", + "email": "arthur.valin@etu.uca.fr" + }, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/users": { + "get": { + "description": "Responds with the list of all users as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get users array", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "post": { + "description": "Takes a user JSON and store in DB. Return saved JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Store a new user", + "parameters": [ + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "/users/:id": { + "get": { + "description": "responds with the user whose ID value matches the id as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get user by id", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "put": { + "description": "takes a user JSON and updates user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a user", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + }, + "delete": { + "description": "delete user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a user", + "parameters": [ + { + "type": "string", + "description": "delete user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "User successfully deleted", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "model.User": { + "type": "object", + "properties": { + "createdAt": { + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "1.0", + Host: "localhost:8080", + BasePath: "/", + Schemes: []string{}, + Title: "Bowl'in API", + Description: "A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in]", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/Sources/API/Iris/docs/swagger.json b/Sources/API/Iris/docs/swagger.json new file mode 100644 index 0000000..dcf7586 --- /dev/null +++ b/Sources/API/Iris/docs/swagger.json @@ -0,0 +1,188 @@ +{ + "swagger": "2.0", + "info": { + "description": "A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in]", + "title": "Bowl'in API", + "contact": { + "name": "VALIN Arthur", + "email": "arthur.valin@etu.uca.fr" + }, + "version": "1.0" + }, + "host": "localhost:8080", + "basePath": "/", + "paths": { + "/users": { + "get": { + "description": "Responds with the list of all users as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get users array", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "post": { + "description": "Takes a user JSON and store in DB. Return saved JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Store a new user", + "parameters": [ + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "/users/:id": { + "get": { + "description": "responds with the user whose ID value matches the id as JSON.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Get user by id", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/model.User" + } + } + } + } + }, + "put": { + "description": "takes a user JSON and updates user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a user", + "parameters": [ + { + "type": "string", + "description": "search user by id", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "User JSON", + "name": "user", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.User" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.User" + } + } + } + }, + "delete": { + "description": "delete user whose ID value matches id.", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a user", + "parameters": [ + { + "type": "string", + "description": "delete user by id", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "User successfully deleted", + "schema": { + "type": "string" + } + } + } + } + } + }, + "definitions": { + "model.User": { + "type": "object", + "properties": { + "createdAt": { + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + } + } + } +} \ No newline at end of file diff --git a/Sources/API/Iris/docs/swagger.yaml b/Sources/API/Iris/docs/swagger.yaml new file mode 100644 index 0000000..cebb3cf --- /dev/null +++ b/Sources/API/Iris/docs/swagger.yaml @@ -0,0 +1,124 @@ +basePath: / +definitions: + model.User: + properties: + createdAt: + type: string + deletedAt: + type: string + id: + type: integer + name: + type: string + password: + type: string + updatedAt: + type: string + type: object +host: localhost:8080 +info: + contact: + email: arthur.valin@etu.uca.fr + name: VALIN Arthur + description: A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in] + title: Bowl'in API + version: "1.0" +paths: + /users: + get: + description: Responds with the list of all users as JSON. + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/model.User' + type: array + summary: Get users array + tags: + - user + post: + description: Takes a user JSON and store in DB. Return saved JSON. + parameters: + - description: User JSON + in: body + name: user + required: true + schema: + $ref: '#/definitions/model.User' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/model.User' + summary: Store a new user + tags: + - user + /users/:id: + delete: + description: delete user whose ID value matches id. + parameters: + - description: delete user by id + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: User successfully deleted + schema: + type: string + summary: Delete a user + tags: + - user + get: + description: responds with the user whose ID value matches the id as JSON. + parameters: + - description: search user by id + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/model.User' + type: array + summary: Get user by id + tags: + - user + put: + description: takes a user JSON and updates user whose ID value matches id. + parameters: + - description: search user by id + in: path + name: id + required: true + type: string + - description: User JSON + in: body + name: user + required: true + schema: + $ref: '#/definitions/model.User' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/model.User' + summary: Update a user + tags: + - user +swagger: "2.0" diff --git a/Sources/API/Iris/go.mod b/Sources/API/Iris/go.mod new file mode 100644 index 0000000..064511f --- /dev/null +++ b/Sources/API/Iris/go.mod @@ -0,0 +1,69 @@ +module awesomeProject + +go 1.19 + +require ( + github.com/iris-contrib/swagger/v12 v12.0.1 + github.com/jinzhu/gorm v1.9.16 + github.com/kataras/iris/v12 v12.1.8 + github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180 + github.com/swaggo/swag v1.8.9 +) + +require ( + github.com/BurntSushi/toml v1.2.1 // indirect + github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect + github.com/CloudyKit/jet/v3 v3.0.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398 // indirect + github.com/ajg/form v1.5.1 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible // indirect + github.com/chris-ramon/douceur v0.2.0 // indirect + github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/spec v0.20.8 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/google/go-querystring v1.0.0 // indirect + github.com/gorilla/css v1.0.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect + github.com/imkira/go-interpol v1.1.0 // indirect + github.com/iris-contrib/blackfriday v2.0.0+incompatible // indirect + github.com/iris-contrib/jade v1.1.4 // indirect + github.com/iris-contrib/pongo2 v0.0.1 // indirect + github.com/iris-contrib/schema v0.0.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kataras/golog v0.0.18 // indirect + github.com/kataras/pio v0.0.8 // indirect + github.com/kataras/sitemap v0.0.5 // indirect + github.com/klauspost/compress v1.15.9 // indirect + github.com/kr/pretty v0.3.0 // indirect + github.com/lib/pq v1.1.1 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/microcosm-cc/bluemonday v1.0.3 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/moul/http2curl v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.8.0 // indirect + github.com/ryanuber/columnize v2.1.0+incompatible // indirect + github.com/schollz/closestmatch v2.1.0+incompatible // indirect + github.com/sergi/go-diff v1.1.0 // indirect + github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/smartystreets/goconvey v1.6.4 // indirect + github.com/valyala/fasthttp v1.44.0 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect + github.com/yudai/gojsondiff v1.0.0 // indirect + github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/net v0.5.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect + golang.org/x/tools v0.5.0 // indirect + gopkg.in/ini.v1 v1.57.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/Sources/API/Iris/go.sum b/Sources/API/Iris/go.sum new file mode 100644 index 0000000..dc8e77e --- /dev/null +++ b/Sources/API/Iris/go.sum @@ -0,0 +1,361 @@ +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0 h1:1PwO5w5VCtlUUl+KTOBsTGZlhjWkcybsGaAau52tOy8= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= +github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398 h1:WDC6ySpJzbxGWFh4aMxFFC28wwGp5pEuoTtvA4q/qQ4= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible h1:Ppm0npCCsmuR9oQaBtRuZcmILVE74aXE+AmrJj8L2ns= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/chris-ramon/douceur v0.2.0 h1:IDMEdxlEUUBYBKE4z/mJnFyVXox+MjuEVDJNN27glkU= +github.com/chris-ramon/douceur v0.2.0/go.mod h1:wDW5xjJdeoMm1mRt4sD4c/LbF/mWdEpRXQKjTR8nIBE= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM= +github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= +github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w= +github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= +github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/iris-contrib/blackfriday v2.0.0+incompatible h1:o5sHQHHm0ToHUlAJSTjW9UWicjJSDDauOOQ2AHuIVp4= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/jade v1.1.4 h1:WoYdfyJFfZIUgqNAeOyRfTNQZOksSlZ6+FnXR3AEpX0= +github.com/iris-contrib/jade v1.1.4/go.mod h1:EDqR+ur9piDl6DUgs6qRrlfzmlx/D5UybogqrXvJTBE= +github.com/iris-contrib/pongo2 v0.0.1 h1:zGP7pW51oi5eQZMIlGA3I+FHY9/HOQWDB+572yin0to= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/iris-contrib/schema v0.0.2 h1:qd3RU2sLPaTTamv6BGn+PDD5Gmny+i3jO8xDAmWnNLs= +github.com/iris-contrib/schema v0.0.2/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/iris-contrib/swagger/v12 v12.0.1 h1:ZZ9+dfpWMhIg5L/PUdllQe0sEOvVzp8HQPygklWxeB0= +github.com/iris-contrib/swagger/v12 v12.0.1/go.mod h1:4RfrpjHi0rhxMdVz0L/IawxpTuZBV51CmsNPlloRtnU= +github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= +github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/golog v0.0.18 h1:Td7hcKN25yzqB/0SO5iohOsMk5Mq5V9kDtM5apaJLY0= +github.com/kataras/golog v0.0.18/go.mod h1:jRYl7dFYqP8aQj9VkwdBUXYZSfUktm+YYg1arJILfyw= +github.com/kataras/iris/v12 v12.1.8 h1:O3gJasjm7ZxpxwTH8tApZsvf274scSGQAUpNe47c37U= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/pio v0.0.8 h1:6pX6nHJk7DAV3x1dEimibQF2CmJLlo0jWVmM9yE9KY8= +github.com/kataras/pio v0.0.8/go.mod h1:NFfMp2kVP1rmV4N6gH6qgWpuoDKlrOeYi3VrAIWCGsE= +github.com/kataras/sitemap v0.0.5 h1:4HCONX5RLgVy6G4RkYOV3vKNcma9p236LdGOipJsaFE= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= +github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/microcosm-cc/bluemonday v1.0.3 h1:EjVH7OqbU219kdm8acbveoclh2zZFqPJTJw6VUlTLAQ= +github.com/microcosm-cc/bluemonday v1.0.3/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180 h1:houhKtoTI0PBSiaSVCkIyavSo4sxf3FHo3HzQZAhJuc= +github.com/santosh/gingo v0.0.0-20221207111602-0ef9ded9b180/go.mod h1:vcljLtYRV+geYpIbqcw+yxDF8WgUNBg8queTd6Bm5mo= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14/go.mod h1:gxQT6pBGRuIGunNf/+tSOB5OHvguWi8Tbt82WOkf35E= +github.com/swaggo/gin-swagger v1.2.0/go.mod h1:qlH2+W7zXGZkczuL+r2nEBR2JTT+/lX05Nn6vPhc7OI= +github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+tv8Y= +github.com/swaggo/swag v1.6.5/go.mod h1:Y7ZLSS0d0DdxhWGVhQdu+Bu1QhaF5k0RD7FKdiAykeY= +github.com/swaggo/swag v1.8.9 h1:kHtaBe/Ob9AZzAANfcn5c6RyCke9gG9QpH0jky0I/sA= +github.com/swaggo/swag v1.8.9/go.mod h1:ezQVUUhly8dludpVk+/PuwJWvLLanB13ygV5Pr9enSk= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= +github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.44.0 h1:R+gLUhldIsfg1HokMuQjdQ5bh9nuXHPIfvkYUu9eR5Q= +github.com/valyala/fasthttp v1.44.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww= +gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/Sources/API/Iris/https/cert.pem b/Sources/API/Iris/https/cert.pem new file mode 100644 index 0000000..b98b78d --- /dev/null +++ b/Sources/API/Iris/https/cert.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIB2jCCAYECFBwIPBAUu6ZnjZfyz2fHOZDYruJOMAoGCCqGSM49BAMCMG8xCzAJ +BgNVBAYTAkZSMR4wHAYDVQQIDBVBdXZlcmduZS1SaMO0bmUtQWxwZXMxGTAXBgNV +BAcMEENsZXJtb250LUZlcnJhbmQxFDASBgNVBAoMC0Jvd2xpbiBUZWFtMQ8wDQYD +VQQDDAZib3dsaW4wIBcNMjMwMTI0MTY1OTAzWhgPMjA1MDA2MTAxNjU5MDNaMG8x +CzAJBgNVBAYTAkZSMR4wHAYDVQQIDBVBdXZlcmduZS1SaMO0bmUtQWxwZXMxGTAX +BgNVBAcMEENsZXJtb250LUZlcnJhbmQxFDASBgNVBAoMC0Jvd2xpbiBUZWFtMQ8w +DQYDVQQDDAZib3dsaW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASYZGCAPV1k +97fTG7ppTyNPn0pG6Ot3EOcxb+Ry2RVgK8LnBWwUDwEKYSqqUca0tunprNJ4grIz +q8FqbBvHaeA7MAoGCCqGSM49BAMCA0cAMEQCIClj9ou4+ZUbqK/CYIQSsWKGUKE4 +C8vo7dBePVRi8VBPAiBYnZvVIGzQgjrsQneYmn6TVeIGk1cp1QVQUORDz16EKw== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/Sources/API/Iris/https/privkey.pem b/Sources/API/Iris/https/privkey.pem new file mode 100644 index 0000000..8a12d5a --- /dev/null +++ b/Sources/API/Iris/https/privkey.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BggqhkjOPQMBBw== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIGHElOTi79aG/KASlgz4FLkC7e/lHd9zsatRQNvH4uWJoAoGCCqGSM49 +AwEHoUQDQgAEmGRggD1dZPe30xu6aU8jT59KRujrdxDnMW/kctkVYCvC5wVsFA8B +CmEqqlHGtLbp6azSeIKyM6vBamwbx2ngOw== +-----END EC PRIVATE KEY----- \ No newline at end of file diff --git a/Sources/API/Iris/https/pubkey.pem b/Sources/API/Iris/https/pubkey.pem new file mode 100644 index 0000000..22f4ada --- /dev/null +++ b/Sources/API/Iris/https/pubkey.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmGRggD1dZPe30xu6aU8jT59KRujr +dxDnMW/kctkVYCvC5wVsFA8BCmEqqlHGtLbp6azSeIKyM6vBamwbx2ngOw== +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/Sources/API/Iris/main.go b/Sources/API/Iris/main.go new file mode 100644 index 0000000..77b2626 --- /dev/null +++ b/Sources/API/Iris/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "awesomeProject/model" + "awesomeProject/routing" + "fmt" + "github.com/iris-contrib/swagger/v12" + "github.com/iris-contrib/swagger/v12/swaggerFiles" + _ "github.com/jinzhu/gorm/dialects/postgres" + "github.com/kataras/iris/v12" + _ "github.com/santosh/gingo/docs" +) + +// Model for our User + +// @title Bowl'in API +// @version 1.0 +// @description A bowling scorer API. More infos on [https://codefirst.iut.uca.fr/git/BowlDev/Bowl_in] + +// @contact.name VALIN Arthur +// @contact.email arthur.valin@etu.uca.fr + +// @host localhost:8080 +// @BasePath / +func main() { + + model.InitializeDatabase() + model.InitializeApp() + + config := swagger.Config{ + URL: "/docs/swagger.json", + DeepLinking: true, + } + swaggerUI := swagger.CustomWrapHandler(&config, swaggerFiles.Handler) + model.App.Get("/swagger/*any", swaggerUI) + model.App.HandleDir("/docs", "./docs") + + routing.SetUserRoutes() + + fmt.Println("Server running ! ") + model.Err = model.App.Run(iris.TLS("localhost:8080", "https/cert.pem", "https/privkey.pem")) + if model.Err != nil { + return + } + defer model.Db.Close() +} diff --git a/Sources/API/Iris/model/app.go b/Sources/API/Iris/model/app.go new file mode 100644 index 0000000..91695cd --- /dev/null +++ b/Sources/API/Iris/model/app.go @@ -0,0 +1,11 @@ +package model + +import ( + "github.com/kataras/iris/v12" +) + +var App *iris.Application + +func InitializeApp() { + App = iris.New() +} diff --git a/Sources/API/Iris/model/database.go b/Sources/API/Iris/model/database.go new file mode 100644 index 0000000..1de54bc --- /dev/null +++ b/Sources/API/Iris/model/database.go @@ -0,0 +1,18 @@ +package model + +import ( + "github.com/jinzhu/gorm" + "log" +) + +var Db *gorm.DB +var Err error + +func InitializeDatabase() { + Db, Err = gorm.Open("postgres", "host=localhost port=5432 user=bowlin_team dbname=bowlin password=bowlin") + if Err != nil { + log.Fatal(Err) + } + // Automatically create the "users" table based on the User model + Db.AutoMigrate(&User{}) +} diff --git a/Sources/API/Iris/model/userModel.go b/Sources/API/Iris/model/userModel.go new file mode 100644 index 0000000..8d4fa9e --- /dev/null +++ b/Sources/API/Iris/model/userModel.go @@ -0,0 +1,9 @@ +package model + +import "github.com/jinzhu/gorm" + +type User struct { + gorm.Model + Name string `json:"name"` + Password string `json:"password"` +} diff --git a/Sources/API/Iris/routing/userRoutes.go b/Sources/API/Iris/routing/userRoutes.go new file mode 100644 index 0000000..fadb1aa --- /dev/null +++ b/Sources/API/Iris/routing/userRoutes.go @@ -0,0 +1,96 @@ +package routing + +import ( + "awesomeProject/model" + "github.com/kataras/iris/v12" + _ "github.com/santosh/gingo/docs" +) + +type User = model.User + +// getUsers responds with the list of all users as JSON. +// getUsers godoc +// @Summary Get users array +// @Description Responds with the list of all users as JSON. +// @Tags user +// @Produce json +// @Success 200 {array} model.User +// @Router /users [get] +func getUsers(c iris.Context) { + var users []User + model.Db.Find(&users) + c.JSON(users) +} + +// getUser responds with the user whose ID value matches the id as JSON. +// getUser godoc +// @Summary Get user by id +// @Description responds with the user whose ID value matches the id as JSON. +// @Tags user +// @Produce json +// @Param id path string true "search user by id" +// @Success 200 {array} model.User +// @Router /users/:id [get] +func getUser(c iris.Context) { + var user User + model.Db.First(&user, c.Params().Get("id")) + c.JSON(user) +} + +// postUser takes a user JSON and store in DB. +// postUser godoc +// @Summary Store a new user +// @Description Takes a user JSON and store in DB. Return saved JSON. +// @Tags user +// @Produce json +// @Param user body model.User true "User JSON" +// @Success 200 {object} model.User +// @Router /users [post] +func postUser(c iris.Context) { + var user User + c.ReadJSON(&user) + model.Db.Create(&user) + c.JSON(user) +} + +// putUser takes a user JSON and updates user whose ID value matches id. +// putUser godoc +// @Summary Update a user +// @Description takes a user JSON and updates user whose ID value matches id. +// @Tags user +// @Produce json +// @Param id path string true "search user by id" +// @Param user body model.User true "User JSON" +// @Success 200 {object} model.User +// @Router /users/:id [put] +func putUser(c iris.Context) { + var user User + model.Db.First(&user, c.Params().Get("id")) + c.ReadJSON(&user) + model.Db.Save(&user) + c.JSON(user) +} + +// deleteUser delete user whose ID value matches id. +// deleteUser godoc +// @Summary Delete a user +// @Description delete user whose ID value matches id. +// @Tags user +// @Produce json +// @Param id path string true "delete user by id" +// @Success 200 string "User successfully deleted" +// @Router /users/:id [delete] +func deleteUser(c iris.Context) { + var user User + model.Db.First(&user, c.Params().Get("id")) + model.Db.Delete(&user) + c.JSON(iris.Map{"message": "User successfully deleted"}) +} + +func SetUserRoutes() { + model.App.Get("/users", getUsers) + model.App.Get("/users/:id", getUser) + model.App.Post("/users", postUser) + model.App.Put("/users/:id", putUser) + model.App.Delete("/users/:id", deleteUser) +} diff --git a/Sources/API/Quarkus/.dockerignore b/Sources/API/Quarkus/.dockerignore new file mode 100644 index 0000000..94810d0 --- /dev/null +++ b/Sources/API/Quarkus/.dockerignore @@ -0,0 +1,5 @@ +* +!target/*-runner +!target/*-runner.jar +!target/lib/* +!target/quarkus-app/* \ No newline at end of file diff --git a/Sources/API/Quarkus/.gitignore b/Sources/API/Quarkus/.gitignore new file mode 100644 index 0000000..693002a --- /dev/null +++ b/Sources/API/Quarkus/.gitignore @@ -0,0 +1,40 @@ +#Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +release.properties +.flattened-pom.xml + +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode +.factorypath + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Local environment +.env diff --git a/Sources/API/Quarkus/.mvn/wrapper/.gitignore b/Sources/API/Quarkus/.mvn/wrapper/.gitignore new file mode 100644 index 0000000..e72f5e8 --- /dev/null +++ b/Sources/API/Quarkus/.mvn/wrapper/.gitignore @@ -0,0 +1 @@ +maven-wrapper.jar diff --git a/Sources/API/Quarkus/.mvn/wrapper/MavenWrapperDownloader.java b/Sources/API/Quarkus/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..1708393 --- /dev/null +++ b/Sources/API/Quarkus/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader +{ + private static final String WRAPPER_VERSION = "3.1.1"; + + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = + "https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/" + WRAPPER_VERSION + + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use instead of the + * default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main( String args[] ) + { + System.out.println( "- Downloader started" ); + File baseDirectory = new File( args[0] ); + System.out.println( "- Using base directory: " + baseDirectory.getAbsolutePath() ); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File( baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH ); + String url = DEFAULT_DOWNLOAD_URL; + if ( mavenWrapperPropertyFile.exists() ) + { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try + { + mavenWrapperPropertyFileInputStream = new FileInputStream( mavenWrapperPropertyFile ); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load( mavenWrapperPropertyFileInputStream ); + url = mavenWrapperProperties.getProperty( PROPERTY_NAME_WRAPPER_URL, url ); + } + catch ( IOException e ) + { + System.out.println( "- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'" ); + } + finally + { + try + { + if ( mavenWrapperPropertyFileInputStream != null ) + { + mavenWrapperPropertyFileInputStream.close(); + } + } + catch ( IOException e ) + { + // Ignore ... + } + } + } + System.out.println( "- Downloading from: " + url ); + + File outputFile = new File( baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH ); + if ( !outputFile.getParentFile().exists() ) + { + if ( !outputFile.getParentFile().mkdirs() ) + { + System.out.println( "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + + "'" ); + } + } + System.out.println( "- Downloading to: " + outputFile.getAbsolutePath() ); + try + { + downloadFileFromURL( url, outputFile ); + System.out.println( "Done" ); + System.exit( 0 ); + } + catch ( Throwable e ) + { + System.out.println( "- Error downloading" ); + e.printStackTrace(); + System.exit( 1 ); + } + } + + private static void downloadFileFromURL( String urlString, File destination ) + throws Exception + { + if ( System.getenv( "MVNW_USERNAME" ) != null && System.getenv( "MVNW_PASSWORD" ) != null ) + { + String username = System.getenv( "MVNW_USERNAME" ); + char[] password = System.getenv( "MVNW_PASSWORD" ).toCharArray(); + Authenticator.setDefault( new Authenticator() + { + @Override + protected PasswordAuthentication getPasswordAuthentication() + { + return new PasswordAuthentication( username, password ); + } + } ); + } + URL website = new URL( urlString ); + ReadableByteChannel rbc; + rbc = Channels.newChannel( website.openStream() ); + FileOutputStream fos = new FileOutputStream( destination ); + fos.getChannel().transferFrom( rbc, 0, Long.MAX_VALUE ); + fos.close(); + rbc.close(); + } + +} diff --git a/Sources/API/Quarkus/.mvn/wrapper/maven-wrapper.properties b/Sources/API/Quarkus/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..61a2ef1 --- /dev/null +++ b/Sources/API/Quarkus/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/Sources/API/Quarkus/README.md b/Sources/API/Quarkus/README.md new file mode 100644 index 0000000..9bb513b --- /dev/null +++ b/Sources/API/Quarkus/README.md @@ -0,0 +1,56 @@ +# BowlApi + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +```shell script +./mvnw compile quarkus:dev +``` + +> **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/. + +## Packaging and running the application + +The application can be packaged using: +```shell script +./mvnw package +``` +It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory. + +The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`. + +If you want to build an _über-jar_, execute the following command: +```shell script +./mvnw package -Dquarkus.package.type=uber-jar +``` + +The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`. + +## Creating a native executable + +You can create a native executable using: +```shell script +./mvnw package -Pnative +``` + +Or, if you don't have GraalVM installed, you can run the native executable build in a container using: +```shell script +./mvnw package -Pnative -Dquarkus.native.container-build=true +``` + +You can then execute your native executable with: `./target/BowlApi-1.0.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling. + +## Provided Code + +### RESTEasy Reactive + +Easily start your Reactive RESTful Web Services + +[Related guide section...](https://quarkus.io/guides/getting-started-reactive#reactive-jax-rs-resources) diff --git a/Sources/API/Quarkus/mvnw b/Sources/API/Quarkus/mvnw new file mode 100644 index 0000000..eaa3d30 --- /dev/null +++ b/Sources/API/Quarkus/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/Sources/API/Quarkus/mvnw.cmd b/Sources/API/Quarkus/mvnw.cmd new file mode 100644 index 0000000..abb7c32 --- /dev/null +++ b/Sources/API/Quarkus/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/Sources/API/Quarkus/pom.xml b/Sources/API/Quarkus/pom.xml new file mode 100644 index 0000000..f439d4b --- /dev/null +++ b/Sources/API/Quarkus/pom.xml @@ -0,0 +1,141 @@ + + + 4.0.0 + org.acme + BowlApi + 1.0.0-SNAPSHOT + + 3.10.1 + 11 + UTF-8 + UTF-8 + quarkus-bom + io.quarkus.platform + 2.16.0.Final + true + 3.0.0-M7 + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-resteasy-reactive + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + io.quarkus + quarkus-hibernate-reactive-panache + + + + + io.quarkus + quarkus-reactive-pg-client + + + + io.quarkus + quarkus-smallrye-openapi + + + io.quarkus + quarkus-resteasy-reactive-jackson + + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + -parameters + + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + + native + + + native + + + + false + native + + + + diff --git a/Sources/API/Quarkus/src/main/docker/Dockerfile.jvm b/Sources/API/Quarkus/src/main/docker/Dockerfile.jvm new file mode 100644 index 0000000..047ad02 --- /dev/null +++ b/Sources/API/Quarkus/src/main/docker/Dockerfile.jvm @@ -0,0 +1,94 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/BowlApi-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi-jvm +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi-jvm +# +# This image uses the `run-java.sh` script to run the application. +# This scripts computes the command line to execute your Java application, and +# includes memory/GC tuning. +# You can configure the behavior using the following environment properties: +# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") +# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options +# in JAVA_OPTS (example: "-Dsome.property=foo") +# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is +# used to calculate a default maximal heap memory based on a containers restriction. +# If used in a container without any memory constraints for the container then this +# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio +# of the container available memory as set here. The default is `50` which means 50% +# of the available memory is used as an upper boundary. You can skip this mechanism by +# setting this value to `0` in which case no `-Xmx` option is added. +# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This +# is used to calculate a default initial heap memory based on the maximum heap memory. +# If used in a container without any memory constraints for the container then this +# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio +# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx` +# is used as the initial heap size. You can skip this mechanism by setting this value +# to `0` in which case no `-Xms` option is added (example: "25") +# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS. +# This is used to calculate the maximum value of the initial heap memory. If used in +# a container without any memory constraints for the container then this option has +# no effect. If there is a memory constraint then `-Xms` is limited to the value set +# here. The default is 4096MB which means the calculated value of `-Xms` never will +# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096") +# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output +# when things are happening. This option, if set to true, will set +# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true"). +# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example: +# true"). +# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787"). +# - CONTAINER_CORE_LIMIT: A calculated core limit as described in +# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2") +# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024"). +# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion. +# (example: "20") +# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking. +# (example: "40") +# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection. +# (example: "4") +# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus +# previous GC times. (example: "90") +# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20") +# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100") +# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should +# contain the necessary JRE command-line options to specify the required GC, which +# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC). +# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080") +# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080") +# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be +# accessed directly. (example: "foo.example.com,bar.example.com") +# +### +FROM registry.access.redhat.com/ubi8/openjdk-11:1.14 + +ENV LANGUAGE='en_US:en' + + +# We make four distinct layers so if there are application changes the library layers can be re-used +COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/ +COPY --chown=185 target/quarkus-app/*.jar /deployments/ +COPY --chown=185 target/quarkus-app/app/ /deployments/app/ +COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/ + +EXPOSE 8080 +USER 185 +ENV AB_JOLOKIA_OFF="" +ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" + diff --git a/Sources/API/Quarkus/src/main/docker/Dockerfile.legacy-jar b/Sources/API/Quarkus/src/main/docker/Dockerfile.legacy-jar new file mode 100644 index 0000000..ba8da5d --- /dev/null +++ b/Sources/API/Quarkus/src/main/docker/Dockerfile.legacy-jar @@ -0,0 +1,90 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package -Dquarkus.package.type=legacy-jar +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/BowlApi-legacy-jar . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi-legacy-jar +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi-legacy-jar +# +# This image uses the `run-java.sh` script to run the application. +# This scripts computes the command line to execute your Java application, and +# includes memory/GC tuning. +# You can configure the behavior using the following environment properties: +# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") +# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options +# in JAVA_OPTS (example: "-Dsome.property=foo") +# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is +# used to calculate a default maximal heap memory based on a containers restriction. +# If used in a container without any memory constraints for the container then this +# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio +# of the container available memory as set here. The default is `50` which means 50% +# of the available memory is used as an upper boundary. You can skip this mechanism by +# setting this value to `0` in which case no `-Xmx` option is added. +# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This +# is used to calculate a default initial heap memory based on the maximum heap memory. +# If used in a container without any memory constraints for the container then this +# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio +# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx` +# is used as the initial heap size. You can skip this mechanism by setting this value +# to `0` in which case no `-Xms` option is added (example: "25") +# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS. +# This is used to calculate the maximum value of the initial heap memory. If used in +# a container without any memory constraints for the container then this option has +# no effect. If there is a memory constraint then `-Xms` is limited to the value set +# here. The default is 4096MB which means the calculated value of `-Xms` never will +# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096") +# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output +# when things are happening. This option, if set to true, will set +# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true"). +# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example: +# true"). +# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787"). +# - CONTAINER_CORE_LIMIT: A calculated core limit as described in +# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2") +# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024"). +# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion. +# (example: "20") +# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking. +# (example: "40") +# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection. +# (example: "4") +# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus +# previous GC times. (example: "90") +# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20") +# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100") +# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should +# contain the necessary JRE command-line options to specify the required GC, which +# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC). +# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080") +# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080") +# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be +# accessed directly. (example: "foo.example.com,bar.example.com") +# +### +FROM registry.access.redhat.com/ubi8/openjdk-11:1.14 + +ENV LANGUAGE='en_US:en' + + +COPY target/lib/* /deployments/lib/ +COPY target/*-runner.jar /deployments/quarkus-run.jar + +EXPOSE 8080 +USER 185 +ENV AB_JOLOKIA_OFF="" +ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" diff --git a/Sources/API/Quarkus/src/main/docker/Dockerfile.native b/Sources/API/Quarkus/src/main/docker/Dockerfile.native new file mode 100644 index 0000000..8e87e3e --- /dev/null +++ b/Sources/API/Quarkus/src/main/docker/Dockerfile.native @@ -0,0 +1,27 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode. +# +# Before building the container image run: +# +# ./mvnw package -Pnative +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/BowlApi . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6 +WORKDIR /work/ +RUN chown 1001 /work \ + && chmod "g+rwX" /work \ + && chown 1001:root /work +COPY --chown=1001:root target/*-runner /work/application + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/Sources/API/Quarkus/src/main/docker/Dockerfile.native-micro b/Sources/API/Quarkus/src/main/docker/Dockerfile.native-micro new file mode 100644 index 0000000..ceb65a6 --- /dev/null +++ b/Sources/API/Quarkus/src/main/docker/Dockerfile.native-micro @@ -0,0 +1,30 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode. +# It uses a micro base image, tuned for Quarkus native executables. +# It reduces the size of the resulting container image. +# Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image. +# +# Before building the container image run: +# +# ./mvnw package -Pnative +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/BowlApi . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/BowlApi +# +### +FROM quay.io/quarkus/quarkus-micro-image:2.0 +WORKDIR /work/ +RUN chown 1001 /work \ + && chmod "g+rwX" /work \ + && chown 1001:root /work +COPY --chown=1001:root target/*-runner /work/application + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/Sources/API/Quarkus/src/main/java/org/acme/User.java b/Sources/API/Quarkus/src/main/java/org/acme/User.java new file mode 100644 index 0000000..1e2adc2 --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/User.java @@ -0,0 +1,7 @@ +package org.acme; + +public class User { + public String name; + public String password; + +} diff --git a/Sources/API/Quarkus/src/main/java/org/acme/UserController.java b/Sources/API/Quarkus/src/main/java/org/acme/UserController.java new file mode 100644 index 0000000..41ec553 --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/UserController.java @@ -0,0 +1,91 @@ +package org.acme; + +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; + +import io.smallrye.mutiny.Uni; + +@Path("/users") +public class UserController { + + @Inject + UserService service; + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Uni> getUsers() { + Uni> allUsers = service.listAll(); + return allUsers; + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + @Path("/{pseudo}") + public Uni getUser(@PathParam("pseudo") String pseudo) { + Uni user = service.getUserByName(pseudo); + return user; + + } + + @GET + @Produces(MediaType.TEXT_PLAIN) + @Path("/po") + public String hello() { + return "Hello from RESTEasy Reactive"; + } + + @GET + @Produces(MediaType.APPLICATION_JSON) + @Path("/{id}") + public Uni getUserById(@PathParam("id") String id) { + Uni user = service.findById(Long.valueOf(id)); + return user; + } + + @POST + @Produces(MediaType.APPLICATION_JSON) + @Consumes(MediaType.APPLICATION_JSON) + // body + public Response createUser(UserEntity user) { + service.persist(user); + return Response.status(Status.CREATED).entity(user).build(); + } + + @PUT + @Path("/{id}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response updateUser(@PathParam("id") String id, User newUser) throws Exception { + Uni oldUser = service.findById(Long.valueOf(id)); + if (oldUser == null) + throw new Exception("user not found"); + service.update(id, newUser); + return Response.status(Status.OK).build(); + } + + @DELETE + @Produces(MediaType.APPLICATION_JSON) + public Uni delete(@PathParam("id") Long id) { + return service.deleteById(id) + .onItem().transform(entity -> !entity ? Response.status(Status.NOT_FOUND).build() + : Response.ok().status(200).build()); + } + + @GET + @Path("/count") + public Uni count() { + return service.count(); + } +} \ No newline at end of file diff --git a/Sources/API/Quarkus/src/main/java/org/acme/UserEntity.java b/Sources/API/Quarkus/src/main/java/org/acme/UserEntity.java new file mode 100644 index 0000000..910c68f --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/UserEntity.java @@ -0,0 +1,22 @@ +package org.acme; + +import javax.persistence.Entity; +import javax.persistence.Table; + +import io.quarkus.hibernate.reactive.panache.PanacheEntity; + +@Entity +public class UserEntity extends PanacheEntity { + public String name; + public String password; + + // return name as uppercase in the model + public String getName() { + return name.toUpperCase(); + } + + // store all names in lowercase in the DB + public void setName(String name) { + this.name = name.toLowerCase(); + } +} diff --git a/Sources/API/Quarkus/src/main/java/org/acme/UserService.java b/Sources/API/Quarkus/src/main/java/org/acme/UserService.java new file mode 100644 index 0000000..0b182a3 --- /dev/null +++ b/Sources/API/Quarkus/src/main/java/org/acme/UserService.java @@ -0,0 +1,23 @@ +package org.acme; + +import java.util.List; + +import javax.enterprise.context.ApplicationScoped; + +import io.quarkus.hibernate.reactive.panache.PanacheRepository; +import io.smallrye.mutiny.Uni; + +@ApplicationScoped +public class UserService implements PanacheRepository { + public Uni getUserByName(String name) { + return UserEntity.find("name", name).firstResult(); + } + + public Uni> findwithName(String name) { + return list("name", name); + } + + public Uni deleteUser() { + return delete("name", "Stef"); + } +} diff --git a/Sources/API/Quarkus/src/main/resources/META-INF/resources/index.html b/Sources/API/Quarkus/src/main/resources/META-INF/resources/index.html new file mode 100644 index 0000000..4458b89 --- /dev/null +++ b/Sources/API/Quarkus/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,279 @@ + + + + + BowlApi - 1.0.0-SNAPSHOT + + + +
+
+
+ + + + + quarkus_logo_horizontal_rgb_1280px_reverse + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+

You just made a Quarkus application.

+

This page is served by Quarkus.

+ Visit the Dev UI +

This page: src/main/resources/META-INF/resources/index.html

+

App configuration: src/main/resources/application.properties

+

Static assets: src/main/resources/META-INF/resources/

+

Code: src/main/java

+

Generated starter code:

+
    +
  • + RESTEasy Reactive Easily start your Reactive RESTful Web Services +
    @Path: /hello +
    Related guide +
  • + +
+
+
+
Documentation
+

Practical step-by-step guides to help you achieve a specific goal. Use them to help get your work + done.

+
Set up your IDE
+

Everyone has a favorite IDE they like to use to code. Learn how to configure yours to maximize your + Quarkus productivity.

+
+
+
+ + diff --git a/Sources/API/Quarkus/src/main/resources/application.properties b/Sources/API/Quarkus/src/main/resources/application.properties new file mode 100644 index 0000000..ebce9bd --- /dev/null +++ b/Sources/API/Quarkus/src/main/resources/application.properties @@ -0,0 +1,10 @@ +quarkus.datasource.db-kind = postgresql +quarkus.datasource.username = bowlin_team +quarkus.datasource.password = bowlin +#quarkus.datasource.reactive.url = vertx-reactive:postgresql://localhost:5432/bowlin +quarkus.datasource.reactive.url = postgresql://localhost:5432/bowlin + +# # drop and create the database at startup (use `update` to only update the schema) +quarkus.hibernate-orm.database.generation = drop-and-create + +quarkus.smallrye-openapi.path=/swagger diff --git a/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceIT.java b/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceIT.java new file mode 100644 index 0000000..26bc65a --- /dev/null +++ b/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceIT.java @@ -0,0 +1,8 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusIntegrationTest; + +@QuarkusIntegrationTest +public class GreetingResourceIT extends GreetingResourceTest { + // Execute the same tests but in packaged mode. +} diff --git a/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceTest.java b/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceTest.java new file mode 100644 index 0000000..4eb5ce3 --- /dev/null +++ b/Sources/API/Quarkus/src/test/java/org/acme/GreetingResourceTest.java @@ -0,0 +1,21 @@ +package org.acme; + +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.CoreMatchers.is; + +@QuarkusTest +public class GreetingResourceTest { + + @Test + public void testUserEndpoint() { + given() + .when().get("/users") + .then() + .statusCode(200) + .body(is("Hello from RESTEasy Reactive")); + } + +} \ No newline at end of file diff --git a/Sources/API/gatling/LICENSE b/Sources/API/gatling/LICENSE new file mode 100644 index 0000000..a82aed2 --- /dev/null +++ b/Sources/API/gatling/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2012 eBusiness Information (Excilys Group) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/Sources/API/gatling/bin/gatling.bat b/Sources/API/gatling/bin/gatling.bat new file mode 100644 index 0000000..f868953 --- /dev/null +++ b/Sources/API/gatling/bin/gatling.bat @@ -0,0 +1,73 @@ +@ECHO OFF +@REM +@REM Copyright 2011-2022 GatlingCorp (http://gatling.io) +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM + +setlocal + +set USER_ARGS=%* + +rem set GATLING_HOME automatically if possible +set "OLD_DIR=%cd%" +cd .. +set "DEFAULT_GATLING_HOME=%cd%" +cd %OLD_DIR% + +rem if gatling home is correctly set +if exist "%GATLING_HOME%\bin\gatling.bat" goto gotHome +rem if gatling home is not correctly set +if not "%GATLING_HOME%" == "" goto badHome +rem if not try current folder +if exist "%OLD_DIR%\bin\gatling.bat" set "GATLING_HOME=%OLD_DIR%" && goto gotHome +rem if not try parent folder +if exist "%DEFAULT_GATLING_HOME%\bin\gatling.bat" set "GATLING_HOME=%DEFAULT_GATLING_HOME%" && goto gotHome +rem else tell user to set GATLING_HOME +goto :noHome + +:gotHome + +echo GATLING_HOME is set to "%GATLING_HOME%" + +set JAVA_OPTS=%JAVA_OPTS% -Xms32M -Xmx128M + +set CLASSPATH="%GATLING_HOME%"\lib\* + +set JAVA=java +if exist "%JAVA_HOME%\bin\java.exe" goto setJavaHome +goto run + +:setJavaHome +set JAVA="%JAVA_HOME%\bin\java.exe" + +:run +echo JAVA = %JAVA% +%JAVA% %JAVA_OPTS% -cp %CLASSPATH% io.gatling.bundle.GatlingCLI %USER_ARGS% + +goto exit + +:badHome +echo The GATLING_HOME environment variable points to the wrong directory. +echo Please set it to the correct folder and try to launch Gatling again. +goto exit + +:noHome +echo GATLING_HOME environment variable is not set and could not be guessed automatically. +echo Please set GATLING_HOME and try to launch Gatling again. +goto exit + +:exit +if not defined NO_PAUSE pause +endlocal +exit /b 0 diff --git a/Sources/API/gatling/bin/gatling.sh b/Sources/API/gatling/bin/gatling.sh new file mode 100644 index 0000000..c1ac194 --- /dev/null +++ b/Sources/API/gatling/bin/gatling.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# +# Copyright 2011-2022 GatlingCorp (http://gatling.io) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +if [ -n "$JAVA_HOME" ]; then + JAVA="$JAVA_HOME"/bin/java +else + JAVA=java +fi + +OLDDIR=$(pwd) +BIN_DIR=$(dirname "$0") +cd "${BIN_DIR}/.." && DEFAULT_GATLING_HOME=$(pwd) && cd "${OLDDIR}" + +GATLING_HOME="${GATLING_HOME:=${DEFAULT_GATLING_HOME}}" + +JAVA_OPTS="${JAVA_OPTS} -Xms32M -Xmx128M" + +# Setup classpath +CLASSPATH="$GATLING_HOME/lib/*" + +"$JAVA" $JAVA_OPTS -cp "$CLASSPATH" io.gatling.bundle.GatlingCLI "$@" diff --git a/Sources/API/gatling/bin/recorder.bat b/Sources/API/gatling/bin/recorder.bat new file mode 100644 index 0000000..bb4b687 --- /dev/null +++ b/Sources/API/gatling/bin/recorder.bat @@ -0,0 +1,73 @@ +@ECHO OFF +@REM +@REM Copyright 2011-2022 GatlingCorp (http://gatling.io) +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM + +setlocal + +set USER_ARGS=%* + +rem set GATLING_HOME automatically if possible +set "OLD_DIR=%cd%" +cd .. +set "DEFAULT_GATLING_HOME=%cd%" +cd %OLD_DIR% + +rem if gatling home is correctly set +if exist "%GATLING_HOME%\bin\gatling.bat" goto gotHome +rem if gatling home is not correctly set +if not "%GATLING_HOME%" == "" goto badHome +rem if not try current folder +if exist "%OLD_DIR%\bin\gatling.bat" set "GATLING_HOME=%OLD_DIR%" && goto gotHome +rem if not try parent folder +if exist "%DEFAULT_GATLING_HOME%\bin\gatling.bat" set "GATLING_HOME=%DEFAULT_GATLING_HOME%" && goto gotHome +rem else tell user to set GATLING_HOME +goto :noHome + +:gotHome + +echo GATLING_HOME is set to "%GATLING_HOME%" + +set JAVA_OPTS=%JAVA_OPTS% -Xms32M -Xmx128M + +set CLASSPATH="%GATLING_HOME%"\lib\* + +set JAVA=java +if exist "%JAVA_HOME%\bin\java.exe" goto setJavaHome +goto run + +:setJavaHome +set JAVA="%JAVA_HOME%\bin\java.exe" + +:run +echo JAVA = %JAVA% +%JAVA% %JAVA_OPTS% -cp %CLASSPATH% io.gatling.bundle.RecorderCLI %USER_ARGS% + +goto exit + +:badHome +echo The GATLING_HOME environment variable points to the wrong directory. +echo Please set it to the correct folder and try to launch Gatling again. +goto exit + +:noHome +echo GATLING_HOME environment variable is not set and could not be guessed automatically. +echo Please set GATLING_HOME and try to launch Gatling again. +goto exit + +:exit +if not defined NO_PAUSE pause +endlocal +exit /b 0 diff --git a/Sources/API/gatling/bin/recorder.sh b/Sources/API/gatling/bin/recorder.sh new file mode 100644 index 0000000..8527e62 --- /dev/null +++ b/Sources/API/gatling/bin/recorder.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Copyright 2011-2022 GatlingCorp (http://gatling.io) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +if [ -n "$JAVA_HOME" ]; then + JAVA="$JAVA_HOME"/bin/java +else + JAVA=java +fi + +OLDDIR=$(pwd) +BIN_DIR=$(dirname "$0") +cd "${BIN_DIR}/.." && DEFAULT_GATLING_HOME=$(pwd) && cd "${OLDDIR}" + +GATLING_HOME="${GATLING_HOME:=${DEFAULT_GATLING_HOME}}" + +export GATLING_HOME + +JAVA_OPTS="${JAVA_OPTS} -Xms32M -Xmx128M" + +# Setup classpath +CLASSPATH="$GATLING_HOME/lib/*" + +"$JAVA" $JAVA_OPTS -cp "$CLASSPATH" io.gatling.bundle.RecorderCLI "$@" diff --git a/Sources/API/gatling/conf/gatling-akka.conf b/Sources/API/gatling/conf/gatling-akka.conf new file mode 100644 index 0000000..d66775e --- /dev/null +++ b/Sources/API/gatling/conf/gatling-akka.conf @@ -0,0 +1,10 @@ +akka { + #loggers = ["akka.event.slf4j.Slf4jLogger"] + #logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" + #log-dead-letters = off + actor { + default-dispatcher { + #throughput = 20 + } + } +} diff --git a/Sources/API/gatling/conf/gatling.conf b/Sources/API/gatling/conf/gatling.conf new file mode 100644 index 0000000..f43372a --- /dev/null +++ b/Sources/API/gatling/conf/gatling.conf @@ -0,0 +1,128 @@ +######################### +# Gatling Configuration # +######################### + +# This file contains all the settings configurable for Gatling with their default values + +gatling { + core { + #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp) + #runDescription = "" # The description for this simulation run, displayed in each report + #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation + #simulationClass = "" # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated) + #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable + #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body raw files, set to 0 to disable + #rawFileBodiesInMemoryMaxSize = 1000 # Max bite size of raw files to be cached in memory + #pebbleFileBodiesCacheMaxCapacity = 200 # Cache size for request body Pebble templates, set to 0 to disable + #feederAdaptiveLoadModeThreshold = 100 # File size threshold (in MB). Below load eagerly in memory, above use batch mode with default buffer size + #shutdownTimeout = 10000 # Milliseconds to wait for the actor system to shutdown + extract { + regex { + #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching + } + xpath { + #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching + } + jsonPath { + #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching + } + css { + #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching + } + } + directory { + #simulations = "" # If set, directory where simulation classes are located + #resources = "" # If set, directory where resources, such as feeder files and request bodies, are located + #reportsOnly = "" # If set, name of report folder to look for in order to generate its report + #binaries = "" # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target. + #results = results # Name of the folder where all reports folder are located + } + } + socket { + #connectTimeout = 10000 # Timeout in millis for establishing a TCP socket + #tcpNoDelay = true + #soKeepAlive = false # if TCP keepalive configured at OS level should be used + #soReuseAddress = false + } + netty { + #useNativeTransport = true # if Netty Linux native transport should be used instead of Java NIO + #useIoUring = false # if io_uring should be used instead of epoll if available + #allocator = "pooled" # switch to unpooled for unpooled ByteBufAllocator + #maxThreadLocalCharBufferSize = 200000 # Netty's default is 16k + } + ssl { + #useOpenSsl = true # if OpenSSL should be used instead of JSSE (only the latter can be debugged with -Djavax.net.debug=ssl) + #useOpenSslFinalizers = false # if OpenSSL contexts should be freed with Finalizer or if using RefCounted is fine + #handshakeTimeout = 10000 # TLS handshake timeout in millis + #useInsecureTrustManager = true # Use an insecure TrustManager that trusts all server certificates + #enabledProtocols = [] # Array of enabled protocols for HTTPS, if empty use Netty's defaults + #enabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty enable all available ciphers + #sessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default + #sessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h) + #enableSni = true # When set to true, enable Server Name indication (SNI) + keyStore { + #type = "" # Type of SSLContext's KeyManagers store + #file = "" # Location of SSLContext's KeyManagers store + #password = "" # Password for SSLContext's KeyManagers store + #algorithm = "" # Algorithm used SSLContext's KeyManagers store + } + trustStore { + #type = "" # Type of SSLContext's TrustManagers store + #file = "" # Location of SSLContext's TrustManagers store + #password = "" # Password for SSLContext's TrustManagers store + #algorithm = "" # Algorithm used by SSLContext's TrustManagers store + } + } + charting { + #noReports = false # When set to true, don't generate HTML reports + #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports + #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration. + indicators { + #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary + #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary + #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite + #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite + #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite + #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite + } + } + http { + #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable + #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable + #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable + #warmUpUrl = "https://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled) + #pooledConnectionIdleTimeout = 60000 # Timeout in millis for a connection to stay idle in the pool + #requestTimeout = 60000 # Timeout in millis for performing an HTTP request + #enableHostnameVerification = false # When set to true, enable hostname verification: SSLEngine.setHttpsEndpointIdentificationAlgorithm("HTTPS") + dns { + #queryTimeout = 5000 # Timeout in millis of each DNS query in millis + #maxQueriesPerResolve = 6 # Maximum allowed number of DNS queries for a given name resolution + } + } + jms { + #replyTimeoutScanPeriod = 1000 # scan period for timedout reply messages + } + data { + #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite) + console { + #light = false # When set to true, displays a light version without detailed request stats + #writePeriod = 5 # Write interval, in seconds + } + file { + #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes + } + leak { + #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening + } + graphite { + #light = false # only send the all* stats + #host = "localhost" # The host where the Carbon server is located + #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle) + #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp") + #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite + #bufferSize = 8192 # Internal data buffer size, in bytes + #writePeriod = 1 # Write period, in seconds + } + #enableAnalytics = true # Anonymous Usage Analytics (no tracking), please support + } +} diff --git a/Sources/API/gatling/conf/logback.xml b/Sources/API/gatling/conf/logback.xml new file mode 100644 index 0000000..1a69f33 --- /dev/null +++ b/Sources/API/gatling/conf/logback.xml @@ -0,0 +1,25 @@ + + + + + + %d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx + + false + + + + + + + + + + + + + + + + + diff --git a/Sources/API/gatling/conf/recorder.conf b/Sources/API/gatling/conf/recorder.conf new file mode 100644 index 0000000..5b37466 --- /dev/null +++ b/Sources/API/gatling/conf/recorder.conf @@ -0,0 +1,56 @@ +recorder { + core { + #mode = "Proxy" + #encoding = "utf-8" # The encoding used for reading/writing request bodies and the generated simulation + #simulationsFolder = "" # The folder where generated simulation will be generated + #package = "" # The package's name of the generated simulation + #className = "RecordedSimulation" # The name of the generated Simulation class + #thresholdForPauseCreation = 100 # The minimum time, in milliseconds, that must pass between requests to trigger a pause creation + #saveConfig = false # When set to true, the configuration from the Recorder GUI overwrites this configuration + #headless = false # When set to true, run the Recorder in headless mode instead of the GUI + #harFilePath = "" # The path of the HAR file to convert + #format = "java8" # java8|java11|java17|kotlin|scala + } + filters { + #enable = false # If filters are enabled + #allowList = [] # The list of ressources patterns that are part of the Recorder's allow list + #denyList = [] # The list of ressources patterns that are part of the Recorder's deny list + } + http { + #automaticReferer = true # When set to false, write the referer + enable 'disableAutoReferer' in the generated simulation + #followRedirect = true # When set to false, write redirect requests + enable 'disableFollowRedirect' in the generated simulation + #removeCacheHeaders = true # When set to true, removes from the generated requests headers leading to request caching + #inferHtmlResources = true # When set to true, add inferred resources + set 'inferHtmlResources' with the configured blacklist/whitelist in the generated simulation + #checkResponseBodies = false # When set to true, save response bodies as files and add raw checks in the generated simulation + #useSimulationAsPrefix = false # When set to true, use the simulation class name instead of 'request' as a prefix for http(s) requests + #useMethodAndUriAsPostfix = false # When set to true, use the HTTP method and the URI as a postfix for http(s) requests + } + proxy { + #port = 8000 # Local port used by Gatling's Proxy for HTTP/HTTPS + https { + #mode = "SelfSignedCertificate" # The selected "HTTPS mode" (currently supported : "SelfSignedCertificate", "ProvidedKeyStore", "CertificateAuthority") + keyStore { + #path = "" # The path of the custom key store + #password = "" # The password for this key store + #type = "JKS" # The type of the key store (currently supported: "JKS" and "PKCS#12") + } + certificateAuthority { + #certificatePath = "" # The path of the custom certificate + #privateKeyPath = "" # The certificate's private key path + } + } + outgoing { + #host = "" # The outgoing proxy's hostname + #username = "" # The username to use to connect to the outgoing proxy + #password = "" # The password corresponding to the user to use to connect to the outgoing proxy + #port = 0 # The HTTP port to use to connect to the outgoing proxy + #sslPort = 0 # If set, The HTTPS port to use to connect to the outgoing proxy + } + } + netty { + #maxInitialLineLength = 10000 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK") + #maxHeaderSize = 20000 # Maximum size, in bytes, of each request's headers + #maxChunkSize = 8192 # Maximum length of the content or each chunk + #maxContentLength = 100000000 # Maximum length of the aggregated content of each response + } +} diff --git a/Sources/API/gatling/lib/HdrHistogram-2.1.12.jar b/Sources/API/gatling/lib/HdrHistogram-2.1.12.jar new file mode 100644 index 0000000..1e43d5e Binary files /dev/null and b/Sources/API/gatling/lib/HdrHistogram-2.1.12.jar differ diff --git a/Sources/API/gatling/lib/Saxon-HE-10.6.jar b/Sources/API/gatling/lib/Saxon-HE-10.6.jar new file mode 100644 index 0000000..ca26157 Binary files /dev/null and b/Sources/API/gatling/lib/Saxon-HE-10.6.jar differ diff --git a/Sources/API/gatling/lib/akka-actor_2.13-2.6.20.jar b/Sources/API/gatling/lib/akka-actor_2.13-2.6.20.jar new file mode 100644 index 0000000..cc69d9b Binary files /dev/null and b/Sources/API/gatling/lib/akka-actor_2.13-2.6.20.jar differ diff --git a/Sources/API/gatling/lib/akka-slf4j_2.13-2.6.20.jar b/Sources/API/gatling/lib/akka-slf4j_2.13-2.6.20.jar new file mode 100644 index 0000000..7c98ce1 Binary files /dev/null and b/Sources/API/gatling/lib/akka-slf4j_2.13-2.6.20.jar differ diff --git a/Sources/API/gatling/lib/boopickle_2.13-1.3.3.jar b/Sources/API/gatling/lib/boopickle_2.13-1.3.3.jar new file mode 100644 index 0000000..b355b56 Binary files /dev/null and b/Sources/API/gatling/lib/boopickle_2.13-1.3.3.jar differ diff --git a/Sources/API/gatling/lib/brotli4j-1.8.0.jar b/Sources/API/gatling/lib/brotli4j-1.8.0.jar new file mode 100644 index 0000000..4e75dd4 Binary files /dev/null and b/Sources/API/gatling/lib/brotli4j-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/caffeine-2.9.3.jar b/Sources/API/gatling/lib/caffeine-2.9.3.jar new file mode 100644 index 0000000..2c85a0d Binary files /dev/null and b/Sources/API/gatling/lib/caffeine-2.9.3.jar differ diff --git a/Sources/API/gatling/lib/checker-qual-3.19.0.jar b/Sources/API/gatling/lib/checker-qual-3.19.0.jar new file mode 100644 index 0000000..3ff12ce Binary files /dev/null and b/Sources/API/gatling/lib/checker-qual-3.19.0.jar differ diff --git a/Sources/API/gatling/lib/collections_2.13-1.8.0.jar b/Sources/API/gatling/lib/collections_2.13-1.8.0.jar new file mode 100644 index 0000000..068580c Binary files /dev/null and b/Sources/API/gatling/lib/collections_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/commons-pool2-2.8.0.jar b/Sources/API/gatling/lib/commons-pool2-2.8.0.jar new file mode 100644 index 0000000..6e227ba Binary files /dev/null and b/Sources/API/gatling/lib/commons-pool2-2.8.0.jar differ diff --git a/Sources/API/gatling/lib/compiler-bridge_2.13-1.8.0.jar b/Sources/API/gatling/lib/compiler-bridge_2.13-1.8.0.jar new file mode 100644 index 0000000..f0bf085 Binary files /dev/null and b/Sources/API/gatling/lib/compiler-bridge_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/compiler-interface-1.8.0.jar b/Sources/API/gatling/lib/compiler-interface-1.8.0.jar new file mode 100644 index 0000000..f70b90d Binary files /dev/null and b/Sources/API/gatling/lib/compiler-interface-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/config-1.4.2.jar b/Sources/API/gatling/lib/config-1.4.2.jar new file mode 100644 index 0000000..393f58e Binary files /dev/null and b/Sources/API/gatling/lib/config-1.4.2.jar differ diff --git a/Sources/API/gatling/lib/core-macros_2.13-1.8.0.jar b/Sources/API/gatling/lib/core-macros_2.13-1.8.0.jar new file mode 100644 index 0000000..e6337bb Binary files /dev/null and b/Sources/API/gatling/lib/core-macros_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/error_prone_annotations-2.10.0.jar b/Sources/API/gatling/lib/error_prone_annotations-2.10.0.jar new file mode 100644 index 0000000..2d1b543 Binary files /dev/null and b/Sources/API/gatling/lib/error_prone_annotations-2.10.0.jar differ diff --git a/Sources/API/gatling/lib/fast-uuid-0.2.0.jar b/Sources/API/gatling/lib/fast-uuid-0.2.0.jar new file mode 100644 index 0000000..c1d74e5 Binary files /dev/null and b/Sources/API/gatling/lib/fast-uuid-0.2.0.jar differ diff --git a/Sources/API/gatling/lib/file-tree-views-2.1.9.jar b/Sources/API/gatling/lib/file-tree-views-2.1.9.jar new file mode 100644 index 0000000..6d9602b Binary files /dev/null and b/Sources/API/gatling/lib/file-tree-views-2.1.9.jar differ diff --git a/Sources/API/gatling/lib/gatling-app-3.9.0.jar b/Sources/API/gatling/lib/gatling-app-3.9.0.jar new file mode 100644 index 0000000..bbd881e Binary files /dev/null and b/Sources/API/gatling/lib/gatling-app-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-asm-shaded-9.4-3.9.0.jar b/Sources/API/gatling/lib/gatling-asm-shaded-9.4-3.9.0.jar new file mode 100644 index 0000000..710b98a Binary files /dev/null and b/Sources/API/gatling/lib/gatling-asm-shaded-9.4-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-bundle-3.9.0.jar b/Sources/API/gatling/lib/gatling-bundle-3.9.0.jar new file mode 100644 index 0000000..817300f Binary files /dev/null and b/Sources/API/gatling/lib/gatling-bundle-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-charts-3.9.0.jar b/Sources/API/gatling/lib/gatling-charts-3.9.0.jar new file mode 100644 index 0000000..027f160 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-charts-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-charts-highcharts-3.9.0.jar b/Sources/API/gatling/lib/gatling-charts-highcharts-3.9.0.jar new file mode 100644 index 0000000..c6407e5 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-charts-highcharts-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-commons-3.9.0.jar b/Sources/API/gatling/lib/gatling-commons-3.9.0.jar new file mode 100644 index 0000000..bf7ea28 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-commons-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-commons-shared-3.9.0.jar b/Sources/API/gatling/lib/gatling-commons-shared-3.9.0.jar new file mode 100644 index 0000000..d4d1deb Binary files /dev/null and b/Sources/API/gatling/lib/gatling-commons-shared-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-commons-shared-unstable-3.9.0.jar b/Sources/API/gatling/lib/gatling-commons-shared-unstable-3.9.0.jar new file mode 100644 index 0000000..0a972f2 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-commons-shared-unstable-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-compiler-3.9.0.jar b/Sources/API/gatling/lib/gatling-compiler-3.9.0.jar new file mode 100644 index 0000000..40467f0 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-compiler-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-core-3.9.0.jar b/Sources/API/gatling/lib/gatling-core-3.9.0.jar new file mode 100644 index 0000000..b89b2f1 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-core-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-core-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-core-java-3.9.0.jar new file mode 100644 index 0000000..509510e Binary files /dev/null and b/Sources/API/gatling/lib/gatling-core-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-enterprise-plugin-commons-1.4.11.jar b/Sources/API/gatling/lib/gatling-enterprise-plugin-commons-1.4.11.jar new file mode 100644 index 0000000..6ec8b20 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-enterprise-plugin-commons-1.4.11.jar differ diff --git a/Sources/API/gatling/lib/gatling-graphite-3.9.0.jar b/Sources/API/gatling/lib/gatling-graphite-3.9.0.jar new file mode 100644 index 0000000..642aa7f Binary files /dev/null and b/Sources/API/gatling/lib/gatling-graphite-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-http-3.9.0.jar b/Sources/API/gatling/lib/gatling-http-3.9.0.jar new file mode 100644 index 0000000..f9b436a Binary files /dev/null and b/Sources/API/gatling/lib/gatling-http-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-http-client-3.9.0.jar b/Sources/API/gatling/lib/gatling-http-client-3.9.0.jar new file mode 100644 index 0000000..59b8f69 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-http-client-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-http-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-http-java-3.9.0.jar new file mode 100644 index 0000000..b3725df Binary files /dev/null and b/Sources/API/gatling/lib/gatling-http-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jdbc-3.9.0.jar b/Sources/API/gatling/lib/gatling-jdbc-3.9.0.jar new file mode 100644 index 0000000..b6430eb Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jdbc-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jdbc-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-jdbc-java-3.9.0.jar new file mode 100644 index 0000000..063407e Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jdbc-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jdk-util-3.9.0.jar b/Sources/API/gatling/lib/gatling-jdk-util-3.9.0.jar new file mode 100644 index 0000000..0f6ecda Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jdk-util-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jms-3.9.0.jar b/Sources/API/gatling/lib/gatling-jms-3.9.0.jar new file mode 100644 index 0000000..713f8c8 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jms-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jms-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-jms-java-3.9.0.jar new file mode 100644 index 0000000..b8b704e Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jms-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-jsonpath-3.9.0.jar b/Sources/API/gatling/lib/gatling-jsonpath-3.9.0.jar new file mode 100644 index 0000000..fd406fa Binary files /dev/null and b/Sources/API/gatling/lib/gatling-jsonpath-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-mqtt-3.9.0.jar b/Sources/API/gatling/lib/gatling-mqtt-3.9.0.jar new file mode 100644 index 0000000..e541f09 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-mqtt-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-mqtt-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-mqtt-java-3.9.0.jar new file mode 100644 index 0000000..201b8c0 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-mqtt-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-netty-util-3.9.0.jar b/Sources/API/gatling/lib/gatling-netty-util-3.9.0.jar new file mode 100644 index 0000000..7c235c3 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-netty-util-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-recorder-3.9.0.jar b/Sources/API/gatling/lib/gatling-recorder-3.9.0.jar new file mode 100644 index 0000000..01afbbd Binary files /dev/null and b/Sources/API/gatling/lib/gatling-recorder-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-recorder-bc-shaded-1.72.jar b/Sources/API/gatling/lib/gatling-recorder-bc-shaded-1.72.jar new file mode 100644 index 0000000..52299bc Binary files /dev/null and b/Sources/API/gatling/lib/gatling-recorder-bc-shaded-1.72.jar differ diff --git a/Sources/API/gatling/lib/gatling-redis-3.9.0.jar b/Sources/API/gatling/lib/gatling-redis-3.9.0.jar new file mode 100644 index 0000000..99868a7 Binary files /dev/null and b/Sources/API/gatling/lib/gatling-redis-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-redis-java-3.9.0.jar b/Sources/API/gatling/lib/gatling-redis-java-3.9.0.jar new file mode 100644 index 0000000..c455a8d Binary files /dev/null and b/Sources/API/gatling/lib/gatling-redis-java-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/gatling-scanner-1.1.2-3.9.0.jar b/Sources/API/gatling/lib/gatling-scanner-1.1.2-3.9.0.jar new file mode 100644 index 0000000..db7f99f Binary files /dev/null and b/Sources/API/gatling/lib/gatling-scanner-1.1.2-3.9.0.jar differ diff --git a/Sources/API/gatling/lib/io_2.13-1.8.0.jar b/Sources/API/gatling/lib/io_2.13-1.8.0.jar new file mode 100644 index 0000000..fb1c677 Binary files /dev/null and b/Sources/API/gatling/lib/io_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/jackson-annotations-2.14.1.jar b/Sources/API/gatling/lib/jackson-annotations-2.14.1.jar new file mode 100644 index 0000000..e908bd3 Binary files /dev/null and b/Sources/API/gatling/lib/jackson-annotations-2.14.1.jar differ diff --git a/Sources/API/gatling/lib/jackson-core-2.14.1.jar b/Sources/API/gatling/lib/jackson-core-2.14.1.jar new file mode 100644 index 0000000..cc02583 Binary files /dev/null and b/Sources/API/gatling/lib/jackson-core-2.14.1.jar differ diff --git a/Sources/API/gatling/lib/jackson-databind-2.14.1.jar b/Sources/API/gatling/lib/jackson-databind-2.14.1.jar new file mode 100644 index 0000000..1ac8096 Binary files /dev/null and b/Sources/API/gatling/lib/jackson-databind-2.14.1.jar differ diff --git a/Sources/API/gatling/lib/java-diff-utils-4.12.jar b/Sources/API/gatling/lib/java-diff-utils-4.12.jar new file mode 100644 index 0000000..5edc940 Binary files /dev/null and b/Sources/API/gatling/lib/java-diff-utils-4.12.jar differ diff --git a/Sources/API/gatling/lib/javax.jms-api-2.0.1.jar b/Sources/API/gatling/lib/javax.jms-api-2.0.1.jar new file mode 100644 index 0000000..cf0e8d4 Binary files /dev/null and b/Sources/API/gatling/lib/javax.jms-api-2.0.1.jar differ diff --git a/Sources/API/gatling/lib/jline-terminal-3.19.0.jar b/Sources/API/gatling/lib/jline-terminal-3.19.0.jar new file mode 100644 index 0000000..aea4ea8 Binary files /dev/null and b/Sources/API/gatling/lib/jline-terminal-3.19.0.jar differ diff --git a/Sources/API/gatling/lib/jmespath-core-0.5.1.jar b/Sources/API/gatling/lib/jmespath-core-0.5.1.jar new file mode 100644 index 0000000..daa44a7 Binary files /dev/null and b/Sources/API/gatling/lib/jmespath-core-0.5.1.jar differ diff --git a/Sources/API/gatling/lib/jmespath-jackson-0.5.1.jar b/Sources/API/gatling/lib/jmespath-jackson-0.5.1.jar new file mode 100644 index 0000000..aeddfe5 Binary files /dev/null and b/Sources/API/gatling/lib/jmespath-jackson-0.5.1.jar differ diff --git a/Sources/API/gatling/lib/jna-5.12.0.jar b/Sources/API/gatling/lib/jna-5.12.0.jar new file mode 100644 index 0000000..f62f94e Binary files /dev/null and b/Sources/API/gatling/lib/jna-5.12.0.jar differ diff --git a/Sources/API/gatling/lib/jna-platform-5.12.0.jar b/Sources/API/gatling/lib/jna-platform-5.12.0.jar new file mode 100644 index 0000000..b3388cf Binary files /dev/null and b/Sources/API/gatling/lib/jna-platform-5.12.0.jar differ diff --git a/Sources/API/gatling/lib/jodd-lagarto-6.0.6.jar b/Sources/API/gatling/lib/jodd-lagarto-6.0.6.jar new file mode 100644 index 0000000..d18ad89 Binary files /dev/null and b/Sources/API/gatling/lib/jodd-lagarto-6.0.6.jar differ diff --git a/Sources/API/gatling/lib/jodd-util-6.1.0.jar b/Sources/API/gatling/lib/jodd-util-6.1.0.jar new file mode 100644 index 0000000..125446b Binary files /dev/null and b/Sources/API/gatling/lib/jodd-util-6.1.0.jar differ diff --git a/Sources/API/gatling/lib/jsr305-3.0.2.jar b/Sources/API/gatling/lib/jsr305-3.0.2.jar new file mode 100644 index 0000000..59222d9 Binary files /dev/null and b/Sources/API/gatling/lib/jsr305-3.0.2.jar differ diff --git a/Sources/API/gatling/lib/lightning-csv-8.2.3.jar b/Sources/API/gatling/lib/lightning-csv-8.2.3.jar new file mode 100644 index 0000000..a85c75c Binary files /dev/null and b/Sources/API/gatling/lib/lightning-csv-8.2.3.jar differ diff --git a/Sources/API/gatling/lib/logback-classic-1.2.11.jar b/Sources/API/gatling/lib/logback-classic-1.2.11.jar new file mode 100644 index 0000000..b70c0e6 Binary files /dev/null and b/Sources/API/gatling/lib/logback-classic-1.2.11.jar differ diff --git a/Sources/API/gatling/lib/logback-core-1.2.11.jar b/Sources/API/gatling/lib/logback-core-1.2.11.jar new file mode 100644 index 0000000..e3038da Binary files /dev/null and b/Sources/API/gatling/lib/logback-core-1.2.11.jar differ diff --git a/Sources/API/gatling/lib/native-linux-aarch64-1.8.0.jar b/Sources/API/gatling/lib/native-linux-aarch64-1.8.0.jar new file mode 100644 index 0000000..4db5ba4 Binary files /dev/null and b/Sources/API/gatling/lib/native-linux-aarch64-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/native-linux-x86_64-1.8.0.jar b/Sources/API/gatling/lib/native-linux-x86_64-1.8.0.jar new file mode 100644 index 0000000..b769e04 Binary files /dev/null and b/Sources/API/gatling/lib/native-linux-x86_64-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/native-osx-aarch64-1.8.0.jar b/Sources/API/gatling/lib/native-osx-aarch64-1.8.0.jar new file mode 100644 index 0000000..5d6bd2b Binary files /dev/null and b/Sources/API/gatling/lib/native-osx-aarch64-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/native-osx-x86_64-1.8.0.jar b/Sources/API/gatling/lib/native-osx-x86_64-1.8.0.jar new file mode 100644 index 0000000..f79c983 Binary files /dev/null and b/Sources/API/gatling/lib/native-osx-x86_64-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/native-windows-x86_64-1.8.0.jar b/Sources/API/gatling/lib/native-windows-x86_64-1.8.0.jar new file mode 100644 index 0000000..ce3921d Binary files /dev/null and b/Sources/API/gatling/lib/native-windows-x86_64-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/netty-buffer-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-buffer-4.1.86.Final.jar new file mode 100644 index 0000000..51f1994 Binary files /dev/null and b/Sources/API/gatling/lib/netty-buffer-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-4.1.86.Final.jar new file mode 100644 index 0000000..ab14c6c Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-dns-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-dns-4.1.86.Final.jar new file mode 100644 index 0000000..97bac09 Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-dns-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-http-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-http-4.1.86.Final.jar new file mode 100644 index 0000000..1fc63ae Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-http-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-http2-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-http2-4.1.86.Final.jar new file mode 100644 index 0000000..5ff6df2 Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-http2-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-mqtt-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-mqtt-4.1.86.Final.jar new file mode 100644 index 0000000..a9ad3cd Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-mqtt-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-codec-socks-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-codec-socks-4.1.86.Final.jar new file mode 100644 index 0000000..bcbb7c5 Binary files /dev/null and b/Sources/API/gatling/lib/netty-codec-socks-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-common-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-common-4.1.86.Final.jar new file mode 100644 index 0000000..a13de83 Binary files /dev/null and b/Sources/API/gatling/lib/netty-common-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-handler-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-handler-4.1.86.Final.jar new file mode 100644 index 0000000..66527cf Binary files /dev/null and b/Sources/API/gatling/lib/netty-handler-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-handler-proxy-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-handler-proxy-4.1.86.Final.jar new file mode 100644 index 0000000..1d0d5a9 Binary files /dev/null and b/Sources/API/gatling/lib/netty-handler-proxy-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-incubator-transport-classes-io_uring-0.0.16.Final.jar b/Sources/API/gatling/lib/netty-incubator-transport-classes-io_uring-0.0.16.Final.jar new file mode 100644 index 0000000..9d86391 Binary files /dev/null and b/Sources/API/gatling/lib/netty-incubator-transport-classes-io_uring-0.0.16.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-aarch_64.jar b/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-aarch_64.jar new file mode 100644 index 0000000..d463e66 Binary files /dev/null and b/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-aarch_64.jar differ diff --git a/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-x86_64.jar b/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-x86_64.jar new file mode 100644 index 0000000..d9c0369 Binary files /dev/null and b/Sources/API/gatling/lib/netty-incubator-transport-native-io_uring-0.0.16.Final-linux-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-resolver-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-resolver-4.1.86.Final.jar new file mode 100644 index 0000000..a2b1ea3 Binary files /dev/null and b/Sources/API/gatling/lib/netty-resolver-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-resolver-dns-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-resolver-dns-4.1.86.Final.jar new file mode 100644 index 0000000..8a9110c Binary files /dev/null and b/Sources/API/gatling/lib/netty-resolver-dns-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-resolver-dns-classes-macos-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-resolver-dns-classes-macos-4.1.86.Final.jar new file mode 100644 index 0000000..8c6c648 Binary files /dev/null and b/Sources/API/gatling/lib/netty-resolver-dns-classes-macos-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-aarch_64.jar b/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-aarch_64.jar new file mode 100644 index 0000000..714bddd Binary files /dev/null and b/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-aarch_64.jar differ diff --git a/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-x86_64.jar b/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-x86_64.jar new file mode 100644 index 0000000..2b369be Binary files /dev/null and b/Sources/API/gatling/lib/netty-resolver-dns-native-macos-4.1.86.Final-osx-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-aarch_64.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-aarch_64.jar new file mode 100644 index 0000000..38c634c Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-aarch_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-x86_64.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-x86_64.jar new file mode 100644 index 0000000..0be8fbc Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-linux-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-aarch_64.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-aarch_64.jar new file mode 100644 index 0000000..f290ed9 Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-aarch_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-x86_64.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-x86_64.jar new file mode 100644 index 0000000..bed0f98 Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-osx-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-windows-x86_64.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-windows-x86_64.jar new file mode 100644 index 0000000..0fbaea8 Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final-windows-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final.jar b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final.jar new file mode 100644 index 0000000..9f60d2d Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-boringssl-static-2.0.54.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-tcnative-classes-2.0.54.Final.jar b/Sources/API/gatling/lib/netty-tcnative-classes-2.0.54.Final.jar new file mode 100644 index 0000000..e56bd63 Binary files /dev/null and b/Sources/API/gatling/lib/netty-tcnative-classes-2.0.54.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-transport-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-transport-4.1.86.Final.jar new file mode 100644 index 0000000..41da6bd Binary files /dev/null and b/Sources/API/gatling/lib/netty-transport-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-transport-classes-epoll-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-transport-classes-epoll-4.1.86.Final.jar new file mode 100644 index 0000000..079a382 Binary files /dev/null and b/Sources/API/gatling/lib/netty-transport-classes-epoll-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-aarch_64.jar b/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-aarch_64.jar new file mode 100644 index 0000000..a369c28 Binary files /dev/null and b/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-aarch_64.jar differ diff --git a/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-x86_64.jar b/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-x86_64.jar new file mode 100644 index 0000000..ac68718 Binary files /dev/null and b/Sources/API/gatling/lib/netty-transport-native-epoll-4.1.86.Final-linux-x86_64.jar differ diff --git a/Sources/API/gatling/lib/netty-transport-native-unix-common-4.1.86.Final.jar b/Sources/API/gatling/lib/netty-transport-native-unix-common-4.1.86.Final.jar new file mode 100644 index 0000000..f39a34d Binary files /dev/null and b/Sources/API/gatling/lib/netty-transport-native-unix-common-4.1.86.Final.jar differ diff --git a/Sources/API/gatling/lib/pebble-3.2.0.jar b/Sources/API/gatling/lib/pebble-3.2.0.jar new file mode 100644 index 0000000..a8dc26c Binary files /dev/null and b/Sources/API/gatling/lib/pebble-3.2.0.jar differ diff --git a/Sources/API/gatling/lib/quicklens_2.13-1.9.0.jar b/Sources/API/gatling/lib/quicklens_2.13-1.9.0.jar new file mode 100644 index 0000000..f034369 Binary files /dev/null and b/Sources/API/gatling/lib/quicklens_2.13-1.9.0.jar differ diff --git a/Sources/API/gatling/lib/redisclient_2.13-3.42.jar b/Sources/API/gatling/lib/redisclient_2.13-3.42.jar new file mode 100644 index 0000000..5d13dad Binary files /dev/null and b/Sources/API/gatling/lib/redisclient_2.13-3.42.jar differ diff --git a/Sources/API/gatling/lib/scala-compiler-2.13.10.jar b/Sources/API/gatling/lib/scala-compiler-2.13.10.jar new file mode 100644 index 0000000..edb5b28 Binary files /dev/null and b/Sources/API/gatling/lib/scala-compiler-2.13.10.jar differ diff --git a/Sources/API/gatling/lib/scala-java8-compat_2.13-1.0.0.jar b/Sources/API/gatling/lib/scala-java8-compat_2.13-1.0.0.jar new file mode 100644 index 0000000..e455e02 Binary files /dev/null and b/Sources/API/gatling/lib/scala-java8-compat_2.13-1.0.0.jar differ diff --git a/Sources/API/gatling/lib/scala-library-2.13.10.jar b/Sources/API/gatling/lib/scala-library-2.13.10.jar new file mode 100644 index 0000000..ad931ed Binary files /dev/null and b/Sources/API/gatling/lib/scala-library-2.13.10.jar differ diff --git a/Sources/API/gatling/lib/scala-logging_2.13-3.9.5.jar b/Sources/API/gatling/lib/scala-logging_2.13-3.9.5.jar new file mode 100644 index 0000000..7468791 Binary files /dev/null and b/Sources/API/gatling/lib/scala-logging_2.13-3.9.5.jar differ diff --git a/Sources/API/gatling/lib/scala-parallel-collections_2.13-0.2.0.jar b/Sources/API/gatling/lib/scala-parallel-collections_2.13-0.2.0.jar new file mode 100644 index 0000000..7a2819e Binary files /dev/null and b/Sources/API/gatling/lib/scala-parallel-collections_2.13-0.2.0.jar differ diff --git a/Sources/API/gatling/lib/scala-parser-combinators_2.13-2.1.1.jar b/Sources/API/gatling/lib/scala-parser-combinators_2.13-2.1.1.jar new file mode 100644 index 0000000..f6e7835 Binary files /dev/null and b/Sources/API/gatling/lib/scala-parser-combinators_2.13-2.1.1.jar differ diff --git a/Sources/API/gatling/lib/scala-reflect-2.13.10.jar b/Sources/API/gatling/lib/scala-reflect-2.13.10.jar new file mode 100644 index 0000000..14e5f1c Binary files /dev/null and b/Sources/API/gatling/lib/scala-reflect-2.13.10.jar differ diff --git a/Sources/API/gatling/lib/scala-swing_2.13-3.0.0.jar b/Sources/API/gatling/lib/scala-swing_2.13-3.0.0.jar new file mode 100644 index 0000000..9b3e389 Binary files /dev/null and b/Sources/API/gatling/lib/scala-swing_2.13-3.0.0.jar differ diff --git a/Sources/API/gatling/lib/scopt_2.13-3.7.1.jar b/Sources/API/gatling/lib/scopt_2.13-3.7.1.jar new file mode 100644 index 0000000..2699a3b Binary files /dev/null and b/Sources/API/gatling/lib/scopt_2.13-3.7.1.jar differ diff --git a/Sources/API/gatling/lib/sfm-util-8.2.3.jar b/Sources/API/gatling/lib/sfm-util-8.2.3.jar new file mode 100644 index 0000000..63fb1b3 Binary files /dev/null and b/Sources/API/gatling/lib/sfm-util-8.2.3.jar differ diff --git a/Sources/API/gatling/lib/slf4j-api-1.7.36.jar b/Sources/API/gatling/lib/slf4j-api-1.7.36.jar new file mode 100644 index 0000000..7d3ce68 Binary files /dev/null and b/Sources/API/gatling/lib/slf4j-api-1.7.36.jar differ diff --git a/Sources/API/gatling/lib/spire-macros_2.13-0.17.0.jar b/Sources/API/gatling/lib/spire-macros_2.13-0.17.0.jar new file mode 100644 index 0000000..ca7fffb Binary files /dev/null and b/Sources/API/gatling/lib/spire-macros_2.13-0.17.0.jar differ diff --git a/Sources/API/gatling/lib/t-digest-3.1.jar b/Sources/API/gatling/lib/t-digest-3.1.jar new file mode 100644 index 0000000..a638007 Binary files /dev/null and b/Sources/API/gatling/lib/t-digest-3.1.jar differ diff --git a/Sources/API/gatling/lib/typetools-0.6.3.jar b/Sources/API/gatling/lib/typetools-0.6.3.jar new file mode 100644 index 0000000..74e005c Binary files /dev/null and b/Sources/API/gatling/lib/typetools-0.6.3.jar differ diff --git a/Sources/API/gatling/lib/unbescape-1.1.6.RELEASE.jar b/Sources/API/gatling/lib/unbescape-1.1.6.RELEASE.jar new file mode 100644 index 0000000..10e4da5 Binary files /dev/null and b/Sources/API/gatling/lib/unbescape-1.1.6.RELEASE.jar differ diff --git a/Sources/API/gatling/lib/util-control_2.13-1.8.0.jar b/Sources/API/gatling/lib/util-control_2.13-1.8.0.jar new file mode 100644 index 0000000..346aad9 Binary files /dev/null and b/Sources/API/gatling/lib/util-control_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/util-interface-1.8.0.jar b/Sources/API/gatling/lib/util-interface-1.8.0.jar new file mode 100644 index 0000000..d1010d3 Binary files /dev/null and b/Sources/API/gatling/lib/util-interface-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/util-logging_2.13-1.8.0.jar b/Sources/API/gatling/lib/util-logging_2.13-1.8.0.jar new file mode 100644 index 0000000..7aa34ec Binary files /dev/null and b/Sources/API/gatling/lib/util-logging_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/util-position_2.13-1.8.0.jar b/Sources/API/gatling/lib/util-position_2.13-1.8.0.jar new file mode 100644 index 0000000..e4f01ce Binary files /dev/null and b/Sources/API/gatling/lib/util-position_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/util-relation_2.13-1.8.0.jar b/Sources/API/gatling/lib/util-relation_2.13-1.8.0.jar new file mode 100644 index 0000000..bc96d0e Binary files /dev/null and b/Sources/API/gatling/lib/util-relation_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zero-allocation-hashing-0.10.1.jar b/Sources/API/gatling/lib/zero-allocation-hashing-0.10.1.jar new file mode 100644 index 0000000..2b66693 Binary files /dev/null and b/Sources/API/gatling/lib/zero-allocation-hashing-0.10.1.jar differ diff --git a/Sources/API/gatling/lib/zinc-apiinfo_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-apiinfo_2.13-1.8.0.jar new file mode 100644 index 0000000..a00ad5c Binary files /dev/null and b/Sources/API/gatling/lib/zinc-apiinfo_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-classfile_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-classfile_2.13-1.8.0.jar new file mode 100644 index 0000000..ce025c1 Binary files /dev/null and b/Sources/API/gatling/lib/zinc-classfile_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-classpath_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-classpath_2.13-1.8.0.jar new file mode 100644 index 0000000..10369d9 Binary files /dev/null and b/Sources/API/gatling/lib/zinc-classpath_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-compile-core_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-compile-core_2.13-1.8.0.jar new file mode 100644 index 0000000..70da1cb Binary files /dev/null and b/Sources/API/gatling/lib/zinc-compile-core_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-core_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-core_2.13-1.8.0.jar new file mode 100644 index 0000000..2ab1e83 Binary files /dev/null and b/Sources/API/gatling/lib/zinc-core_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-persist-core-assembly-1.8.0.jar b/Sources/API/gatling/lib/zinc-persist-core-assembly-1.8.0.jar new file mode 100644 index 0000000..b6d8992 Binary files /dev/null and b/Sources/API/gatling/lib/zinc-persist-core-assembly-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc-persist_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc-persist_2.13-1.8.0.jar new file mode 100644 index 0000000..459ad87 Binary files /dev/null and b/Sources/API/gatling/lib/zinc-persist_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/lib/zinc_2.13-1.8.0.jar b/Sources/API/gatling/lib/zinc_2.13-1.8.0.jar new file mode 100644 index 0000000..26dc0b8 Binary files /dev/null and b/Sources/API/gatling/lib/zinc_2.13-1.8.0.jar differ diff --git a/Sources/API/gatling/results/.keep b/Sources/API/gatling/results/.keep new file mode 100644 index 0000000..e69de29 diff --git a/Sources/API/gatling/results/Gin-Simulation/index.html b/Sources/API/gatling/results/Gin-Simulation/index.html new file mode 100644 index 0000000..82b99bd --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/index.html @@ -0,0 +1,1122 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Global Information + + +
+
+
+ + Try Gatling Enterprise
+
+ +
+
+
+
+ UserSimulation +
+
+
+ + +
+
+
+
+
+
+ + +
+ +
+
+ +
+
+
+
+
+ Gatling Version + + Version: + 3.9.0 + + + Released: + 2022-12-14 + +
+
+ Run Information +
+ + Date: + 2023-02-06 15:47:12 GMT + + + Duration: + 31s + + + Description: + Load testing Gin Gonic API + + +
+
+
+
+ +
+ +
+ +
+
+
+
+
+ + + +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ +
+ + diff --git a/Sources/API/gatling/results/Gin-Simulation/js/all_sessions.js b/Sources/API/gatling/results/Gin-Simulation/js/all_sessions.js new file mode 100644 index 0000000..86b9d38 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/all_sessions.js @@ -0,0 +1,11 @@ +allUsersData = { + +color: '#FFA900', +name: 'Active Users', +data: [ + [1675698432000,52],[1675698433000,102],[1675698434000,153],[1675698435000,203],[1675698436000,252],[1675698437000,290],[1675698438000,319],[1675698439000,366],[1675698440000,395],[1675698441000,422],[1675698442000,415],[1675698443000,410],[1675698444000,393],[1675698445000,370],[1675698446000,370],[1675698447000,368],[1675698448000,368],[1675698449000,360],[1675698450000,339],[1675698451000,338],[1675698452000,338],[1675698453000,333],[1675698454000,316],[1675698455000,299],[1675698456000,281],[1675698457000,262],[1675698458000,198],[1675698459000,132],[1675698460000,63],[1675698461000,28],[1675698462000,7],[1675698463000,1] +], +tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } + , zIndex: 20 + , yAxis: 1 +}; \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/assertions.json b/Sources/API/gatling/results/Gin-Simulation/js/assertions.json new file mode 100644 index 0000000..5bc1112 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/assertions.json @@ -0,0 +1,10 @@ +{ + "simulation": "benchmark.UserSimulation", + "simulationId": "usersimulation-20230206154711329", + "start": 1675698432185, + "description": "Load testing Gin Gonic API", + "scenarios": ["Users"], + "assertions": [ + + ] +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/assertions.xml b/Sources/API/gatling/results/Gin-Simulation/js/assertions.xml new file mode 100644 index 0000000..f6a86c9 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/assertions.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/bootstrap.min.js b/Sources/API/gatling/results/Gin-Simulation/js/bootstrap.min.js new file mode 100644 index 0000000..ea41042 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/** +* Bootstrap.js by @fat & @mdo +* plugins: bootstrap-tooltip.js, bootstrap-popover.js +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.offset(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var b=this,c=this.tip();return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.detach(),this},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);c[c.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
',trigger:"hover",title:"",delay:0,html:!1}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content > *")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

'})}(window.jQuery) \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/ellipsis.js b/Sources/API/gatling/results/Gin-Simulation/js/ellipsis.js new file mode 100644 index 0000000..781d0de --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/ellipsis.js @@ -0,0 +1,26 @@ +function parentId(name) { + return "parent-" + name; +} + +function isEllipsed(name) { + const child = document.getElementById(name); + const parent = document.getElementById(parentId(name)); + const emptyData = parent.getAttribute("data-content") === ""; + const hasOverflow = child.clientWidth < child.scrollWidth; + + if (hasOverflow) { + if (emptyData) { + parent.setAttribute("data-content", name); + } + } else { + if (!emptyData) { + parent.setAttribute("data-content", ""); + } + } +} + +function ellipsedLabel ({ name, parentClass = "", childClass = "" }) { + const child = "" + name + ""; + + return "" + child + ""; +} diff --git a/Sources/API/gatling/results/Gin-Simulation/js/gatling.js b/Sources/API/gatling/results/Gin-Simulation/js/gatling.js new file mode 100644 index 0000000..0208f82 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/gatling.js @@ -0,0 +1,137 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function ($) { + $.fn.expandable = function () { + var scope = this; + + this.find('.expand-button:not([class*=hidden])').addClass('collapse').on('click', function () { + var $this = $(this); + + if ($this.hasClass('expand')) + $this.expand(scope); + else + $this.collapse(scope); + }); + + this.find('.expand-all-button').on('click', function () { + $(this).expandAll(scope); + }); + + this.find('.collapse-all-button').on('click', function () { + $(this).collapseAll(scope); + }); + + this.collapseAll(this); + + return this; + }; + + $.fn.expand = function (scope, recursive) { + return this.each(function () { + var $this = $(this); + + if (recursive) { + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + } + + if ($this.hasClass('expand')) { + $('*[data-parent=' + $this.attr('id') + ']').toggle(true); + $this.toggleClass('expand').toggleClass('collapse'); + } + }); + }; + + $.fn.expandAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.expand').expand(scope, true); + $('*[data-parent=ROOT]').find('.expand-button.collapse').expand(scope, true); + }; + + $.fn.collapse = function (scope) { + return this.each(function () { + var $this = $(this); + + scope.find('*[data-parent=' + $this.attr('id') + '] .expand-button.collapse').collapse(scope); + scope.find('*[data-parent=' + $this.attr('id') + ']').toggle(false); + $this.toggleClass('expand').toggleClass('collapse'); + }); + }; + + $.fn.collapseAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.collapse').collapse(scope); + }; + + $.fn.sortable = function (target) { + var table = this; + + this.find('thead .sortable').on('click', function () { + var $this = $(this); + + if ($this.hasClass('sorted-down')) { + var desc = false; + var style = 'sorted-up'; + } + else { + var desc = true; + var style = 'sorted-down'; + } + + $(target).sortTable($this.attr('id'), desc); + + table.find('thead .sortable').removeClass('sorted-up sorted-down'); + $this.addClass(style); + + return false; + }); + + return this; + }; + + $.fn.sortTable = function (col, desc) { + function getValue(line) { + var cell = $(line).find('.' + col); + + if (cell.hasClass('value')) + var value = cell.text(); + else + var value = cell.find('.value').text(); + + return parseFloat(value); + } + + function sortLines (lines, group) { + var notErrorTable = col.search("error") == -1; + var linesToSort = notErrorTable ? lines.filter('*[data-parent=' + group + ']') : lines; + + var sortedLines = linesToSort.sort(function (a, b) { + return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); + }).toArray(); + + var result = []; + $.each(sortedLines, function (i, line) { + result.push(line); + if (notErrorTable) + result = result.concat(sortLines(lines, $(line).attr('id'))); + }); + + return result; + } + + this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); + + return this; + }; +})(jQuery); diff --git a/Sources/API/gatling/results/Gin-Simulation/js/global_stats.json b/Sources/API/gatling/results/Gin-Simulation/js/global_stats.json new file mode 100644 index 0000000..f13b4ca --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/global_stats.json @@ -0,0 +1,77 @@ +{ + "name": "All Requests", + "numberOfRequests": { + "total": 3299, + "ok": 2623, + "ko": 676 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 2 + }, + "maxResponseTime": { + "total": 9873, + "ok": 9873, + "ko": 9472 + }, + "meanResponseTime": { + "total": 1707, + "ok": 1602, + "ko": 2115 + }, + "standardDeviation": { + "total": 2161, + "ok": 2110, + "ko": 2306 + }, + "percentiles1": { + "total": 571, + "ok": 396, + "ko": 1302 + }, + "percentiles2": { + "total": 3153, + "ok": 3014, + "ko": 3722 + }, + "percentiles3": { + "total": 6468, + "ok": 6315, + "ko": 6940 + }, + "percentiles4": { + "total": 8051, + "ok": 7661, + "ko": 8459 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1473, + "percentage": 45 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
t < 1200 ms", + "count": 146, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 1004, + "percentage": 30 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 676, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": 103.09375, + "ok": 81.96875, + "ko": 21.125 + } +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/highcharts-more.js b/Sources/API/gatling/results/Gin-Simulation/js/highcharts-more.js new file mode 100644 index 0000000..2d78893 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/highcharts-more.js @@ -0,0 +1,60 @@ +/* + Highcharts JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(b){function r(b,a,d){this.init(b,a,d)}var t=b.each,w=b.extend,m=b.merge,q=b.splat;w(r.prototype,{init:function(b,a,d){var f=this,h=f.defaultOptions;f.chart=a;f.options=b=m(h,a.angular?{background:{}}:void 0,b);(b=b.background)&&t([].concat(q(b)).reverse(),function(a){var c,h=d.userOptions;c=m(f.defaultBackgroundOptions,a);a.backgroundColor&&(c.backgroundColor=a.backgroundColor);c.color=c.backgroundColor; +d.options.plotBands.unshift(c);h.plotBands=h.plotBands||[];h.plotBands!==d.options.plotBands&&h.plotBands.unshift(c)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{className:"highcharts-pane",shape:"circle",borderWidth:1,borderColor:"#cccccc",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#ffffff"],[1,"#e6e6e6"]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});b.Pane=r})(x);(function(b){var r=b.CenteredSeriesMixin, +t=b.each,w=b.extend,m=b.map,q=b.merge,e=b.noop,a=b.Pane,d=b.pick,f=b.pInt,h=b.splat,u=b.wrap,c,l,k=b.Axis.prototype;b=b.Tick.prototype;c={getOffset:e,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:e,setCategories:e,setTitle:e};l={defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2}, +defaultRadialXOptions:{gridLineWidth:1,labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=q(this.defaultOptions,this.defaultRadialOptions,a);a.plotBands||(a.plotBands=[])},getOffset:function(){k.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center= +r.getCenter.call(this.pane)},getLinePath:function(a,g){a=this.center;var c=this.chart,f=d(g,a[2]/2-this.offset);this.isCircular||void 0!==g?g=this.chart.renderer.symbols.arc(this.left+a[0],this.top+a[1],f,f,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0}):(g=this.postTranslate(this.angleRad,f),g=["M",a[0]+c.plotLeft,a[1]+c.plotTop,"L",g.x,g.y]);return g},setAxisTranslation:function(){k.setAxisTranslation.call(this);this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/ +(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0)},beforeSetTickPositions:function(){if(this.autoConnect=this.isCircular&&void 0===d(this.userMax,this.options.max)&&this.endAngleRad-this.startAngleRad===2*Math.PI)this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0},setAxisSize:function(){k.setAxisSize.call(this);this.isRadial&&(this.center=this.pane.center=r.getCenter.call(this.pane),this.isCircular&& +(this.sector=this.endAngleRad-this.startAngleRad),this.len=this.width=this.height=this.center[2]*d(this.sector,1)/2)},getPosition:function(a,g){return this.postTranslate(this.isCircular?this.translate(a):this.angleRad,d(this.isCircular?g:this.translate(a),this.center[2]/2)-this.offset)},postTranslate:function(a,g){var d=this.chart,c=this.center;a=this.startAngleRad+a;return{x:d.plotLeft+c[0]+Math.cos(a)*g,y:d.plotTop+c[1]+Math.sin(a)*g}},getPlotBandPath:function(a,g,c){var h=this.center,p=this.startAngleRad, +k=h[2]/2,n=[d(c.outerRadius,"100%"),c.innerRadius,d(c.thickness,10)],b=Math.min(this.offset,0),l=/%$/,u,e=this.isCircular;"polygon"===this.options.gridLineInterpolation?h=this.getPlotLinePath(a).concat(this.getPlotLinePath(g,!0)):(a=Math.max(a,this.min),g=Math.min(g,this.max),e||(n[0]=this.translate(a),n[1]=this.translate(g)),n=m(n,function(a){l.test(a)&&(a=f(a,10)*k/100);return a}),"circle"!==c.shape&&e?(a=p+this.translate(a),g=p+this.translate(g)):(a=-Math.PI/2,g=1.5*Math.PI,u=!0),n[0]-=b,n[2]-= +b,h=this.chart.renderer.symbols.arc(this.left+h[0],this.top+h[1],n[0],n[0],{start:Math.min(a,g),end:Math.max(a,g),innerR:d(n[1],n[0]-n[2]),open:u}));return h},getPlotLinePath:function(a,g){var d=this,c=d.center,f=d.chart,h=d.getPosition(a),k,b,p;d.isCircular?p=["M",c[0]+f.plotLeft,c[1]+f.plotTop,"L",h.x,h.y]:"circle"===d.options.gridLineInterpolation?(a=d.translate(a))&&(p=d.getLinePath(0,a)):(t(f.xAxis,function(a){a.pane===d.pane&&(k=a)}),p=[],a=d.translate(a),c=k.tickPositions,k.autoConnect&&(c= +c.concat([c[0]])),g&&(c=[].concat(c).reverse()),t(c,function(g,d){b=k.getPosition(g,a);p.push(d?"L":"M",b.x,b.y)}));return p},getTitlePosition:function(){var a=this.center,g=this.chart,d=this.options.title;return{x:g.plotLeft+a[0]+(d.x||0),y:g.plotTop+a[1]-{high:.5,middle:.25,low:0}[d.align]*a[2]+(d.y||0)}}};u(k,"init",function(f,g,k){var b=g.angular,p=g.polar,n=k.isX,u=b&&n,e,A=g.options,m=k.pane||0;if(b){if(w(this,u?c:l),e=!n)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else p&&(w(this, +l),this.defaultRadialOptions=(e=n)?this.defaultRadialXOptions:q(this.defaultYAxisOptions,this.defaultRadialYOptions));b||p?(this.isRadial=!0,g.inverted=!1,A.chart.zoomType=null):this.isRadial=!1;f.call(this,g,k);u||!b&&!p||(f=this.options,g.panes||(g.panes=[]),this.pane=g=g.panes[m]=g.panes[m]||new a(h(A.pane)[m],g,this),g=g.options,this.angleRad=(f.angle||0)*Math.PI/180,this.startAngleRad=(g.startAngle-90)*Math.PI/180,this.endAngleRad=(d(g.endAngle,g.startAngle+360)-90)*Math.PI/180,this.offset=f.offset|| +0,this.isCircular=e)});u(k,"autoLabelAlign",function(a){if(!this.isRadial)return a.apply(this,[].slice.call(arguments,1))});u(b,"getPosition",function(a,d,c,f,h){var g=this.axis;return g.getPosition?g.getPosition(c):a.call(this,d,c,f,h)});u(b,"getLabelPosition",function(a,g,c,f,h,k,b,l,u){var n=this.axis,p=k.y,e=20,y=k.align,v=(n.translate(this.pos)+n.startAngleRad+Math.PI/2)/Math.PI*180%360;n.isRadial?(a=n.getPosition(this.pos,n.center[2]/2+d(k.distance,-25)),"auto"===k.rotation?f.attr({rotation:v}): +null===p&&(p=n.chart.renderer.fontMetrics(f.styles.fontSize).b-f.getBBox().height/2),null===y&&(n.isCircular?(this.label.getBBox().width>n.len*n.tickInterval/(n.max-n.min)&&(e=0),y=v>e&&v<180-e?"left":v>180+e&&v<360-e?"right":"center"):y="center",f.attr({align:y})),a.x+=k.x,a.y+=p):a=a.call(this,g,c,f,h,k,b,l,u);return a});u(b,"getMarkPath",function(a,d,c,f,h,k,b){var g=this.axis;g.isRadial?(a=g.getPosition(this.pos,g.center[2]/2+f),d=["M",d,c,"L",a.x,a.y]):d=a.call(this,d,c,f,h,k,b);return d})})(x); +(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.Series,q=b.seriesType,e=b.seriesTypes;q("arearange","area",{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{series.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}},{pointArrayMap:["low","high"],dataLabelCollections:["dataLabel", +"dataLabelUpper"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,highToXY:function(a){var d=this.chart,f=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=f.x-d.plotLeft;a.plotHigh=f.y-d.plotTop},translate:function(){var a=this,d=a.yAxis,f=!!a.modifyValue;e.area.prototype.translate.apply(a);r(a.points,function(h){var b=h.low,c=h.high,l=h.plotY;null===c||null===b?h.isNull=!0:(h.plotLow=l,h.plotHigh=d.translate(f?a.modifyValue(c,h):c,0,1, +0,1),f&&(h.yBottom=h.plotHigh))});this.chart.polar&&r(this.points,function(d){a.highToXY(d)})},getGraphPath:function(a){var d=[],f=[],h,b=e.area.prototype.getGraphPath,c,l,k;k=this.options;var p=k.step;a=a||this.points;for(h=a.length;h--;)c=a[h],c.isNull||k.connectEnds||a[h+1]&&!a[h+1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1}),l={polarPlotY:c.polarPlotY,rectPlotX:c.rectPlotX,yBottom:c.yBottom,plotX:w(c.plotHighX,c.plotX),plotY:c.plotHigh,isNull:c.isNull},f.push(l),d.push(l),c.isNull|| +k.connectEnds||a[h-1]&&!a[h-1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1});a=b.call(this,a);p&&(!0===p&&(p="left"),k.step={left:"right",center:"center",right:"left"}[p]);d=b.call(this,d);f=b.call(this,f);k.step=p;k=[].concat(a,d);this.chart.polar||"M"!==f[0]||(f[0]="L");this.graphPath=k;this.areaPath=this.areaPath.concat(a,f);k.isArea=!0;k.xMap=a.xMap;this.areaPath.xMap=a.xMap;return k},drawDataLabels:function(){var a=this.data,d=a.length,f,h=[],b=m.prototype,c=this.options.dataLabels, +l=c.align,k=c.verticalAlign,p=c.inside,g,n,e=this.chart.inverted;if(c.enabled||this._hasPointLabels){for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.y=g.high,g._plotY=g.plotY,g.plotY=g.plotHigh,h[f]=g.dataLabel,g.dataLabel=g.dataLabelUpper,g.below=n,e?l||(c.align=n?"right":"left"):k||(c.verticalAlign=n?"top":"bottom"),c.x=c.xHigh,c.y=c.yHigh;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments);for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.dataLabelUpper= +g.dataLabel,g.dataLabel=h[f],g.y=g.low,g.plotY=g._plotY,g.below=!n,e?l||(c.align=n?"left":"right"):k||(c.verticalAlign=n?"bottom":"top"),c.x=c.xLow,c.y=c.yLow;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments)}c.align=l;c.verticalAlign=k},alignDataLabel:function(){e.column.prototype.alignDataLabel.apply(this,arguments)},setStackedPoints:t,getSymbol:t,drawPoints:t})})(x);(function(b){var r=b.seriesType;r("areasplinerange","arearange",null,{getPointSpline:b.seriesTypes.spline.prototype.getPointSpline})})(x); +(function(b){var r=b.defaultPlotOptions,t=b.each,w=b.merge,m=b.noop,q=b.pick,e=b.seriesType,a=b.seriesTypes.column.prototype;e("columnrange","arearange",w(r.column,r.arearange,{lineWidth:1,pointRange:null}),{translate:function(){var d=this,f=d.yAxis,b=d.xAxis,u=b.startAngleRad,c,l=d.chart,k=d.xAxis.isRadial,p;a.translate.apply(d);t(d.points,function(a){var g=a.shapeArgs,h=d.options.minPointLength,e,v;a.plotHigh=p=f.translate(a.high,0,1,0,1);a.plotLow=a.plotY;v=p;e=q(a.rectPlotY,a.plotY)-p;Math.abs(e)< +h?(h-=e,e+=h,v-=h/2):0>e&&(e*=-1,v-=e);k?(c=a.barX+u,a.shapeType="path",a.shapeArgs={d:d.polarArc(v+e,v,c,c+a.pointWidth)}):(g.height=e,g.y=v,a.tooltipPos=l.inverted?[f.len+f.pos-l.plotLeft-v-e/2,b.len+b.pos-l.plotTop-g.x-g.width/2,e]:[b.left-l.plotLeft+g.x+g.width/2,f.pos-l.plotTop+v+e/2,e])})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:m,crispCol:a.crispCol,drawPoints:a.drawPoints,drawTracker:a.drawTracker,getColumnMetrics:a.getColumnMetrics,animate:function(){return a.animate.apply(this, +arguments)},polarArc:function(){return a.polarArc.apply(this,arguments)},pointAttribs:a.pointAttribs})})(x);(function(b){var r=b.each,t=b.isNumber,w=b.merge,m=b.pick,q=b.pInt,e=b.Series,a=b.seriesType,d=b.TrackerMixin;a("gauge","line",{dataLabels:{enabled:!0,defer:!1,y:15,borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2,borderWidth:1,borderColor:"#cccccc"},dial:{},pivot:{},tooltip:{headerFormat:""},showInLegend:!1},{angular:!0,directTouch:!0,drawGraph:b.noop,fixedBox:!0,forceDL:!0,noSharedTooltip:!0, +trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,d=this.options,b=a.center;this.generatePoints();r(this.points,function(c){var f=w(d.dial,c.dial),k=q(m(f.radius,80))*b[2]/200,h=q(m(f.baseLength,70))*k/100,g=q(m(f.rearLength,10))*k/100,n=f.baseWidth||3,u=f.topWidth||1,e=d.overshoot,v=a.startAngleRad+a.translate(c.y,null,null,null,!0);t(e)?(e=e/180*Math.PI,v=Math.max(a.startAngleRad-e,Math.min(a.endAngleRad+e,v))):!1===d.wrap&&(v=Math.max(a.startAngleRad,Math.min(a.endAngleRad, +v)));v=180*v/Math.PI;c.shapeType="path";c.shapeArgs={d:f.path||["M",-g,-n/2,"L",h,-n/2,k,-u/2,k,u/2,h,n/2,-g,n/2,"z"],translateX:b[0],translateY:b[1],rotation:v};c.plotX=b[0];c.plotY=b[1]})},drawPoints:function(){var a=this,d=a.yAxis.center,b=a.pivot,c=a.options,l=c.pivot,k=a.chart.renderer;r(a.points,function(d){var g=d.graphic,b=d.shapeArgs,f=b.d,h=w(c.dial,d.dial);g?(g.animate(b),b.d=f):(d.graphic=k[d.shapeType](b).attr({rotation:b.rotation,zIndex:1}).addClass("highcharts-dial").add(a.group),d.graphic.attr({stroke:h.borderColor|| +"none","stroke-width":h.borderWidth||0,fill:h.backgroundColor||"#000000"}))});b?b.animate({translateX:d[0],translateY:d[1]}):(a.pivot=k.circle(0,0,m(l.radius,5)).attr({zIndex:2}).addClass("highcharts-pivot").translate(d[0],d[1]).add(a.group),a.pivot.attr({"stroke-width":l.borderWidth||0,stroke:l.borderColor||"#cccccc",fill:l.backgroundColor||"#000000"}))},animate:function(a){var d=this;a||(r(d.points,function(a){var c=a.graphic;c&&(c.attr({rotation:180*d.yAxis.startAngleRad/Math.PI}),c.animate({rotation:a.shapeArgs.rotation}, +d.options.animation))}),d.animate=null)},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);e.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,d){e.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();m(d,!0)&&this.chart.redraw()},drawTracker:d&&d.drawTrackerPoint},{setState:function(a){this.state=a}})})(x);(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.seriesType, +q=b.seriesTypes;m("boxplot","column",{threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eMaximum: {point.high}\x3cbr/\x3eUpper quartile: {point.q3}\x3cbr/\x3eMedian: {point.median}\x3cbr/\x3eLower quartile: {point.q1}\x3cbr/\x3eMinimum: {point.low}\x3cbr/\x3e'},whiskerLength:"50%",fillColor:"#ffffff",lineWidth:1,medianWidth:2,states:{hover:{brightness:-.3}},whiskerWidth:2},{pointArrayMap:["low","q1","median", +"q3","high"],toYData:function(b){return[b.low,b.q1,b.median,b.q3,b.high]},pointValKey:"high",pointAttribs:function(b){var a=this.options,d=b&&b.color||this.color;return{fill:b.fillColor||a.fillColor||d,stroke:a.lineColor||d,"stroke-width":a.lineWidth||0}},drawDataLabels:t,translate:function(){var b=this.yAxis,a=this.pointArrayMap;q.column.prototype.translate.apply(this);r(this.points,function(d){r(a,function(a){null!==d[a]&&(d[a+"Plot"]=b.translate(d[a],0,1,0,1))})})},drawPoints:function(){var b= +this,a=b.options,d=b.chart.renderer,f,h,u,c,l,k,p=0,g,n,m,q,v=!1!==b.doQuartiles,t,x=b.options.whiskerLength;r(b.points,function(e){var r=e.graphic,y=r?"animate":"attr",I=e.shapeArgs,z={},B={},G={},H=e.color||b.color;void 0!==e.plotY&&(g=I.width,n=Math.floor(I.x),m=n+g,q=Math.round(g/2),f=Math.floor(v?e.q1Plot:e.lowPlot),h=Math.floor(v?e.q3Plot:e.lowPlot),u=Math.floor(e.highPlot),c=Math.floor(e.lowPlot),r||(e.graphic=r=d.g("point").add(b.group),e.stem=d.path().addClass("highcharts-boxplot-stem").add(r), +x&&(e.whiskers=d.path().addClass("highcharts-boxplot-whisker").add(r)),v&&(e.box=d.path(void 0).addClass("highcharts-boxplot-box").add(r)),e.medianShape=d.path(void 0).addClass("highcharts-boxplot-median").add(r),z.stroke=e.stemColor||a.stemColor||H,z["stroke-width"]=w(e.stemWidth,a.stemWidth,a.lineWidth),z.dashstyle=e.stemDashStyle||a.stemDashStyle,e.stem.attr(z),x&&(B.stroke=e.whiskerColor||a.whiskerColor||H,B["stroke-width"]=w(e.whiskerWidth,a.whiskerWidth,a.lineWidth),e.whiskers.attr(B)),v&&(r= +b.pointAttribs(e),e.box.attr(r)),G.stroke=e.medianColor||a.medianColor||H,G["stroke-width"]=w(e.medianWidth,a.medianWidth,a.lineWidth),e.medianShape.attr(G)),k=e.stem.strokeWidth()%2/2,p=n+q+k,e.stem[y]({d:["M",p,h,"L",p,u,"M",p,f,"L",p,c]}),v&&(k=e.box.strokeWidth()%2/2,f=Math.floor(f)+k,h=Math.floor(h)+k,n+=k,m+=k,e.box[y]({d:["M",n,h,"L",n,f,"L",m,f,"L",m,h,"L",n,h,"z"]})),x&&(k=e.whiskers.strokeWidth()%2/2,u+=k,c+=k,t=/%$/.test(x)?q*parseFloat(x)/100:x/2,e.whiskers[y]({d:["M",p-t,u,"L",p+t,u, +"M",p-t,c,"L",p+t,c]})),l=Math.round(e.medianPlot),k=e.medianShape.strokeWidth()%2/2,l+=k,e.medianShape[y]({d:["M",n,l,"L",m,l]}))})},setStackedPoints:t})})(x);(function(b){var r=b.each,t=b.noop,w=b.seriesType,m=b.seriesTypes;w("errorbar","boxplot",{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},whiskerWidth:null},{type:"errorbar", +pointArrayMap:["low","high"],toYData:function(b){return[b.low,b.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:m.arearange?function(){var b=this.pointValKey;m.arearange.prototype.drawDataLabels.call(this);r(this.data,function(e){e.y=e[b]})}:t,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||m.column.prototype.getColumnMetrics.call(this)}})})(x);(function(b){var r=b.correctFloat,t=b.isNumber,w=b.pick,m=b.Point,q=b.Series,e=b.seriesType,a=b.seriesTypes; +e("waterfall","column",{dataLabels:{inside:!0},lineWidth:1,lineColor:"#333333",dashStyle:"dot",borderColor:"#333333",states:{hover:{lineWidthPlus:0}}},{pointValKey:"y",translate:function(){var d=this.options,b=this.yAxis,h,e,c,l,k,p,g,n,m,q=w(d.minPointLength,5),v=d.threshold,t=d.stacking;a.column.prototype.translate.apply(this);this.minPointLengthOffset=0;g=n=v;e=this.points;h=0;for(d=e.length;hl.height&&(l.y+=l.height,l.height*=-1),c.plotY=l.y=Math.round(l.y)- +this.borderWidth%2/2,l.height=Math.max(Math.round(l.height),.001),c.yBottom=l.y+l.height,l.height<=q&&(l.height=q,this.minPointLengthOffset+=q),l.y-=this.minPointLengthOffset,l=c.plotY+(c.negative?l.height:0)-this.minPointLengthOffset,this.chart.inverted?c.tooltipPos[0]=b.len-l:c.tooltipPos[1]=l},processData:function(a){var b=this.yData,d=this.options.data,e,c=b.length,l,k,p,g,n,m;k=l=p=g=this.options.threshold||0;for(m=0;ma[k-1].y&&(l[2]+=c.height,l[5]+=c.height),e=e.concat(l);return e},drawGraph:function(){q.prototype.drawGraph.call(this);this.graph.attr({d:this.getCrispPath()})},getExtremes:b.noop},{getClassName:function(){var a=m.prototype.getClassName.call(this);this.isSum?a+=" highcharts-sum":this.isIntermediateSum&&(a+=" highcharts-intermediate-sum"); +return a},isValid:function(){return t(this.y,!0)||this.isSum||this.isIntermediateSum}})})(x);(function(b){var r=b.Series,t=b.seriesType,w=b.seriesTypes;t("polygon","scatter",{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:""},trackByArea:!0},{type:"polygon",getGraphPath:function(){for(var b=r.prototype.getGraphPath.call(this),q=b.length+1;q--;)(q===b.length||"M"===b[q])&&0=this.minPxSize/2?(d.shapeType="circle",d.shapeArgs={x:d.plotX,y:d.plotY,r:c},d.dlBox={x:d.plotX-c,y:d.plotY-c,width:2*c,height:2*c}):d.shapeArgs=d.plotY=d.dlBox=void 0},drawLegendSymbol:function(a,b){var d=this.chart.renderer,c=d.fontMetrics(a.itemStyle.fontSize).f/2;b.legendSymbol=d.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker= +!0},drawPoints:l.column.prototype.drawPoints,alignDataLabel:l.column.prototype.alignDataLabel,buildKDTree:a,applyZones:a},{haloPath:function(a){return h.prototype.haloPath.call(this,this.shapeArgs.r+a)},ttBelow:!1});w.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,h=0,l=b,u=this.isXAxis,m=u?"xData":"yData",w=this.min,x={},A=Math.min(c.plotWidth,c.plotHeight),C=Number.MAX_VALUE,D=-Number.MAX_VALUE,E=this.max-w,z=b/E,F=[];q(this.series,function(b){var g=b.options;!b.bubblePadding|| +!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,F.push(b),u&&(q(["minSize","maxSize"],function(a){var b=g[a],d=/%$/.test(b),b=f(b);x[a]=d?A*b/100:b}),b.minPxSize=x.minSize,b.maxPxSize=Math.max(x.maxSize,x.minSize),b=b.zData,b.length&&(C=d(g.zMin,Math.min(C,Math.max(t(b),!1===g.displayNegative?g.zThreshold:-Number.MAX_VALUE))),D=d(g.zMax,Math.max(D,r(b))))))});q(F,function(b){var d=b[m],c=d.length,f;u&&b.getRadii(C,D,b.minPxSize,b.maxPxSize);if(0f&&(f+=360),a.clientX=f):a.clientX=a.plotX};m.spline&&q(m.spline.prototype,"getPointSpline",function(a,b,f,h){var d,c,e,k,p,g,n;this.chart.polar?(d=f.plotX, +c=f.plotY,a=b[h-1],e=b[h+1],this.connectEnds&&(a||(a=b[b.length-2]),e||(e=b[1])),a&&e&&(k=a.plotX,p=a.plotY,b=e.plotX,g=e.plotY,k=(1.5*d+k)/2.5,p=(1.5*c+p)/2.5,e=(1.5*d+b)/2.5,n=(1.5*c+g)/2.5,b=Math.sqrt(Math.pow(k-d,2)+Math.pow(p-c,2)),g=Math.sqrt(Math.pow(e-d,2)+Math.pow(n-c,2)),k=Math.atan2(p-c,k-d),p=Math.atan2(n-c,e-d),n=Math.PI/2+(k+p)/2,Math.abs(k-n)>Math.PI/2&&(n-=Math.PI),k=d+Math.cos(n)*b,p=c+Math.sin(n)*b,e=d+Math.cos(Math.PI+n)*g,n=c+Math.sin(Math.PI+n)*g,f.rightContX=e,f.rightContY=n), +h?(f=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,k||d,p||c,d,c],a.rightContX=a.rightContY=null):f=["M",d,c]):f=a.call(this,b,f,h);return f});q(e,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,!this.preventPostTranslate))for(a=this.points,b=a.length;b--;)this.toXY(a[b])});q(e,"getGraphPath",function(a,b){var d=this,e,m;if(this.chart.polar){b=b||this.points;for(e=0;eb.center[1]}),q(m,"alignDataLabel",function(a,b,f,h,m,c){this.chart.polar?(a=b.rectPlotX/Math.PI*180,null===h.align&&(h.align=20a?"left":200a?"right":"center"),null===h.verticalAlign&&(h.verticalAlign=45>a||315a?"top":"middle"),e.alignDataLabel.call(this,b,f,h,m,c)):a.call(this, +b,f,h,m,c)}));q(b,"getCoordinates",function(a,b){var d=this.chart,e={xAxis:[],yAxis:[]};d.polar?t(d.axes,function(a){var c=a.isXAxis,f=a.center,h=b.chartX-f[0]-d.plotLeft,f=b.chartY-f[1]-d.plotTop;e[c?"xAxis":"yAxis"].push({axis:a,value:a.translate(c?Math.PI-Math.atan2(h,f):Math.sqrt(Math.pow(h,2)+Math.pow(f,2)),!0)})}):e=a.call(this,b);return e})})(x)}); diff --git a/Sources/API/gatling/results/Gin-Simulation/js/highstock.js b/Sources/API/gatling/results/Gin-Simulation/js/highstock.js new file mode 100644 index 0000000..34a3f91 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/highstock.js @@ -0,0 +1,496 @@ +/* + Highstock JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(N,a){"object"===typeof module&&module.exports?module.exports=N.document?a(N):a:N.Highcharts=a(N)})("undefined"!==typeof window?window:this,function(N){N=function(){var a=window,D=a.document,B=a.navigator&&a.navigator.userAgent||"",G=D&&D.createElementNS&&!!D.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,H=/(edge|msie|trident)/i.test(B)&&!window.opera,p=!G,l=/Firefox/.test(B),r=l&&4>parseInt(B.split("Firefox/")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:"Highstock", +version:"5.0.3",deg2rad:2*Math.PI/360,doc:D,hasBidiBug:r,hasTouch:D&&void 0!==D.documentElement.ontouchstart,isMS:H,isWebKit:/AppleWebKit/.test(B),isFirefox:l,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(B),SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,vml:p,win:a,charts:[],marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){}}}();(function(a){var D=[],B=a.charts,G=a.doc,H=a.win;a.error=function(a,l){a="Highcharts error #"+ +a+": www.highcharts.com/errors/"+a;if(l)throw Error(a);H.console&&console.log(a)};a.Fx=function(a,l,r){this.options=l;this.elem=a;this.prop=r};a.Fx.prototype={dSetter:function(){var a=this.paths[0],l=this.paths[1],r=[],w=this.now,t=a.length,k;if(1===w)r=this.toD;else if(t===l.length&&1>w)for(;t--;)k=parseFloat(a[t]),r[t]=isNaN(k)?a[t]:w*parseFloat(l[t]-k)+k;else r=l;this.elem.attr("d",r)},update:function(){var a=this.elem,l=this.prop,r=this.now,w=this.options.step;if(this[l+"Setter"])this[l+"Setter"](); +else a.attr?a.element&&a.attr(l,r):a.style[l]=r+this.unit;w&&w.call(a,r,this)},run:function(a,l,r){var p=this,t=function(a){return t.stopped?!1:p.step(a)},k;this.startTime=+new Date;this.start=a;this.end=l;this.unit=r;this.now=this.start;this.pos=0;t.elem=this.elem;t()&&1===D.push(t)&&(t.timerId=setInterval(function(){for(k=0;k=k+this.startTime){this.now=this.end;this.pos=1;this.update();a=m[this.prop]=!0;for(e in m)!0!==m[e]&&(a=!1);a&&t&&t.call(p);p=!1}else this.pos=w.easing((l-this.startTime)/k),this.now=this.start+(this.end-this.start)*this.pos,this.update(),p=!0;return p},initPath:function(p,l,r){function w(a){for(b=a.length;b--;)"M"!==a[b]&&"L"!==a[b]||a.splice(b+1,0,a[b+1],a[b+2],a[b+1],a[b+2])}function t(a,c){for(;a.lengthm?"AM":"PM",P:12>m?"am":"pm",S:q(t.getSeconds()),L:q(Math.round(l%1E3),3)},a.dateFormats);for(k in w)for(;-1!==p.indexOf("%"+k);)p= +p.replace("%"+k,"function"===typeof w[k]?w[k](l):w[k]);return r?p.substr(0,1).toUpperCase()+p.substr(1):p};a.formatSingle=function(p,l){var r=/\.([0-9])/,w=a.defaultOptions.lang;/f$/.test(p)?(r=(r=p.match(r))?r[1]:-1,null!==l&&(l=a.numberFormat(l,r,w.decimalPoint,-1=r&&(l=[1/r])));for(w=0;w=p||!t&&k<=(l[w]+(l[w+1]||l[w]))/ +2);w++);return m*r};a.stableSort=function(a,l){var r=a.length,p,t;for(t=0;tr&&(r=a[l]);return r};a.destroyObjectProperties=function(a,l){for(var r in a)a[r]&&a[r]!==l&&a[r].destroy&&a[r].destroy(),delete a[r]};a.discardElement=function(p){var l= +a.garbageBin;l||(l=a.createElement("div"));p&&l.appendChild(p);l.innerHTML=""};a.correctFloat=function(a,l){return parseFloat(a.toPrecision(l||14))};a.setAnimation=function(p,l){l.renderer.globalAnimation=a.pick(p,l.options.chart.animation,!0)};a.animObject=function(p){return a.isObject(p)?a.merge(p):{duration:p?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(p,l,r,w){p=+p||0;l=+l;var t=a.defaultOptions.lang, +k=(p.toString().split(".")[1]||"").length,m,e,g=Math.abs(p);-1===l?l=Math.min(k,20):a.isNumber(l)||(l=2);m=String(a.pInt(g.toFixed(l)));e=3p?"-":"")+(e?m.substr(0,e)+w:"");p+=m.substr(e).replace(/(\d{3})(?=\d)/g,"$1"+w);l&&(w=Math.abs(g-m+Math.pow(10,-Math.max(l,k)-1)),p+=r+w.toFixed(l).slice(2));return p};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(p,l){return"width"===l?Math.min(p.offsetWidth, +p.scrollWidth)-a.getStyle(p,"padding-left")-a.getStyle(p,"padding-right"):"height"===l?Math.min(p.offsetHeight,p.scrollHeight)-a.getStyle(p,"padding-top")-a.getStyle(p,"padding-bottom"):(p=H.getComputedStyle(p,void 0))&&a.pInt(p.getPropertyValue(l))};a.inArray=function(a,l){return l.indexOf?l.indexOf(a):[].indexOf.call(l,a)};a.grep=function(a,l){return[].filter.call(a,l)};a.map=function(a,l){for(var r=[],p=0,t=a.length;pl;l++)w[l]+=p(255*a),0>w[l]&&(w[l]=0),255z.width)z={width:0,height:0}}else z=this.htmlGetBBox();b.isSVG&&(a=z.width, +b=z.height,c&&L&&"11px"===L.fontSize&&"16.9"===b.toPrecision(3)&&(z.height=b=14),v&&(z.width=Math.abs(b*Math.sin(d))+Math.abs(a*Math.cos(d)),z.height=Math.abs(b*Math.cos(d))+Math.abs(a*Math.sin(d))));if(g&&0]*>/g,"")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,c,v){"string"===typeof a?v.setAttribute(c, +a):a&&this.colorGradient(a,c,v)},visibilitySetter:function(a,c,v){"inherit"===a?v.removeAttribute(c):v.setAttribute(c,a)},zIndexSetter:function(a,c){var v=this.renderer,z=this.parentGroup,b=(z||v).element||v.box,d,n=this.element,f;d=this.added;var e;k(a)&&(n.zIndex=a,a=+a,this[c]===a&&(d=!1),this[c]=a);if(d){(a=this.zIndex)&&z&&(z.handleZ=!0);c=b.childNodes;for(e=0;ea||!k(a)&&k(d)||0>a&&!k(d)&&b!==v.box)&&(b.insertBefore(n,z),f=!0);f||b.appendChild(n)}return f}, +_defaultSetter:function(a,c,v){v.setAttribute(c,a)}};D.prototype.yGetter=D.prototype.xGetter;D.prototype.translateXSetter=D.prototype.translateYSetter=D.prototype.rotationSetter=D.prototype.verticalAlignSetter=D.prototype.scaleXSetter=D.prototype.scaleYSetter=function(a,c){this[c]=a;this.doTransform=!0};D.prototype["stroke-widthSetter"]=D.prototype.strokeSetter=function(a,c,v){this[c]=a;this.stroke&&this["stroke-width"]?(D.prototype.fillSetter.call(this,this.stroke,"stroke",v),v.setAttribute("stroke-width", +this["stroke-width"]),this.hasStroke=!0):"stroke-width"===c&&0===a&&this.hasStroke&&(v.removeAttribute("stroke"),this.hasStroke=!1)};B=a.SVGRenderer=function(){this.init.apply(this,arguments)};B.prototype={Element:D,SVG_NS:K,init:function(a,c,v,b,d,n){var z;b=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}).css(this.getStyle(b));z=b.element;a.appendChild(z);-1===a.innerHTML.indexOf("xmlns")&&p(z,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=z;this.boxWrapper=b;this.alignedObjects= +[];this.url=(E||A)&&g.getElementsByTagName("base").length?R.location.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(g.createTextNode("Created with Highstock 5.0.3"));this.defs=this.createElement("defs").add();this.allowHTML=n;this.forExport=d;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(c,v,!1);var f;E&&a.getBoundingClientRect&&(c=function(){w(a,{left:0,top:0});f=a.getBoundingClientRect(); +w(a,{left:Math.ceil(f.left)-f.left+"px",top:Math.ceil(f.top)-f.top+"px"})},c(),this.unSubPixelFix=G(R,"resize",c))},getStyle:function(a){return this.style=C({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();e(this.gradients||{});this.gradients= +null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var c=new this.Element;c.init(this,a);return c},draw:J,getRadialAttr:function(a,c){return{cx:a[0]-a[2]/2+c.cx*a[2],cy:a[1]-a[2]/2+c.cy*a[2],r:c.r*a[2]}},buildText:function(a){for(var c=a.element,z=this,b=z.forExport,n=y(a.textStr,"").toString(),f=-1!==n.indexOf("\x3c"),e=c.childNodes,q,F,x,A,I=p(c,"x"),m=a.styles,k=a.textWidth,C=m&&m.lineHeight,M=m&&m.textOutline,J=m&& +"ellipsis"===m.textOverflow,E=e.length,O=k&&!a.added&&this.box,t=function(a){var v;v=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:m&&m.fontSize||z.style.fontSize||12;return C?u(C):z.fontMetrics(v,a.getAttribute("style")?a:c).h};E--;)c.removeChild(e[E]);f||M||J||k||-1!==n.indexOf(" ")?(q=/<.*class="([^"]+)".*>/,F=/<.*style="([^"]+)".*>/,x=/<.*href="(http[^"]+)".*>/,O&&O.appendChild(c),n=f?n.replace(/<(b|strong)>/g,'\x3cspan style\x3d"font-weight:bold"\x3e').replace(/<(i|em)>/g,'\x3cspan style\x3d"font-style:italic"\x3e').replace(//g,"\x3c/span\x3e").split(//g):[n],n=d(n,function(a){return""!==a}),h(n,function(d,n){var f,e=0;d=d.replace(/^\s+|\s+$/g,"").replace(//g,"\x3c/span\x3e|||");f=d.split("|||");h(f,function(d){if(""!==d||1===f.length){var u={},y=g.createElementNS(z.SVG_NS,"tspan"),L,h;q.test(d)&&(L=d.match(q)[1],p(y,"class",L));F.test(d)&&(h=d.match(F)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),p(y,"style",h));x.test(d)&&!b&&(p(y, +"onclick",'location.href\x3d"'+d.match(x)[1]+'"'),w(y,{cursor:"pointer"}));d=(d.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"\x3c").replace(/>/g,"\x3e");if(" "!==d){y.appendChild(g.createTextNode(d));e?u.dx=0:n&&null!==I&&(u.x=I);p(y,u);c.appendChild(y);!e&&n&&(!v&&b&&w(y,{display:"block"}),p(y,"dy",t(y)));if(k){u=d.replace(/([^\^])-/g,"$1- ").split(" ");L="nowrap"===m.whiteSpace;for(var C=1k,void 0===A&&(A=M),J&&A?(Q/=2,""===l||!M&&.5>Q?u=[]:(l=d.substring(0,l.length+(M?-1:1)*Math.ceil(Q)),u=[l+(3k&&(k=P)),u.length&&y.appendChild(g.createTextNode(u.join(" ").replace(/- /g, +"-")));a.rotation=R}e++}}})}),A&&a.attr("title",a.textStr),O&&O.removeChild(c),M&&a.applyTextOutline&&a.applyTextOutline(M)):c.appendChild(g.createTextNode(n.replace(/</g,"\x3c").replace(/>/g,"\x3e")))},getContrast:function(a){a=r(a).rgba;return 510v?d>c+f&&de?d>c+f&&db&&e>a+f&&ed&&e>a+f&&ea?a+3:Math.round(1.2*a);return{h:c,b:Math.round(.8*c),f:a}},rotCorr:function(a, +c,v){var b=a;c&&v&&(b=Math.max(b*Math.cos(c*m),4));return{x:-a/3*Math.sin(c*m),y:b}},label:function(a,c,v,b,d,n,f,e,K){var q=this,u=q.g("button"!==K&&"label"),y=u.text=q.text("",0,0,f).attr({zIndex:1}),g,F,z=0,A=3,L=0,m,M,J,E,O,t={},l,R,r=/^url\((.*?)\)$/.test(b),p=r,P,w,Q,S;K&&u.addClass("highcharts-"+K);p=r;P=function(){return(l||0)%2/2};w=function(){var a=y.element.style,c={};F=(void 0===m||void 0===M||O)&&k(y.textStr)&&y.getBBox();u.width=(m||F.width||0)+2*A+L;u.height=(M||F.height||0)+2*A;R= +A+q.fontMetrics(a&&a.fontSize,y).b;p&&(g||(u.box=g=q.symbols[b]||r?q.symbol(b):q.rect(),g.addClass(("button"===K?"":"highcharts-label-box")+(K?" highcharts-"+K+"-box":"")),g.add(u),a=P(),c.x=a,c.y=(e?-R:0)+a),c.width=Math.round(u.width),c.height=Math.round(u.height),g.attr(C(c,t)),t={})};Q=function(){var a=L+A,c;c=e?0:R;k(m)&&F&&("center"===O||"right"===O)&&(a+={center:.5,right:1}[O]*(m-F.width));if(a!==y.x||c!==y.y)y.attr("x",a),void 0!==c&&y.attr("y",c);y.x=a;y.y=c};S=function(a,c){g?g.attr(a,c): +t[a]=c};u.onAdd=function(){y.add(u);u.attr({text:a||0===a?a:"",x:c,y:v});g&&k(d)&&u.attr({anchorX:d,anchorY:n})};u.widthSetter=function(a){m=a};u.heightSetter=function(a){M=a};u["text-alignSetter"]=function(a){O=a};u.paddingSetter=function(a){k(a)&&a!==A&&(A=u.padding=a,Q())};u.paddingLeftSetter=function(a){k(a)&&a!==L&&(L=a,Q())};u.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==z&&(z=a,F&&u.attr({x:J}))};u.textSetter=function(a){void 0!==a&&y.textSetter(a);w();Q()};u["stroke-widthSetter"]= +function(a,c){a&&(p=!0);l=this["stroke-width"]=a;S(c,a)};u.strokeSetter=u.fillSetter=u.rSetter=function(a,c){"fill"===c&&a&&(p=!0);S(c,a)};u.anchorXSetter=function(a,c){d=a;S(c,Math.round(a)-P()-J)};u.anchorYSetter=function(a,c){n=a;S(c,a-E)};u.xSetter=function(a){u.x=a;z&&(a-=z*((m||F.width)+2*A));J=Math.round(a);u.attr("translateX",J)};u.ySetter=function(a){E=u.y=Math.round(a);u.attr("translateY",E)};var T=u.css;return C(u,{css:function(a){if(a){var c={};a=x(a);h(u.textProps,function(v){void 0!== +a[v]&&(c[v]=a[v],delete a[v])});y.css(c)}return T.call(u,a)},getBBox:function(){return{width:F.width+2*A,height:F.height+2*A,x:F.x-A,y:F.y-A}},shadow:function(a){a&&(w(),g&&g.shadow(a));return u},destroy:function(){I(u.element,"mouseenter");I(u.element,"mouseleave");y&&(y=y.destroy());g&&(g=g.destroy());D.prototype.destroy.call(u);u=q=w=Q=S=null}})}};a.Renderer=B})(N);(function(a){var D=a.attr,B=a.createElement,G=a.css,H=a.defined,p=a.each,l=a.extend,r=a.isFirefox,w=a.isMS,t=a.isWebKit,k=a.pInt,m= +a.SVGRenderer,e=a.win,g=a.wrap;l(a.SVGElement.prototype,{htmlCss:function(a){var e=this.element;if(e=a&&"SPAN"===e.tagName&&a.width)delete a.width,this.textWidth=e,this.updateTransform();a&&"ellipsis"===a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=l(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=this.element;"text"===a.nodeName&&(a.style.position="absolute");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a= +this.renderer,e=this.element,f=this.translateX||0,d=this.translateY||0,b=this.x||0,q=this.y||0,g=this.textAlign||"left",c={left:0,center:.5,right:1}[g],F=this.styles;G(e,{marginLeft:f,marginTop:d});this.shadows&&p(this.shadows,function(a){G(a,{marginLeft:f+1,marginTop:d+1})});this.inverted&&p(e.childNodes,function(c){a.invertChild(c,e)});if("SPAN"===e.tagName){var n=this.rotation,A=k(this.textWidth),x=F&&F.whiteSpace,m=[n,g,e.innerHTML,this.textWidth,this.textAlign].join();m!==this.cTT&&(F=a.fontMetrics(e.style.fontSize).b, +H(n)&&this.setSpanRotation(n,c,F),G(e,{width:"",whiteSpace:x||"nowrap"}),e.offsetWidth>A&&/[ \-]/.test(e.textContent||e.innerText)&&G(e,{width:A+"px",display:"block",whiteSpace:x||"normal"}),this.getSpanCorrection(e.offsetWidth,F,c,n,g));G(e,{left:b+(this.xCorr||0)+"px",top:q+(this.yCorr||0)+"px"});t&&(F=e.offsetHeight);this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,g,f){var d={},b=w?"-ms-transform":t?"-webkit-transform":r?"MozTransform":e.opera?"-o-transform":"";d[b]=d.transform= +"rotate("+a+"deg)";d[b+(r?"Origin":"-origin")]=d.transformOrigin=100*g+"% "+f+"px";G(this.element,d)},getSpanCorrection:function(a,e,f){this.xCorr=-a*f;this.yCorr=-e}});l(m.prototype,{html:function(a,e,f){var d=this.createElement("span"),b=d.element,q=d.renderer,h=q.isSVG,c=function(a,c){p(["opacity","visibility"],function(b){g(a,b+"Setter",function(a,b,d,n){a.call(this,b,d,n);c[d]=b})})};d.textSetter=function(a){a!==b.innerHTML&&delete this.bBox;b.innerHTML=this.textStr=a;d.htmlUpdateTransform()}; +h&&c(d,d.element.style);d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,c){"align"===c&&(c="textAlign");d[c]=a;d.htmlUpdateTransform()};d.attr({text:a,x:Math.round(e),y:Math.round(f)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:"absolute"});b.style.whiteSpace="nowrap";d.css=d.htmlCss;h&&(d.add=function(a){var n,f=q.box.parentNode,e=[];if(this.parentGroup=a){if(n=a.div,!n){for(;a;)e.push(a),a=a.parentGroup;p(e.reverse(),function(a){var b,d=D(a.element, +"class");d&&(d={className:d});n=a.div=a.div||B("div",d,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},n||f);b=n.style;l(a,{translateXSetter:function(c,d){b.left=c+"px";a[d]=c;a.doTransform=!0},translateYSetter:function(c,d){b.top=c+"px";a[d]=c;a.doTransform=!0}});c(a,b)})}}else n=f;n.appendChild(b);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})})(N);(function(a){var D, +B,G=a.createElement,H=a.css,p=a.defined,l=a.deg2rad,r=a.discardElement,w=a.doc,t=a.each,k=a.erase,m=a.extend;D=a.extendClass;var e=a.isArray,g=a.isNumber,h=a.isObject,C=a.merge;B=a.noop;var f=a.pick,d=a.pInt,b=a.SVGElement,q=a.SVGRenderer,E=a.win;a.svg||(B={docMode8:w&&8===w.documentMode,init:function(a,b){var c=["\x3c",b,' filled\x3d"f" stroked\x3d"f"'],d=["position: ","absolute",";"],f="div"===b;("shape"===b||f)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",f?"hidden":"visible"); +c.push(' style\x3d"',d.join(""),'"/\x3e');b&&(c=f||"span"===b||"img"===b?c.join(""):a.prepVML(c),this.element=G(c));this.renderer=a},add:function(a){var c=this.renderer,b=this.element,d=c.box,f=a&&a.inverted,d=a?a.element||a:d;a&&(this.parentGroup=a);f&&c.invertChild(b,d);d.appendChild(b);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr("class",this.className);return this},updateTransform:b.prototype.htmlUpdateTransform, +setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*l),d=Math.sin(a*l);H(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11\x3d",b,", M12\x3d",-d,", M21\x3d",d,", M22\x3d",b,", sizingMethod\x3d'auto expand')"].join(""):"none"})},getSpanCorrection:function(a,b,d,e,q){var c=e?Math.cos(e*l):1,n=e?Math.sin(e*l):0,u=f(this.elemHeight,this.element.offsetHeight),g;this.xCorr=0>c&&-a;this.yCorr=0>n&&-u;g=0>c*n;this.xCorr+=n*b*(g?1-d:d);this.yCorr-=c*b*(e?g?d:1-d:1);q&&"left"!== +q&&(this.xCorr-=a*d*(0>c?-1:1),e&&(this.yCorr-=u*d*(0>n?-1:1)),H(this.element,{textAlign:q}))},pathToVML:function(a){for(var c=a.length,b=[];c--;)g(a[c])?b[c]=Math.round(10*a[c])-5:"Z"===a[c]?b[c]="x":(b[c]=a[c],!a.isArc||"wa"!==a[c]&&"at"!==a[c]||(b[c+5]===b[c+7]&&(b[c+7]+=a[c+7]>a[c+5]?1:-1),b[c+6]===b[c+8]&&(b[c+8]+=a[c+8]>a[c+6]?1:-1)));return b.join(" ")||"x"},clip:function(a){var c=this,b;a?(b=a.members,k(b,c),b.push(c),c.destroyClip=function(){k(b,c)},a=a.getCSS(c)):(c.destroyClip&&c.destroyClip(), +a={clip:c.docMode8?"inherit":"rect(auto)"});return c.css(a)},css:b.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&r(a)},destroy:function(){this.destroyClip&&this.destroyClip();return b.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=E.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c;a=a.split(/[ ,]/);c=a.length;if(9===c||11===c)a[c-4]=a[c-2]=d(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,e){var c=[],n,q=this.element, +g=this.renderer,u,I=q.style,F,v=q.path,K,h,m,z;v&&"string"!==typeof v.value&&(v="x");h=v;if(a){m=f(a.width,3);z=(a.opacity||.15)/m;for(n=1;3>=n;n++)K=2*m+1-2*n,e&&(h=this.cutOffPath(v.value,K+.5)),F=['\x3cshape isShadow\x3d"true" strokeweight\x3d"',K,'" filled\x3d"false" path\x3d"',h,'" coordsize\x3d"10 10" style\x3d"',q.style.cssText,'" /\x3e'],u=G(g.prepVML(F),null,{left:d(I.left)+f(a.offsetX,1),top:d(I.top)+f(a.offsetY,1)}),e&&(u.cutOff=K+1),F=['\x3cstroke color\x3d"',a.color||"#000000",'" opacity\x3d"', +z*n,'"/\x3e'],G(g.prepVML(F),null,null,u),b?b.element.appendChild(u):q.parentNode.insertBefore(u,q),c.push(u);this.shadows=c}return this},updateShadows:B,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,d){(d.getElementsByTagName("stroke")[0]||G(this.renderer.prepVML(["\x3cstroke/\x3e"]),null,null,d))[b]=a||"solid";this[b]=a},dSetter:function(a,b,d){var c=this.shadows; +a=a||[];this.d=a.join&&a.join(" ");d.path=a=this.pathToVML(a);if(c)for(d=c.length;d--;)c[d].path=c[d].cutOff?this.cutOffPath(a,c[d].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,d){var c=d.nodeName;"SPAN"===c?d.style.color=a:"IMG"!==c&&(d.filled="none"!==a,this.setAttr("fillcolor",this.renderer.color(a,d,b,this)))},"fill-opacitySetter":function(a,b,d){G(this.renderer.prepVML(["\x3c",b.split("-")[0],' opacity\x3d"',a,'"/\x3e']),null,null,d)},opacitySetter:B,rotationSetter:function(a,b,d){d= +d.style;this[b]=d[b]=a;d.left=-Math.round(Math.sin(a*l)+1)+"px";d.top=Math.round(Math.cos(a*l))+"px"},strokeSetter:function(a,b,d){this.setAttr("strokecolor",this.renderer.color(a,d,b,this))},"stroke-widthSetter":function(a,b,d){d.stroked=!!a;this[b]=a;g(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,d){"inherit"===a&&(a="visible");this.shadows&&t(this.shadows,function(c){c.style[b]=a});"DIV"===d.nodeName&&(a="hidden"===a?"-999em": +0,this.docMode8||(d.style[b]=a?"visible":"hidden"),b="top");d.style[b]=a},xSetter:function(a,b,d){this[b]=a;"x"===b?b="left":"y"===b&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):d.style[b]=a},zIndexSetter:function(a,b,d){d.style[b]=a}},B["stroke-opacitySetter"]=B["fill-opacitySetter"],a.VMLElement=B=D(b,B),B.prototype.ySetter=B.prototype.widthSetter=B.prototype.heightSetter=B.prototype.xSetter,B={Element:B,isIE8:-1l[0]&&c.push([1,l[1]]);t(c,function(c,b){q.test(c[1])?(n=a.color(c[1]),v=n.get("rgb"),K=n.get("a")):(v=c[1],K=1);r.push(100*c[0]+"% "+v);b?(m=K,k=v):(z=K,E=v)});if("fill"===d)if("gradient"===g)d=A.x1||A[0]||0,c=A.y1||A[1]||0,F=A.x2||A[2]||0,A=A.y2||A[3]||0,C='angle\x3d"'+(90-180*Math.atan((A-c)/(F-d))/Math.PI)+'"',p();else{var h=A.r,w=2*h,B=2*h,D=A.cx,H=A.cy,V=b.radialReference,U,h=function(){V&&(U=f.getBBox(),D+=(V[0]- +U.x)/U.width-.5,H+=(V[1]-U.y)/U.height-.5,w*=V[2]/U.width,B*=V[2]/U.height);C='src\x3d"'+a.getOptions().global.VMLRadialGradientURL+'" size\x3d"'+w+","+B+'" origin\x3d"0.5,0.5" position\x3d"'+D+","+H+'" color2\x3d"'+E+'" ';p()};f.added?h():f.onAdd=h;h=k}else h=v}else q.test(c)&&"IMG"!==b.tagName?(n=a.color(c),f[d+"-opacitySetter"](n.get("a"),d,b),h=n.get("rgb")):(h=b.getElementsByTagName(d),h.length&&(h[0].opacity=1,h[0].type="solid"),h=c);return h},prepVML:function(a){var c=this.isIE8;a=a.join(""); +c?(a=a.replace("/\x3e",' xmlns\x3d"urn:schemas-microsoft-com:vml" /\x3e'),a=-1===a.indexOf('style\x3d"')?a.replace("/\x3e",' style\x3d"display:inline-block;behavior:url(#default#VML);" /\x3e'):a.replace('style\x3d"','style\x3d"display:inline-block;behavior:url(#default#VML);')):a=a.replace("\x3c","\x3chcv:");return a},text:q.prototype.html,path:function(a){var c={coordsize:"10 10"};e(a)?c.d=a:h(a)&&m(c,a);return this.createElement("shape").attr(c)},circle:function(a,b,d){var c=this.symbol("circle"); +h(a)&&(d=a.r,b=a.y,a=a.x);c.isCircle=!0;c.r=d;return c.attr({x:a,y:b})},g:function(a){var c;a&&(c={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement("div").attr(c)},image:function(a,b,d,f,e){var c=this.createElement("img").attr({src:a});1f&&m-d*bg&&(F=Math.round((e-m)/Math.cos(f*w)));else if(e=m+(1-d)*b,m-d*bg&&(E=g-a.x+E*d,c=-1),E=Math.min(q, +E),EE||k.autoRotation&&(C.styles||{}).width)F=E;F&&(n.width=F,(k.options.labels.style||{}).textOverflow||(n.textOverflow="ellipsis"),C.css(n))},getPosition:function(a,k,m,e){var g=this.axis,h=g.chart,l=e&&h.oldChartHeight||h.chartHeight;return{x:a?g.translate(k+m,null,null,e)+g.transB:g.left+g.offset+(g.opposite?(e&&h.oldChartWidth||h.chartWidth)-g.right-g.left:0),y:a?l-g.bottom+g.offset-(g.opposite?g.height:0):l-g.translate(k+m,null, +null,e)-g.transB}},getLabelPosition:function(a,k,m,e,g,h,l,f){var d=this.axis,b=d.transA,q=d.reversed,E=d.staggerLines,c=d.tickRotCorr||{x:0,y:0},F=g.y;B(F)||(F=0===d.side?m.rotation?-8:-m.getBBox().height:2===d.side?c.y+8:Math.cos(m.rotation*w)*(c.y-m.getBBox(!1,0).height/2));a=a+g.x+c.x-(h&&e?h*b*(q?-1:1):0);k=k+F-(h&&!e?h*b*(q?1:-1):0);E&&(m=l/(f||1)%E,d.opposite&&(m=E-m-1),k+=d.labelOffset/E*m);return{x:a,y:Math.round(k)}},getMarkPath:function(a,k,m,e,g,h){return h.crispLine(["M",a,k,"L",a+(g? +0:-m),k+(g?m:0)],e)},render:function(a,k,m){var e=this.axis,g=e.options,h=e.chart.renderer,C=e.horiz,f=this.type,d=this.label,b=this.pos,q=g.labels,E=this.gridLine,c=f?f+"Tick":"tick",F=e.tickSize(c),n=this.mark,A=!n,x=q.step,p={},y=!0,u=e.tickmarkOffset,I=this.getPosition(C,b,u,k),M=I.x,I=I.y,v=C&&M===e.pos+e.len||!C&&I===e.pos?-1:1,K=f?f+"Grid":"grid",O=g[K+"LineWidth"],R=g[K+"LineColor"],z=g[K+"LineDashStyle"],K=l(g[c+"Width"],!f&&e.isXAxis?1:0),c=g[c+"Color"];m=l(m,1);this.isActive=!0;E||(p.stroke= +R,p["stroke-width"]=O,z&&(p.dashstyle=z),f||(p.zIndex=1),k&&(p.opacity=0),this.gridLine=E=h.path().attr(p).addClass("highcharts-"+(f?f+"-":"")+"grid-line").add(e.gridGroup));if(!k&&E&&(b=e.getPlotLinePath(b+u,E.strokeWidth()*v,k,!0)))E[this.isNew?"attr":"animate"]({d:b,opacity:m});F&&(e.opposite&&(F[0]=-F[0]),A&&(this.mark=n=h.path().addClass("highcharts-"+(f?f+"-":"")+"tick").add(e.axisGroup),n.attr({stroke:c,"stroke-width":K})),n[A?"attr":"animate"]({d:this.getMarkPath(M,I,F[0],n.strokeWidth()* +v,C,h),opacity:m}));d&&H(M)&&(d.xy=I=this.getLabelPosition(M,I,d,C,q,u,a,x),this.isFirst&&!this.isLast&&!l(g.showFirstLabel,1)||this.isLast&&!this.isFirst&&!l(g.showLastLabel,1)?y=!1:!C||e.isRadial||q.step||q.rotation||k||0===m||this.handleOverflow(I),x&&a%x&&(y=!1),y&&H(I.y)?(I.opacity=m,d[this.isNew?"attr":"animate"](I)):(r(d),d.attr("y",-9999)),this.isNew=!1)},destroy:function(){G(this,this.axis)}}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.AxisPlotLineOrBandExtension, +l=a.color,r=a.correctFloat,w=a.defaultOptions,t=a.defined,k=a.deg2rad,m=a.destroyObjectProperties,e=a.each,g=a.error,h=a.extend,C=a.fireEvent,f=a.format,d=a.getMagnitude,b=a.grep,q=a.inArray,E=a.isArray,c=a.isNumber,F=a.isString,n=a.merge,A=a.normalizeTickInterval,x=a.pick,J=a.PlotLineOrBand,y=a.removeEvent,u=a.splat,I=a.syncTimeout,M=a.Tick;a.Axis=function(){this.init.apply(this,arguments)};a.Axis.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M", +hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,labels:{enabled:!0,style:{color:"#666666",cursor:"default",fontSize:"11px"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb", +lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"#000000",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15}, +title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,c){var b=c.isX;this.chart=a;this.horiz=a.inverted?!b:b;this.isXAxis=b;this.coll=this.coll||(b?"xAxis":"yAxis");this.opposite=c.opposite;this.side=c.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(c);var d=this.options,v=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter; +this.userOptions=c;this.minPixelPadding=0;this.reversed=d.reversed;this.visible=!1!==d.visible;this.zoomEnabled=!1!==d.zoomEnabled;this.hasNames="category"===v||!0===d.categories;this.categories=d.categories||this.hasNames;this.names=this.names||[];this.isLog="logarithmic"===v;this.isDatetimeAxis="datetime"===v;this.isLinked=t(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom; +this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stacksTouched=0;this.min=this.max=null;this.crosshair=x(d.crosshair,u(a.options.tooltip.crosshairs)[b?0:1],!1);var f;c=this.options.events;-1===q(this,a.axes)&&(b?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];a.inverted&&b&&void 0===this.reversed&&(this.reversed=!0);this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in c)D(this,f,c[f]); +this.isLog&&(this.val2lin=this.log2lin,this.lin2val=this.lin2log)},setOptions:function(a){this.options=n(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],n(w[this.coll],a))},defaultLabelFormatter:function(){var c=this.axis,b=this.value,d=c.categories,e=this.dateTimeLabelFormat,q=w.lang,u=q.numericSymbols,q=q.numericSymbolMagnitude||1E3,n=u&&u.length,g,y=c.options.labels.format, +c=c.isLog?b:c.tickInterval;if(y)g=f(y,this);else if(d)g=b;else if(e)g=a.dateFormat(e,b);else if(n&&1E3<=c)for(;n--&&void 0===g;)d=Math.pow(q,n+1),c>=d&&0===10*b%d&&null!==u[n]&&0!==b&&(g=a.numberFormat(b/d,-1)+u[n]);void 0===g&&(g=1E4<=Math.abs(b)?a.numberFormat(b,-1):a.numberFormat(b,-1,void 0,""));return g},getSeriesExtremes:function(){var a=this,d=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();e(a.series,function(v){if(v.visible|| +!d.options.chart.ignoreHiddenSeries){var f=v.options,e=f.threshold,q;a.hasVisibleSeries=!0;a.isLog&&0>=e&&(e=null);if(a.isXAxis)f=v.xData,f.length&&(v=H(f),c(v)||v instanceof Date||(f=b(f,function(a){return c(a)}),v=H(f)),a.dataMin=Math.min(x(a.dataMin,f[0]),v),a.dataMax=Math.max(x(a.dataMax,f[0]),G(f)));else if(v.getExtremes(),q=v.dataMax,v=v.dataMin,t(v)&&t(q)&&(a.dataMin=Math.min(x(a.dataMin,v),v),a.dataMax=Math.max(x(a.dataMax,q),q)),t(e)&&(a.threshold=e),!f.softThreshold||a.isLog)a.softThreshold= +!1}})},translate:function(a,b,d,f,e,q){var v=this.linkedParent||this,u=1,n=0,g=f?v.oldTransA:v.transA;f=f?v.oldMin:v.min;var K=v.minPixelPadding;e=(v.isOrdinal||v.isBroken||v.isLog&&e)&&v.lin2val;g||(g=v.transA);d&&(u*=-1,n=v.len);v.reversed&&(u*=-1,n-=u*(v.sector||v.len));b?(a=(a*u+n-K)/g+f,e&&(a=v.lin2val(a))):(e&&(a=v.val2lin(a)),a=u*(a-f)*g+n+u*K+(c(q)?g*q:0));return a},toPixels:function(a,c){return this.translate(a,!1,!this.horiz,null,!0)+(c?0:this.pos)},toValue:function(a,c){return this.translate(a- +(c?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,d,f,e){var v=this.chart,q=this.left,u=this.top,n,g,K=d&&v.oldChartHeight||v.chartHeight,y=d&&v.oldChartWidth||v.chartWidth,z;n=this.transB;var h=function(a,c,b){if(ab)f?a=Math.min(Math.max(c,a),b):z=!0;return a};e=x(e,this.translate(a,null,null,d));a=d=Math.round(e+n);n=g=Math.round(K-e-n);c(e)?this.horiz?(n=u,g=K-this.bottom,a=d=h(a,q,q+this.width)):(a=q,d=y-this.right,n=g=h(n,u,u+this.height)):z=!0;return z&&!f?null:v.renderer.crispLine(["M", +a,n,"L",d,g],b||1)},getLinearTickPositions:function(a,b,d){var v,f=r(Math.floor(b/a)*a),e=r(Math.ceil(d/a)*a),q=[];if(b===d&&c(b))return[b];for(b=f;b<=e;){q.push(b);b=r(b+a);if(b===v)break;v=b}return q},getMinorTickPositions:function(){var a=this.options,c=this.tickPositions,b=this.minorTickInterval,d=[],f,e=this.pointRangePadding||0;f=this.min-e;var e=this.max+e,q=e-f;if(q&&q/b=this.minRange,q,u,n,g,y,h;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(t(a.min)||t(a.max)?this.minRange=null:(e(this.series,function(a){g=a.xData;for(u=y=a.xIncrement? +1:g.length-1;0=E?(p=E,m=0):b.dataMax<=E&&(J=E,I=0)),b.min=x(w,p,b.dataMin),b.max=x(B,J,b.dataMax));q&&(!a&&0>=Math.min(b.min, +x(b.dataMin,b.min))&&g(10,1),b.min=r(u(b.min),15),b.max=r(u(b.max),15));b.range&&t(b.max)&&(b.userMin=b.min=w=Math.max(b.min,b.minFromRange()),b.userMax=B=b.max,b.range=null);C(b,"foundExtremes");b.beforePadding&&b.beforePadding();b.adjustForMinRange();!(l||b.axisPointRange||b.usePercentage||h)&&t(b.min)&&t(b.max)&&(u=b.max-b.min)&&(!t(w)&&m&&(b.min-=u*m),!t(B)&&I&&(b.max+=u*I));c(f.floor)?b.min=Math.max(b.min,f.floor):c(f.softMin)&&(b.min=Math.min(b.min,f.softMin));c(f.ceiling)?b.max=Math.min(b.max, +f.ceiling):c(f.softMax)&&(b.max=Math.max(b.max,f.softMax));M&&t(b.dataMin)&&(E=E||0,!t(w)&&b.min=E?b.min=E:!t(B)&&b.max>E&&b.dataMax<=E&&(b.max=E));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:h&&!k&&F===b.linkedParent.options.tickPixelInterval?k=b.linkedParent.tickInterval:x(k,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,l?1:(b.max-b.min)*F/Math.max(b.len,F));y&&!a&&e(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0); +b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!k&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=x(f.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!k&&b.tickIntervalb.tickInterval&&1E3b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval= +b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,f=a.startOnTick,e=a.endOnTick,q;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units), +this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,d&&(d=d.apply(this,[this.min,this.max])))&&(this.tickPositions=b=d);this.isLinked||(this.trimTicks(b,f,e),this.min===this.max&&t(this.min)&&!this.tickAmount&&(q=!0,this.min-=.5,this.max+=.5),this.single=q,c||d||this.adjustTickAmount())}, +trimTicks:function(a,b,c){var d=a[0],f=a[a.length-1],v=this.minPointOffset||0;if(b)this.min=d;else for(;this.min-v>a[0];)a.shift();if(c)this.max=f;else for(;this.max+vb&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,f=b&&b.length;if(fc&&(this.tickInterval*= +2,this.setTickPositions());if(t(d)){for(a=c=b.length;a--;)(3===d&&1===a%2||2>=d&&0=f&&(b=f)),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,f=x(b.width,a.plotWidth-c+(b.offsetRight||0)),e=x(b.height,a.plotHeight),q=x(b.top,a.plotTop),b=x(b.left,a.plotLeft+c),c=/%$/;c.test(e)&&(e=Math.round(parseFloat(e)/ +100*a.plotHeight));c.test(q)&&(q=Math.round(parseFloat(q)/100*a.plotHeight+a.plotTop));this.left=b;this.top=q;this.width=f;this.height=e;this.bottom=a.chartHeight-e-q;this.right=a.chartWidth-f-b;this.len=Math.max(d?f:e,0);this.pos=d?b:q},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?r(b(this.min)):this.min,max:a?r(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=this.lin2log, +d=b?c(this.min):this.min,b=b?c(this.max):this.max;null===a?a=d:d>a?a=d:ba?"right":195a?"left":"center"},tickSize:function(a){var b=this.options,c=b[a+"Length"],d=x(b[a+"Width"],"tick"===a&&this.isXAxis?1:0);if(d&&c)return"inside"===b[a+"Position"]&&(c=-c),[c,d]},labelMetrics:function(){return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize, +this.ticks[0]&&this.ticks[0].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,c=this.tickInterval,d=c,f=this.len/(((this.categories?1:0)+this.max-this.min)/c),q,u=a.rotation,n=this.labelMetrics(),g,y=Number.MAX_VALUE,h,I=function(a){a/=f||1;a=1=a)g=I(Math.abs(n.h/Math.sin(k*a))),b=g+Math.abs(a/360),b(c.step||0)&&!c.rotation&&(this.staggerLines||1)*a.plotWidth/d||!b&&(f&&f-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,f=this.options.labels,q=this.horiz,u=this.getSlotWidth(),g=Math.max(1, +Math.round(u-2*(f.padding||5))),y={},h=this.labelMetrics(),I=f.style&&f.style.textOverflow,A,x=0,m,k;F(f.rotation)||(y.rotation=f.rotation||0);e(c,function(a){(a=d[a])&&a.labelLength>x&&(x=a.labelLength)});this.maxLabelLength=x;if(this.autoRotation)x>g&&x>h.h?y.rotation=this.labelRotation:this.labelRotation=0;else if(u&&(A={width:g+"px"},!I))for(A.textOverflow="clip",m=c.length;!q&&m--;)if(k=c[m],g=d[k].label)g.styles&&"ellipsis"===g.styles.textOverflow?g.css({textOverflow:"clip"}):d[k].labelLength> +u&&g.css({width:u+"px"}),g.getBBox().height>this.len/c.length-(h.h-h.f)&&(g.specCss={textOverflow:"ellipsis"});y.rotation&&(A={width:(x>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+"px"},I||(A.textOverflow="ellipsis"));if(this.labelAlign=f.align||this.autoLabelAlign(this.labelRotation))y.align=this.labelAlign;e(c,function(a){var b=(a=d[a])&&a.label;b&&(b.attr(y),A&&b.css(n(A,b.specCss)),delete b.specCss,a.rotation=y.rotation)});this.tickRotCorr=b.rotCorr(h.b,this.labelRotation||0,0!==this.side)}, +hasData:function(){return this.hasVisibleSeries||t(this.min)&&t(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,f=a.tickPositions,q=a.ticks,u=a.horiz,n=a.side,g=b.inverted?[1,0,3,2][n]:n,y,h,I=0,A,m=0,k=d.title,F=d.labels,E=0,l=a.opposite,C=b.axisOffset,b=b.clipOffset,p=[-1,1,1,-1][n],r,J=d.className,w=a.axisParent,B=this.tickSize("tick");y=a.hasData();a.showAxis=h=y||x(d.showEmpty,!0);a.staggerLines=a.horiz&&F.staggerLines;a.axisGroup||(a.gridGroup= +c.g("grid").attr({zIndex:d.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(J||"")).add(w),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(J||"")).add(w),a.labelGroup=c.g("axis-labels").attr({zIndex:F.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels "+(J||"")).add(w));if(y||a.isLinked)e(f,function(b){q[b]?q[b].addLabel():q[b]=new M(a,b)}),a.renderUnsquish(),!1===F.reserveSpace||0!==n&&2!==n&&{1:"left",3:"right"}[n]!== +a.labelAlign&&"center"!==a.labelAlign||e(f,function(a){E=Math.max(q[a].getLabelSize(),E)}),a.staggerLines&&(E*=a.staggerLines,a.labelOffset=E*(a.opposite?-1:1));else for(r in q)q[r].destroy(),delete q[r];k&&k.text&&!1!==k.enabled&&(a.axisTitle||((r=k.textAlign)||(r=(u?{low:"left",middle:"center",high:"right"}:{low:l?"right":"left",middle:"center",high:l?"left":"right"})[k.align]),a.axisTitle=c.text(k.text,0,0,k.useHTML).attr({zIndex:7,rotation:k.rotation||0,align:r}).addClass("highcharts-axis-title").css(k.style).add(a.axisGroup), +a.axisTitle.isNew=!0),h&&(I=a.axisTitle.getBBox()[u?"height":"width"],A=k.offset,m=t(A)?0:x(k.margin,u?5:10)),a.axisTitle[h?"show":"hide"](!0));a.renderLine();a.offset=p*x(d.offset,C[n]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=0===n?-a.labelMetrics().h:2===n?a.tickRotCorr.y:0;m=Math.abs(E)+m;E&&(m=m-c+p*(u?x(F.y,a.tickRotCorr.y+8*p):F.x));a.axisTitleMargin=x(A,m);C[n]=Math.max(C[n],a.axisTitleMargin+I+p*a.offset,m,y&&f.length&&B?B[0]:0);d=d.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[g]= +Math.max(b[g],d)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,f=this.horiz,e=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",f?this.left:e,f?d:this.top,"L",f?b.chartWidth-this.right:e,f?d:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.axisLine.attr({stroke:this.options.lineColor, +"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,f=this.options.title,e=a?b:c,q=this.opposite,u=this.offset,n=f.x||0,g=f.y||0,y=this.chart.renderer.fontMetrics(f.style&&f.style.fontSize,this.axisTitle).f,d={low:e+(a?0:d),middle:e+d/2,high:e+(a?d:0)}[f.align],b=(a?c+this.height:b)+(a?1:-1)*(q?-1:1)*this.axisTitleMargin+(2===this.side?y:0);return{x:a?d+n:b+(q?this.width:0)+u+n,y:a?b+g-(q?this.height:0)+u:d+g}},render:function(){var a= +this,b=a.chart,d=b.renderer,f=a.options,q=a.isLog,u=a.lin2log,n=a.isLinked,g=a.tickPositions,y=a.axisTitle,h=a.ticks,A=a.minorTicks,x=a.alternateBands,m=f.stackLabels,k=f.alternateGridColor,F=a.tickmarkOffset,E=a.axisLine,l=b.hasRendered&&c(a.oldMin),C=a.showAxis,p=B(d.globalAnimation),r,t;a.labelEdge.length=0;a.overlap=!1;e([h,A,x],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||n)a.minorTickInterval&&!a.categories&&e(a.getMinorTickPositions(),function(b){A[b]||(A[b]=new M(a,b,"minor")); +l&&A[b].isNew&&A[b].render(null,!0);A[b].render(null,!1,1)}),g.length&&(e(g,function(b,c){if(!n||b>=a.min&&b<=a.max)h[b]||(h[b]=new M(a,b)),l&&h[b].isNew&&h[b].render(c,!0,.1),h[b].render(c)}),F&&(0===a.min||a.single)&&(h[-1]||(h[-1]=new M(a,-1,null,!0)),h[-1].render(-1))),k&&e(g,function(c,d){t=void 0!==g[d+1]?g[d+1]+F:a.max-F;0===d%2&&c=e.second?0:A*Math.floor(c.getMilliseconds()/A));if(n>=e.second)c[B.hcSetSeconds](n>=e.minute?0:A*Math.floor(c.getSeconds()/ +A));if(n>=e.minute)c[B.hcSetMinutes](n>=e.hour?0:A*Math.floor(c[B.hcGetMinutes]()/A));if(n>=e.hour)c[B.hcSetHours](n>=e.day?0:A*Math.floor(c[B.hcGetHours]()/A));if(n>=e.day)c[B.hcSetDate](n>=e.month?1:A*Math.floor(c[B.hcGetDate]()/A));n>=e.month&&(c[B.hcSetMonth](n>=e.year?0:A*Math.floor(c[B.hcGetMonth]()/A)),g=c[B.hcGetFullYear]());if(n>=e.year)c[B.hcSetFullYear](g-g%A);if(n===e.week)c[B.hcSetDate](c[B.hcGetDate]()-c[B.hcGetDay]()+m(f,1));g=c[B.hcGetFullYear]();f=c[B.hcGetMonth]();var C=c[B.hcGetDate](), +y=c[B.hcGetHours]();if(B.hcTimezoneOffset||B.hcGetTimezoneOffset)x=(!q||!!B.hcGetTimezoneOffset)&&(k-h>4*e.month||t(h)!==t(k)),c=c.getTime(),c=new B(c+t(c));q=c.getTime();for(h=1;qr&&(!t||b<=w)&&void 0!==b&&h.push(b),b>w&&(q=!0),b=d;else r=e(r),w= +e(w),a=k[t?"minorTickInterval":"tickInterval"],a=p("auto"===a?null:a,this._minorAutoInterval,k.tickPixelInterval/(t?5:1)*(w-r)/((t?m/this.tickPositions.length:m)||1)),a=H(a,null,B(a)),h=G(this.getLinearTickPositions(a,r,w),g),t||(this._minorAutoInterval=a/5);t||(this.tickInterval=a);return h};D.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};D.prototype.lin2log=function(a){return Math.pow(10,a)}})(N);(function(a){var D=a.dateFormat,B=a.each,G=a.extend,H=a.format,p=a.isNumber,l=a.map,r= +a.merge,w=a.pick,t=a.splat,k=a.stop,m=a.syncTimeout,e=a.timeUnits;a.Tooltip=function(){this.init.apply(this,arguments)};a.Tooltip.prototype={init:function(a,e){this.chart=a;this.options=e;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=e.split&&!a.inverted;this.shared=e.shared||this.split},cleanSplit:function(a){B(this.chart.series,function(e){var g=e&&e.tt;g&&(!g.isActive||a?e.tt=g.destroy():g.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,e=this.options;this.label|| +(this.split?this.label=a.g("tooltip"):(this.label=a.label("",0,0,e.shape||"callout",null,null,e.useHTML,null,"tooltip").attr({padding:e.padding,r:e.borderRadius}),this.label.attr({fill:e.backgroundColor,"stroke-width":e.borderWidth}).css(e.style).shadow(e.shadow)),this.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();this.init(this.chart,r(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart, +!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,e,m,f){var d=this,b=d.now,q=!1!==d.options.animation&&!d.isHidden&&(1h-q?h:h-q);else if(v)b[a]=Math.max(g,e+q+f>c?e:e+q);else return!1},x=function(a,c,f,e){var q;ec-d?q=!1:b[a]=ec-f/2?c-f-2:e-f/2;return q},k=function(a){var b=c;c=h;h=b;g=a},y=function(){!1!==A.apply(0,c)?!1!==x.apply(0,h)||g||(k(!0),y()):g?b.x=b.y=0:(k(!0),y())};(f.inverted||1y&&(q=!1);a=(e.series&&e.series.yAxis&&e.series.yAxis.pos)+(e.plotY||0);a-=d.plotTop;f.push({target:e.isHeader?d.plotHeight+c:a,rank:e.isHeader?1:0,size:n.tt.getBBox().height+1,point:e,x:y,tt:A})});this.cleanSplit(); +a.distribute(f,d.plotHeight+c);B(f,function(a){var b=a.point;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:q||b.isHeader?a.x:b.plotX+d.plotLeft+w(m.distance,16),y:a.pos+d.plotTop,anchorX:b.plotX+d.plotLeft,anchorY:b.isHeader?a.pos+d.plotTop-15:b.plotY+d.plotTop})})},updatePosition:function(a){var e=this.chart,g=this.getLabel(),g=(this.options.positioner||this.getPosition).call(this,g.width,g.height,a);this.move(Math.round(g.x),Math.round(g.y||0),a.plotX+e.plotLeft,a.plotY+e.plotTop)}, +getXDateFormat:function(a,h,m){var f;h=h.dateTimeLabelFormats;var d=m&&m.closestPointRange,b,q={millisecond:15,second:12,minute:9,hour:6,day:3},g,c="millisecond";if(d){g=D("%m-%d %H:%M:%S.%L",a.x);for(b in e){if(d===e.week&&+D("%w",a.x)===m.options.startOfWeek&&"00:00:00.000"===g.substr(6)){b="week";break}if(e[b]>d){b=c;break}if(q[b]&&g.substr(q[b])!=="01-01 00:00:00.000".substr(q[b]))break;"week"!==b&&(c=b)}b&&(f=h[b])}else f=h.day;return f||h.year},tooltipFooterHeaderFormatter:function(a,e){var g= +e?"footer":"header";e=a.series;var f=e.tooltipOptions,d=f.xDateFormat,b=e.xAxis,q=b&&"datetime"===b.options.type&&p(a.key),g=f[g+"Format"];q&&!d&&(d=this.getXDateFormat(a,f,b));q&&d&&(g=g.replace("{point.key}","{point.key:"+d+"}"));return H(g,{point:a,series:e})},bodyFormatter:function(a){return l(a,function(a){var e=a.series.tooltipOptions;return(e.pointFormatter||a.point.tooltipFormatter).call(a.point,e.pointFormat)})}}})(N);(function(a){var D=a.addEvent,B=a.attr,G=a.charts,H=a.color,p=a.css,l= +a.defined,r=a.doc,w=a.each,t=a.extend,k=a.fireEvent,m=a.offset,e=a.pick,g=a.removeEvent,h=a.splat,C=a.Tooltip,f=a.win;a.Pointer=function(a,b){this.init(a,b)};a.Pointer.prototype={init:function(a,b){this.options=b;this.chart=a;this.runChartClick=b.chart.events&&!!b.chart.events.click;this.pinchDown=[];this.lastValidTouch={};C&&b.tooltip.enabled&&(a.tooltip=new C(a,b.tooltip),this.followTouchMove=e(b.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,d=b.options.chart, +f=d.zoomType||"",b=b.inverted;/touch/.test(a.type)&&(f=e(d.pinchType,f));this.zoomX=a=/x/.test(f);this.zoomY=f=/y/.test(f);this.zoomHor=a&&!b||f&&b;this.zoomVert=f&&!b||a&&b;this.hasZoom=a||f},normalize:function(a,b){var d,e;a=a||f.event;a.target||(a.target=a.srcElement);e=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;b||(this.chartPosition=b=m(this.chart.container));void 0===e.pageX?(d=Math.max(a.x,a.clientX-b.left),b=a.y):(d=e.pageX-b.left,b=e.pageY-b.top);return t(a,{chartX:Math.round(d), +chartY:Math.round(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};w(this.chart.axes,function(d){b[d.isXAxis?"xAxis":"yAxis"].push({axis:d,value:d.toValue(a[d.horiz?"chartX":"chartY"])})});return b},runPointActions:function(d){var b=this.chart,f=b.series,g=b.tooltip,c=g?g.shared:!1,h=!0,n=b.hoverPoint,m=b.hoverSeries,x,k,y,u=[],I;if(!c&&!m)for(x=0;xb.series.index?-1:1}));if(c)for(x=u.length;x--;)(u[x].x!==u[0].x||u[x].series.noSharedTooltip)&&u.splice(x,1);if(u[0]&&(u[0]!==this.prevKDPoint||g&&g.isHidden)){if(c&& +!u[0].series.noSharedTooltip){for(x=0;xh+k&&(f=h+k),cm+y&&(c=m+y),this.hasDragged=Math.sqrt(Math.pow(l-f,2)+Math.pow(v-c,2)),10x.max&&(l=x.max-c,v=!0);v?(u-=.8*(u-g[f][0]),J||(M-=.8*(M-g[f][1])),p()):g[f]=[u,M];A||(e[f]=F-E,e[q]=c);e=A?1/n:n;m[q]=c;m[f]=l;k[A?a?"scaleY":"scaleX":"scale"+d]=n;k["translate"+d]=e* +E+(u-e*y)},pinch:function(a){var r=this,t=r.chart,k=r.pinchDown,m=a.touches,e=m.length,g=r.lastValidTouch,h=r.hasZoom,C=r.selectionMarker,f={},d=1===e&&(r.inClass(a.target,"highcharts-tracker")&&t.runTrackerClick||r.runChartClick),b={};1b-6&&n(u||d.chartWidth- +2*x-v-e.x)&&(this.itemX=v,this.itemY+=p+this.lastLineHeight+I,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,c);this.lastItemY=p+this.itemY+I;this.lastLineHeight=Math.max(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];f?this.itemX+=c:(this.itemY+=p+g+I,this.lastLineHeight=g);this.offsetWidth=u||Math.max((f?this.itemX-v-l:c)+x,this.offsetWidth)},getAllItems:function(){var a=[];l(this.chart.series,function(d){var b=d&&d.options;d&&m(b.showInLegend,p(b.linkedTo)? +!1:void 0,!0)&&(a=a.concat(d.legendItems||("point"===b.legendType?d.data:d)))});return a},adjustMargins:function(a,d){var b=this.chart,e=this.options,f=e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0);e.floating||l([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(c,g){c.test(f)&&!p(a[g])&&(b[t[g]]=Math.max(b[t[g]],b.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*e[g%2?"x":"y"]+m(e.margin,12)+d[g]))})},render:function(){var a=this,d=a.chart,b=d.renderer, +e=a.group,h,c,m,n,k=a.box,x=a.options,p=a.padding;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;e||(a.group=e=b.g("legend").attr({zIndex:7}).add(),a.contentGroup=b.g().attr({zIndex:1}).add(e),a.scrollGroup=b.g().add(a.contentGroup));a.renderTitle();h=a.getAllItems();g(h,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});x.reversed&&h.reverse();a.allItems=h;a.display=c=!!h.length;a.lastLineHeight=0;l(h,function(b){a.renderItem(b)}); +m=(x.width||a.offsetWidth)+p;n=a.lastItemY+a.lastLineHeight+a.titleHeight;n=a.handleOverflow(n);n+=p;k||(a.box=k=b.rect().addClass("highcharts-legend-box").attr({r:x.borderRadius}).add(e),k.isNew=!0);k.attr({stroke:x.borderColor,"stroke-width":x.borderWidth||0,fill:x.backgroundColor||"none"}).shadow(x.shadow);0b&&!1!==h.enabled?(this.clipHeight=g=Math.max(b-20-this.titleHeight-I,0),this.currentPage=m(this.currentPage,1),this.fullHeight=a,l(v,function(a,b){var c=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var d=u.length;if(!d||c-u[d-1]>g&&(r||c)!==u[d-1])u.push(r||c),d++;b===v.length-1&&c+a-u[d-1]>g&&u.push(c);c!==r&&(r=c)}),n||(n=d.clipRect= +e.clipRect(0,I,9999,0),d.contentGroup.clip(n)),t(g),y||(this.nav=y=e.g().attr({zIndex:1}).add(this.group),this.up=e.symbol("triangle",0,0,p,p).on("click",function(){d.scroll(-1,k)}).add(y),this.pager=e.text("",15,10).addClass("highcharts-legend-navigation").css(h.style).add(y),this.down=e.symbol("triangle-down",0,0,p,p).on("click",function(){d.scroll(1,k)}).add(y)),d.scroll(0),a=b):y&&(t(),y.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,d){var b=this.pages, +f=b.length;a=this.currentPage+a;var g=this.clipHeight,c=this.options.navigation,h=this.pager,n=this.padding;a>f&&(a=f);0f&&(g=typeof a[0],"string"===g?e.name=a[0]:"number"===g&&(e.x=a[0]),d++);b=h.value;)h=e[++g];h&&h.color&&!this.options.color&&(this.color=h.color);return h},destroy:function(){var a=this.series.chart,e=a.hoverPoints,g;a.pointCount--;e&&(this.setState(),H(e,this),e.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)k(this), +this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(g in this)this[g]=null},destroyElements:function(){for(var a=["graphic","dataLabel","dataLabelUpper","connector","shadowGroup"],e,g=6;g--;)e=a[g],this[e]&&(this[e]=this[e].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var e=this.series,g= +e.tooltipOptions,h=t(g.valueDecimals,""),k=g.valuePrefix||"",f=g.valueSuffix||"";B(e.pointArrayMap||["y"],function(d){d="{point."+d;if(k||f)a=a.replace(d+"}",k+d+"}"+f);a=a.replace(d+"}",d+":,."+h+"f}")});return l(a,{point:this,series:this.series})},firePointEvent:function(a,e,g){var h=this,k=this.series.options;(k.point.events[a]||h.options&&h.options.events&&h.options.events[a])&&this.importEvents();"click"===a&&k.allowPointSelect&&(g=function(a){h.select&&h.select(null,a.ctrlKey||a.metaKey||a.shiftKey)}); +p(this,a,e,g)},visible:!0}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.correctFloat,l=a.Date,r=a.defaultOptions,w=a.defaultPlotOptions,t=a.defined,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.fireEvent,C=a.grep,f=a.isArray,d=a.isNumber,b=a.isString,q=a.merge,E=a.pick,c=a.removeEvent,F=a.splat,n=a.stableSort,A=a.SVGElement,x=a.syncTimeout,J=a.win;a.Series=a.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{}, +marker:{lineWidth:0,lineColor:"#ffffff",radius:4,states:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===this.y?"":a.numberFormat(this.y,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{lineWidthPlus:1, +marker:{},halo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3},{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],coll:"series",init:function(a,b){var c=this,d,e,f=a.series,u,y=function(a,b){return E(a.options.index,a._i)-E(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();g(c,{name:b.name,state:"",visible:!1!==b.visible,selected:!0=== +b.selected});e=b.events;for(d in e)D(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();k(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);c.isCartesian&&(a.hasCartesianSeries=!0);f.length&&(u=f[f.length-1]);c._i=E(u&&u._i,-1)+1;f.push(c);n(f,y);this.yAxis&&n(this.yAxis.series,y);k(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart, +d;k(a.axisTypes||[],function(f){k(c[f],function(c){d=c.options;if(b[f]===d.index||void 0!==b[f]&&b[f]===d.id||void 0===b[f]&&0===d.index)c.series.push(a),a[f]=c,c.isDirty=!0});a[f]||a.optionalAxis===f||e(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,e=arguments,f=d(b)?function(d){var e="y"===d&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=e}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(e,2))};k(c.parallelArrays,f)},autoIncrement:function(){var a=this.options, +b=this.xIncrement,c,d=a.pointIntervalUnit,b=E(b,a.pointStart,0);this.pointInterval=c=E(this.pointInterval,a.pointInterval,1);d&&(a=new l(b),"day"===d?a=+a[l.hcSetDate](a[l.hcGetDate]()+c):"month"===d?a=+a[l.hcSetMonth](a[l.hcGetMonth]()+c):"year"===d&&(a=+a[l.hcSetFullYear](a[l.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=q(e,c.series,a);this.tooltipOptions= +q(r.tooltip,r.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);null===e.marker&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();!c.negativeColor&&!c.negativeFillColor||c.zones||a.push({value:c[this.zoneAxis+"Threshold"]||c.threshold||0,className:"highcharts-negative",color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&t(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor}); +return c},getCyclic:function(a,b,c){var d,e=this.userOptions,f=a+"Index",g=a+"Counter",u=c?c.length:E(this.chart.options.chart[a+"Count"],this.chart[a+"Count"]);b||(d=E(e[f],e["_"+f]),t(d)||(e["_"+f]=d=this.chart[g]%u,this.chart[g]+=1),c&&(b=c[d]));void 0!==d&&(this[f]=d);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic("color",this.options.color||w[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol, +this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(a,c,g,n){var u=this,q=u.points,h=q&&q.length||0,y,m=u.options,x=u.chart,A=null,I=u.xAxis,l=m.turboThreshold,p=this.xData,r=this.yData,F=(y=u.pointArrayMap)&&y.length;a=a||[];y=a.length;c=E(c,!0);if(!1!==n&&y&&h===y&&!u.cropped&&!u.hasGroupedData&&u.visible)k(a,function(a,b){q[b].update&&a!==m.data[b]&&q[b].update(a,!1,null,!1)});else{u.xIncrement=null;u.colorCounter=0;k(this.parallelArrays,function(a){u[a+ +"Data"].length=0});if(l&&y>l){for(g=0;null===A&&gh||this.forceCrop))if(b[d-1]l)b=[],c=[];else if(b[0]l)f=this.cropData(this.xData,this.yData,A,l),b=f.xData,c=f.yData,f=f.start,g=!0;for(h=b.length||1;--h;)d=x?y(b[h])-y(b[h-1]):b[h]-b[h-1],0d&&this.requireSorting&&e(15);this.cropped=g;this.cropStart=f;this.processedXData=b;this.processedYData=c;this.closestPointRange=n},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,n=E(this.cropShoulder,1),u;for(u=0;u=c){f=Math.max(0,u- +n);break}for(c=u;cd){g=c+n;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,n=this.cropStart||0,q,h=this.hasGroupedData,k,m=[],x;b||h||(b=[],b.length=a.length,b=this.data=b);for(x=0;x=q&&(c[x-1]||k)<=h,y&&k)if(y=m.length)for(;y--;)null!==m[y]&&(g[n++]=m[y]);else g[n++]=m;this.dataMin=H(g);this.dataMax=G(g)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,e=c.categories,f=this.yAxis,g=this.points,n=g.length,q=!!this.modifyValue,h=a.pointPlacement,k="between"===h||d(h),m=a.threshold,x=a.startFromThreshold?m:0,A,l,r,F,J=Number.MAX_VALUE;"between"===h&&(h=.5);d(h)&&(h*=E(a.pointRange||c.pointRange)); +for(a=0;a=B&&(C.isNull=!0);C.plotX=A=p(Math.min(Math.max(-1E5,c.translate(w,0,0,0,1,h,"flags"===this.type)),1E5));b&&this.visible&&!C.isNull&&D&&D[w]&&(F=this.getStackIndicator(F,w,this.index),G=D[w],B=G.points[F.key],l=B[0],B=B[1],l===x&&F.key===D[w].base&&(l=E(m,f.min)),f.isLog&&0>=l&&(l=null),C.total=C.stackTotal=G.total,C.percentage=G.total&&C.y/G.total*100,C.stackY= +B,G.setOffset(this.pointXOffset||0,this.barW||0));C.yBottom=t(l)?f.translate(l,0,1,0,1):null;q&&(B=this.modifyValue(B,C));C.plotY=l="number"===typeof B&&Infinity!==B?Math.min(Math.max(-1E5,f.translate(B,0,1,0,1)),1E5):void 0;C.isInside=void 0!==l&&0<=l&&l<=f.len&&0<=A&&A<=c.len;C.clientX=k?p(c.translate(w,0,0,0,1,h)):A;C.negative=C.y<(m||0);C.category=e&&void 0!==e[C.x]?e[C.x]:C.x;C.isNull||(void 0!==r&&(J=Math.min(J,Math.abs(A-r))),r=A)}this.closestPointRangePx=J},getValidPoints:function(a,b){var c= +this.chart;return C(a||this.points||[],function(a){return b&&!c.isInsidePlot(a.plotX,a.plotY,c.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,e=b.inverted,f=this.clipBox,g=f||b.clipBox,n=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(),q=b[n],h=b[n+"m"];q||(a&&(g.width=0,b[n+"m"]=h=d.clipRect(-99,e?-b.plotLeft:-b.plotTop,99,e?b.chartWidth:b.chartHeight)),b[n]=q=d.clipRect(g),q.count={length:0});a&&!q.count[this.index]&& +(q.count[this.index]=!0,q.count.length+=1);!1!==c.clip&&(this.group.clip(a||f?q:b.clipRect),this.markerGroup.clip(h),this.sharedClipKey=n);a||(q.count[this.index]&&(delete q.count[this.index],--q.count.length),0===q.count.length&&n&&b[n]&&(f||(b[n]=b[n].destroy()),b[n+"m"]&&(b[n+"m"]=b[n+"m"].destroy())))},animate:function(a){var b=this.chart,c=B(this.options.animation),d;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+ +99},c),this.animate=null)},afterAnimate:function(){this.setClip();h(this,"afterAnimate")},drawPoints:function(){var a=this.points,b=this.chart,c,e,f,g,n=this.options.marker,q,h,k,m,x=this.markerGroup,A=E(n.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>2*n.radius);if(!1!==n.enabled||this._hasPointMarkers)for(e=a.length;e--;)f=a[e],c=f.plotY,g=f.graphic,q=f.marker||{},h=!!f.marker,k=A&&void 0===q.enabled||q.enabled,m=f.isInside,k&&d(c)&&null!==f.y?(c=E(q.symbol,this.symbol),f.hasImage= +0===c.indexOf("url"),k=this.markerAttribs(f,f.selected&&"select"),g?g[m?"show":"hide"](!0).animate(k):m&&(0e&&b.shadow));g&&(g.startX=c.xMap, +g.isArea=c.isArea)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],n,q=this.graph,h=this.area,m=Math.max(b.chartWidth,b.chartHeight),x=this[(this.zoneAxis||"y")+"Axis"],A,l,p=b.inverted,r,F,C,t,J=!1;d.length&&(q||h)&&x&&void 0!==x.min&&(l=x.reversed,r=x.horiz,q&&q.hide(),h&&h.hide(),A=x.getExtremes(),k(d,function(d,u){e=l?r?b.plotWidth:0:r?0:x.toPixels(A.min);e=Math.min(Math.max(E(f,e),0),m);f=Math.min(Math.max(Math.round(x.toPixels(E(d.value,A.max), +!0)),0),m);J&&(e=f=x.toPixels(A.max));F=Math.abs(e-f);C=Math.min(e,f);t=Math.max(e,f);x.isXAxis?(n={x:p?t:C,y:0,width:F,height:m},r||(n.x=b.plotHeight-n.x)):(n={x:0,y:p?t:C,width:m,height:F},r&&(n.y=b.plotWidth-n.y));p&&c.isVML&&(n=x.isXAxis?{x:0,y:l?C:t,height:n.width,width:b.chartWidth}:{x:n.y-b.plotLeft-b.spacingBox.x,y:0,width:n.height,height:b.chartHeight});g[u]?g[u].animate(n):(g[u]=c.clipRect(n),q&&a["zone-graph-"+u].clip(g[u]),h&&a["zone-area-"+u].clip(g[u]));J=d.value>A.max}),this.clips= +g)},invertGroups:function(a){function b(){var b={width:c.yAxis.len,height:c.xAxis.len};k(["group","markerGroup"],function(d){c[d]&&c[d].attr(b).invert(a)})}var c=this,d;c.xAxis&&(d=D(c.chart,"resize",b),D(c,"destroy",d),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({zIndex:d||.1}).add(e),f.addClass("highcharts-series-"+this.index+" highcharts-"+this.type+"-series highcharts-color-"+this.colorIndex+" "+(this.options.className|| +"")));f.attr({visibility:c})[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=!!a.animate&&b.renderer.isSVG&&B(d.animation).duration,f=a.visible?"inherit":"hidden",g=d.zIndex,n=a.hasRendered,q=b.seriesGroup,h=b.inverted;c=a.plotGroup("group","series",f,g,q);a.markerGroup= +a.plotGroup("markerGroup","markers",f,g,q);e&&a.animate(!0);c.inverted=a.isCartesian?h:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(h);!1===d.clip||a.sharedClipKey||n||c.clip(b.clipRect);e&&a.animate();n||(a.animationTimeout=x(function(){a.afterAnimate()},e));a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirty|| +this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:E(d&&d.left,a.plotLeft),translateY:E(e&&e.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)}, +buildKDTree:function(){function a(c,d,e){var f,g;if(g=c&&c.length)return f=b.kdAxisArray[d%e],c.sort(function(a,b){return a[f]-b[f]}),g=Math.floor(g/2),{point:c[g],left:a(c.slice(0,g),d+1,e),right:a(c.slice(g+1),d+1,e)}}var b=this,c=b.kdDimensions;delete b.kdTree;x(function(){b.kdTree=a(b.getValidPoints(null,!b.directTouch),c,c)},b.options.kdNow?0:1)},searchKDTree:function(a,b){function c(a,b,n,q){var h=b.point,u=d.kdAxisArray[n%q],k,m,x=h;m=t(a[e])&&t(h[e])?Math.pow(a[e]-h[e],2):null;k=t(a[f])&& +t(h[f])?Math.pow(a[f]-h[f],2):null;k=(m||0)+(k||0);h.dist=t(k)?Math.sqrt(k):Number.MAX_VALUE;h.distX=t(m)?Math.sqrt(m):Number.MAX_VALUE;u=a[u]-h[u];k=0>u?"left":"right";m=0>u?"right":"left";b[k]&&(k=c(a,b[k],n+1,q),x=k[g]A;)l--;this.updateParallelArrays(h,"splice",l,0,0);this.updateParallelArrays(h,l);n&&h.name&&(n[A]=h.name);q.splice(l,0,a);m&&(this.data.splice(l,0,null),this.processData());"point"===c.legendType&&this.generatePoints();d&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(h,"shift"),q.shift()));this.isDirtyData=this.isDirty=!0;b&&g.redraw(e)},removePoint:function(a, +b,d){var c=this,e=c.data,f=e[a],g=c.points,n=c.chart,h=function(){g&&g.length===e.length&&g.splice(a,1);e.splice(a,1);c.options.data.splice(a,1);c.updateParallelArrays(f||{series:c},"splice",a,1);f&&f.destroy();c.isDirty=!0;c.isDirtyData=!0;b&&n.redraw()};q(d,n);b=C(b,!0);f?f.firePointEvent("remove",null,h):h()},remove:function(a,b,d){function c(){e.destroy();f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();C(a,!0)&&f.redraw(b)}var e=this,f=e.chart;!1!==d?k(e,"remove",null,c):c()},update:function(a, +d){var c=this,e=this.chart,f=this.userOptions,g=this.type,q=a.type||f.type||e.options.chart.type,u=b[g].prototype,m=["group","markerGroup","dataLabelsGroup"],k;if(q&&q!==g||void 0!==a.zIndex)m.length=0;r(m,function(a){m[a]=c[a];delete c[a]});a=h(f,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1,null,!1);for(k in u)this[k]=void 0;t(this,b[q||g].prototype);r(m,function(a){c[a]=m[a]});this.init(e,a);e.linkSeries();C(d,!0)&&e.redraw(!1)}});t(G.prototype, +{update:function(a,b){var c=this.chart;a=c.options[this.coll][this.options.index]=h(this.userOptions,a);this.destroy(!0);this.init(c,t(a,{events:void 0}));c.isDirtyBox=!0;C(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);w(b.axes,this);w(b[c],this);b.options[c].splice(this.options.index,1);r(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;C(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a}, +b)},setCategories:function(a,b){this.update({categories:a},b)}})})(N);(function(a){var D=a.color,B=a.each,G=a.map,H=a.pick,p=a.Series,l=a.seriesType;l("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(){var a=[],l=[],p=this.xAxis,k=this.yAxis,m=k.stacks[this.stackKey],e={},g=this.points,h=this.index,C=k.series,f=C.length,d,b=H(k.options.reversedStacks,!0)?1:-1,q,E;if(this.options.stacking){for(q=0;qa&&t>l?(t=Math.max(a,l),m=2*l-t):tH&& +m>l?(m=Math.max(H,l),t=2*l-m):m=Math.abs(g)&&.5a.closestPointRange*a.xAxis.transA,k=a.borderWidth=r(h.borderWidth,k?0:1),f=a.yAxis,d=a.translatedThreshold=f.getThreshold(h.threshold),b=r(h.minPointLength,5),q=a.getColumnMetrics(),m=q.width,c=a.barW=Math.max(m,1+2*k),l=a.pointXOffset= +q.offset;g.inverted&&(d-=.5);h.pointPadding&&(c=Math.ceil(c));w.prototype.translate.apply(a);G(a.points,function(e){var n=r(e.yBottom,d),q=999+Math.abs(n),q=Math.min(Math.max(-q,e.plotY),f.len+q),h=e.plotX+l,k=c,u=Math.min(q,n),p,t=Math.max(q,n)-u;Math.abs(t)b?n-b:d-(p?b:0));e.barX=h;e.pointWidth=m;e.tooltipPos=g.inverted?[f.len+f.pos-g.plotLeft-q,a.xAxis.len-h-k/2,t]:[h+k/2,q+f.pos-g.plotTop,t];e.shapeType="rect";e.shapeArgs= +a.crispCol.apply(a,e.isNull?[e.plotX,f.len/2,0,0]:[h,u,k,t])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},pointAttribs:function(a,g){var e=this.options,k=this.pointAttrToOptions||{},f=k.stroke||"borderColor",d=k["stroke-width"]||"borderWidth",b=a&&a.color||this.color,q=a[f]||e[f]||this.color||b,k=e.dashStyle,m;a&&this.zones.length&&(b=(b=a.getZone())&&b.color||a.options.color|| +this.color);g&&(g=e.states[g],m=g.brightness,b=g.color||void 0!==m&&B(b).brighten(g.brightness).get()||b,q=g[f]||q,k=g.dashStyle||k);a={fill:b,stroke:q,"stroke-width":a[d]||e[d]||this[d]||0};e.borderRadius&&(a.r=e.borderRadius);k&&(a.dashstyle=k);return a},drawPoints:function(){var a=this,g=this.chart,h=a.options,m=g.renderer,f=h.animationLimit||250,d;G(a.points,function(b){var e=b.graphic;p(b.plotY)&&null!==b.y?(d=b.shapeArgs,e?(k(e),e[g.pointCountt;++t)k=r[t],a=2>t||2===t&&/%$/.test(k),r[t]=B(k,[l,H,w,r[2]][t])+(a?p:0);r[3]>r[2]&&(r[3]=r[2]);return r}}})(N);(function(a){var D=a.addEvent,B=a.defined,G=a.each,H=a.extend,p=a.inArray,l=a.noop,r=a.pick,w=a.Point,t=a.Series,k=a.seriesType,m=a.setAnimation;k("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return null===this.y? +void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,states:{hover:{brightness:.1,shadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var e=this,h=e.points,k=e.startAngleRad;a||(G(h,function(a){var d= +a.graphic,b=a.shapeArgs;d&&(d.attr({r:a.startR||e.center[3]/2,start:k,end:k}),d.animate({r:b.r,start:b.start,end:b.end},e.options.animation))}),e.animate=null)},updateTotals:function(){var a,g=0,h=this.points,k=h.length,f,d=this.options.ignoreHiddenPoint;for(a=0;af.y&&(f.y=null),g+=d&&!f.visible?0:f.y;this.total=g;for(a=0;a1.5*Math.PI?q-=2*Math.PI:q<-Math.PI/2&&(q+=2*Math.PI);t.slicedTranslation={translateX:Math.round(Math.cos(q)*k),translateY:Math.round(Math.sin(q)*k)};d=Math.cos(q)*a[2]/2;b=Math.sin(q)*a[2]/2;t.tooltipPos=[a[0]+.7*d,a[1]+.7*b];t.half=q<-Math.PI/2||q>Math.PI/2?1:0;t.angle=q;f=Math.min(f,n/5);t.labelPos=[a[0]+d+Math.cos(q)*n,a[1]+b+Math.sin(q)*n,a[0]+d+Math.cos(q)*f,a[1]+b+Math.sin(q)* +f,a[0]+d,a[1]+b,0>n?"center":t.half?"right":"left",q]}},drawGraph:null,drawPoints:function(){var a=this,g=a.chart.renderer,h,k,f,d,b=a.options.shadow;b&&!a.shadowGroup&&(a.shadowGroup=g.g("shadow").add(a.group));G(a.points,function(e){if(null!==e.y){k=e.graphic;d=e.shapeArgs;h=e.sliced?e.slicedTranslation:{};var q=e.shadowGroup;b&&!q&&(q=e.shadowGroup=g.g("shadow").add(a.shadowGroup));q&&q.attr(h);f=a.pointAttribs(e,e.selected&&"select");k?k.setRadialReference(a.center).attr(f).animate(H(d,h)):(e.graphic= +k=g[e.shapeType](d).addClass(e.getClassName()).setRadialReference(a.center).attr(h).add(a.group),e.visible||k.attr({visibility:"hidden"}),k.attr(f).attr({"stroke-linejoin":"round"}).shadow(b,q))}})},searchPoint:l,sortByAngle:function(a,g){a.sort(function(a,e){return void 0!==a.angle&&(e.angle-a.angle)*g})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:l},{init:function(){w.prototype.init.apply(this,arguments);var a=this,g;a.name=r(a.name,"Slice"); +g=function(e){a.slice("select"===e.type)};D(a,"select",g);D(a,"unselect",g);return a},setVisible:function(a,g){var e=this,k=e.series,f=k.chart,d=k.options.ignoreHiddenPoint;g=r(g,d);a!==e.visible&&(e.visible=e.options.visible=a=void 0===a?!e.visible:a,k.options.data[p(e,k.data)]=e.options,G(["graphic","dataLabel","connector","shadowGroup"],function(b){if(e[b])e[b][a?"show":"hide"](!0)}),e.legendItem&&f.legend.colorizeItem(e,a),a||"hover"!==e.state||e.setState(""),d&&(k.isDirty=!0),g&&f.redraw())}, +slice:function(a,g,h){var e=this.series;m(h,e.chart);r(g,!0);this.sliced=this.options.sliced=a=B(a)?a:!this.sliced;e.options.data[p(this,e.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+a,e.r+a,{innerR:this.shapeArgs.r,start:e.start,end:e.end})}})})(N);(function(a){var D= +a.addEvent,B=a.arrayMax,G=a.defined,H=a.each,p=a.extend,l=a.format,r=a.map,w=a.merge,t=a.noop,k=a.pick,m=a.relativeLength,e=a.Series,g=a.seriesTypes,h=a.stableSort,C=a.stop;a.distribute=function(a,d){function b(a,b){return a.target-b.target}var e,f=!0,c=a,g=[],n;n=0;for(e=a.length;e--;)n+=a[e].size;if(n>d){h(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(n=e=0;n<=d;)n+=a[e].size,e++;g=a.splice(e-1,a.length)}h(a,b);for(a=r(a,function(a){return{size:a.size,targets:[a.target]}});f;){for(e=a.length;e--;)f= +a[e],n=(Math.min.apply(0,f.targets)+Math.max.apply(0,f.targets))/2,f.pos=Math.min(Math.max(0,n-f.size/2),d-f.size);e=a.length;for(f=!1;e--;)0a[e].pos&&(a[e-1].size+=a[e].size,a[e-1].targets=a[e-1].targets.concat(a[e].targets),a[e-1].pos+a[e-1].size>d&&(a[e-1].pos=d-a[e-1].size),a.splice(e,1),f=!0)}e=0;H(a,function(a){var b=0;H(a.targets,function(){c[e].pos=a.pos+b;b+=c[e].size;e++})});c.push.apply(c,g);h(c,b)};e.prototype.drawDataLabels=function(){var a=this,d=a.options, +b=d.dataLabels,e=a.points,g,c,h=a.hasRendered||0,n,m,x=k(b.defer,!0),r=a.chart.renderer;if(b.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(b),m=a.plotGroup("dataLabelsGroup","data-labels",x&&!h?"hidden":"visible",b.zIndex||6),x&&(m.attr({opacity:+h}),h||D(a,"afterAnimate",function(){a.visible&&m.show(!0);m[d.animation?"animate":"attr"]({opacity:1},{duration:200})})),c=b,H(e,function(e){var f,q=e.dataLabel,h,x,A=e.connector,y=!0,t,z={};g=e.dlOptions||e.options&&e.options.dataLabels; +f=k(g&&g.enabled,c.enabled)&&null!==e.y;if(q&&!f)e.dataLabel=q.destroy();else if(f){b=w(c,g);t=b.style;f=b.rotation;h=e.getLabelConfig();n=b.format?l(b.format,h):b.formatter.call(h,b);t.color=k(b.color,t.color,a.color,"#000000");if(q)G(n)?(q.attr({text:n}),y=!1):(e.dataLabel=q=q.destroy(),A&&(e.connector=A.destroy()));else if(G(n)){q={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:f,padding:b.padding,zIndex:1};"contrast"===t.color&&(z.color=b.inside|| +0>b.distance||d.stacking?r.getContrast(e.color||a.color):"#000000");d.cursor&&(z.cursor=d.cursor);for(x in q)void 0===q[x]&&delete q[x];q=e.dataLabel=r[f?"text":"label"](n,0,-9999,b.shape,null,null,b.useHTML,null,"data-label").attr(q);q.addClass("highcharts-data-label-color-"+e.colorIndex+" "+(b.className||""));q.css(p(t,z));q.add(m);q.shadow(b.shadow)}q&&a.alignDataLabel(e,q,b,null,y)}})};e.prototype.alignDataLabel=function(a,d,b,e,g){var c=this.chart,f=c.inverted,n=k(a.plotX,-9999),q=k(a.plotY, +-9999),h=d.getBBox(),m,l=b.rotation,u=b.align,r=this.visible&&(a.series.forceDL||c.isInsidePlot(n,Math.round(q),f)||e&&c.isInsidePlot(n,f?e.x+1:e.y+e.height-1,f)),t="justify"===k(b.overflow,"justify");r&&(m=b.style.fontSize,m=c.renderer.fontMetrics(m,d).b,e=p({x:f?c.plotWidth-q:n,y:Math.round(f?c.plotHeight-n:q),width:0,height:0},e),p(b,{width:h.width,height:h.height}),l?(t=!1,f=c.renderer.rotCorr(m,l),f={x:e.x+b.x+e.width/2+f.x,y:e.y+b.y+{top:0,middle:.5,bottom:1}[b.verticalAlign]*e.height},d[g? +"attr":"animate"](f).attr({align:u}),n=(l+720)%360,n=180n,"left"===u?f.y-=n?h.height:0:"center"===u?(f.x-=h.width/2,f.y-=h.height/2):"right"===u&&(f.x-=h.width,f.y-=n?0:h.height)):(d.align(b,null,e),f=d.alignAttr),t?this.justifyDataLabel(d,b,f,h,e,g):k(b.crop,!0)&&(r=c.isInsidePlot(f.x,f.y)&&c.isInsidePlot(f.x+h.width,f.y+h.height)),b.shape&&!l&&d.attr({anchorX:a.plotX,anchorY:a.plotY}));r||(C(d),d.attr({y:-9999}),d.placed=!1)};e.prototype.justifyDataLabel=function(a,d,b,e,g,c){var f=this.chart, +n=d.align,h=d.verticalAlign,q,k,m=a.box?0:a.padding||0;q=b.x+m;0>q&&("right"===n?d.align="left":d.x=-q,k=!0);q=b.x+e.width-m;q>f.plotWidth&&("left"===n?d.align="right":d.x=f.plotWidth-q,k=!0);q=b.y+m;0>q&&("bottom"===h?d.verticalAlign="top":d.y=-q,k=!0);q=b.y+e.height-m;q>f.plotHeight&&("top"===h?d.verticalAlign="bottom":d.y=f.plotHeight-q,k=!0);k&&(a.placed=!c,a.align(d,null,g))};g.pie&&(g.pie.prototype.drawDataLabels=function(){var f=this,d=f.data,b,g=f.chart,h=f.options.dataLabels,c=k(h.connectorPadding, +10),m=k(h.connectorWidth,1),n=g.plotWidth,l=g.plotHeight,x,p=h.distance,y=f.center,u=y[2]/2,t=y[1],w=0k-2?A:P,e),v._attr={visibility:S,align:D[6]},v._pos={x:L+h.x+({left:c,right:-c}[D[6]]||0),y:P+h.y-10},D.x=L,D.y=P,null===f.options.size&&(C=v.width,L-Cn-c&&(T[1]=Math.max(Math.round(L+ +C-n+c),T[1])),0>P-G/2?T[0]=Math.max(Math.round(-P+G/2),T[0]):P+G/2>l&&(T[2]=Math.max(Math.round(P+G/2-l),T[2])))}),0===B(T)||this.verifyDataLabelOverflow(T))&&(this.placeDataLabels(),w&&m&&H(this.points,function(a){var b;x=a.connector;if((v=a.dataLabel)&&v._pos&&a.visible){S=v._attr.visibility;if(b=!x)a.connector=x=g.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+a.colorIndex).add(f.dataLabelsGroup),x.attr({"stroke-width":m,stroke:h.connectorColor||a.color||"#666666"}); +x[b?"attr":"animate"]({d:f.connectorPath(a.labelPos)});x.attr("visibility",S)}else x&&(a.connector=x.destroy())}))},g.pie.prototype.connectorPath=function(a){var d=a.x,b=a.y;return k(this.options.dataLabels.softConnector,!0)?["M",d+("left"===a[6]?5:-5),b,"C",d,b,2*a[2]-a[4],2*a[3]-a[5],a[2],a[3],"L",a[4],a[5]]:["M",d+("left"===a[6]?5:-5),b,"L",a[2],a[3],"L",a[4],a[5]]},g.pie.prototype.placeDataLabels=function(){H(this.points,function(a){var d=a.dataLabel;d&&a.visible&&((a=d._pos)?(d.attr(d._attr), +d[d.moved?"animate":"attr"](a),d.moved=!0):d&&d.attr({y:-9999}))})},g.pie.prototype.alignDataLabel=t,g.pie.prototype.verifyDataLabelOverflow=function(a){var d=this.center,b=this.options,e=b.center,f=b.minSize||80,c,g;null!==e[0]?c=Math.max(d[2]-Math.max(a[1],a[3]),f):(c=Math.max(d[2]-a[1]-a[3],f),d[0]+=(a[3]-a[1])/2);null!==e[1]?c=Math.max(Math.min(c,d[2]-Math.max(a[0],a[2])),f):(c=Math.max(Math.min(c,d[2]-a[0]-a[2]),f),d[1]+=(a[0]-a[2])/2);ck(this.translatedThreshold,f.yAxis.len)),m=k(b.inside,!!this.options.stacking);n&&(g=w(n),0>g.y&&(g.height+=g.y,g.y=0),n=g.y+g.height-f.yAxis.len,0a+e||c+nb+f||g+hthis.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints, +e;d&&r(d,function(a){a.setState()});r("xy"===b?[1,0]:[1],function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"],d=d?"mouseDownX":"mouseDownY",g=c[d],n=(b.pointRange||0)/2,h=b.getExtremes(),q=b.toValue(g-f,!0)+n,n=b.toValue(g+b.len-f,!0)-n,g=g>f;b.series.length&&(g||q>Math.min(h.dataMin,h.min))&&(!g||n=p(k.minWidth,0)&&this.chartHeight>=p(k.minHeight,0)};void 0===l._id&&(l._id=a.uniqueKey());m=m.call(this);!r[l._id]&&m?l.chartOptions&&(r[l._id]=this.currentOptions(l.chartOptions),this.update(l.chartOptions,w)):r[l._id]&&!m&&(this.update(r[l._id],w),delete r[l._id])};D.prototype.currentOptions=function(a){function p(a,m,e){var g,h;for(g in a)if(-1< +G(g,["series","xAxis","yAxis"]))for(a[g]=l(a[g]),e[g]=[],h=0;hd.length||void 0===h)return a.call(this,g,h,k,f);x=d.length;for(c=0;ck;d[c]5*b||w){if(d[c]>u){for(r=a.call(this,g,d[e],d[c],f);r.length&&r[0]<=u;)r.shift();r.length&&(u=r[r.length-1]);y=y.concat(r)}e=c+1}if(w)break}a= +r.info;if(q&&a.unitRange<=m.hour){c=y.length-1;for(e=1;ek?a-1:a;for(M=void 0;q--;)e=c[q],k=M-e,M&&k<.8*C&&(null===t||k<.8*t)?(n[y[q]]&&!n[y[q+1]]?(k=q+1,M=e):k=q,y.splice(k,1)):M=e}return y});w(B.prototype,{beforeSetTickPositions:function(){var a, +g=[],h=!1,k,f=this.getExtremes(),d=f.min,b=f.max,q,m=this.isXAxis&&!!this.options.breaks,f=this.options.ordinal,c=this.chart.options.chart.ignoreHiddenSeries;if(f||m){r(this.series,function(b,d){if(!(c&&!1===b.visible||!1===b.takeOrdinalPosition&&!m)&&(g=g.concat(b.processedXData),a=g.length,g.sort(function(a,b){return a-b}),a))for(d=a-1;d--;)g[d]===g[d+1]&&g.splice(d,1)});a=g.length;if(2k||b-g[g.length- +1]>k)&&(h=!0)}h?(this.ordinalPositions=g,k=this.val2lin(Math.max(d,g[0]),!0),q=Math.max(this.val2lin(Math.min(b,g[g.length-1]),!0),1),this.ordinalSlope=b=(b-d)/(q-k),this.ordinalOffset=d-k*b):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=f&&h;this.groupIntervalFactor=null},val2lin:function(a,g){var e=this.ordinalPositions;if(e){var k=e.length,f,d;for(f=k;f--;)if(e[f]===a){d=f;break}for(f=k-1;f--;)if(a>e[f]||0===f){a=(a-e[f])/(e[f+1]-e[f]);d=f+a;break}g=g?d:this.ordinalSlope* +(d||0)+this.ordinalOffset}else g=a;return g},lin2val:function(a,g){var e=this.ordinalPositions;if(e){var k=this.ordinalSlope,f=this.ordinalOffset,d=e.length-1,b;if(g)0>a?a=e[0]:a>d?a=e[d]:(d=Math.floor(a),b=a-d);else for(;d--;)if(g=k*d+f,a>=g){k=k*(d+1)+f;b=(a-g)/(k-g);break}return void 0!==b&&void 0!==e[d]?e[d]+(b?b*(e[d+1]-e[d]):0):a}return a},getExtendedPositions:function(){var a=this.chart,g=this.series[0].currentDataGrouping,h=this.ordinalIndex,k=g?g.count+g.unitName:"raw",f=this.getExtremes(), +d,b;h||(h=this.ordinalIndex={});h[k]||(d={series:[],chart:a,getExtremes:function(){return{min:f.dataMin,max:f.dataMax}},options:{ordinal:!0},val2lin:B.prototype.val2lin},r(this.series,function(e){b={xAxis:d,xData:e.xData,chart:a,destroyGroupedData:t};b.options={dataGrouping:g?{enabled:!0,forced:!0,approximation:"open",units:[[g.unitName,[g.count]]]}:{enabled:!1}};e.processData.apply(b);d.series.push(b)}),this.beforeSetTickPositions.apply(d),h[k]=d.ordinalPositions);return h[k]},getGroupIntervalFactor:function(a, +g,h){var e;h=h.processedXData;var f=h.length,d=[];e=this.groupIntervalFactor;if(!e){for(e=0;ed?(l=p,t=e.ordinalPositions?e:p):(l=e.ordinalPositions?e:p,t=p),p=t.ordinalPositions,q>p[p.length-1]&&p.push(q),this.fixedRange=c-m,d=e.toFixedRange(null,null,n.apply(l,[x.apply(l,[m,!0])+d,!0]),n.apply(t,[x.apply(t, +[c,!0])+d,!0])),d.min>=Math.min(b.dataMin,m)&&d.max<=Math.max(q,c)&&e.setExtremes(d.min,d.max,!0,!1,{trigger:"pan"}),this.mouseDownX=k,H(this.container,{cursor:"move"})):f=!0}else f=!0;f&&a.apply(this,Array.prototype.slice.call(arguments,1))});k.prototype.gappedPath=function(){var a=this.options.gapSize,g=this.points.slice(),h=g.length-1;if(a&&0this.closestPointRange*a&&g.splice(h+1,0,{isNull:!0});return this.getGraphPath(g)}})(N);(function(a){function D(){return Array.prototype.slice.call(arguments, +1)}function B(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,G(this.pointArrayMap,["y"]))}var G=a.pick,H=a.wrap,p=a.each,l=a.extend,r=a.fireEvent,w=a.Axis,t=a.Series;l(w.prototype,{isInBreak:function(a,m){var e=a.repeat||Infinity,g=a.from,h=a.to-a.from;m=m>=g?(m-g)%e:e-(g-m)%e;return a.inclusive?m<=h:m=a)break;else if(g.isInBreak(f,a)){e-=a-f.from;break}return e};this.lin2val=function(a){var e,f;for(f=0;f=a);f++)e.toh;)m-=b;for(;mb.to||l>b.from&&db.from&&db.from&&d>b.to&&d=c[0]);A++);for(A;A<=q;A++){for(;(void 0!==c[w+1]&&a[A]>=c[w+1]||A===q)&&(l=c[w],this.dataGroupInfo={start:p,length:t[0].length},p=d.apply(this,t),void 0!==p&&(g.push(l),h.push(p),m.push(this.dataGroupInfo)),p=A,t[0]=[],t[1]=[],t[2]=[],t[3]=[],w+=1,A!==q););if(A===q)break;if(x){l=this.cropStart+A;l=e&&e[l]|| +this.pointClass.prototype.applyOptions.apply({series:this},[f[l]]);var E,C;for(E=0;Ethis.chart.plotSizeX/d||b&&f.forced)&&(e=!0);return e?d:0};G.prototype.setDataGrouping=function(a,b){var c;b=e(b,!0);a||(a={forced:!1,units:null});if(this instanceof G)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else l(this.chart.options.series,function(b){b.dataGrouping=a},!1);b&&this.chart.redraw()}})(N);(function(a){var D=a.each,B=a.Point,G=a.seriesType,H=a.seriesTypes;G("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eOpen: {point.open}\x3cbr/\x3eHigh: {point.high}\x3cbr/\x3eLow: {point.low}\x3cbr/\x3eClose: {point.close}\x3cbr/\x3e'}, +threshold:null,states:{hover:{lineWidth:3}}},{pointArrayMap:["open","high","low","close"],toYData:function(a){return[a.open,a.high,a.low,a.close]},pointValKey:"high",pointAttribs:function(a,l){l=H.column.prototype.pointAttribs.call(this,a,l);var p=this.options;delete l.fill;l["stroke-width"]=p.lineWidth;l.stroke=a.options.color||(a.openk)););B(g,function(a,b){var d;void 0===a.plotY&&(a.x>=c.min&&a.x<=c.max?a.plotY=e.chartHeight-p.bottom-(p.opposite?p.height:0)+p.offset-e.plotTop:a.shapeArgs={});a.plotX+=t;(f=g[b-1])&&f.plotX===a.plotX&&(void 0===f.stackIndex&&(f.stackIndex=0),d=f.stackIndex+1);a.stackIndex=d})},drawPoints:function(){var a=this.points,e=this.chart,g=e.renderer,k,l,f=this.options,d=f.y,b,q,p,c,r,n,t,x=this.yAxis;for(q=a.length;q--;)p=a[q],t=p.plotX>this.xAxis.len,k=p.plotX,c=p.stackIndex,b= +p.options.shape||f.shape,l=p.plotY,void 0!==l&&(l=p.plotY+d-(void 0!==c&&c*f.stackDistance)),r=c?void 0:p.plotX,n=c?void 0:p.plotY,c=p.graphic,void 0!==l&&0<=k&&!t?(c||(c=p.graphic=g.label("",null,null,b,null,null,f.useHTML).attr(this.pointAttribs(p)).css(G(f.style,p.style)).attr({align:"flag"===b?"left":"center",width:f.width,height:f.height,"text-align":f.textAlign}).addClass("highcharts-point").add(this.markerGroup),c.shadow(f.shadow)),0h&&(e-=Math.round((l-h)/2),h=l);e=k[a](e,g,h,l);d&&f&&e.push("M",d,g>f?g:g+l,"L",d,f);return e}});p===t&&B(["flag","circlepin","squarepin"],function(a){t.prototype.symbols[a]=k[a]})})(N);(function(a){function D(a,d,e){this.init(a,d,e)}var B=a.addEvent,G=a.Axis,H=a.correctFloat,p=a.defaultOptions, +l=a.defined,r=a.destroyObjectProperties,w=a.doc,t=a.each,k=a.fireEvent,m=a.hasTouch,e=a.isTouchDevice,g=a.merge,h=a.pick,C=a.removeEvent,f=a.wrap,d={height:e?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!e,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2", +trackBorderWidth:1};p.scrollbar=g(!0,d,p.scrollbar);D.prototype={init:function(a,e,f){this.scrollbarButtons=[];this.renderer=a;this.userOptions=e;this.options=g(d,e);this.chart=f;this.size=h(this.options.size,this.options.height);e.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,d=this.options,e=this.size,c;this.group=c=a.g("scrollbar").attr({zIndex:d.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0, +r:d.trackBorderRadius||0,height:e,width:e}).add(c);this.track.attr({fill:d.trackBackgroundColor,stroke:d.trackBorderColor,"stroke-width":d.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(c);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:e,width:e,r:d.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(this.swapXY(["M",-3,e/4,"L",-3,2*e/3,"M",0,e/4,"L", +0,2*e/3,"M",3,e/4,"L",3,2*e/3],d.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);this.scrollbar.attr({fill:d.barBackgroundColor,stroke:d.barBorderColor,"stroke-width":d.barBorderWidth});this.scrollbarRifles.attr({stroke:d.rifleColor,"stroke-width":1});this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)},position:function(a, +d,e,c){var b=this.options.vertical,f=0,g=this.rendered?"animate":"attr";this.x=a;this.y=d+this.trackBorderWidth;this.width=e;this.xOffset=this.height=c;this.yOffset=f;b?(this.width=this.yOffset=e=f=this.size,this.xOffset=d=0,this.barWidth=c-2*e,this.x=a+=this.options.margin):(this.height=this.xOffset=c=d=this.size,this.barWidth=e-2*c,this.y+=this.options.margin);this.group[g]({translateX:a,translateY:this.y});this.track[g]({width:e,height:c});this.scrollbarButtons[1].attr({translateX:b?0:e-d,translateY:b? +c-f:0})},drawScrollbarButton:function(a){var b=this.renderer,d=this.scrollbarButtons,c=this.options,e=this.size,f;f=b.g().add(this.group);d.push(f);f=b.rect().addClass("highcharts-scrollbar-button").add(f);f.attr({stroke:c.buttonBorderColor,"stroke-width":c.buttonBorderWidth,fill:c.buttonBackgroundColor});f.attr(f.crisp({x:-.5,y:-.5,width:e+1,height:e+1,r:c.buttonBorderRadius},f.strokeWidth()));f=b.path(this.swapXY(["M",e/2+(a?-1:1),e/2-3,"L",e/2+(a?-1:1),e/2+3,"L",e/2+(a?2:-2),e/2],c.vertical)).addClass("highcharts-scrollbar-arrow").add(d[a]); +f.attr({fill:c.buttonArrowColor})},swapXY:function(a,d){var b=a.length,c;if(d)for(d=0;d=k?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===b.showFull&&(0>=a&&1<=d?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var d=a.chart.pointer.normalize(b),c=a.options.vertical? +"chartY":"chartX",e=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][c]||(d=a.cursorToScrollbarPosition(d)[c],c=a[c],c=d-c,a.hasDragged=!0,a.updatePosition(e[0]+c,e[1]+c),a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b); +b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var d=H(a.to-a.from)*a.options.step;a.updatePosition(H(a.from-d),H(a.to-d));k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var d=(a.to-a.from)*a.options.step;a.updatePosition(a.from+d,a.to+d);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var d=a.chart.pointer.normalize(b), +c=a.to-a.from,e=a.y+a.scrollbarTop,f=a.x+a.scrollbarLeft;a.options.vertical&&d.chartY>e||!a.options.vertical&&d.chartX>f?a.updatePosition(a.from+c,a.to+c):a.updatePosition(a.from-c,a.to-c);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options,b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a, +d){1a&&(d=H(d-a),a=0);this.from=a;this.to=d},update:function(a){this.destroy();this.init(this.chart.renderer,g(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],d=this.scrollbarButtons,e=this.scrollbarGroup.element,c=this.mouseDownHandler,f=this.mouseMoveHandler,g=this.mouseUpHandler,a=[[d[a[0]].element,"click",this.buttonToMinClick],[d[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[e, +"mousedown",c],[w,"mousemove",f],[w,"mouseup",g]];m&&a.push([e,"touchstart",c],[w,"touchmove",f],[w,"touchend",g]);t(a,function(a){B.apply(null,a)});this._events=a},removeEvents:function(){t(this._events,function(a){C.apply(null,a)});this._events=void 0},destroy:function(){var a=this.chart.scroller;this.removeEvents();t(["track","scrollbarRifles","scrollbar","scrollbarGroup","group"],function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&(a.scrollbar=null,r(a.scrollbarButtons))}}; +f(G.prototype,"init",function(a){var b=this;a.apply(b,[].slice.call(arguments,1));b.options.scrollbar&&b.options.scrollbar.enabled&&(b.options.scrollbar.vertical=!b.horiz,b.options.startOnTick=b.options.endOnTick=!1,b.scrollbar=new D(b.chart.renderer,b.options.scrollbar,b.chart),B(b.scrollbar,"changed",function(a){var c=Math.min(h(b.options.min,b.min),b.min,b.dataMin),d=Math.max(h(b.options.max,b.max),b.max,b.dataMax)-c,e;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(e=c+d*this.to,c+=d*this.from):(e= +c+d*(1-this.from),c+=d*(1-this.to));b.setExtremes(c,e,!0,!1,a)}))});f(G.prototype,"render",function(a){var b=Math.min(h(this.options.min,this.min),this.min,this.dataMin),d=Math.max(h(this.options.max,this.max),this.max,this.dataMax),c=this.scrollbar,e;a.apply(this,[].slice.call(arguments,1));c&&(this.horiz?c.position(this.left,this.top+this.height+this.offset+2+(this.opposite?0:this.axisTitleMargin),this.width,this.height):c.position(this.left+this.width+2+this.offset+(this.opposite?this.axisTitleMargin: +0),this.top,this.width,this.height),isNaN(b)||isNaN(d)||!l(this.min)||!l(this.max)?c.setRange(0,0):(e=(this.min-b)/(d-b),b=(this.max-b)/(d-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?c.setRange(e,b):c.setRange(1-b,1-e)))});f(G.prototype,"getOffset",function(a){var b=this.horiz?2:1,d=this.scrollbar;a.apply(this,[].slice.call(arguments,1));d&&(this.chart.axisOffset[b]+=d.size+d.options.margin)});f(G.prototype,"destroy",function(a){this.scrollbar&&(this.scrollbar=this.scrollbar.destroy()); +a.apply(this,[].slice.call(arguments,1))});a.Scrollbar=D})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.color,l=a.defaultOptions,r=a.defined,w=a.destroyObjectProperties,t=a.doc,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.grep,C=a.hasTouch,f=a.isNumber,d=a.isObject,b=a.isTouchDevice,q=a.merge,E=a.pick,c=a.removeEvent,F=a.Scrollbar,n=a.Series,A=a.seriesTypes,x=a.wrap,J=[].concat(a.defaultDataGroupingUnits),y=function(a){var b=h(arguments,f);if(b.length)return Math[a].apply(0, +b)};J[4]=["day",[1,2,3,4]];J[5]=["week",[1,2,3]];A=void 0===A.areaspline?"line":"areaspline";g(l,{navigator:{height:40,margin:25,maskInside:!0,handles:{backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:p("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",outlineWidth:1,series:{type:A,color:"#335cad",fillOpacity:.05,lineWidth:1,compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:J},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series", +className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},pointRange:0,shadow:!1,threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#999999"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}); +D.prototype={drawHandle:function(a,b){var c=this.chart.renderer,d=this.handles;this.rendered||(d[b]=c.path(["M",-4.5,.5,"L",3.5,.5,3.5,15.5,-4.5,15.5,-4.5,.5,"M",-1.5,4,"L",-1.5,12,"M",.5,4,"L",.5,12]).attr({zIndex:10-b}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][b]).add(),c=this.navigatorOptions.handles,d[b].attr({fill:c.backgroundColor,stroke:c.borderColor,"stroke-width":1}).css({cursor:"ew-resize"}));d[b][this.rendered&&!this.hasDragged?"animate":"attr"]({translateX:Math.round(this.scrollerLeft+ +this.scrollbarHeight+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-8)})},update:function(a){this.destroy();q(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,c,d){var e=this.chart,g=e.renderer,k,h,l,n;n=this.scrollbarHeight;var m=this.xAxis,p=this.navigatorOptions,u=p.maskInside,q=this.height,v=this.top,t=this.navigatorEnabled,x=this.outlineHeight,y;y=this.rendered;if(f(a)&&f(b)&&(!this.hasDragged||r(c))&&(this.navigatorLeft=k=E(m.left,e.plotLeft+ +n),this.navigatorWidth=h=E(m.len,e.plotWidth-2*n),this.scrollerLeft=l=k-n,this.scrollerWidth=n=n=h+2*n,c=E(c,m.translate(a)),d=E(d,m.translate(b)),f(c)&&Infinity!==Math.abs(c)||(c=0,d=n),!(m.translate(d,!0)-m.translate(c,!0)f&&tp+d-u&&rk&&re?e=0:e+v>=q&&(e=q-v,x=h.getUnionExtremes().dataMax),e!==d&&(h.fixedWidth=v,d=l.toFixedRange(e, +e+v,null,x),c.setExtremes(d.min,d.max,!0,null,{trigger:"navigator"}))))};h.mouseMoveHandler=function(b){var c=h.scrollbarHeight,d=h.navigatorLeft,e=h.navigatorWidth,f=h.scrollerLeft,g=h.scrollerWidth,k=h.range,l;b.touches&&0===b.touches[0].pageX||(b=a.pointer.normalize(b),l=b.chartX,lf+g-c&&(l=f+g-c),h.grabbedLeft?(h.hasDragged=!0,h.render(0,0,l-d,h.otherHandlePos)):h.grabbedRight?(h.hasDragged=!0,h.render(0,0,h.otherHandlePos,l-d)):h.grabbedCenter&&(h.hasDragged=!0,le+n-k&&(l=e+ +n-k),h.render(0,0,l-n,l-n+k)),h.hasDragged&&h.scrollbar&&h.scrollbar.options.liveRedraw&&(b.DOMType=b.type,setTimeout(function(){h.mouseUpHandler(b)},0)))};h.mouseUpHandler=function(b){var c,d,e=b.DOMEvent||b;if(h.hasDragged||"scrollbar"===b.trigger)h.zoomedMin===h.otherHandlePos?c=h.fixedExtreme:h.zoomedMax===h.otherHandlePos&&(d=h.fixedExtreme),h.zoomedMax===h.navigatorWidth&&(d=h.getUnionExtremes().dataMax),c=l.toFixedRange(h.zoomedMin,h.zoomedMax,c,d),r(c.min)&&a.xAxis[0].setExtremes(c.min,c.max, +!0,h.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:e});"mousemove"!==b.DOMType&&(h.grabbedLeft=h.grabbedRight=h.grabbedCenter=h.fixedWidth=h.fixedExtreme=h.otherHandlePos=h.hasDragged=n=null)};var c=a.xAxis.length,f=a.yAxis.length,m=e&&e[0]&&e[0].xAxis||a.xAxis[0];a.extraBottomMargin=h.outlineHeight+d.margin;a.isDirtyBox=!0;h.navigatorEnabled?(h.xAxis=l=new G(a,q({breaks:m.options.breaks,ordinal:m.options.ordinal},d.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis", +isX:!0,type:"datetime",index:c,height:g,offset:0,offsetLeft:k,offsetRight:-k,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1})),h.yAxis=new G(a,q(d.yAxis,{id:"navigator-y-axis",alignTicks:!1,height:g,offset:0,index:f,zoomEnabled:!1})),e||d.series.data?h.addBaseSeries():0===a.series.length&&x(a,"redraw",function(b,c){0=Math.round(a.navigatorWidth);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},destroy:function(){this.removeEvents();this.xAxis&&(m(this.chart.xAxis,this.xAxis),m(this.chart.axes,this.xAxis));this.yAxis&&(m(this.chart.yAxis,this.yAxis),m(this.chart.axes,this.yAxis));k(this.series||[],function(a){a.destroy&&a.destroy()});k("series xAxis yAxis leftShade rightShade outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" "), +function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);k([this.handles,this.elementsToDestroy],function(a){w(a)},this)}};a.Navigator=D;x(G.prototype,"zoom",function(a,b,c){var d=this.chart,e=d.options,f=e.chart.zoomType,g=e.navigator,e=e.rangeSelector,h;this.isXAxis&&(g&&g.enabled||e&&e.enabled)&&("x"===f?d.resetZoomButton="blocked":"y"===f?h=!1:"xy"===f&&(d=this.previousZoom,r(b)?this.previousZoom=[this.min,this.max]:d&&(b=d[0],c=d[1],delete this.previousZoom)));return void 0!== +h?h:a.call(this,b,c)});x(H.prototype,"init",function(a,b,c){B(this,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new D(this)});a.call(this,b,c)});x(H.prototype,"getMargins",function(a){var b=this.legend,c=b.options,d=this.scroller,e,f;a.apply(this,[].slice.call(arguments,1));d&&(e=d.xAxis,f=d.yAxis,d.top=d.navigatorOptions.top||this.chartHeight-d.height-d.scrollbarHeight-this.spacing[2]-("bottom"===c.verticalAlign&&c.enabled&& +!c.floating?b.legendHeight+E(c.margin,10):0),e&&f&&(e.options.top=f.options.top=d.top,e.setAxisSize(),f.setAxisSize()))});x(n.prototype,"addPoint",function(a,b,c,f,g){var h=this.options.turboThreshold;h&&this.xData.length>h&&d(b,!0)&&this.chart.scroller&&e(20,!0);a.call(this,b,c,f,g)});x(H.prototype,"addSeries",function(a,b,c,d){a=a.call(this,b,!1,d);this.scroller&&this.scroller.setBaseSeries();E(c,!0)&&this.redraw();return a});x(n.prototype,"update",function(a,b,c){a.call(this,b,!1);this.chart.scroller&& +this.chart.scroller.setBaseSeries();E(c,!0)&&this.chart.redraw()})})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.css,l=a.createElement,r=a.dateFormat,w=a.defaultOptions,t=w.global.useUTC,k=a.defined,m=a.destroyObjectProperties,e=a.discardElement,g=a.each,h=a.extend,C=a.fireEvent,f=a.Date,d=a.isNumber,b=a.merge,q=a.pick,E=a.pInt,c=a.splat,F=a.wrap;h(w,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18,padding:2,zIndex:7},height:35,inputPosition:{align:"right"}, +labelStyle:{color:"#666666"}}});w.lang=b(w.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});D.prototype={clickButton:function(a,b){var e=this,f=e.chart,h=e.buttonOptions[a],k=f.xAxis[0],l=f.scroller&&f.scroller.getUnionExtremes()||k||{},n=l.dataMin,m=l.dataMax,p,r=k&&Math.round(Math.min(k.max,q(m,k.max))),w=h.type,z,l=h._range,A,C,D,E=h.dataGrouping;if(null!==n&&null!==m){f.fixedRange=l;E&&(this.forcedDataGrouping=!0,G.prototype.setDataGrouping.call(k||{chart:this.chart}, +E,!1));if("month"===w||"year"===w)k?(w={range:h,max:r,dataMin:n,dataMax:m},p=k.minFromRange.call(w),d(w.newMax)&&(r=w.newMax)):l=h;else if(l)p=Math.max(r-l,n),r=Math.min(p+l,m);else if("ytd"===w)if(k)void 0===m&&(n=Number.MAX_VALUE,m=Number.MIN_VALUE,g(f.series,function(a){a=a.xData;n=Math.min(a[0],n);m=Math.max(a[a.length-1],m)}),b=!1),r=e.getYTDExtremes(m,n,t),p=A=r.min,r=r.max;else{B(f,"beforeRender",function(){e.clickButton(a)});return}else"all"===w&&k&&(p=n,r=m);e.setSelected(a);k?k.setExtremes(p, +r,q(b,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:h}):(z=c(f.options.xAxis)[0],D=z.range,z.range=l,C=z.min,z.min=A,B(f,"load",function(){z.range=D;z.min=C}))}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var b=this,c=a.options.rangeSelector,d=c.buttons|| +[].concat(b.defaultButtons),e=c.selected,f=function(){var a=b.minInput,c=b.maxInput;a&&a.blur&&C(a,"blur");c&&c.blur&&C(c,"blur")};b.chart=a;b.options=c;b.buttons=[];a.extraTopMargin=c.height;b.buttonOptions=d;this.unMouseDown=B(a.container,"mousedown",f);this.unResize=B(a,"resize",f);g(d,b.computeButtonRange);void 0!==e&&d[e]&&this.clickButton(e,!1);B(a,"load",function(){B(a.xAxis[0],"setExtremes",function(c){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==c.trigger&&"updatedData"!==c.trigger&& +b.forcedDataGrouping&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this.chart,b=a.xAxis[0],c=Math.round(b.max-b.min),e=!b.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||b,f=a.dataMin,h=a.dataMax,a=this.getYTDExtremes(h,f,t),k=a.min,l=a.max,m=this.selected,p=d(m),q=this.options.allButtonsEnabled,r=this.buttons;g(this.buttonOptions,function(a,d){var g=a._range,n=a.type,u=a.count||1;a=r[d];var t=0;d=d===m;var v=g>h-f,x=g=864E5*{month:28,year:365}[n]*u&&c<=864E5*{month:31,year:366}[n]*u?g=!0:"ytd"===n?(g=l-k===c,y=!d):"all"===n&&(g=b.max-b.min>=h-f,w=!d&&p&&g);n=!q&&(v||x||w||e);g=d&&g||g&&!p&&!y;n?t=3:g&&(p=!0,t=2);a.state!==t&&a.setState(t)})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c},setInputValue:function(a,b){var c= +this.chart.options.rangeSelector,d=this[a+"Input"];k(b)&&(d.previousValue=d.HCTime,d.HCTime=b);d.value=r(c.inputEditDateFormat||"%Y-%m-%d",d.HCTime);this[a+"DateBox"].attr({text:r(c.inputDateFormat||"%b %e, %Y",d.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];p(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){p(this[a+"Input"],{border:0,width:"1px",height:"1px"}); +this.setInputValue(a)},drawInput:function(a){function c(){var a=r.value,b=(m.inputDateParser||Date.parse)(a),c=f.xAxis[0],g=f.scroller&&f.scroller.xAxis?f.scroller.xAxis:c,h=g.dataMin,g=g.dataMax;b!==r.previousValue&&(r.previousValue=b,d(b)||(b=a.split("-"),b=Date.UTC(E(b[0]),E(b[1])-1,E(b[2]))),d(b)&&(t||(b+=6E4*(new Date).getTimezoneOffset()),q?b>e.maxInput.HCTime?b=void 0:bg&&(b=g),void 0!==b&&c.setExtremes(q?b:c.min,q?c.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))} +var e=this,f=e.chart,g=f.renderer.style||{},k=f.renderer,m=f.options.rangeSelector,n=e.div,q="min"===a,r,B,C=this.inputGroup;this[a+"Label"]=B=k.label(w.lang[q?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(C);C.offset+=B.width+5;this[a+"DateBox"]=k=k.label("",C.offset).addClass("highcharts-range-input").attr({padding:2,width:m.inputBoxWidth||90,height:m.inputBoxHeight||17,stroke:m.inputBoxBorderColor||"#cccccc","stroke-width":1, +"text-align":"center"}).on("click",function(){e.showInput(a);e[a+"Input"].focus()}).add(C);C.offset+=k.width+(q?10:0);this[a+"Input"]=r=l("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:f.plotTop+"px"},n);B.css(b(g,m.labelStyle));k.css(b({color:"#333333"},g,m.inputStyle));p(r,h({position:"absolute",border:0,width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:g.fontSize,fontFamily:g.fontFamily,left:"-9em"},m.inputStyle));r.onfocus=function(){e.showInput(a)};r.onblur= +function(){e.hideInput(a)};r.onchange=c;r.onkeypress=function(a){13===a.keyCode&&c()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=q((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a,b,c){var d=new f(a),e=d[f.hcGetFullYear]();c=c?f.UTC(e,0,1):+new f(e,0,1);b=Math.max(b||0,c);d=d.getTime();return{max:Math.min(a||d,d),min:b}},render:function(a,b){var c=this,d=c.chart,e=d.renderer,f=d.container,m=d.options, +n=m.exporting&&!1!==m.exporting.enabled&&m.navigation&&m.navigation.buttonOptions,p=m.rangeSelector,r=c.buttons,m=w.lang,t=c.div,t=c.inputGroup,A=p.buttonTheme,z=p.buttonPosition||{},B=p.inputEnabled,C=A&&A.states,D=d.plotLeft,E,G=this.getPosition(),F=c.group,H=c.rendered;!1!==p.enabled&&(H||(c.group=F=e.g("range-selector-buttons").add(),c.zoomText=e.text(m.rangeSelectorZoom,q(z.x,D),15).css(p.labelStyle).add(F),E=q(z.x,D)+c.zoomText.getBBox().width+5,g(c.buttonOptions,function(a,b){r[b]=e.button(a.text, +E,0,function(){c.clickButton(b);c.isActive=!0},A,C&&C.hover,C&&C.select,C&&C.disabled).attr({"text-align":"center"}).add(F);E+=r[b].width+q(p.buttonSpacing,5)}),!1!==B&&(c.div=t=l("div",null,{position:"relative",height:0,zIndex:1}),f.parentNode.insertBefore(t,f),c.inputGroup=t=e.g("input-group").add(),t.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),F[H?"animate":"attr"]({translateY:G.buttonTop}),!1!==B&&(t.align(h({y:G.inputTop,width:t.offset,x:n&&G.inputTop<(n.y||0)+n.height- +d.spacing[0]?-40:0},p.inputPosition),!0,d.spacingBox),k(B)||(d=F.getBBox(),t[t.alignAttr.translateXc&&(e?a=b-f:b=a+f);d(a)||(a=b=void 0);return{min:a,max:b}};G.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],c,e=this.max,f,g,h=function(a,c){var d=new Date(a);d["set"+b](d["get"+ +b]()+c);return d.getTime()-a};d(a)?(c=e-a,g=a):(c=e+h(e,-a.count),this.chart&&(this.chart.fixedRange=e-c));f=q(this.dataMin,Number.MIN_VALUE);d(c)||(c=f);c<=f&&(c=f,void 0===g&&(g=h(c,a.count)),this.newMax=Math.min(c+g,this.dataMax));d(e)||(c=void 0);return c};F(H.prototype,"init",function(a,b,c){B(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new D(this))});a.call(this,b,c)});a.RangeSelector=D})(N);(function(a){var D=a.addEvent,B=a.isNumber;a.Chart.prototype.callbacks.push(function(a){function G(){p= +a.xAxis[0].getExtremes();B(p.min)&&r.render(p.min,p.max)}var p,l=a.scroller,r=a.rangeSelector,w,t;l&&(p=a.xAxis[0].getExtremes(),l.render(p.min,p.max));r&&(t=D(a.xAxis[0],"afterSetExtremes",function(a){r.render(a.min,a.max)}),w=D(a,"redraw",G),G());D(a,"destroy",function(){r&&(w(),t())})})})(N);(function(a){var D=a.arrayMax,B=a.arrayMin,G=a.Axis,H=a.Chart,p=a.defined,l=a.each,r=a.extend,w=a.format,t=a.inArray,k=a.isNumber,m=a.isString,e=a.map,g=a.merge,h=a.pick,C=a.Point,f=a.Renderer,d=a.Series,b= +a.splat,q=a.stop,E=a.SVGRenderer,c=a.VMLRenderer,F=a.wrap,n=d.prototype,A=n.init,x=n.processData,J=C.prototype.tooltipFormatter;a.StockChart=a.stockChart=function(c,d,f){var k=m(c)||c.nodeName,l=arguments[k?1:0],n=l.series,p=a.getOptions(),q,r=h(l.navigator&&l.navigator.enabled,!0)?{startOnTick:!1,endOnTick:!1}:null,t={marker:{enabled:!1,radius:2}},u={shadow:!1,borderWidth:0};l.xAxis=e(b(l.xAxis||{}),function(a){return g({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"}, +showLastLabel:!0},p.xAxis,a,{type:"datetime",categories:null},r)});l.yAxis=e(b(l.yAxis||{}),function(a){q=h(a.opposite,!0);return g({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},p.yAxis,a)});l.series=null;l=g({chart:{panning:!0,pinchType:"x"},navigator:{enabled:!0},scrollbar:{enabled:!0},rangeSelector:{enabled:!0},title:{text:null,style:{fontSize:"16px"}},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:t,spline:t,area:t,areaspline:t,arearange:t,areasplinerange:t, +column:u,columnrange:u,candlestick:u,ohlc:u}},l,{_stock:!0,chart:{inverted:!1}});l.series=n;return k?new H(c,l,f):new H(l,d)};F(G.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options._stock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=1,"right"):a.call(this,[].slice.call(arguments,1))});F(G.prototype,"getPlotLinePath",function(a, +b,c,d,f,g){var n=this,q=this.isLinked&&!this.series?this.linkedParent.series:this.series,r=n.chart,u=r.renderer,v=n.left,w=n.top,y,x,A,B,C=[],D=[],E,F;if("colorAxis"===n.coll)return a.apply(this,[].slice.call(arguments,1));D=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=n.options[b];return k(a)?[r[b][a]]:m(a)?[r.get(a)]:e(q,function(a){return a[b]})}(n.coll);l(n.isXAxis?r.yAxis:r.xAxis,function(a){if(p(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=p(a.options[b])? +r[b][a.options[b]]:r[b][0];n===b&&D.push(a)}});E=D.length?[]:[n.isXAxis?r.yAxis[0]:r.xAxis[0]];l(D,function(a){-1===t(a,E)&&E.push(a)});F=h(g,n.translate(b,null,null,d));k(F)&&(n.horiz?l(E,function(a){var b;x=a.pos;B=x+a.len;y=A=Math.round(F+n.transB);if(yv+n.width)f?y=A=Math.min(Math.max(v,y),v+n.width):b=!0;b||C.push("M",y,x,"L",A,B)}):l(E,function(a){var b;y=a.pos;A=y+a.len;x=B=Math.round(w+n.height-F);if(xw+n.height)f?x=B=Math.min(Math.max(w,x),n.top+n.height):b=!0;b||C.push("M",y, +x,"L",A,B)}));return 0=e&&(x=-(l.translateX+b.width-e));l.attr({x:m+x,y:k,anchorX:g?m:this.opposite?0:a.chartWidth,anchorY:g?this.opposite?a.chartHeight:0:k+b.height/2})}});n.init=function(){A.apply(this,arguments);this.setCompare(this.options.compare)};n.setCompare=function(a){this.modifyValue= +"value"===a||"percent"===a?function(b,c){var d=this.compareValue;if(void 0!==b&&void 0!==d)return b="value"===a?b-d:b=b/d*100-100,c&&(c.change=b),b}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};n.processData=function(){var a,b=-1,c,d,e,f;x.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=t("close",this.pointArrayMap),-1===b&&(b=t(this.pointValKey||"y",this.pointArrayMap))),a=0;a< +e-1;a++)if(f=-1=this.xAxis.min&&0!==f){this.compareValue=f;break}};F(n,"getExtremes",function(a){var b;a.apply(this,[].slice.call(arguments,1));this.modifyValue&&(b=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)],this.dataMin=B(b),this.dataMax=D(b))});G.prototype.setCompare=function(a,b){this.isXAxis||(l(this.series,function(b){b.setCompare(a)}),h(b,!0)&&this.chart.redraw())};C.prototype.tooltipFormatter=function(b){b=b.replace("{point.change}",(0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(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 de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){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[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.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},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.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 l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(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?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);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\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.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)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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,n){S.fn[n]=function(e,t){return 0 '; + else + var expandButton = ''; + + return '' + expandButton + '' + ellipsedLabel({ name: item.name, parentClass: "nav-tooltip", childClass: "nav-label" }) + ''; +} + +function menuItemsForGroup(group, level, parent) { + var items = ''; + + if (level > 0) + items += menuItem(group, level - 1, parent, true); + + $.each(group.contents, function (contentName, content) { + if (content.type == 'GROUP') + items += menuItemsForGroup(content, level + 1, group.pathFormatted); + else if (content.type == 'REQUEST') + items += menuItem(content, level, group.pathFormatted); + }); + + return items; +} + +function setDetailsMenu(){ + $('.nav ul').append(menuItemsForGroup(stats, 0)); + $('.nav').expandable(); + $('.nav-tooltip').popover({trigger:'hover'}); +} + +function setGlobalMenu(){ + $('.nav ul') + .append('
  • Ranges
  • ') + .append('
  • Stats
  • ') + .append('
  • Active Users
  • ') + .append('
  • Requests / sec
  • ') + .append('
  • Responses / sec
  • '); +} + +function getLink(link){ + var a = link.split('/'); + return (a.length<=1)? link : a[a.length-1]; +} + +function expandUp(li) { + const parentId = li.attr("data-parent"); + if (parentId != "ROOT") { + const span = $('#' + parentId); + const parentLi = span.parents('li').first(); + span.expand(parentLi, false); + expandUp(parentLi); + } +} + +function setActiveMenu(){ + $('.nav a').each(function() { + const navA = $(this) + if(!navA.hasClass('expand-button') && navA.attr('href') == getLink(window.location.pathname)) { + const li = $(this).parents('li').first(); + li.addClass('on'); + expandUp(li); + return false; + } + }); +} diff --git a/Sources/API/gatling/results/Gin-Simulation/js/stats.js b/Sources/API/gatling/results/Gin-Simulation/js/stats.js new file mode 100644 index 0000000..34f817c --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/stats.js @@ -0,0 +1,539 @@ +var stats = { + type: "GROUP", +name: "All Requests", +path: "", +pathFormatted: "group_missing-name-b06d1", +stats: { + "name": "All Requests", + "numberOfRequests": { + "total": "3299", + "ok": "2623", + "ko": "676" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "2" + }, + "maxResponseTime": { + "total": "9873", + "ok": "9873", + "ko": "9472" + }, + "meanResponseTime": { + "total": "1707", + "ok": "1602", + "ko": "2115" + }, + "standardDeviation": { + "total": "2161", + "ok": "2110", + "ko": "2306" + }, + "percentiles1": { + "total": "571", + "ok": "396", + "ko": "1302" + }, + "percentiles2": { + "total": "3153", + "ok": "3014", + "ko": "3722" + }, + "percentiles3": { + "total": "6468", + "ok": "6315", + "ko": "6940" + }, + "percentiles4": { + "total": "8051", + "ok": "7661", + "ko": "8459" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1473, + "percentage": 45 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 146, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 1004, + "percentage": 30 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 676, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": "103.094", + "ok": "81.969", + "ko": "21.125" + } +}, +contents: { +"req_get-all-users-b5141": { + type: "REQUEST", + name: "Get All Users", +path: "Get All Users", +pathFormatted: "req_get-all-users-b5141", +stats: { + "name": "Get All Users", + "numberOfRequests": { + "total": "884", + "ok": "884", + "ko": "0" + }, + "minResponseTime": { + "total": "2", + "ok": "2", + "ko": "-" + }, + "maxResponseTime": { + "total": "8281", + "ok": "8281", + "ko": "-" + }, + "meanResponseTime": { + "total": "1068", + "ok": "1068", + "ko": "-" + }, + "standardDeviation": { + "total": "1765", + "ok": "1765", + "ko": "-" + }, + "percentiles1": { + "total": "129", + "ok": "129", + "ko": "-" + }, + "percentiles2": { + "total": "1252", + "ok": "1252", + "ko": "-" + }, + "percentiles3": { + "total": "4870", + "ok": "4870", + "ko": "-" + }, + "percentiles4": { + "total": "7252", + "ok": "7252", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 612, + "percentage": 69 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 48, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 224, + "percentage": 25 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "27.625", + "ok": "27.625", + "ko": "-" + } +} + },"req_get-user-00551": { + type: "REQUEST", + name: "Get User", +path: "Get User", +pathFormatted: "req_get-user-00551", +stats: { + "name": "Get User", + "numberOfRequests": { + "total": "884", + "ok": "884", + "ko": "0" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "-" + }, + "maxResponseTime": { + "total": "8539", + "ok": "8539", + "ko": "-" + }, + "meanResponseTime": { + "total": "1602", + "ok": "1602", + "ko": "-" + }, + "standardDeviation": { + "total": "2056", + "ok": "2056", + "ko": "-" + }, + "percentiles1": { + "total": "411", + "ok": "411", + "ko": "-" + }, + "percentiles2": { + "total": "3128", + "ok": "3128", + "ko": "-" + }, + "percentiles3": { + "total": "5937", + "ok": "5937", + "ko": "-" + }, + "percentiles4": { + "total": "7212", + "ok": "7212", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 496, + "percentage": 56 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 48, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 340, + "percentage": 38 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "27.625", + "ok": "27.625", + "ko": "-" + } +} + },"req_create-user-266a3": { + type: "REQUEST", + name: "Create User", +path: "Create User", +pathFormatted: "req_create-user-266a3", +stats: { + "name": "Create User", + "numberOfRequests": { + "total": "884", + "ok": "439", + "ko": "445" + }, + "minResponseTime": { + "total": "2", + "ok": "2", + "ko": "2" + }, + "maxResponseTime": { + "total": "9848", + "ok": "9848", + "ko": "9472" + }, + "meanResponseTime": { + "total": "2322", + "ok": "2472", + "ko": "2173" + }, + "standardDeviation": { + "total": "2437", + "ok": "2491", + "ko": "2373" + }, + "percentiles1": { + "total": "1479", + "ok": "1550", + "ko": "1312" + }, + "percentiles2": { + "total": "4125", + "ok": "4326", + "ko": "3827" + }, + "percentiles3": { + "total": "7155", + "ok": "7341", + "ko": "7065" + }, + "percentiles4": { + "total": "8713", + "ok": "8858", + "ko": "8652" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 166, + "percentage": 19 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 28, + "percentage": 3 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 245, + "percentage": 28 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 445, + "percentage": 50 +}, + "meanNumberOfRequestsPerSecond": { + "total": "27.625", + "ok": "13.719", + "ko": "13.906" + } +} + },"req_update-user-6b160": { + type: "REQUEST", + name: "Update User", +path: "Update User", +pathFormatted: "req_update-user-6b160", +stats: { + "name": "Update User", + "numberOfRequests": { + "total": "439", + "ok": "208", + "ko": "231" + }, + "minResponseTime": { + "total": "2", + "ok": "3", + "ko": "2" + }, + "maxResponseTime": { + "total": "9873", + "ok": "9873", + "ko": "8187" + }, + "meanResponseTime": { + "total": "1971", + "ok": "1936", + "ko": "2004" + }, + "standardDeviation": { + "total": "2149", + "ok": "2131", + "ko": "2165" + }, + "percentiles1": { + "total": "1215", + "ok": "1203", + "ko": "1276" + }, + "percentiles2": { + "total": "3456", + "ok": "3455", + "ko": "3486" + }, + "percentiles3": { + "total": "6334", + "ok": "6181", + "ko": "6469" + }, + "percentiles4": { + "total": "7768", + "ok": "7654", + "ko": "7703" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 91, + "percentage": 21 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 13, + "percentage": 3 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 104, + "percentage": 24 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 231, + "percentage": 53 +}, + "meanNumberOfRequestsPerSecond": { + "total": "13.719", + "ok": "6.5", + "ko": "7.219" + } +} + },"req_delete-user-516b1": { + type: "REQUEST", + name: "Delete User", +path: "Delete User", +pathFormatted: "req_delete-user-516b1", +stats: { + "name": "Delete User", + "numberOfRequests": { + "total": "208", + "ok": "208", + "ko": "0" + }, + "minResponseTime": { + "total": "2", + "ok": "2", + "ko": "-" + }, + "maxResponseTime": { + "total": "8844", + "ok": "8844", + "ko": "-" + }, + "meanResponseTime": { + "total": "1699", + "ok": "1699", + "ko": "-" + }, + "standardDeviation": { + "total": "2089", + "ok": "2089", + "ko": "-" + }, + "percentiles1": { + "total": "712", + "ok": "712", + "ko": "-" + }, + "percentiles2": { + "total": "2695", + "ok": "2695", + "ko": "-" + }, + "percentiles3": { + "total": "6485", + "ok": "6485", + "ko": "-" + }, + "percentiles4": { + "total": "8444", + "ok": "8444", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 108, + "percentage": 52 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 9, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 91, + "percentage": 44 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "6.5", + "ok": "6.5", + "ko": "-" + } +} + } +} + +} + +function fillStats(stat){ + $("#numberOfRequests").append(stat.numberOfRequests.total); + $("#numberOfRequestsOK").append(stat.numberOfRequests.ok); + $("#numberOfRequestsKO").append(stat.numberOfRequests.ko); + + $("#minResponseTime").append(stat.minResponseTime.total); + $("#minResponseTimeOK").append(stat.minResponseTime.ok); + $("#minResponseTimeKO").append(stat.minResponseTime.ko); + + $("#maxResponseTime").append(stat.maxResponseTime.total); + $("#maxResponseTimeOK").append(stat.maxResponseTime.ok); + $("#maxResponseTimeKO").append(stat.maxResponseTime.ko); + + $("#meanResponseTime").append(stat.meanResponseTime.total); + $("#meanResponseTimeOK").append(stat.meanResponseTime.ok); + $("#meanResponseTimeKO").append(stat.meanResponseTime.ko); + + $("#standardDeviation").append(stat.standardDeviation.total); + $("#standardDeviationOK").append(stat.standardDeviation.ok); + $("#standardDeviationKO").append(stat.standardDeviation.ko); + + $("#percentiles1").append(stat.percentiles1.total); + $("#percentiles1OK").append(stat.percentiles1.ok); + $("#percentiles1KO").append(stat.percentiles1.ko); + + $("#percentiles2").append(stat.percentiles2.total); + $("#percentiles2OK").append(stat.percentiles2.ok); + $("#percentiles2KO").append(stat.percentiles2.ko); + + $("#percentiles3").append(stat.percentiles3.total); + $("#percentiles3OK").append(stat.percentiles3.ok); + $("#percentiles3KO").append(stat.percentiles3.ko); + + $("#percentiles4").append(stat.percentiles4.total); + $("#percentiles4OK").append(stat.percentiles4.ok); + $("#percentiles4KO").append(stat.percentiles4.ko); + + $("#meanNumberOfRequestsPerSecond").append(stat.meanNumberOfRequestsPerSecond.total); + $("#meanNumberOfRequestsPerSecondOK").append(stat.meanNumberOfRequestsPerSecond.ok); + $("#meanNumberOfRequestsPerSecondKO").append(stat.meanNumberOfRequestsPerSecond.ko); +} diff --git a/Sources/API/gatling/results/Gin-Simulation/js/stats.json b/Sources/API/gatling/results/Gin-Simulation/js/stats.json new file mode 100644 index 0000000..96fc506 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/stats.json @@ -0,0 +1,497 @@ +{ + "type": "GROUP", +"name": "All Requests", +"path": "", +"pathFormatted": "group_missing-name-b06d1", +"stats": { + "name": "All Requests", + "numberOfRequests": { + "total": 3299, + "ok": 2623, + "ko": 676 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 2 + }, + "maxResponseTime": { + "total": 9873, + "ok": 9873, + "ko": 9472 + }, + "meanResponseTime": { + "total": 1707, + "ok": 1602, + "ko": 2115 + }, + "standardDeviation": { + "total": 2161, + "ok": 2110, + "ko": 2306 + }, + "percentiles1": { + "total": 571, + "ok": 396, + "ko": 1302 + }, + "percentiles2": { + "total": 3153, + "ok": 3014, + "ko": 3722 + }, + "percentiles3": { + "total": 6468, + "ok": 6315, + "ko": 6940 + }, + "percentiles4": { + "total": 8051, + "ok": 7661, + "ko": 8459 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1473, + "percentage": 45 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 146, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 1004, + "percentage": 30 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 676, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": 103.09375, + "ok": 81.96875, + "ko": 21.125 + } +}, +"contents": { +"req_get-all-users-b5141": { + "type": "REQUEST", + "name": "Get All Users", +"path": "Get All Users", +"pathFormatted": "req_get-all-users-b5141", +"stats": { + "name": "Get All Users", + "numberOfRequests": { + "total": 884, + "ok": 884, + "ko": 0 + }, + "minResponseTime": { + "total": 2, + "ok": 2, + "ko": 0 + }, + "maxResponseTime": { + "total": 8281, + "ok": 8281, + "ko": 0 + }, + "meanResponseTime": { + "total": 1068, + "ok": 1068, + "ko": 0 + }, + "standardDeviation": { + "total": 1765, + "ok": 1765, + "ko": 0 + }, + "percentiles1": { + "total": 129, + "ok": 129, + "ko": 0 + }, + "percentiles2": { + "total": 1252, + "ok": 1252, + "ko": 0 + }, + "percentiles3": { + "total": 4870, + "ok": 4870, + "ko": 0 + }, + "percentiles4": { + "total": 7252, + "ok": 7252, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 612, + "percentage": 69 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 48, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 224, + "percentage": 25 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 27.625, + "ok": 27.625, + "ko": 0 + } +} + },"req_get-user-00551": { + "type": "REQUEST", + "name": "Get User", +"path": "Get User", +"pathFormatted": "req_get-user-00551", +"stats": { + "name": "Get User", + "numberOfRequests": { + "total": 884, + "ok": 884, + "ko": 0 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 0 + }, + "maxResponseTime": { + "total": 8539, + "ok": 8539, + "ko": 0 + }, + "meanResponseTime": { + "total": 1602, + "ok": 1602, + "ko": 0 + }, + "standardDeviation": { + "total": 2056, + "ok": 2056, + "ko": 0 + }, + "percentiles1": { + "total": 411, + "ok": 411, + "ko": 0 + }, + "percentiles2": { + "total": 3128, + "ok": 3128, + "ko": 0 + }, + "percentiles3": { + "total": 5937, + "ok": 5937, + "ko": 0 + }, + "percentiles4": { + "total": 7212, + "ok": 7212, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 496, + "percentage": 56 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 48, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 340, + "percentage": 38 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 27.625, + "ok": 27.625, + "ko": 0 + } +} + },"req_create-user-266a3": { + "type": "REQUEST", + "name": "Create User", +"path": "Create User", +"pathFormatted": "req_create-user-266a3", +"stats": { + "name": "Create User", + "numberOfRequests": { + "total": 884, + "ok": 439, + "ko": 445 + }, + "minResponseTime": { + "total": 2, + "ok": 2, + "ko": 2 + }, + "maxResponseTime": { + "total": 9848, + "ok": 9848, + "ko": 9472 + }, + "meanResponseTime": { + "total": 2322, + "ok": 2472, + "ko": 2173 + }, + "standardDeviation": { + "total": 2437, + "ok": 2491, + "ko": 2373 + }, + "percentiles1": { + "total": 1479, + "ok": 1550, + "ko": 1312 + }, + "percentiles2": { + "total": 4125, + "ok": 4326, + "ko": 3827 + }, + "percentiles3": { + "total": 7155, + "ok": 7341, + "ko": 7065 + }, + "percentiles4": { + "total": 8713, + "ok": 8858, + "ko": 8652 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 166, + "percentage": 19 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 28, + "percentage": 3 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 245, + "percentage": 28 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 445, + "percentage": 50 +}, + "meanNumberOfRequestsPerSecond": { + "total": 27.625, + "ok": 13.71875, + "ko": 13.90625 + } +} + },"req_update-user-6b160": { + "type": "REQUEST", + "name": "Update User", +"path": "Update User", +"pathFormatted": "req_update-user-6b160", +"stats": { + "name": "Update User", + "numberOfRequests": { + "total": 439, + "ok": 208, + "ko": 231 + }, + "minResponseTime": { + "total": 2, + "ok": 3, + "ko": 2 + }, + "maxResponseTime": { + "total": 9873, + "ok": 9873, + "ko": 8187 + }, + "meanResponseTime": { + "total": 1971, + "ok": 1936, + "ko": 2004 + }, + "standardDeviation": { + "total": 2149, + "ok": 2131, + "ko": 2165 + }, + "percentiles1": { + "total": 1215, + "ok": 1203, + "ko": 1276 + }, + "percentiles2": { + "total": 3456, + "ok": 3455, + "ko": 3486 + }, + "percentiles3": { + "total": 6334, + "ok": 6181, + "ko": 6469 + }, + "percentiles4": { + "total": 7768, + "ok": 7654, + "ko": 7703 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 91, + "percentage": 21 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 13, + "percentage": 3 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 104, + "percentage": 24 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 231, + "percentage": 53 +}, + "meanNumberOfRequestsPerSecond": { + "total": 13.71875, + "ok": 6.5, + "ko": 7.21875 + } +} + },"req_delete-user-516b1": { + "type": "REQUEST", + "name": "Delete User", +"path": "Delete User", +"pathFormatted": "req_delete-user-516b1", +"stats": { + "name": "Delete User", + "numberOfRequests": { + "total": 208, + "ok": 208, + "ko": 0 + }, + "minResponseTime": { + "total": 2, + "ok": 2, + "ko": 0 + }, + "maxResponseTime": { + "total": 8844, + "ok": 8844, + "ko": 0 + }, + "meanResponseTime": { + "total": 1699, + "ok": 1699, + "ko": 0 + }, + "standardDeviation": { + "total": 2089, + "ok": 2089, + "ko": 0 + }, + "percentiles1": { + "total": 712, + "ok": 712, + "ko": 0 + }, + "percentiles2": { + "total": 2695, + "ok": 2695, + "ko": 0 + }, + "percentiles3": { + "total": 6485, + "ok": 6485, + "ko": 0 + }, + "percentiles4": { + "total": 8444, + "ok": 8444, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 108, + "percentage": 52 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 9, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 91, + "percentage": 44 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 6.5, + "ok": 6.5, + "ko": 0 + } +} + } +} + +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Gin-Simulation/js/theme.js b/Sources/API/gatling/results/Gin-Simulation/js/theme.js new file mode 100644 index 0000000..b95a7b3 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/theme.js @@ -0,0 +1,127 @@ +/* + * Copyright 2011-2022 Gatling Corp + * + * Licensed under the Gatling Highcharts License + */ +Highcharts.theme = { + chart: { + backgroundColor: '#f7f7f7', + borderWidth: 0, + borderRadius: 8, + plotBackgroundColor: null, + plotShadow: false, + plotBorderWidth: 0 + }, + xAxis: { + gridLineWidth: 0, + lineColor: '#666', + tickColor: '#666', + labels: { + style: { + color: '#666' + } + }, + title: { + style: { + color: '#666' + } + } + }, + yAxis: { + alternateGridColor: null, + minorTickInterval: null, + gridLineColor: '#999', + lineWidth: 0, + tickWidth: 0, + labels: { + style: { + color: '#666', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#666', + font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + labels: { + style: { + color: '#CCC' + } + }, + + + rangeSelector: { + buttonTheme: { + fill: '#cfc9c6', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#b2b2a9' + }, + states: { + hover: { + fill: '#92918C', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#8b897d' + } + }, + select: { + fill: '#E37400', + stroke: '#000000', + style: { + color: '#FFF' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: '#8b897d' + } + }, + + navigator: { + handles: { + backgroundColor: '#f7f7f7', + borderColor: '#92918C' + }, + outlineColor: '#92918C', + outlineWidth: 1, + maskFill: 'rgba(146, 145, 140, 0.5)', + series: { + color: '#5E7BE2', + lineColor: '#5E7BE2' + } + }, + + scrollbar: { + buttonBackgroundColor: '#f7f7f7', + buttonBorderWidth: 1, + buttonBorderColor: '#92918C', + buttonArrowColor: '#92918C', + buttonBorderRadius: 2, + + barBorderWidth: 1, + barBorderRadius: 0, + barBackgroundColor: '#92918C', + barBorderColor: '#92918C', + + rifleColor: '#92918C', + + trackBackgroundColor: '#b0b0a8', + trackBorderWidth: 1, + trackBorderColor: '#b0b0a8' + } +}; + +Highcharts.setOptions(Highcharts.theme); diff --git a/Sources/API/gatling/results/Gin-Simulation/js/unpack.js b/Sources/API/gatling/results/Gin-Simulation/js/unpack.js new file mode 100644 index 0000000..883c33e --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/js/unpack.js @@ -0,0 +1,38 @@ +'use strict'; + +var unpack = function (array) { + var findNbSeries = function (array) { + var currentPlotPack; + var length = array.length; + + for (var i = 0; i < length; i++) { + currentPlotPack = array[i][1]; + if(currentPlotPack !== null) { + return currentPlotPack.length; + } + } + return 0; + }; + + var i, j; + var nbPlots = array.length; + var nbSeries = findNbSeries(array); + + // Prepare unpacked array + var unpackedArray = new Array(nbSeries); + + for (i = 0; i < nbSeries; i++) { + unpackedArray[i] = new Array(nbPlots); + } + + // Unpack the array + for (i = 0; i < nbPlots; i++) { + var timestamp = array[i][0]; + var values = array[i][1]; + for (j = 0; j < nbSeries; j++) { + unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; + } + } + + return unpackedArray; +}; diff --git a/Sources/API/gatling/results/Gin-Simulation/req_create-user-266a3.html b/Sources/API/gatling/results/Gin-Simulation/req_create-user-266a3.html new file mode 100644 index 0000000..36d5b93 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/req_create-user-266a3.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Create User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Gin-Simulation/req_delete-user-516b1.html b/Sources/API/gatling/results/Gin-Simulation/req_delete-user-516b1.html new file mode 100644 index 0000000..dee6217 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/req_delete-user-516b1.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Delete User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Gin-Simulation/req_get-all-users-b5141.html b/Sources/API/gatling/results/Gin-Simulation/req_get-all-users-b5141.html new file mode 100644 index 0000000..d56cbe2 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/req_get-all-users-b5141.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get All Users + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Gin-Simulation/req_get-user-00551.html b/Sources/API/gatling/results/Gin-Simulation/req_get-user-00551.html new file mode 100644 index 0000000..fd913ed --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/req_get-user-00551.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Gin-Simulation/req_update-user-6b160.html b/Sources/API/gatling/results/Gin-Simulation/req_update-user-6b160.html new file mode 100644 index 0000000..76792a9 --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/req_update-user-6b160.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Update User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Gin-Simulation/style/arrow_down.png b/Sources/API/gatling/results/Gin-Simulation/style/arrow_down.png new file mode 100644 index 0000000..3efdbc8 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/arrow_down.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/arrow_down_black.png b/Sources/API/gatling/results/Gin-Simulation/style/arrow_down_black.png new file mode 100644 index 0000000..3bae685 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/arrow_down_black.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/arrow_right.png b/Sources/API/gatling/results/Gin-Simulation/style/arrow_right.png new file mode 100644 index 0000000..a609f80 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/arrow_right.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/arrow_right_black.png b/Sources/API/gatling/results/Gin-Simulation/style/arrow_right_black.png new file mode 100644 index 0000000..651bd5d Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/arrow_right_black.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/bootstrap.min.css b/Sources/API/gatling/results/Gin-Simulation/style/bootstrap.min.css new file mode 100644 index 0000000..76a2b9b --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/style/bootstrap.min.css @@ -0,0 +1,27 @@ +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} +.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-3px;} +.tooltip.right{margin-left:3px;} +.tooltip.bottom{margin-top:3px;} +.tooltip.left{margin-left:-3px;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} +.popover.right{margin-left:10px;} +.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} +.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow:after{content:"";z-index:-1;} +.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} +.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} +.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} +.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} diff --git a/Sources/API/gatling/results/Gin-Simulation/style/favicon.ico b/Sources/API/gatling/results/Gin-Simulation/style/favicon.ico new file mode 100644 index 0000000..d2d20e1 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/favicon.ico differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/little_arrow_right.png b/Sources/API/gatling/results/Gin-Simulation/style/little_arrow_right.png new file mode 100644 index 0000000..252abe6 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/little_arrow_right.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/logo-enterprise.svg b/Sources/API/gatling/results/Gin-Simulation/style/logo-enterprise.svg new file mode 100644 index 0000000..4a6e1de --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/style/logo-enterprise.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Sources/API/gatling/results/Gin-Simulation/style/logo.svg b/Sources/API/gatling/results/Gin-Simulation/style/logo.svg new file mode 100644 index 0000000..f519eef --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/style/logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/Sources/API/gatling/results/Gin-Simulation/style/sortable.png b/Sources/API/gatling/results/Gin-Simulation/style/sortable.png new file mode 100644 index 0000000..a8bb54f Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/sortable.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/sorted-down.png b/Sources/API/gatling/results/Gin-Simulation/style/sorted-down.png new file mode 100644 index 0000000..5100cc8 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/sorted-down.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/sorted-up.png b/Sources/API/gatling/results/Gin-Simulation/style/sorted-up.png new file mode 100644 index 0000000..340a5f0 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/sorted-up.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/stat-fleche-bas.png b/Sources/API/gatling/results/Gin-Simulation/style/stat-fleche-bas.png new file mode 100644 index 0000000..8e0b501 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/stat-fleche-bas.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/stat-l-roue.png b/Sources/API/gatling/results/Gin-Simulation/style/stat-l-roue.png new file mode 100644 index 0000000..c9a3aae Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/stat-l-roue.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/stat-l-temps.png b/Sources/API/gatling/results/Gin-Simulation/style/stat-l-temps.png new file mode 100644 index 0000000..1ce2680 Binary files /dev/null and b/Sources/API/gatling/results/Gin-Simulation/style/stat-l-temps.png differ diff --git a/Sources/API/gatling/results/Gin-Simulation/style/style.css b/Sources/API/gatling/results/Gin-Simulation/style/style.css new file mode 100644 index 0000000..7f50e1b --- /dev/null +++ b/Sources/API/gatling/results/Gin-Simulation/style/style.css @@ -0,0 +1,988 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --gatling-background-color: #f2f2f2; + --gatling-background-light-color: #f7f7f7; + --gatling-border-color: #dddddd; + --gatling-blue-color: #4a9fe5; + --gatling-dark-blue-color: #24275e; + --gatling-danger-color: #f15b4f; + --gatling-danger-light-color: #f5d1ce; + --gatling-enterprise-color: #6161d6; + --gatling-enterprise-light-color: #c4c4ed; + --gatling-gray-medium-color: #bbb; + --gatling-hover-color: #e6e6e6; + --gatling-light-color: #ffffff; + --gatling-orange-color: #f78557; + --gatling-success-color: #68b65c; + --gatling-text-color: #1f2024; + --gatling-total-color: #ffa900; + + --gatling-border-radius: 2px; + --gatling-spacing-small: 5px; + --gatling-spacing: 10px; + --gatling-spacing-layout: 20px; + + --gatling-font-weight-normal: 400; + --gatling-font-weight-medium: 500; + --gatling-font-weight-bold: 700; + --gatling-font-size-secondary: 12px; + --gatling-font-size-default: 14px; + --gatling-font-size-heading: 16px; + --gatling-font-size-section: 22px; + --gatling-font-size-header: 34px; + + --gatling-media-desktop-large: 1920px; +} + +* { + min-height: 0; + min-width: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + color: var(--gatling-text-color); + font-family: arial; + font-size: var(--gatling-font-size-secondary); + margin: 0; +} + +.app-container { + display: flex; + flex-direction: column; + + height: 100%; + width: 100%; +} + +.head { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + + flex: 1; + + background-color: var(--gatling-light-color); + border-bottom: 1px solid var(--gatling-border-color); + min-height: 69px; + padding: 0 var(--gatling-spacing-layout); +} + +.gatling-open-source { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + gap: var(--gatling-spacing-layout); +} + +.gatling-documentation { + display: flex; + align-items: center; + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-orange-color); + border: 1px solid var(--gatling-orange-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 23px; +} + +.gatling-documentation:hover { + background-color: var(--gatling-orange-color); + color: var(--gatling-light-color); +} + +.gatling-logo { + height: 35px; +} + +.gatling-logo img { + height: 100%; +} + +.container { + display: flex; + align-items: stretch; + height: 100%; +} + +.nav { + min-width: 210px; + width: 210px; + max-height: calc(100vh - var(--gatling-spacing-layout) - var(--gatling-spacing-layout)); + background: var(--gatling-light-color); + border-right: 1px solid var(--gatling-border-color); + overflow-y: auto; +} + +@media print { + .nav { + display: none; + } +} + +@media screen and (min-width: 1920px) { + .nav { + min-width: 310px; + width: 310px; + } +} + +.nav ul { + display: flex; + flex-direction: column; + + padding: 0; + margin: 0; +} + +.nav li { + display: flex; + list-style: none; + width: 100%; + padding: 0; +} + +.nav .item { + display: inline-flex; + align-items: center; + margin: 0 auto; + white-space: nowrap; + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + margin: 0; + width: 100%; +} + +.nav .item .nav-label { + padding: var(--gatling-spacing) var(--gatling-spacing-layout); +} + +.nav .item:hover { + background-color: var(--gatling-hover-color); +} + +.nav .on .item { + background-color: var(--gatling-orange-color); +} + +.nav .on .item span { + color: var(--gatling-light-color); +} + +.cadre { + width: 100%; + height: 100%; + overflow-y: scroll; + scroll-behavior: smooth; +} + +@media print { + .cadre { + overflow-y: unset; + } +} + +.frise { + position: absolute; + top: 60px; + z-index: -1; + + background-color: var(--gatling-background-color); + height: 530px; +} + +.global { + height: 650px +} + +a { + text-decoration: none; +} + +a:hover { + color: var(--gatling-hover-color); +} + +img { + border: 0; +} + +h1 { + color: var(--gatling-dark-blue-color); + font-size: var(--gatling-font-size-section); + font-weight: var(--gatling-font-weight-medium); + text-align: center; + margin: 0; +} + +h1 span { + color: var(--gatling-hover-color); +} + +.enterprise { + display: flex; + align-items: center; + justify-content: center; + gap: var(--gatling-spacing-small); + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-enterprise-color); + color: var(--gatling-enterprise-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 25px; +} + +.enterprise:hover { + background-color: var(--gatling-enterprise-light-color); + color: var(--gatling-enterprise-color); +} + +.enterprise img { + display: block; + width: 160px; +} + +.simulation-card { + display: flex; + flex-direction: column; + align-self: stretch; + flex: 1; + gap: var(--gatling-spacing-layout); + max-height: 375px; +} + +#simulation-information { + flex: 1; +} + +.simulation-version-information { + display: flex; + flex-direction: column; + + gap: var(--gatling-spacing); + font-size: var(--gatling-font-size-default); + + background-color: var(--gatling-background-color); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing); +} + +.simulation-information-container { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing); +} + +.withTooltip .popover-title { + display: none; +} + +.popover-content p { + margin: 0; +} + +.ellipsed-name { + display: block; + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.simulation-information-item { + display: flex; + flex-direction: row; + align-items: flex-start; + gap: var(--gatling-spacing-small); +} + +.simulation-information-item.description { + flex-direction: column; +} + +.simulation-information-label { + display: inline-block; + font-weight: var(--gatling-font-weight-bold); + min-width: fit-content; +} + +.simulation-information-title { + display: block; + text-align: center; + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + width: 100%; +} + +.simulation-tooltip span { + display: inline-block; + word-wrap: break-word; + overflow: hidden; + text-overflow: ellipsis; +} + +.content { + display: flex; + flex-direction: column; +} + +.content-in { + width: 100%; + height: 100%; + + overflow-x: scroll; +} + +@media print { + .content-in { + overflow-x: unset; + } +} + +.container-article { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + min-width: 1050px; + width: 1050px; + margin: 0 auto; + padding: var(--gatling-spacing-layout); + box-sizing: border-box; +} + +@media screen and (min-width: 1920px) { + .container-article { + min-width: 1350px; + width: 1350px; + } + + #responses * .highcharts-tracker { + transform: translate(400px, 70px); + } +} + +.content-header { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + background-color: var(--gatling-background-light-color); + border-bottom: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-layout) var(--gatling-spacing-layout) 0; +} + +.onglet { + font-size: var(--gatling-font-size-header); + font-weight: var(--gatling-font-weight-medium); + text-align: center; +} + +.sous-menu { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.sous-menu-spacer { + display: flex; + align-items: center; + flex-direction: row; +} + +.sous-menu .item { + margin-bottom: -1px; +} + +.sous-menu a { + display: block; + + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-normal); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border-bottom: 2px solid transparent; + color: var(--gatling-text-color); + text-align: center; + width: 100px; +} + +.sous-menu a:hover { + border-bottom-color: var(--gatling-text-color); +} + +.sous-menu .ouvert a { + border-bottom-color: var(--gatling-orange-color); + font-weight: var(--gatling-font-weight-bold); +} + +.article { + position: relative; + + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); +} + +.infos { + width: 340px; + color: var(--gatling-light-color); +} + +.infos-title { + background-color: var(--gatling-background-light-color); + border: 1px solid var(--gatling-border-color); + border-bottom: 0; + border-top-left-radius: var(--gatling-border-radius); + border-top-right-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.info { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + height: 100%; + margin: 0; +} + +.info table { + margin: auto; + padding-right: 15px; +} + +.alert-danger { + background-color: var(--gatling-danger-light-color); + border: 1px solid var(--gatling-danger-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + padding: var(--gatling-spacing-layout); + font-weight: var(--gatling-font-weight-bold); +} + +.repli { + position: absolute; + bottom: 0; + right: 0; + + background: url('stat-fleche-bas.png') no-repeat top left; + height: 25px; + width: 22px; +} + +.infos h2 { + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + height: 19px; + margin: 0; + padding: 3.5px 0 0 35px; +} + +.infos .first { + background: url('stat-l-roue.png') no-repeat 15px 5px; +} + +.infos .second { + background: url('stat-l-temps.png') no-repeat 15px 3px; + border-top: 1px solid var(--gatling-border-color); +} + +.infos th { + text-align: center; +} + +.infos td { + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing-small); + -webkit-border-radius: var(--gatling-border-radius); + -moz-border-radius: var(--gatling-border-radius); + -ms-border-radius: var(--gatling-border-radius); + -o-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + text-align: right; + width: 50px; +} + +.infos .title { + width: 120px; +} + +.infos .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); +} + +.infos .total { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); +} + +.infos .ko { + background-color: var(--gatling-danger-color); + -webkit-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); +} + +.schema-container { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gatling-spacing-layout); +} + +.schema { + background: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); +} + +.ranges { + height: 375px; + width: 500px; +} + +.ranges-large { + height: 375px; + width: 530px; +} + +.geant { + height: 362px; +} + +.extensible-geant { + width: 100%; +} + +.polar { + height: 375px; + width: 230px; +} + +.chart_title { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + padding: 2px var(--gatling-spacing); +} + +.statistics { + display: flex; + flex-direction: column; + + background-color: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border-collapse: collapse; + color: var(--gatling-text-color); + max-height: 100%; +} + +.statistics .title { + display: flex; + text-align: center; + justify-content: space-between; + + min-height: 49.5px; + box-sizing: border-box; + + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing); +} + +.title_base { + display: flex; + align-items: center; + text-align: left; + user-select: none; +} + +.title_base_stats { + color: var(--gatling-text-color); + margin-right: 20px; +} + +.toggle-table { + position: relative; + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: 25px; + width: 40px; + height: 20px; + margin: 0 var(--gatling-spacing-small); +} + +.toggle-table::before { + position: absolute; + top: calc(50% - 9px); + left: 1px; + content: ""; + width: 50%; + height: 18px; + border-radius: 50%; + background-color: var(--gatling-text-color); +} + +.toggle-table.off::before { + left: unset; + right: 1px; +} + +.title_expanded { + cursor: pointer; + color: var(--gatling-text-color); +} + +.expand-table, +.collapse-table { + font-size: var(--gatling-font-size-secondary); + font-weight: var(--gatling-font-weight-normal); +} + +.title_expanded span.expand-table { + color: var(--gatling-gray-medium-color); +} + +.title_collapsed { + cursor: pointer; + color: var(--gatling-text-color); +} + +.title_collapsed span.collapse-table { + color: var(--gatling-gray-medium-color); +} + +#container_statistics_head { + position: sticky; + top: -1px; + + background: var(--gatling-background-light-color); + margin-top: -1px; + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); +} + +#container_statistics_body { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + margin-top: -1px; + padding: 0px var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small); +} + +#container_errors { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); + margin-top: -1px; +} + +#container_assertions { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small); + margin-top: -1px; +} + +.statistics-in { + border-spacing: var(--gatling-spacing-small); + border-collapse: collapse; + margin: 0; +} + +.statistics .scrollable { + max-height: 100%; + overflow-y: auto; +} + +#statistics_table_container .statistics .scrollable { + max-height: 785px; +} + +.statistics-in a { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .header { + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small); +} + +.sortable { + cursor: pointer; +} + +.sortable span { + background: url('sortable.png') no-repeat right 3px; + padding-right: 10px; +} + +.sorted-up span { + background-image: url('sorted-up.png'); +} + +.sorted-down span { + background-image: url('sorted-down.png'); +} + +.executions { + background: url('stat-l-roue.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.response-time { + background: url('stat-l-temps.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.statistics-in td { + background-color: var(--gatling-light-color); + border: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-small); + min-width: 50px; +} + +.statistics-in .col-1 { + width: 175px; + max-width: 175px; +} +@media screen and (min-width: 1200px) { + .statistics-in .col-1 { + width: 50%; + } +} + +.expandable-container { + display: flex; + flex-direction: row; + box-sizing: border-box; + max-width: 100%; +} + +.statistics-in .value { + text-align: right; + width: 50px; +} + +.statistics-in .total { + color: var(--gatling-text-color); +} + +.statistics-in .col-2 { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .error-col-1 { + background-color: var(--gatling-light-color); + color: var(--gatling-text-color); +} + +.statistics-in .error-col-2 { + text-align: center; +} + +.statistics-in .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .ko { + background-color: var(--gatling-danger-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .expand-button { + padding-left: var(--gatling-spacing); + cursor: pointer; +} + +.expand-button.hidden { + background: none; + cursor: default; +} + +.statistics-button { + background-color: var(--gatling-light-color); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); +} + +.statistics-button:hover:not(:disabled) { + cursor: pointer; + background-color: var(--gatling-hover-color); +} + +.statistics-in .expand-button.expand { + background: url('little_arrow_right.png') no-repeat 3px 3px; +} + +.statistics-in .expand-button.collapse { + background: url('sorted-down.png') no-repeat 3px 3px; +} + +.nav .expand-button { + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.nav .expand-button.expand { + background: url('arrow_right_black.png') no-repeat 5px 10px; + cursor: pointer; +} + +.nav .expand-button.collapse { + background: url('arrow_down_black.png') no-repeat 3px 12px; + cursor: pointer; +} + +.nav .on .expand-button.expand { + background-image: url('arrow_right_black.png'); +} + +.nav .on .expand-button.collapse { + background-image: url('arrow_down_black.png'); +} + +.right { + display: flex; + align-items: center; + gap: var(--gatling-spacing); + float: right; + font-size: var(--gatling-font-size-default); +} + +.withTooltip { + outline: none; +} + +.withTooltip:hover { + text-decoration: none; +} + +.withTooltip .tooltipContent { + position: absolute; + z-index: 10; + display: none; + + background: var(--gatling-orange-color); + -webkit-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + -moz-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); + margin-top: -5px; + padding: var(--gatling-spacing-small); +} + +.withTooltip:hover .tooltipContent { + display: inline; +} + +.statistics-table-modal { + height: calc(100% - 60px); + width: calc(100% - 60px); + border-radius: var(--gatling-border-radius); +} + +.statistics-table-modal::backdrop { + position: fixed; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + + background-color: rgba(100, 100, 100, 0.9); +} + +.statistics-table-modal-container { + display: flex; + flex-direction: column; + + width: 100%; + height: calc(100% - 35px); + overflow-x: auto; +} + +.button-modal { + cursor: pointer; + + height: 25px; + width: 25px; + + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); +} + +.button-modal:hover { + background-color: var(--gatling-background-color); +} + +.statistics-table-modal-header { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-bottom: var(--gatling-spacing); +} + +.statistics-table-modal-content { + flex: 1; + overflow-y: auto; + min-width: 1050px; +} + +.statistics-table-modal-footer { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-top: var(--gatling-spacing); +} diff --git a/Sources/API/gatling/results/Iris-Simulation/index.html b/Sources/API/gatling/results/Iris-Simulation/index.html new file mode 100644 index 0000000..105c2ba --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/index.html @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Global Information + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    +
    +
    + Gatling Version + + Version: + 3.9.0 + + + Released: + 2022-12-14 + +
    +
    + Run Information +
    + + Date: + 2023-02-06 15:45:46 GMT + + + Duration: + 21s + + + Description: + Load testing Iris API + + +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/js/all_sessions.js b/Sources/API/gatling/results/Iris-Simulation/js/all_sessions.js new file mode 100644 index 0000000..93e2218 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/all_sessions.js @@ -0,0 +1,11 @@ +allUsersData = { + +color: '#FFA900', +name: 'Active Users', +data: [ + [1675698347000,52],[1675698348000,103],[1675698349000,153],[1675698350000,203],[1675698351000,253],[1675698352000,282],[1675698353000,309],[1675698354000,334],[1675698355000,351],[1675698356000,361],[1675698357000,324],[1675698358000,306],[1675698359000,277],[1675698360000,246],[1675698361000,200],[1675698362000,153],[1675698363000,96],[1675698364000,47],[1675698365000,14],[1675698366000,3],[1675698367000,2],[1675698368000,1] +], +tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } + , zIndex: 20 + , yAxis: 1 +}; \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/assertions.json b/Sources/API/gatling/results/Iris-Simulation/js/assertions.json new file mode 100644 index 0000000..35ebf4f --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/assertions.json @@ -0,0 +1,10 @@ +{ + "simulation": "benchmark.UserSimulation", + "simulationId": "usersimulation-20230206154545957", + "start": 1675698346852, + "description": "Load testing Iris API", + "scenarios": ["Users"], + "assertions": [ + + ] +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/assertions.xml b/Sources/API/gatling/results/Iris-Simulation/js/assertions.xml new file mode 100644 index 0000000..f6a86c9 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/assertions.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/bootstrap.min.js b/Sources/API/gatling/results/Iris-Simulation/js/bootstrap.min.js new file mode 100644 index 0000000..ea41042 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/** +* Bootstrap.js by @fat & @mdo +* plugins: bootstrap-tooltip.js, bootstrap-popover.js +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.offset(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var b=this,c=this.tip();return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.detach(),this},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);c[c.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
    ',trigger:"hover",title:"",delay:0,html:!1}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content > *")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

    '})}(window.jQuery) \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/ellipsis.js b/Sources/API/gatling/results/Iris-Simulation/js/ellipsis.js new file mode 100644 index 0000000..781d0de --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/ellipsis.js @@ -0,0 +1,26 @@ +function parentId(name) { + return "parent-" + name; +} + +function isEllipsed(name) { + const child = document.getElementById(name); + const parent = document.getElementById(parentId(name)); + const emptyData = parent.getAttribute("data-content") === ""; + const hasOverflow = child.clientWidth < child.scrollWidth; + + if (hasOverflow) { + if (emptyData) { + parent.setAttribute("data-content", name); + } + } else { + if (!emptyData) { + parent.setAttribute("data-content", ""); + } + } +} + +function ellipsedLabel ({ name, parentClass = "", childClass = "" }) { + const child = "" + name + ""; + + return "" + child + ""; +} diff --git a/Sources/API/gatling/results/Iris-Simulation/js/gatling.js b/Sources/API/gatling/results/Iris-Simulation/js/gatling.js new file mode 100644 index 0000000..0208f82 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/gatling.js @@ -0,0 +1,137 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function ($) { + $.fn.expandable = function () { + var scope = this; + + this.find('.expand-button:not([class*=hidden])').addClass('collapse').on('click', function () { + var $this = $(this); + + if ($this.hasClass('expand')) + $this.expand(scope); + else + $this.collapse(scope); + }); + + this.find('.expand-all-button').on('click', function () { + $(this).expandAll(scope); + }); + + this.find('.collapse-all-button').on('click', function () { + $(this).collapseAll(scope); + }); + + this.collapseAll(this); + + return this; + }; + + $.fn.expand = function (scope, recursive) { + return this.each(function () { + var $this = $(this); + + if (recursive) { + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + } + + if ($this.hasClass('expand')) { + $('*[data-parent=' + $this.attr('id') + ']').toggle(true); + $this.toggleClass('expand').toggleClass('collapse'); + } + }); + }; + + $.fn.expandAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.expand').expand(scope, true); + $('*[data-parent=ROOT]').find('.expand-button.collapse').expand(scope, true); + }; + + $.fn.collapse = function (scope) { + return this.each(function () { + var $this = $(this); + + scope.find('*[data-parent=' + $this.attr('id') + '] .expand-button.collapse').collapse(scope); + scope.find('*[data-parent=' + $this.attr('id') + ']').toggle(false); + $this.toggleClass('expand').toggleClass('collapse'); + }); + }; + + $.fn.collapseAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.collapse').collapse(scope); + }; + + $.fn.sortable = function (target) { + var table = this; + + this.find('thead .sortable').on('click', function () { + var $this = $(this); + + if ($this.hasClass('sorted-down')) { + var desc = false; + var style = 'sorted-up'; + } + else { + var desc = true; + var style = 'sorted-down'; + } + + $(target).sortTable($this.attr('id'), desc); + + table.find('thead .sortable').removeClass('sorted-up sorted-down'); + $this.addClass(style); + + return false; + }); + + return this; + }; + + $.fn.sortTable = function (col, desc) { + function getValue(line) { + var cell = $(line).find('.' + col); + + if (cell.hasClass('value')) + var value = cell.text(); + else + var value = cell.find('.value').text(); + + return parseFloat(value); + } + + function sortLines (lines, group) { + var notErrorTable = col.search("error") == -1; + var linesToSort = notErrorTable ? lines.filter('*[data-parent=' + group + ']') : lines; + + var sortedLines = linesToSort.sort(function (a, b) { + return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); + }).toArray(); + + var result = []; + $.each(sortedLines, function (i, line) { + result.push(line); + if (notErrorTable) + result = result.concat(sortLines(lines, $(line).attr('id'))); + }); + + return result; + } + + this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); + + return this; + }; +})(jQuery); diff --git a/Sources/API/gatling/results/Iris-Simulation/js/global_stats.json b/Sources/API/gatling/results/Iris-Simulation/js/global_stats.json new file mode 100644 index 0000000..82e884c --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/global_stats.json @@ -0,0 +1,77 @@ +{ + "name": "All Requests", + "numberOfRequests": { + "total": 3262, + "ok": 2609, + "ko": 653 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 1 + }, + "maxResponseTime": { + "total": 4330, + "ok": 4330, + "ko": 3627 + }, + "meanResponseTime": { + "total": 358, + "ok": 347, + "ko": 403 + }, + "standardDeviation": { + "total": 729, + "ok": 731, + "ko": 719 + }, + "percentiles1": { + "total": 7, + "ok": 7, + "ko": 8 + }, + "percentiles2": { + "total": 174, + "ok": 106, + "ko": 594 + }, + "percentiles3": { + "total": 2117, + "ok": 2111, + "ko": 2153 + }, + "percentiles4": { + "total": 3109, + "ok": 3177, + "ko": 2964 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2145, + "percentage": 66 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 138, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 326, + "percentage": 10 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 653, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": 148.27272727272728, + "ok": 118.5909090909091, + "ko": 29.681818181818183 + } +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/highcharts-more.js b/Sources/API/gatling/results/Iris-Simulation/js/highcharts-more.js new file mode 100644 index 0000000..2d78893 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/highcharts-more.js @@ -0,0 +1,60 @@ +/* + Highcharts JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(b){function r(b,a,d){this.init(b,a,d)}var t=b.each,w=b.extend,m=b.merge,q=b.splat;w(r.prototype,{init:function(b,a,d){var f=this,h=f.defaultOptions;f.chart=a;f.options=b=m(h,a.angular?{background:{}}:void 0,b);(b=b.background)&&t([].concat(q(b)).reverse(),function(a){var c,h=d.userOptions;c=m(f.defaultBackgroundOptions,a);a.backgroundColor&&(c.backgroundColor=a.backgroundColor);c.color=c.backgroundColor; +d.options.plotBands.unshift(c);h.plotBands=h.plotBands||[];h.plotBands!==d.options.plotBands&&h.plotBands.unshift(c)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{className:"highcharts-pane",shape:"circle",borderWidth:1,borderColor:"#cccccc",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#ffffff"],[1,"#e6e6e6"]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});b.Pane=r})(x);(function(b){var r=b.CenteredSeriesMixin, +t=b.each,w=b.extend,m=b.map,q=b.merge,e=b.noop,a=b.Pane,d=b.pick,f=b.pInt,h=b.splat,u=b.wrap,c,l,k=b.Axis.prototype;b=b.Tick.prototype;c={getOffset:e,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:e,setCategories:e,setTitle:e};l={defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2}, +defaultRadialXOptions:{gridLineWidth:1,labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=q(this.defaultOptions,this.defaultRadialOptions,a);a.plotBands||(a.plotBands=[])},getOffset:function(){k.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center= +r.getCenter.call(this.pane)},getLinePath:function(a,g){a=this.center;var c=this.chart,f=d(g,a[2]/2-this.offset);this.isCircular||void 0!==g?g=this.chart.renderer.symbols.arc(this.left+a[0],this.top+a[1],f,f,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0}):(g=this.postTranslate(this.angleRad,f),g=["M",a[0]+c.plotLeft,a[1]+c.plotTop,"L",g.x,g.y]);return g},setAxisTranslation:function(){k.setAxisTranslation.call(this);this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/ +(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0)},beforeSetTickPositions:function(){if(this.autoConnect=this.isCircular&&void 0===d(this.userMax,this.options.max)&&this.endAngleRad-this.startAngleRad===2*Math.PI)this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0},setAxisSize:function(){k.setAxisSize.call(this);this.isRadial&&(this.center=this.pane.center=r.getCenter.call(this.pane),this.isCircular&& +(this.sector=this.endAngleRad-this.startAngleRad),this.len=this.width=this.height=this.center[2]*d(this.sector,1)/2)},getPosition:function(a,g){return this.postTranslate(this.isCircular?this.translate(a):this.angleRad,d(this.isCircular?g:this.translate(a),this.center[2]/2)-this.offset)},postTranslate:function(a,g){var d=this.chart,c=this.center;a=this.startAngleRad+a;return{x:d.plotLeft+c[0]+Math.cos(a)*g,y:d.plotTop+c[1]+Math.sin(a)*g}},getPlotBandPath:function(a,g,c){var h=this.center,p=this.startAngleRad, +k=h[2]/2,n=[d(c.outerRadius,"100%"),c.innerRadius,d(c.thickness,10)],b=Math.min(this.offset,0),l=/%$/,u,e=this.isCircular;"polygon"===this.options.gridLineInterpolation?h=this.getPlotLinePath(a).concat(this.getPlotLinePath(g,!0)):(a=Math.max(a,this.min),g=Math.min(g,this.max),e||(n[0]=this.translate(a),n[1]=this.translate(g)),n=m(n,function(a){l.test(a)&&(a=f(a,10)*k/100);return a}),"circle"!==c.shape&&e?(a=p+this.translate(a),g=p+this.translate(g)):(a=-Math.PI/2,g=1.5*Math.PI,u=!0),n[0]-=b,n[2]-= +b,h=this.chart.renderer.symbols.arc(this.left+h[0],this.top+h[1],n[0],n[0],{start:Math.min(a,g),end:Math.max(a,g),innerR:d(n[1],n[0]-n[2]),open:u}));return h},getPlotLinePath:function(a,g){var d=this,c=d.center,f=d.chart,h=d.getPosition(a),k,b,p;d.isCircular?p=["M",c[0]+f.plotLeft,c[1]+f.plotTop,"L",h.x,h.y]:"circle"===d.options.gridLineInterpolation?(a=d.translate(a))&&(p=d.getLinePath(0,a)):(t(f.xAxis,function(a){a.pane===d.pane&&(k=a)}),p=[],a=d.translate(a),c=k.tickPositions,k.autoConnect&&(c= +c.concat([c[0]])),g&&(c=[].concat(c).reverse()),t(c,function(g,d){b=k.getPosition(g,a);p.push(d?"L":"M",b.x,b.y)}));return p},getTitlePosition:function(){var a=this.center,g=this.chart,d=this.options.title;return{x:g.plotLeft+a[0]+(d.x||0),y:g.plotTop+a[1]-{high:.5,middle:.25,low:0}[d.align]*a[2]+(d.y||0)}}};u(k,"init",function(f,g,k){var b=g.angular,p=g.polar,n=k.isX,u=b&&n,e,A=g.options,m=k.pane||0;if(b){if(w(this,u?c:l),e=!n)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else p&&(w(this, +l),this.defaultRadialOptions=(e=n)?this.defaultRadialXOptions:q(this.defaultYAxisOptions,this.defaultRadialYOptions));b||p?(this.isRadial=!0,g.inverted=!1,A.chart.zoomType=null):this.isRadial=!1;f.call(this,g,k);u||!b&&!p||(f=this.options,g.panes||(g.panes=[]),this.pane=g=g.panes[m]=g.panes[m]||new a(h(A.pane)[m],g,this),g=g.options,this.angleRad=(f.angle||0)*Math.PI/180,this.startAngleRad=(g.startAngle-90)*Math.PI/180,this.endAngleRad=(d(g.endAngle,g.startAngle+360)-90)*Math.PI/180,this.offset=f.offset|| +0,this.isCircular=e)});u(k,"autoLabelAlign",function(a){if(!this.isRadial)return a.apply(this,[].slice.call(arguments,1))});u(b,"getPosition",function(a,d,c,f,h){var g=this.axis;return g.getPosition?g.getPosition(c):a.call(this,d,c,f,h)});u(b,"getLabelPosition",function(a,g,c,f,h,k,b,l,u){var n=this.axis,p=k.y,e=20,y=k.align,v=(n.translate(this.pos)+n.startAngleRad+Math.PI/2)/Math.PI*180%360;n.isRadial?(a=n.getPosition(this.pos,n.center[2]/2+d(k.distance,-25)),"auto"===k.rotation?f.attr({rotation:v}): +null===p&&(p=n.chart.renderer.fontMetrics(f.styles.fontSize).b-f.getBBox().height/2),null===y&&(n.isCircular?(this.label.getBBox().width>n.len*n.tickInterval/(n.max-n.min)&&(e=0),y=v>e&&v<180-e?"left":v>180+e&&v<360-e?"right":"center"):y="center",f.attr({align:y})),a.x+=k.x,a.y+=p):a=a.call(this,g,c,f,h,k,b,l,u);return a});u(b,"getMarkPath",function(a,d,c,f,h,k,b){var g=this.axis;g.isRadial?(a=g.getPosition(this.pos,g.center[2]/2+f),d=["M",d,c,"L",a.x,a.y]):d=a.call(this,d,c,f,h,k,b);return d})})(x); +(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.Series,q=b.seriesType,e=b.seriesTypes;q("arearange","area",{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{series.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}},{pointArrayMap:["low","high"],dataLabelCollections:["dataLabel", +"dataLabelUpper"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,highToXY:function(a){var d=this.chart,f=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=f.x-d.plotLeft;a.plotHigh=f.y-d.plotTop},translate:function(){var a=this,d=a.yAxis,f=!!a.modifyValue;e.area.prototype.translate.apply(a);r(a.points,function(h){var b=h.low,c=h.high,l=h.plotY;null===c||null===b?h.isNull=!0:(h.plotLow=l,h.plotHigh=d.translate(f?a.modifyValue(c,h):c,0,1, +0,1),f&&(h.yBottom=h.plotHigh))});this.chart.polar&&r(this.points,function(d){a.highToXY(d)})},getGraphPath:function(a){var d=[],f=[],h,b=e.area.prototype.getGraphPath,c,l,k;k=this.options;var p=k.step;a=a||this.points;for(h=a.length;h--;)c=a[h],c.isNull||k.connectEnds||a[h+1]&&!a[h+1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1}),l={polarPlotY:c.polarPlotY,rectPlotX:c.rectPlotX,yBottom:c.yBottom,plotX:w(c.plotHighX,c.plotX),plotY:c.plotHigh,isNull:c.isNull},f.push(l),d.push(l),c.isNull|| +k.connectEnds||a[h-1]&&!a[h-1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1});a=b.call(this,a);p&&(!0===p&&(p="left"),k.step={left:"right",center:"center",right:"left"}[p]);d=b.call(this,d);f=b.call(this,f);k.step=p;k=[].concat(a,d);this.chart.polar||"M"!==f[0]||(f[0]="L");this.graphPath=k;this.areaPath=this.areaPath.concat(a,f);k.isArea=!0;k.xMap=a.xMap;this.areaPath.xMap=a.xMap;return k},drawDataLabels:function(){var a=this.data,d=a.length,f,h=[],b=m.prototype,c=this.options.dataLabels, +l=c.align,k=c.verticalAlign,p=c.inside,g,n,e=this.chart.inverted;if(c.enabled||this._hasPointLabels){for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.y=g.high,g._plotY=g.plotY,g.plotY=g.plotHigh,h[f]=g.dataLabel,g.dataLabel=g.dataLabelUpper,g.below=n,e?l||(c.align=n?"right":"left"):k||(c.verticalAlign=n?"top":"bottom"),c.x=c.xHigh,c.y=c.yHigh;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments);for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.dataLabelUpper= +g.dataLabel,g.dataLabel=h[f],g.y=g.low,g.plotY=g._plotY,g.below=!n,e?l||(c.align=n?"left":"right"):k||(c.verticalAlign=n?"bottom":"top"),c.x=c.xLow,c.y=c.yLow;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments)}c.align=l;c.verticalAlign=k},alignDataLabel:function(){e.column.prototype.alignDataLabel.apply(this,arguments)},setStackedPoints:t,getSymbol:t,drawPoints:t})})(x);(function(b){var r=b.seriesType;r("areasplinerange","arearange",null,{getPointSpline:b.seriesTypes.spline.prototype.getPointSpline})})(x); +(function(b){var r=b.defaultPlotOptions,t=b.each,w=b.merge,m=b.noop,q=b.pick,e=b.seriesType,a=b.seriesTypes.column.prototype;e("columnrange","arearange",w(r.column,r.arearange,{lineWidth:1,pointRange:null}),{translate:function(){var d=this,f=d.yAxis,b=d.xAxis,u=b.startAngleRad,c,l=d.chart,k=d.xAxis.isRadial,p;a.translate.apply(d);t(d.points,function(a){var g=a.shapeArgs,h=d.options.minPointLength,e,v;a.plotHigh=p=f.translate(a.high,0,1,0,1);a.plotLow=a.plotY;v=p;e=q(a.rectPlotY,a.plotY)-p;Math.abs(e)< +h?(h-=e,e+=h,v-=h/2):0>e&&(e*=-1,v-=e);k?(c=a.barX+u,a.shapeType="path",a.shapeArgs={d:d.polarArc(v+e,v,c,c+a.pointWidth)}):(g.height=e,g.y=v,a.tooltipPos=l.inverted?[f.len+f.pos-l.plotLeft-v-e/2,b.len+b.pos-l.plotTop-g.x-g.width/2,e]:[b.left-l.plotLeft+g.x+g.width/2,f.pos-l.plotTop+v+e/2,e])})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:m,crispCol:a.crispCol,drawPoints:a.drawPoints,drawTracker:a.drawTracker,getColumnMetrics:a.getColumnMetrics,animate:function(){return a.animate.apply(this, +arguments)},polarArc:function(){return a.polarArc.apply(this,arguments)},pointAttribs:a.pointAttribs})})(x);(function(b){var r=b.each,t=b.isNumber,w=b.merge,m=b.pick,q=b.pInt,e=b.Series,a=b.seriesType,d=b.TrackerMixin;a("gauge","line",{dataLabels:{enabled:!0,defer:!1,y:15,borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2,borderWidth:1,borderColor:"#cccccc"},dial:{},pivot:{},tooltip:{headerFormat:""},showInLegend:!1},{angular:!0,directTouch:!0,drawGraph:b.noop,fixedBox:!0,forceDL:!0,noSharedTooltip:!0, +trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,d=this.options,b=a.center;this.generatePoints();r(this.points,function(c){var f=w(d.dial,c.dial),k=q(m(f.radius,80))*b[2]/200,h=q(m(f.baseLength,70))*k/100,g=q(m(f.rearLength,10))*k/100,n=f.baseWidth||3,u=f.topWidth||1,e=d.overshoot,v=a.startAngleRad+a.translate(c.y,null,null,null,!0);t(e)?(e=e/180*Math.PI,v=Math.max(a.startAngleRad-e,Math.min(a.endAngleRad+e,v))):!1===d.wrap&&(v=Math.max(a.startAngleRad,Math.min(a.endAngleRad, +v)));v=180*v/Math.PI;c.shapeType="path";c.shapeArgs={d:f.path||["M",-g,-n/2,"L",h,-n/2,k,-u/2,k,u/2,h,n/2,-g,n/2,"z"],translateX:b[0],translateY:b[1],rotation:v};c.plotX=b[0];c.plotY=b[1]})},drawPoints:function(){var a=this,d=a.yAxis.center,b=a.pivot,c=a.options,l=c.pivot,k=a.chart.renderer;r(a.points,function(d){var g=d.graphic,b=d.shapeArgs,f=b.d,h=w(c.dial,d.dial);g?(g.animate(b),b.d=f):(d.graphic=k[d.shapeType](b).attr({rotation:b.rotation,zIndex:1}).addClass("highcharts-dial").add(a.group),d.graphic.attr({stroke:h.borderColor|| +"none","stroke-width":h.borderWidth||0,fill:h.backgroundColor||"#000000"}))});b?b.animate({translateX:d[0],translateY:d[1]}):(a.pivot=k.circle(0,0,m(l.radius,5)).attr({zIndex:2}).addClass("highcharts-pivot").translate(d[0],d[1]).add(a.group),a.pivot.attr({"stroke-width":l.borderWidth||0,stroke:l.borderColor||"#cccccc",fill:l.backgroundColor||"#000000"}))},animate:function(a){var d=this;a||(r(d.points,function(a){var c=a.graphic;c&&(c.attr({rotation:180*d.yAxis.startAngleRad/Math.PI}),c.animate({rotation:a.shapeArgs.rotation}, +d.options.animation))}),d.animate=null)},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);e.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,d){e.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();m(d,!0)&&this.chart.redraw()},drawTracker:d&&d.drawTrackerPoint},{setState:function(a){this.state=a}})})(x);(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.seriesType, +q=b.seriesTypes;m("boxplot","column",{threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eMaximum: {point.high}\x3cbr/\x3eUpper quartile: {point.q3}\x3cbr/\x3eMedian: {point.median}\x3cbr/\x3eLower quartile: {point.q1}\x3cbr/\x3eMinimum: {point.low}\x3cbr/\x3e'},whiskerLength:"50%",fillColor:"#ffffff",lineWidth:1,medianWidth:2,states:{hover:{brightness:-.3}},whiskerWidth:2},{pointArrayMap:["low","q1","median", +"q3","high"],toYData:function(b){return[b.low,b.q1,b.median,b.q3,b.high]},pointValKey:"high",pointAttribs:function(b){var a=this.options,d=b&&b.color||this.color;return{fill:b.fillColor||a.fillColor||d,stroke:a.lineColor||d,"stroke-width":a.lineWidth||0}},drawDataLabels:t,translate:function(){var b=this.yAxis,a=this.pointArrayMap;q.column.prototype.translate.apply(this);r(this.points,function(d){r(a,function(a){null!==d[a]&&(d[a+"Plot"]=b.translate(d[a],0,1,0,1))})})},drawPoints:function(){var b= +this,a=b.options,d=b.chart.renderer,f,h,u,c,l,k,p=0,g,n,m,q,v=!1!==b.doQuartiles,t,x=b.options.whiskerLength;r(b.points,function(e){var r=e.graphic,y=r?"animate":"attr",I=e.shapeArgs,z={},B={},G={},H=e.color||b.color;void 0!==e.plotY&&(g=I.width,n=Math.floor(I.x),m=n+g,q=Math.round(g/2),f=Math.floor(v?e.q1Plot:e.lowPlot),h=Math.floor(v?e.q3Plot:e.lowPlot),u=Math.floor(e.highPlot),c=Math.floor(e.lowPlot),r||(e.graphic=r=d.g("point").add(b.group),e.stem=d.path().addClass("highcharts-boxplot-stem").add(r), +x&&(e.whiskers=d.path().addClass("highcharts-boxplot-whisker").add(r)),v&&(e.box=d.path(void 0).addClass("highcharts-boxplot-box").add(r)),e.medianShape=d.path(void 0).addClass("highcharts-boxplot-median").add(r),z.stroke=e.stemColor||a.stemColor||H,z["stroke-width"]=w(e.stemWidth,a.stemWidth,a.lineWidth),z.dashstyle=e.stemDashStyle||a.stemDashStyle,e.stem.attr(z),x&&(B.stroke=e.whiskerColor||a.whiskerColor||H,B["stroke-width"]=w(e.whiskerWidth,a.whiskerWidth,a.lineWidth),e.whiskers.attr(B)),v&&(r= +b.pointAttribs(e),e.box.attr(r)),G.stroke=e.medianColor||a.medianColor||H,G["stroke-width"]=w(e.medianWidth,a.medianWidth,a.lineWidth),e.medianShape.attr(G)),k=e.stem.strokeWidth()%2/2,p=n+q+k,e.stem[y]({d:["M",p,h,"L",p,u,"M",p,f,"L",p,c]}),v&&(k=e.box.strokeWidth()%2/2,f=Math.floor(f)+k,h=Math.floor(h)+k,n+=k,m+=k,e.box[y]({d:["M",n,h,"L",n,f,"L",m,f,"L",m,h,"L",n,h,"z"]})),x&&(k=e.whiskers.strokeWidth()%2/2,u+=k,c+=k,t=/%$/.test(x)?q*parseFloat(x)/100:x/2,e.whiskers[y]({d:["M",p-t,u,"L",p+t,u, +"M",p-t,c,"L",p+t,c]})),l=Math.round(e.medianPlot),k=e.medianShape.strokeWidth()%2/2,l+=k,e.medianShape[y]({d:["M",n,l,"L",m,l]}))})},setStackedPoints:t})})(x);(function(b){var r=b.each,t=b.noop,w=b.seriesType,m=b.seriesTypes;w("errorbar","boxplot",{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},whiskerWidth:null},{type:"errorbar", +pointArrayMap:["low","high"],toYData:function(b){return[b.low,b.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:m.arearange?function(){var b=this.pointValKey;m.arearange.prototype.drawDataLabels.call(this);r(this.data,function(e){e.y=e[b]})}:t,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||m.column.prototype.getColumnMetrics.call(this)}})})(x);(function(b){var r=b.correctFloat,t=b.isNumber,w=b.pick,m=b.Point,q=b.Series,e=b.seriesType,a=b.seriesTypes; +e("waterfall","column",{dataLabels:{inside:!0},lineWidth:1,lineColor:"#333333",dashStyle:"dot",borderColor:"#333333",states:{hover:{lineWidthPlus:0}}},{pointValKey:"y",translate:function(){var d=this.options,b=this.yAxis,h,e,c,l,k,p,g,n,m,q=w(d.minPointLength,5),v=d.threshold,t=d.stacking;a.column.prototype.translate.apply(this);this.minPointLengthOffset=0;g=n=v;e=this.points;h=0;for(d=e.length;hl.height&&(l.y+=l.height,l.height*=-1),c.plotY=l.y=Math.round(l.y)- +this.borderWidth%2/2,l.height=Math.max(Math.round(l.height),.001),c.yBottom=l.y+l.height,l.height<=q&&(l.height=q,this.minPointLengthOffset+=q),l.y-=this.minPointLengthOffset,l=c.plotY+(c.negative?l.height:0)-this.minPointLengthOffset,this.chart.inverted?c.tooltipPos[0]=b.len-l:c.tooltipPos[1]=l},processData:function(a){var b=this.yData,d=this.options.data,e,c=b.length,l,k,p,g,n,m;k=l=p=g=this.options.threshold||0;for(m=0;ma[k-1].y&&(l[2]+=c.height,l[5]+=c.height),e=e.concat(l);return e},drawGraph:function(){q.prototype.drawGraph.call(this);this.graph.attr({d:this.getCrispPath()})},getExtremes:b.noop},{getClassName:function(){var a=m.prototype.getClassName.call(this);this.isSum?a+=" highcharts-sum":this.isIntermediateSum&&(a+=" highcharts-intermediate-sum"); +return a},isValid:function(){return t(this.y,!0)||this.isSum||this.isIntermediateSum}})})(x);(function(b){var r=b.Series,t=b.seriesType,w=b.seriesTypes;t("polygon","scatter",{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:""},trackByArea:!0},{type:"polygon",getGraphPath:function(){for(var b=r.prototype.getGraphPath.call(this),q=b.length+1;q--;)(q===b.length||"M"===b[q])&&0=this.minPxSize/2?(d.shapeType="circle",d.shapeArgs={x:d.plotX,y:d.plotY,r:c},d.dlBox={x:d.plotX-c,y:d.plotY-c,width:2*c,height:2*c}):d.shapeArgs=d.plotY=d.dlBox=void 0},drawLegendSymbol:function(a,b){var d=this.chart.renderer,c=d.fontMetrics(a.itemStyle.fontSize).f/2;b.legendSymbol=d.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker= +!0},drawPoints:l.column.prototype.drawPoints,alignDataLabel:l.column.prototype.alignDataLabel,buildKDTree:a,applyZones:a},{haloPath:function(a){return h.prototype.haloPath.call(this,this.shapeArgs.r+a)},ttBelow:!1});w.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,h=0,l=b,u=this.isXAxis,m=u?"xData":"yData",w=this.min,x={},A=Math.min(c.plotWidth,c.plotHeight),C=Number.MAX_VALUE,D=-Number.MAX_VALUE,E=this.max-w,z=b/E,F=[];q(this.series,function(b){var g=b.options;!b.bubblePadding|| +!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,F.push(b),u&&(q(["minSize","maxSize"],function(a){var b=g[a],d=/%$/.test(b),b=f(b);x[a]=d?A*b/100:b}),b.minPxSize=x.minSize,b.maxPxSize=Math.max(x.maxSize,x.minSize),b=b.zData,b.length&&(C=d(g.zMin,Math.min(C,Math.max(t(b),!1===g.displayNegative?g.zThreshold:-Number.MAX_VALUE))),D=d(g.zMax,Math.max(D,r(b))))))});q(F,function(b){var d=b[m],c=d.length,f;u&&b.getRadii(C,D,b.minPxSize,b.maxPxSize);if(0f&&(f+=360),a.clientX=f):a.clientX=a.plotX};m.spline&&q(m.spline.prototype,"getPointSpline",function(a,b,f,h){var d,c,e,k,p,g,n;this.chart.polar?(d=f.plotX, +c=f.plotY,a=b[h-1],e=b[h+1],this.connectEnds&&(a||(a=b[b.length-2]),e||(e=b[1])),a&&e&&(k=a.plotX,p=a.plotY,b=e.plotX,g=e.plotY,k=(1.5*d+k)/2.5,p=(1.5*c+p)/2.5,e=(1.5*d+b)/2.5,n=(1.5*c+g)/2.5,b=Math.sqrt(Math.pow(k-d,2)+Math.pow(p-c,2)),g=Math.sqrt(Math.pow(e-d,2)+Math.pow(n-c,2)),k=Math.atan2(p-c,k-d),p=Math.atan2(n-c,e-d),n=Math.PI/2+(k+p)/2,Math.abs(k-n)>Math.PI/2&&(n-=Math.PI),k=d+Math.cos(n)*b,p=c+Math.sin(n)*b,e=d+Math.cos(Math.PI+n)*g,n=c+Math.sin(Math.PI+n)*g,f.rightContX=e,f.rightContY=n), +h?(f=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,k||d,p||c,d,c],a.rightContX=a.rightContY=null):f=["M",d,c]):f=a.call(this,b,f,h);return f});q(e,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,!this.preventPostTranslate))for(a=this.points,b=a.length;b--;)this.toXY(a[b])});q(e,"getGraphPath",function(a,b){var d=this,e,m;if(this.chart.polar){b=b||this.points;for(e=0;eb.center[1]}),q(m,"alignDataLabel",function(a,b,f,h,m,c){this.chart.polar?(a=b.rectPlotX/Math.PI*180,null===h.align&&(h.align=20a?"left":200a?"right":"center"),null===h.verticalAlign&&(h.verticalAlign=45>a||315a?"top":"middle"),e.alignDataLabel.call(this,b,f,h,m,c)):a.call(this, +b,f,h,m,c)}));q(b,"getCoordinates",function(a,b){var d=this.chart,e={xAxis:[],yAxis:[]};d.polar?t(d.axes,function(a){var c=a.isXAxis,f=a.center,h=b.chartX-f[0]-d.plotLeft,f=b.chartY-f[1]-d.plotTop;e[c?"xAxis":"yAxis"].push({axis:a,value:a.translate(c?Math.PI-Math.atan2(h,f):Math.sqrt(Math.pow(h,2)+Math.pow(f,2)),!0)})}):e=a.call(this,b);return e})})(x)}); diff --git a/Sources/API/gatling/results/Iris-Simulation/js/highstock.js b/Sources/API/gatling/results/Iris-Simulation/js/highstock.js new file mode 100644 index 0000000..34a3f91 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/highstock.js @@ -0,0 +1,496 @@ +/* + Highstock JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(N,a){"object"===typeof module&&module.exports?module.exports=N.document?a(N):a:N.Highcharts=a(N)})("undefined"!==typeof window?window:this,function(N){N=function(){var a=window,D=a.document,B=a.navigator&&a.navigator.userAgent||"",G=D&&D.createElementNS&&!!D.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,H=/(edge|msie|trident)/i.test(B)&&!window.opera,p=!G,l=/Firefox/.test(B),r=l&&4>parseInt(B.split("Firefox/")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:"Highstock", +version:"5.0.3",deg2rad:2*Math.PI/360,doc:D,hasBidiBug:r,hasTouch:D&&void 0!==D.documentElement.ontouchstart,isMS:H,isWebKit:/AppleWebKit/.test(B),isFirefox:l,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(B),SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,vml:p,win:a,charts:[],marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){}}}();(function(a){var D=[],B=a.charts,G=a.doc,H=a.win;a.error=function(a,l){a="Highcharts error #"+ +a+": www.highcharts.com/errors/"+a;if(l)throw Error(a);H.console&&console.log(a)};a.Fx=function(a,l,r){this.options=l;this.elem=a;this.prop=r};a.Fx.prototype={dSetter:function(){var a=this.paths[0],l=this.paths[1],r=[],w=this.now,t=a.length,k;if(1===w)r=this.toD;else if(t===l.length&&1>w)for(;t--;)k=parseFloat(a[t]),r[t]=isNaN(k)?a[t]:w*parseFloat(l[t]-k)+k;else r=l;this.elem.attr("d",r)},update:function(){var a=this.elem,l=this.prop,r=this.now,w=this.options.step;if(this[l+"Setter"])this[l+"Setter"](); +else a.attr?a.element&&a.attr(l,r):a.style[l]=r+this.unit;w&&w.call(a,r,this)},run:function(a,l,r){var p=this,t=function(a){return t.stopped?!1:p.step(a)},k;this.startTime=+new Date;this.start=a;this.end=l;this.unit=r;this.now=this.start;this.pos=0;t.elem=this.elem;t()&&1===D.push(t)&&(t.timerId=setInterval(function(){for(k=0;k=k+this.startTime){this.now=this.end;this.pos=1;this.update();a=m[this.prop]=!0;for(e in m)!0!==m[e]&&(a=!1);a&&t&&t.call(p);p=!1}else this.pos=w.easing((l-this.startTime)/k),this.now=this.start+(this.end-this.start)*this.pos,this.update(),p=!0;return p},initPath:function(p,l,r){function w(a){for(b=a.length;b--;)"M"!==a[b]&&"L"!==a[b]||a.splice(b+1,0,a[b+1],a[b+2],a[b+1],a[b+2])}function t(a,c){for(;a.lengthm?"AM":"PM",P:12>m?"am":"pm",S:q(t.getSeconds()),L:q(Math.round(l%1E3),3)},a.dateFormats);for(k in w)for(;-1!==p.indexOf("%"+k);)p= +p.replace("%"+k,"function"===typeof w[k]?w[k](l):w[k]);return r?p.substr(0,1).toUpperCase()+p.substr(1):p};a.formatSingle=function(p,l){var r=/\.([0-9])/,w=a.defaultOptions.lang;/f$/.test(p)?(r=(r=p.match(r))?r[1]:-1,null!==l&&(l=a.numberFormat(l,r,w.decimalPoint,-1=r&&(l=[1/r])));for(w=0;w=p||!t&&k<=(l[w]+(l[w+1]||l[w]))/ +2);w++);return m*r};a.stableSort=function(a,l){var r=a.length,p,t;for(t=0;tr&&(r=a[l]);return r};a.destroyObjectProperties=function(a,l){for(var r in a)a[r]&&a[r]!==l&&a[r].destroy&&a[r].destroy(),delete a[r]};a.discardElement=function(p){var l= +a.garbageBin;l||(l=a.createElement("div"));p&&l.appendChild(p);l.innerHTML=""};a.correctFloat=function(a,l){return parseFloat(a.toPrecision(l||14))};a.setAnimation=function(p,l){l.renderer.globalAnimation=a.pick(p,l.options.chart.animation,!0)};a.animObject=function(p){return a.isObject(p)?a.merge(p):{duration:p?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(p,l,r,w){p=+p||0;l=+l;var t=a.defaultOptions.lang, +k=(p.toString().split(".")[1]||"").length,m,e,g=Math.abs(p);-1===l?l=Math.min(k,20):a.isNumber(l)||(l=2);m=String(a.pInt(g.toFixed(l)));e=3p?"-":"")+(e?m.substr(0,e)+w:"");p+=m.substr(e).replace(/(\d{3})(?=\d)/g,"$1"+w);l&&(w=Math.abs(g-m+Math.pow(10,-Math.max(l,k)-1)),p+=r+w.toFixed(l).slice(2));return p};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(p,l){return"width"===l?Math.min(p.offsetWidth, +p.scrollWidth)-a.getStyle(p,"padding-left")-a.getStyle(p,"padding-right"):"height"===l?Math.min(p.offsetHeight,p.scrollHeight)-a.getStyle(p,"padding-top")-a.getStyle(p,"padding-bottom"):(p=H.getComputedStyle(p,void 0))&&a.pInt(p.getPropertyValue(l))};a.inArray=function(a,l){return l.indexOf?l.indexOf(a):[].indexOf.call(l,a)};a.grep=function(a,l){return[].filter.call(a,l)};a.map=function(a,l){for(var r=[],p=0,t=a.length;pl;l++)w[l]+=p(255*a),0>w[l]&&(w[l]=0),255z.width)z={width:0,height:0}}else z=this.htmlGetBBox();b.isSVG&&(a=z.width, +b=z.height,c&&L&&"11px"===L.fontSize&&"16.9"===b.toPrecision(3)&&(z.height=b=14),v&&(z.width=Math.abs(b*Math.sin(d))+Math.abs(a*Math.cos(d)),z.height=Math.abs(b*Math.cos(d))+Math.abs(a*Math.sin(d))));if(g&&0]*>/g,"")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,c,v){"string"===typeof a?v.setAttribute(c, +a):a&&this.colorGradient(a,c,v)},visibilitySetter:function(a,c,v){"inherit"===a?v.removeAttribute(c):v.setAttribute(c,a)},zIndexSetter:function(a,c){var v=this.renderer,z=this.parentGroup,b=(z||v).element||v.box,d,n=this.element,f;d=this.added;var e;k(a)&&(n.zIndex=a,a=+a,this[c]===a&&(d=!1),this[c]=a);if(d){(a=this.zIndex)&&z&&(z.handleZ=!0);c=b.childNodes;for(e=0;ea||!k(a)&&k(d)||0>a&&!k(d)&&b!==v.box)&&(b.insertBefore(n,z),f=!0);f||b.appendChild(n)}return f}, +_defaultSetter:function(a,c,v){v.setAttribute(c,a)}};D.prototype.yGetter=D.prototype.xGetter;D.prototype.translateXSetter=D.prototype.translateYSetter=D.prototype.rotationSetter=D.prototype.verticalAlignSetter=D.prototype.scaleXSetter=D.prototype.scaleYSetter=function(a,c){this[c]=a;this.doTransform=!0};D.prototype["stroke-widthSetter"]=D.prototype.strokeSetter=function(a,c,v){this[c]=a;this.stroke&&this["stroke-width"]?(D.prototype.fillSetter.call(this,this.stroke,"stroke",v),v.setAttribute("stroke-width", +this["stroke-width"]),this.hasStroke=!0):"stroke-width"===c&&0===a&&this.hasStroke&&(v.removeAttribute("stroke"),this.hasStroke=!1)};B=a.SVGRenderer=function(){this.init.apply(this,arguments)};B.prototype={Element:D,SVG_NS:K,init:function(a,c,v,b,d,n){var z;b=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}).css(this.getStyle(b));z=b.element;a.appendChild(z);-1===a.innerHTML.indexOf("xmlns")&&p(z,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=z;this.boxWrapper=b;this.alignedObjects= +[];this.url=(E||A)&&g.getElementsByTagName("base").length?R.location.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(g.createTextNode("Created with Highstock 5.0.3"));this.defs=this.createElement("defs").add();this.allowHTML=n;this.forExport=d;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(c,v,!1);var f;E&&a.getBoundingClientRect&&(c=function(){w(a,{left:0,top:0});f=a.getBoundingClientRect(); +w(a,{left:Math.ceil(f.left)-f.left+"px",top:Math.ceil(f.top)-f.top+"px"})},c(),this.unSubPixelFix=G(R,"resize",c))},getStyle:function(a){return this.style=C({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();e(this.gradients||{});this.gradients= +null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var c=new this.Element;c.init(this,a);return c},draw:J,getRadialAttr:function(a,c){return{cx:a[0]-a[2]/2+c.cx*a[2],cy:a[1]-a[2]/2+c.cy*a[2],r:c.r*a[2]}},buildText:function(a){for(var c=a.element,z=this,b=z.forExport,n=y(a.textStr,"").toString(),f=-1!==n.indexOf("\x3c"),e=c.childNodes,q,F,x,A,I=p(c,"x"),m=a.styles,k=a.textWidth,C=m&&m.lineHeight,M=m&&m.textOutline,J=m&& +"ellipsis"===m.textOverflow,E=e.length,O=k&&!a.added&&this.box,t=function(a){var v;v=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:m&&m.fontSize||z.style.fontSize||12;return C?u(C):z.fontMetrics(v,a.getAttribute("style")?a:c).h};E--;)c.removeChild(e[E]);f||M||J||k||-1!==n.indexOf(" ")?(q=/<.*class="([^"]+)".*>/,F=/<.*style="([^"]+)".*>/,x=/<.*href="(http[^"]+)".*>/,O&&O.appendChild(c),n=f?n.replace(/<(b|strong)>/g,'\x3cspan style\x3d"font-weight:bold"\x3e').replace(/<(i|em)>/g,'\x3cspan style\x3d"font-style:italic"\x3e').replace(//g,"\x3c/span\x3e").split(//g):[n],n=d(n,function(a){return""!==a}),h(n,function(d,n){var f,e=0;d=d.replace(/^\s+|\s+$/g,"").replace(//g,"\x3c/span\x3e|||");f=d.split("|||");h(f,function(d){if(""!==d||1===f.length){var u={},y=g.createElementNS(z.SVG_NS,"tspan"),L,h;q.test(d)&&(L=d.match(q)[1],p(y,"class",L));F.test(d)&&(h=d.match(F)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),p(y,"style",h));x.test(d)&&!b&&(p(y, +"onclick",'location.href\x3d"'+d.match(x)[1]+'"'),w(y,{cursor:"pointer"}));d=(d.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"\x3c").replace(/>/g,"\x3e");if(" "!==d){y.appendChild(g.createTextNode(d));e?u.dx=0:n&&null!==I&&(u.x=I);p(y,u);c.appendChild(y);!e&&n&&(!v&&b&&w(y,{display:"block"}),p(y,"dy",t(y)));if(k){u=d.replace(/([^\^])-/g,"$1- ").split(" ");L="nowrap"===m.whiteSpace;for(var C=1k,void 0===A&&(A=M),J&&A?(Q/=2,""===l||!M&&.5>Q?u=[]:(l=d.substring(0,l.length+(M?-1:1)*Math.ceil(Q)),u=[l+(3k&&(k=P)),u.length&&y.appendChild(g.createTextNode(u.join(" ").replace(/- /g, +"-")));a.rotation=R}e++}}})}),A&&a.attr("title",a.textStr),O&&O.removeChild(c),M&&a.applyTextOutline&&a.applyTextOutline(M)):c.appendChild(g.createTextNode(n.replace(/</g,"\x3c").replace(/>/g,"\x3e")))},getContrast:function(a){a=r(a).rgba;return 510v?d>c+f&&de?d>c+f&&db&&e>a+f&&ed&&e>a+f&&ea?a+3:Math.round(1.2*a);return{h:c,b:Math.round(.8*c),f:a}},rotCorr:function(a, +c,v){var b=a;c&&v&&(b=Math.max(b*Math.cos(c*m),4));return{x:-a/3*Math.sin(c*m),y:b}},label:function(a,c,v,b,d,n,f,e,K){var q=this,u=q.g("button"!==K&&"label"),y=u.text=q.text("",0,0,f).attr({zIndex:1}),g,F,z=0,A=3,L=0,m,M,J,E,O,t={},l,R,r=/^url\((.*?)\)$/.test(b),p=r,P,w,Q,S;K&&u.addClass("highcharts-"+K);p=r;P=function(){return(l||0)%2/2};w=function(){var a=y.element.style,c={};F=(void 0===m||void 0===M||O)&&k(y.textStr)&&y.getBBox();u.width=(m||F.width||0)+2*A+L;u.height=(M||F.height||0)+2*A;R= +A+q.fontMetrics(a&&a.fontSize,y).b;p&&(g||(u.box=g=q.symbols[b]||r?q.symbol(b):q.rect(),g.addClass(("button"===K?"":"highcharts-label-box")+(K?" highcharts-"+K+"-box":"")),g.add(u),a=P(),c.x=a,c.y=(e?-R:0)+a),c.width=Math.round(u.width),c.height=Math.round(u.height),g.attr(C(c,t)),t={})};Q=function(){var a=L+A,c;c=e?0:R;k(m)&&F&&("center"===O||"right"===O)&&(a+={center:.5,right:1}[O]*(m-F.width));if(a!==y.x||c!==y.y)y.attr("x",a),void 0!==c&&y.attr("y",c);y.x=a;y.y=c};S=function(a,c){g?g.attr(a,c): +t[a]=c};u.onAdd=function(){y.add(u);u.attr({text:a||0===a?a:"",x:c,y:v});g&&k(d)&&u.attr({anchorX:d,anchorY:n})};u.widthSetter=function(a){m=a};u.heightSetter=function(a){M=a};u["text-alignSetter"]=function(a){O=a};u.paddingSetter=function(a){k(a)&&a!==A&&(A=u.padding=a,Q())};u.paddingLeftSetter=function(a){k(a)&&a!==L&&(L=a,Q())};u.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==z&&(z=a,F&&u.attr({x:J}))};u.textSetter=function(a){void 0!==a&&y.textSetter(a);w();Q()};u["stroke-widthSetter"]= +function(a,c){a&&(p=!0);l=this["stroke-width"]=a;S(c,a)};u.strokeSetter=u.fillSetter=u.rSetter=function(a,c){"fill"===c&&a&&(p=!0);S(c,a)};u.anchorXSetter=function(a,c){d=a;S(c,Math.round(a)-P()-J)};u.anchorYSetter=function(a,c){n=a;S(c,a-E)};u.xSetter=function(a){u.x=a;z&&(a-=z*((m||F.width)+2*A));J=Math.round(a);u.attr("translateX",J)};u.ySetter=function(a){E=u.y=Math.round(a);u.attr("translateY",E)};var T=u.css;return C(u,{css:function(a){if(a){var c={};a=x(a);h(u.textProps,function(v){void 0!== +a[v]&&(c[v]=a[v],delete a[v])});y.css(c)}return T.call(u,a)},getBBox:function(){return{width:F.width+2*A,height:F.height+2*A,x:F.x-A,y:F.y-A}},shadow:function(a){a&&(w(),g&&g.shadow(a));return u},destroy:function(){I(u.element,"mouseenter");I(u.element,"mouseleave");y&&(y=y.destroy());g&&(g=g.destroy());D.prototype.destroy.call(u);u=q=w=Q=S=null}})}};a.Renderer=B})(N);(function(a){var D=a.attr,B=a.createElement,G=a.css,H=a.defined,p=a.each,l=a.extend,r=a.isFirefox,w=a.isMS,t=a.isWebKit,k=a.pInt,m= +a.SVGRenderer,e=a.win,g=a.wrap;l(a.SVGElement.prototype,{htmlCss:function(a){var e=this.element;if(e=a&&"SPAN"===e.tagName&&a.width)delete a.width,this.textWidth=e,this.updateTransform();a&&"ellipsis"===a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=l(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=this.element;"text"===a.nodeName&&(a.style.position="absolute");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a= +this.renderer,e=this.element,f=this.translateX||0,d=this.translateY||0,b=this.x||0,q=this.y||0,g=this.textAlign||"left",c={left:0,center:.5,right:1}[g],F=this.styles;G(e,{marginLeft:f,marginTop:d});this.shadows&&p(this.shadows,function(a){G(a,{marginLeft:f+1,marginTop:d+1})});this.inverted&&p(e.childNodes,function(c){a.invertChild(c,e)});if("SPAN"===e.tagName){var n=this.rotation,A=k(this.textWidth),x=F&&F.whiteSpace,m=[n,g,e.innerHTML,this.textWidth,this.textAlign].join();m!==this.cTT&&(F=a.fontMetrics(e.style.fontSize).b, +H(n)&&this.setSpanRotation(n,c,F),G(e,{width:"",whiteSpace:x||"nowrap"}),e.offsetWidth>A&&/[ \-]/.test(e.textContent||e.innerText)&&G(e,{width:A+"px",display:"block",whiteSpace:x||"normal"}),this.getSpanCorrection(e.offsetWidth,F,c,n,g));G(e,{left:b+(this.xCorr||0)+"px",top:q+(this.yCorr||0)+"px"});t&&(F=e.offsetHeight);this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,g,f){var d={},b=w?"-ms-transform":t?"-webkit-transform":r?"MozTransform":e.opera?"-o-transform":"";d[b]=d.transform= +"rotate("+a+"deg)";d[b+(r?"Origin":"-origin")]=d.transformOrigin=100*g+"% "+f+"px";G(this.element,d)},getSpanCorrection:function(a,e,f){this.xCorr=-a*f;this.yCorr=-e}});l(m.prototype,{html:function(a,e,f){var d=this.createElement("span"),b=d.element,q=d.renderer,h=q.isSVG,c=function(a,c){p(["opacity","visibility"],function(b){g(a,b+"Setter",function(a,b,d,n){a.call(this,b,d,n);c[d]=b})})};d.textSetter=function(a){a!==b.innerHTML&&delete this.bBox;b.innerHTML=this.textStr=a;d.htmlUpdateTransform()}; +h&&c(d,d.element.style);d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,c){"align"===c&&(c="textAlign");d[c]=a;d.htmlUpdateTransform()};d.attr({text:a,x:Math.round(e),y:Math.round(f)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:"absolute"});b.style.whiteSpace="nowrap";d.css=d.htmlCss;h&&(d.add=function(a){var n,f=q.box.parentNode,e=[];if(this.parentGroup=a){if(n=a.div,!n){for(;a;)e.push(a),a=a.parentGroup;p(e.reverse(),function(a){var b,d=D(a.element, +"class");d&&(d={className:d});n=a.div=a.div||B("div",d,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},n||f);b=n.style;l(a,{translateXSetter:function(c,d){b.left=c+"px";a[d]=c;a.doTransform=!0},translateYSetter:function(c,d){b.top=c+"px";a[d]=c;a.doTransform=!0}});c(a,b)})}}else n=f;n.appendChild(b);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})})(N);(function(a){var D, +B,G=a.createElement,H=a.css,p=a.defined,l=a.deg2rad,r=a.discardElement,w=a.doc,t=a.each,k=a.erase,m=a.extend;D=a.extendClass;var e=a.isArray,g=a.isNumber,h=a.isObject,C=a.merge;B=a.noop;var f=a.pick,d=a.pInt,b=a.SVGElement,q=a.SVGRenderer,E=a.win;a.svg||(B={docMode8:w&&8===w.documentMode,init:function(a,b){var c=["\x3c",b,' filled\x3d"f" stroked\x3d"f"'],d=["position: ","absolute",";"],f="div"===b;("shape"===b||f)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",f?"hidden":"visible"); +c.push(' style\x3d"',d.join(""),'"/\x3e');b&&(c=f||"span"===b||"img"===b?c.join(""):a.prepVML(c),this.element=G(c));this.renderer=a},add:function(a){var c=this.renderer,b=this.element,d=c.box,f=a&&a.inverted,d=a?a.element||a:d;a&&(this.parentGroup=a);f&&c.invertChild(b,d);d.appendChild(b);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr("class",this.className);return this},updateTransform:b.prototype.htmlUpdateTransform, +setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*l),d=Math.sin(a*l);H(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11\x3d",b,", M12\x3d",-d,", M21\x3d",d,", M22\x3d",b,", sizingMethod\x3d'auto expand')"].join(""):"none"})},getSpanCorrection:function(a,b,d,e,q){var c=e?Math.cos(e*l):1,n=e?Math.sin(e*l):0,u=f(this.elemHeight,this.element.offsetHeight),g;this.xCorr=0>c&&-a;this.yCorr=0>n&&-u;g=0>c*n;this.xCorr+=n*b*(g?1-d:d);this.yCorr-=c*b*(e?g?d:1-d:1);q&&"left"!== +q&&(this.xCorr-=a*d*(0>c?-1:1),e&&(this.yCorr-=u*d*(0>n?-1:1)),H(this.element,{textAlign:q}))},pathToVML:function(a){for(var c=a.length,b=[];c--;)g(a[c])?b[c]=Math.round(10*a[c])-5:"Z"===a[c]?b[c]="x":(b[c]=a[c],!a.isArc||"wa"!==a[c]&&"at"!==a[c]||(b[c+5]===b[c+7]&&(b[c+7]+=a[c+7]>a[c+5]?1:-1),b[c+6]===b[c+8]&&(b[c+8]+=a[c+8]>a[c+6]?1:-1)));return b.join(" ")||"x"},clip:function(a){var c=this,b;a?(b=a.members,k(b,c),b.push(c),c.destroyClip=function(){k(b,c)},a=a.getCSS(c)):(c.destroyClip&&c.destroyClip(), +a={clip:c.docMode8?"inherit":"rect(auto)"});return c.css(a)},css:b.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&r(a)},destroy:function(){this.destroyClip&&this.destroyClip();return b.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=E.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c;a=a.split(/[ ,]/);c=a.length;if(9===c||11===c)a[c-4]=a[c-2]=d(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,e){var c=[],n,q=this.element, +g=this.renderer,u,I=q.style,F,v=q.path,K,h,m,z;v&&"string"!==typeof v.value&&(v="x");h=v;if(a){m=f(a.width,3);z=(a.opacity||.15)/m;for(n=1;3>=n;n++)K=2*m+1-2*n,e&&(h=this.cutOffPath(v.value,K+.5)),F=['\x3cshape isShadow\x3d"true" strokeweight\x3d"',K,'" filled\x3d"false" path\x3d"',h,'" coordsize\x3d"10 10" style\x3d"',q.style.cssText,'" /\x3e'],u=G(g.prepVML(F),null,{left:d(I.left)+f(a.offsetX,1),top:d(I.top)+f(a.offsetY,1)}),e&&(u.cutOff=K+1),F=['\x3cstroke color\x3d"',a.color||"#000000",'" opacity\x3d"', +z*n,'"/\x3e'],G(g.prepVML(F),null,null,u),b?b.element.appendChild(u):q.parentNode.insertBefore(u,q),c.push(u);this.shadows=c}return this},updateShadows:B,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,d){(d.getElementsByTagName("stroke")[0]||G(this.renderer.prepVML(["\x3cstroke/\x3e"]),null,null,d))[b]=a||"solid";this[b]=a},dSetter:function(a,b,d){var c=this.shadows; +a=a||[];this.d=a.join&&a.join(" ");d.path=a=this.pathToVML(a);if(c)for(d=c.length;d--;)c[d].path=c[d].cutOff?this.cutOffPath(a,c[d].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,d){var c=d.nodeName;"SPAN"===c?d.style.color=a:"IMG"!==c&&(d.filled="none"!==a,this.setAttr("fillcolor",this.renderer.color(a,d,b,this)))},"fill-opacitySetter":function(a,b,d){G(this.renderer.prepVML(["\x3c",b.split("-")[0],' opacity\x3d"',a,'"/\x3e']),null,null,d)},opacitySetter:B,rotationSetter:function(a,b,d){d= +d.style;this[b]=d[b]=a;d.left=-Math.round(Math.sin(a*l)+1)+"px";d.top=Math.round(Math.cos(a*l))+"px"},strokeSetter:function(a,b,d){this.setAttr("strokecolor",this.renderer.color(a,d,b,this))},"stroke-widthSetter":function(a,b,d){d.stroked=!!a;this[b]=a;g(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,d){"inherit"===a&&(a="visible");this.shadows&&t(this.shadows,function(c){c.style[b]=a});"DIV"===d.nodeName&&(a="hidden"===a?"-999em": +0,this.docMode8||(d.style[b]=a?"visible":"hidden"),b="top");d.style[b]=a},xSetter:function(a,b,d){this[b]=a;"x"===b?b="left":"y"===b&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):d.style[b]=a},zIndexSetter:function(a,b,d){d.style[b]=a}},B["stroke-opacitySetter"]=B["fill-opacitySetter"],a.VMLElement=B=D(b,B),B.prototype.ySetter=B.prototype.widthSetter=B.prototype.heightSetter=B.prototype.xSetter,B={Element:B,isIE8:-1l[0]&&c.push([1,l[1]]);t(c,function(c,b){q.test(c[1])?(n=a.color(c[1]),v=n.get("rgb"),K=n.get("a")):(v=c[1],K=1);r.push(100*c[0]+"% "+v);b?(m=K,k=v):(z=K,E=v)});if("fill"===d)if("gradient"===g)d=A.x1||A[0]||0,c=A.y1||A[1]||0,F=A.x2||A[2]||0,A=A.y2||A[3]||0,C='angle\x3d"'+(90-180*Math.atan((A-c)/(F-d))/Math.PI)+'"',p();else{var h=A.r,w=2*h,B=2*h,D=A.cx,H=A.cy,V=b.radialReference,U,h=function(){V&&(U=f.getBBox(),D+=(V[0]- +U.x)/U.width-.5,H+=(V[1]-U.y)/U.height-.5,w*=V[2]/U.width,B*=V[2]/U.height);C='src\x3d"'+a.getOptions().global.VMLRadialGradientURL+'" size\x3d"'+w+","+B+'" origin\x3d"0.5,0.5" position\x3d"'+D+","+H+'" color2\x3d"'+E+'" ';p()};f.added?h():f.onAdd=h;h=k}else h=v}else q.test(c)&&"IMG"!==b.tagName?(n=a.color(c),f[d+"-opacitySetter"](n.get("a"),d,b),h=n.get("rgb")):(h=b.getElementsByTagName(d),h.length&&(h[0].opacity=1,h[0].type="solid"),h=c);return h},prepVML:function(a){var c=this.isIE8;a=a.join(""); +c?(a=a.replace("/\x3e",' xmlns\x3d"urn:schemas-microsoft-com:vml" /\x3e'),a=-1===a.indexOf('style\x3d"')?a.replace("/\x3e",' style\x3d"display:inline-block;behavior:url(#default#VML);" /\x3e'):a.replace('style\x3d"','style\x3d"display:inline-block;behavior:url(#default#VML);')):a=a.replace("\x3c","\x3chcv:");return a},text:q.prototype.html,path:function(a){var c={coordsize:"10 10"};e(a)?c.d=a:h(a)&&m(c,a);return this.createElement("shape").attr(c)},circle:function(a,b,d){var c=this.symbol("circle"); +h(a)&&(d=a.r,b=a.y,a=a.x);c.isCircle=!0;c.r=d;return c.attr({x:a,y:b})},g:function(a){var c;a&&(c={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement("div").attr(c)},image:function(a,b,d,f,e){var c=this.createElement("img").attr({src:a});1f&&m-d*bg&&(F=Math.round((e-m)/Math.cos(f*w)));else if(e=m+(1-d)*b,m-d*bg&&(E=g-a.x+E*d,c=-1),E=Math.min(q, +E),EE||k.autoRotation&&(C.styles||{}).width)F=E;F&&(n.width=F,(k.options.labels.style||{}).textOverflow||(n.textOverflow="ellipsis"),C.css(n))},getPosition:function(a,k,m,e){var g=this.axis,h=g.chart,l=e&&h.oldChartHeight||h.chartHeight;return{x:a?g.translate(k+m,null,null,e)+g.transB:g.left+g.offset+(g.opposite?(e&&h.oldChartWidth||h.chartWidth)-g.right-g.left:0),y:a?l-g.bottom+g.offset-(g.opposite?g.height:0):l-g.translate(k+m,null, +null,e)-g.transB}},getLabelPosition:function(a,k,m,e,g,h,l,f){var d=this.axis,b=d.transA,q=d.reversed,E=d.staggerLines,c=d.tickRotCorr||{x:0,y:0},F=g.y;B(F)||(F=0===d.side?m.rotation?-8:-m.getBBox().height:2===d.side?c.y+8:Math.cos(m.rotation*w)*(c.y-m.getBBox(!1,0).height/2));a=a+g.x+c.x-(h&&e?h*b*(q?-1:1):0);k=k+F-(h&&!e?h*b*(q?1:-1):0);E&&(m=l/(f||1)%E,d.opposite&&(m=E-m-1),k+=d.labelOffset/E*m);return{x:a,y:Math.round(k)}},getMarkPath:function(a,k,m,e,g,h){return h.crispLine(["M",a,k,"L",a+(g? +0:-m),k+(g?m:0)],e)},render:function(a,k,m){var e=this.axis,g=e.options,h=e.chart.renderer,C=e.horiz,f=this.type,d=this.label,b=this.pos,q=g.labels,E=this.gridLine,c=f?f+"Tick":"tick",F=e.tickSize(c),n=this.mark,A=!n,x=q.step,p={},y=!0,u=e.tickmarkOffset,I=this.getPosition(C,b,u,k),M=I.x,I=I.y,v=C&&M===e.pos+e.len||!C&&I===e.pos?-1:1,K=f?f+"Grid":"grid",O=g[K+"LineWidth"],R=g[K+"LineColor"],z=g[K+"LineDashStyle"],K=l(g[c+"Width"],!f&&e.isXAxis?1:0),c=g[c+"Color"];m=l(m,1);this.isActive=!0;E||(p.stroke= +R,p["stroke-width"]=O,z&&(p.dashstyle=z),f||(p.zIndex=1),k&&(p.opacity=0),this.gridLine=E=h.path().attr(p).addClass("highcharts-"+(f?f+"-":"")+"grid-line").add(e.gridGroup));if(!k&&E&&(b=e.getPlotLinePath(b+u,E.strokeWidth()*v,k,!0)))E[this.isNew?"attr":"animate"]({d:b,opacity:m});F&&(e.opposite&&(F[0]=-F[0]),A&&(this.mark=n=h.path().addClass("highcharts-"+(f?f+"-":"")+"tick").add(e.axisGroup),n.attr({stroke:c,"stroke-width":K})),n[A?"attr":"animate"]({d:this.getMarkPath(M,I,F[0],n.strokeWidth()* +v,C,h),opacity:m}));d&&H(M)&&(d.xy=I=this.getLabelPosition(M,I,d,C,q,u,a,x),this.isFirst&&!this.isLast&&!l(g.showFirstLabel,1)||this.isLast&&!this.isFirst&&!l(g.showLastLabel,1)?y=!1:!C||e.isRadial||q.step||q.rotation||k||0===m||this.handleOverflow(I),x&&a%x&&(y=!1),y&&H(I.y)?(I.opacity=m,d[this.isNew?"attr":"animate"](I)):(r(d),d.attr("y",-9999)),this.isNew=!1)},destroy:function(){G(this,this.axis)}}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.AxisPlotLineOrBandExtension, +l=a.color,r=a.correctFloat,w=a.defaultOptions,t=a.defined,k=a.deg2rad,m=a.destroyObjectProperties,e=a.each,g=a.error,h=a.extend,C=a.fireEvent,f=a.format,d=a.getMagnitude,b=a.grep,q=a.inArray,E=a.isArray,c=a.isNumber,F=a.isString,n=a.merge,A=a.normalizeTickInterval,x=a.pick,J=a.PlotLineOrBand,y=a.removeEvent,u=a.splat,I=a.syncTimeout,M=a.Tick;a.Axis=function(){this.init.apply(this,arguments)};a.Axis.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M", +hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,labels:{enabled:!0,style:{color:"#666666",cursor:"default",fontSize:"11px"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb", +lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"#000000",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15}, +title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,c){var b=c.isX;this.chart=a;this.horiz=a.inverted?!b:b;this.isXAxis=b;this.coll=this.coll||(b?"xAxis":"yAxis");this.opposite=c.opposite;this.side=c.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(c);var d=this.options,v=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter; +this.userOptions=c;this.minPixelPadding=0;this.reversed=d.reversed;this.visible=!1!==d.visible;this.zoomEnabled=!1!==d.zoomEnabled;this.hasNames="category"===v||!0===d.categories;this.categories=d.categories||this.hasNames;this.names=this.names||[];this.isLog="logarithmic"===v;this.isDatetimeAxis="datetime"===v;this.isLinked=t(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom; +this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stacksTouched=0;this.min=this.max=null;this.crosshair=x(d.crosshair,u(a.options.tooltip.crosshairs)[b?0:1],!1);var f;c=this.options.events;-1===q(this,a.axes)&&(b?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];a.inverted&&b&&void 0===this.reversed&&(this.reversed=!0);this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in c)D(this,f,c[f]); +this.isLog&&(this.val2lin=this.log2lin,this.lin2val=this.lin2log)},setOptions:function(a){this.options=n(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],n(w[this.coll],a))},defaultLabelFormatter:function(){var c=this.axis,b=this.value,d=c.categories,e=this.dateTimeLabelFormat,q=w.lang,u=q.numericSymbols,q=q.numericSymbolMagnitude||1E3,n=u&&u.length,g,y=c.options.labels.format, +c=c.isLog?b:c.tickInterval;if(y)g=f(y,this);else if(d)g=b;else if(e)g=a.dateFormat(e,b);else if(n&&1E3<=c)for(;n--&&void 0===g;)d=Math.pow(q,n+1),c>=d&&0===10*b%d&&null!==u[n]&&0!==b&&(g=a.numberFormat(b/d,-1)+u[n]);void 0===g&&(g=1E4<=Math.abs(b)?a.numberFormat(b,-1):a.numberFormat(b,-1,void 0,""));return g},getSeriesExtremes:function(){var a=this,d=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();e(a.series,function(v){if(v.visible|| +!d.options.chart.ignoreHiddenSeries){var f=v.options,e=f.threshold,q;a.hasVisibleSeries=!0;a.isLog&&0>=e&&(e=null);if(a.isXAxis)f=v.xData,f.length&&(v=H(f),c(v)||v instanceof Date||(f=b(f,function(a){return c(a)}),v=H(f)),a.dataMin=Math.min(x(a.dataMin,f[0]),v),a.dataMax=Math.max(x(a.dataMax,f[0]),G(f)));else if(v.getExtremes(),q=v.dataMax,v=v.dataMin,t(v)&&t(q)&&(a.dataMin=Math.min(x(a.dataMin,v),v),a.dataMax=Math.max(x(a.dataMax,q),q)),t(e)&&(a.threshold=e),!f.softThreshold||a.isLog)a.softThreshold= +!1}})},translate:function(a,b,d,f,e,q){var v=this.linkedParent||this,u=1,n=0,g=f?v.oldTransA:v.transA;f=f?v.oldMin:v.min;var K=v.minPixelPadding;e=(v.isOrdinal||v.isBroken||v.isLog&&e)&&v.lin2val;g||(g=v.transA);d&&(u*=-1,n=v.len);v.reversed&&(u*=-1,n-=u*(v.sector||v.len));b?(a=(a*u+n-K)/g+f,e&&(a=v.lin2val(a))):(e&&(a=v.val2lin(a)),a=u*(a-f)*g+n+u*K+(c(q)?g*q:0));return a},toPixels:function(a,c){return this.translate(a,!1,!this.horiz,null,!0)+(c?0:this.pos)},toValue:function(a,c){return this.translate(a- +(c?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,d,f,e){var v=this.chart,q=this.left,u=this.top,n,g,K=d&&v.oldChartHeight||v.chartHeight,y=d&&v.oldChartWidth||v.chartWidth,z;n=this.transB;var h=function(a,c,b){if(ab)f?a=Math.min(Math.max(c,a),b):z=!0;return a};e=x(e,this.translate(a,null,null,d));a=d=Math.round(e+n);n=g=Math.round(K-e-n);c(e)?this.horiz?(n=u,g=K-this.bottom,a=d=h(a,q,q+this.width)):(a=q,d=y-this.right,n=g=h(n,u,u+this.height)):z=!0;return z&&!f?null:v.renderer.crispLine(["M", +a,n,"L",d,g],b||1)},getLinearTickPositions:function(a,b,d){var v,f=r(Math.floor(b/a)*a),e=r(Math.ceil(d/a)*a),q=[];if(b===d&&c(b))return[b];for(b=f;b<=e;){q.push(b);b=r(b+a);if(b===v)break;v=b}return q},getMinorTickPositions:function(){var a=this.options,c=this.tickPositions,b=this.minorTickInterval,d=[],f,e=this.pointRangePadding||0;f=this.min-e;var e=this.max+e,q=e-f;if(q&&q/b=this.minRange,q,u,n,g,y,h;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(t(a.min)||t(a.max)?this.minRange=null:(e(this.series,function(a){g=a.xData;for(u=y=a.xIncrement? +1:g.length-1;0=E?(p=E,m=0):b.dataMax<=E&&(J=E,I=0)),b.min=x(w,p,b.dataMin),b.max=x(B,J,b.dataMax));q&&(!a&&0>=Math.min(b.min, +x(b.dataMin,b.min))&&g(10,1),b.min=r(u(b.min),15),b.max=r(u(b.max),15));b.range&&t(b.max)&&(b.userMin=b.min=w=Math.max(b.min,b.minFromRange()),b.userMax=B=b.max,b.range=null);C(b,"foundExtremes");b.beforePadding&&b.beforePadding();b.adjustForMinRange();!(l||b.axisPointRange||b.usePercentage||h)&&t(b.min)&&t(b.max)&&(u=b.max-b.min)&&(!t(w)&&m&&(b.min-=u*m),!t(B)&&I&&(b.max+=u*I));c(f.floor)?b.min=Math.max(b.min,f.floor):c(f.softMin)&&(b.min=Math.min(b.min,f.softMin));c(f.ceiling)?b.max=Math.min(b.max, +f.ceiling):c(f.softMax)&&(b.max=Math.max(b.max,f.softMax));M&&t(b.dataMin)&&(E=E||0,!t(w)&&b.min=E?b.min=E:!t(B)&&b.max>E&&b.dataMax<=E&&(b.max=E));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:h&&!k&&F===b.linkedParent.options.tickPixelInterval?k=b.linkedParent.tickInterval:x(k,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,l?1:(b.max-b.min)*F/Math.max(b.len,F));y&&!a&&e(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0); +b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!k&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=x(f.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!k&&b.tickIntervalb.tickInterval&&1E3b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval= +b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,f=a.startOnTick,e=a.endOnTick,q;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units), +this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,d&&(d=d.apply(this,[this.min,this.max])))&&(this.tickPositions=b=d);this.isLinked||(this.trimTicks(b,f,e),this.min===this.max&&t(this.min)&&!this.tickAmount&&(q=!0,this.min-=.5,this.max+=.5),this.single=q,c||d||this.adjustTickAmount())}, +trimTicks:function(a,b,c){var d=a[0],f=a[a.length-1],v=this.minPointOffset||0;if(b)this.min=d;else for(;this.min-v>a[0];)a.shift();if(c)this.max=f;else for(;this.max+vb&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,f=b&&b.length;if(fc&&(this.tickInterval*= +2,this.setTickPositions());if(t(d)){for(a=c=b.length;a--;)(3===d&&1===a%2||2>=d&&0=f&&(b=f)),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,f=x(b.width,a.plotWidth-c+(b.offsetRight||0)),e=x(b.height,a.plotHeight),q=x(b.top,a.plotTop),b=x(b.left,a.plotLeft+c),c=/%$/;c.test(e)&&(e=Math.round(parseFloat(e)/ +100*a.plotHeight));c.test(q)&&(q=Math.round(parseFloat(q)/100*a.plotHeight+a.plotTop));this.left=b;this.top=q;this.width=f;this.height=e;this.bottom=a.chartHeight-e-q;this.right=a.chartWidth-f-b;this.len=Math.max(d?f:e,0);this.pos=d?b:q},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?r(b(this.min)):this.min,max:a?r(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=this.lin2log, +d=b?c(this.min):this.min,b=b?c(this.max):this.max;null===a?a=d:d>a?a=d:ba?"right":195a?"left":"center"},tickSize:function(a){var b=this.options,c=b[a+"Length"],d=x(b[a+"Width"],"tick"===a&&this.isXAxis?1:0);if(d&&c)return"inside"===b[a+"Position"]&&(c=-c),[c,d]},labelMetrics:function(){return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize, +this.ticks[0]&&this.ticks[0].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,c=this.tickInterval,d=c,f=this.len/(((this.categories?1:0)+this.max-this.min)/c),q,u=a.rotation,n=this.labelMetrics(),g,y=Number.MAX_VALUE,h,I=function(a){a/=f||1;a=1=a)g=I(Math.abs(n.h/Math.sin(k*a))),b=g+Math.abs(a/360),b(c.step||0)&&!c.rotation&&(this.staggerLines||1)*a.plotWidth/d||!b&&(f&&f-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,f=this.options.labels,q=this.horiz,u=this.getSlotWidth(),g=Math.max(1, +Math.round(u-2*(f.padding||5))),y={},h=this.labelMetrics(),I=f.style&&f.style.textOverflow,A,x=0,m,k;F(f.rotation)||(y.rotation=f.rotation||0);e(c,function(a){(a=d[a])&&a.labelLength>x&&(x=a.labelLength)});this.maxLabelLength=x;if(this.autoRotation)x>g&&x>h.h?y.rotation=this.labelRotation:this.labelRotation=0;else if(u&&(A={width:g+"px"},!I))for(A.textOverflow="clip",m=c.length;!q&&m--;)if(k=c[m],g=d[k].label)g.styles&&"ellipsis"===g.styles.textOverflow?g.css({textOverflow:"clip"}):d[k].labelLength> +u&&g.css({width:u+"px"}),g.getBBox().height>this.len/c.length-(h.h-h.f)&&(g.specCss={textOverflow:"ellipsis"});y.rotation&&(A={width:(x>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+"px"},I||(A.textOverflow="ellipsis"));if(this.labelAlign=f.align||this.autoLabelAlign(this.labelRotation))y.align=this.labelAlign;e(c,function(a){var b=(a=d[a])&&a.label;b&&(b.attr(y),A&&b.css(n(A,b.specCss)),delete b.specCss,a.rotation=y.rotation)});this.tickRotCorr=b.rotCorr(h.b,this.labelRotation||0,0!==this.side)}, +hasData:function(){return this.hasVisibleSeries||t(this.min)&&t(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,f=a.tickPositions,q=a.ticks,u=a.horiz,n=a.side,g=b.inverted?[1,0,3,2][n]:n,y,h,I=0,A,m=0,k=d.title,F=d.labels,E=0,l=a.opposite,C=b.axisOffset,b=b.clipOffset,p=[-1,1,1,-1][n],r,J=d.className,w=a.axisParent,B=this.tickSize("tick");y=a.hasData();a.showAxis=h=y||x(d.showEmpty,!0);a.staggerLines=a.horiz&&F.staggerLines;a.axisGroup||(a.gridGroup= +c.g("grid").attr({zIndex:d.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(J||"")).add(w),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(J||"")).add(w),a.labelGroup=c.g("axis-labels").attr({zIndex:F.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels "+(J||"")).add(w));if(y||a.isLinked)e(f,function(b){q[b]?q[b].addLabel():q[b]=new M(a,b)}),a.renderUnsquish(),!1===F.reserveSpace||0!==n&&2!==n&&{1:"left",3:"right"}[n]!== +a.labelAlign&&"center"!==a.labelAlign||e(f,function(a){E=Math.max(q[a].getLabelSize(),E)}),a.staggerLines&&(E*=a.staggerLines,a.labelOffset=E*(a.opposite?-1:1));else for(r in q)q[r].destroy(),delete q[r];k&&k.text&&!1!==k.enabled&&(a.axisTitle||((r=k.textAlign)||(r=(u?{low:"left",middle:"center",high:"right"}:{low:l?"right":"left",middle:"center",high:l?"left":"right"})[k.align]),a.axisTitle=c.text(k.text,0,0,k.useHTML).attr({zIndex:7,rotation:k.rotation||0,align:r}).addClass("highcharts-axis-title").css(k.style).add(a.axisGroup), +a.axisTitle.isNew=!0),h&&(I=a.axisTitle.getBBox()[u?"height":"width"],A=k.offset,m=t(A)?0:x(k.margin,u?5:10)),a.axisTitle[h?"show":"hide"](!0));a.renderLine();a.offset=p*x(d.offset,C[n]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=0===n?-a.labelMetrics().h:2===n?a.tickRotCorr.y:0;m=Math.abs(E)+m;E&&(m=m-c+p*(u?x(F.y,a.tickRotCorr.y+8*p):F.x));a.axisTitleMargin=x(A,m);C[n]=Math.max(C[n],a.axisTitleMargin+I+p*a.offset,m,y&&f.length&&B?B[0]:0);d=d.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[g]= +Math.max(b[g],d)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,f=this.horiz,e=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",f?this.left:e,f?d:this.top,"L",f?b.chartWidth-this.right:e,f?d:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.axisLine.attr({stroke:this.options.lineColor, +"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,f=this.options.title,e=a?b:c,q=this.opposite,u=this.offset,n=f.x||0,g=f.y||0,y=this.chart.renderer.fontMetrics(f.style&&f.style.fontSize,this.axisTitle).f,d={low:e+(a?0:d),middle:e+d/2,high:e+(a?d:0)}[f.align],b=(a?c+this.height:b)+(a?1:-1)*(q?-1:1)*this.axisTitleMargin+(2===this.side?y:0);return{x:a?d+n:b+(q?this.width:0)+u+n,y:a?b+g-(q?this.height:0)+u:d+g}},render:function(){var a= +this,b=a.chart,d=b.renderer,f=a.options,q=a.isLog,u=a.lin2log,n=a.isLinked,g=a.tickPositions,y=a.axisTitle,h=a.ticks,A=a.minorTicks,x=a.alternateBands,m=f.stackLabels,k=f.alternateGridColor,F=a.tickmarkOffset,E=a.axisLine,l=b.hasRendered&&c(a.oldMin),C=a.showAxis,p=B(d.globalAnimation),r,t;a.labelEdge.length=0;a.overlap=!1;e([h,A,x],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||n)a.minorTickInterval&&!a.categories&&e(a.getMinorTickPositions(),function(b){A[b]||(A[b]=new M(a,b,"minor")); +l&&A[b].isNew&&A[b].render(null,!0);A[b].render(null,!1,1)}),g.length&&(e(g,function(b,c){if(!n||b>=a.min&&b<=a.max)h[b]||(h[b]=new M(a,b)),l&&h[b].isNew&&h[b].render(c,!0,.1),h[b].render(c)}),F&&(0===a.min||a.single)&&(h[-1]||(h[-1]=new M(a,-1,null,!0)),h[-1].render(-1))),k&&e(g,function(c,d){t=void 0!==g[d+1]?g[d+1]+F:a.max-F;0===d%2&&c=e.second?0:A*Math.floor(c.getMilliseconds()/A));if(n>=e.second)c[B.hcSetSeconds](n>=e.minute?0:A*Math.floor(c.getSeconds()/ +A));if(n>=e.minute)c[B.hcSetMinutes](n>=e.hour?0:A*Math.floor(c[B.hcGetMinutes]()/A));if(n>=e.hour)c[B.hcSetHours](n>=e.day?0:A*Math.floor(c[B.hcGetHours]()/A));if(n>=e.day)c[B.hcSetDate](n>=e.month?1:A*Math.floor(c[B.hcGetDate]()/A));n>=e.month&&(c[B.hcSetMonth](n>=e.year?0:A*Math.floor(c[B.hcGetMonth]()/A)),g=c[B.hcGetFullYear]());if(n>=e.year)c[B.hcSetFullYear](g-g%A);if(n===e.week)c[B.hcSetDate](c[B.hcGetDate]()-c[B.hcGetDay]()+m(f,1));g=c[B.hcGetFullYear]();f=c[B.hcGetMonth]();var C=c[B.hcGetDate](), +y=c[B.hcGetHours]();if(B.hcTimezoneOffset||B.hcGetTimezoneOffset)x=(!q||!!B.hcGetTimezoneOffset)&&(k-h>4*e.month||t(h)!==t(k)),c=c.getTime(),c=new B(c+t(c));q=c.getTime();for(h=1;qr&&(!t||b<=w)&&void 0!==b&&h.push(b),b>w&&(q=!0),b=d;else r=e(r),w= +e(w),a=k[t?"minorTickInterval":"tickInterval"],a=p("auto"===a?null:a,this._minorAutoInterval,k.tickPixelInterval/(t?5:1)*(w-r)/((t?m/this.tickPositions.length:m)||1)),a=H(a,null,B(a)),h=G(this.getLinearTickPositions(a,r,w),g),t||(this._minorAutoInterval=a/5);t||(this.tickInterval=a);return h};D.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};D.prototype.lin2log=function(a){return Math.pow(10,a)}})(N);(function(a){var D=a.dateFormat,B=a.each,G=a.extend,H=a.format,p=a.isNumber,l=a.map,r= +a.merge,w=a.pick,t=a.splat,k=a.stop,m=a.syncTimeout,e=a.timeUnits;a.Tooltip=function(){this.init.apply(this,arguments)};a.Tooltip.prototype={init:function(a,e){this.chart=a;this.options=e;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=e.split&&!a.inverted;this.shared=e.shared||this.split},cleanSplit:function(a){B(this.chart.series,function(e){var g=e&&e.tt;g&&(!g.isActive||a?e.tt=g.destroy():g.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,e=this.options;this.label|| +(this.split?this.label=a.g("tooltip"):(this.label=a.label("",0,0,e.shape||"callout",null,null,e.useHTML,null,"tooltip").attr({padding:e.padding,r:e.borderRadius}),this.label.attr({fill:e.backgroundColor,"stroke-width":e.borderWidth}).css(e.style).shadow(e.shadow)),this.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();this.init(this.chart,r(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart, +!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,e,m,f){var d=this,b=d.now,q=!1!==d.options.animation&&!d.isHidden&&(1h-q?h:h-q);else if(v)b[a]=Math.max(g,e+q+f>c?e:e+q);else return!1},x=function(a,c,f,e){var q;ec-d?q=!1:b[a]=ec-f/2?c-f-2:e-f/2;return q},k=function(a){var b=c;c=h;h=b;g=a},y=function(){!1!==A.apply(0,c)?!1!==x.apply(0,h)||g||(k(!0),y()):g?b.x=b.y=0:(k(!0),y())};(f.inverted||1y&&(q=!1);a=(e.series&&e.series.yAxis&&e.series.yAxis.pos)+(e.plotY||0);a-=d.plotTop;f.push({target:e.isHeader?d.plotHeight+c:a,rank:e.isHeader?1:0,size:n.tt.getBBox().height+1,point:e,x:y,tt:A})});this.cleanSplit(); +a.distribute(f,d.plotHeight+c);B(f,function(a){var b=a.point;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:q||b.isHeader?a.x:b.plotX+d.plotLeft+w(m.distance,16),y:a.pos+d.plotTop,anchorX:b.plotX+d.plotLeft,anchorY:b.isHeader?a.pos+d.plotTop-15:b.plotY+d.plotTop})})},updatePosition:function(a){var e=this.chart,g=this.getLabel(),g=(this.options.positioner||this.getPosition).call(this,g.width,g.height,a);this.move(Math.round(g.x),Math.round(g.y||0),a.plotX+e.plotLeft,a.plotY+e.plotTop)}, +getXDateFormat:function(a,h,m){var f;h=h.dateTimeLabelFormats;var d=m&&m.closestPointRange,b,q={millisecond:15,second:12,minute:9,hour:6,day:3},g,c="millisecond";if(d){g=D("%m-%d %H:%M:%S.%L",a.x);for(b in e){if(d===e.week&&+D("%w",a.x)===m.options.startOfWeek&&"00:00:00.000"===g.substr(6)){b="week";break}if(e[b]>d){b=c;break}if(q[b]&&g.substr(q[b])!=="01-01 00:00:00.000".substr(q[b]))break;"week"!==b&&(c=b)}b&&(f=h[b])}else f=h.day;return f||h.year},tooltipFooterHeaderFormatter:function(a,e){var g= +e?"footer":"header";e=a.series;var f=e.tooltipOptions,d=f.xDateFormat,b=e.xAxis,q=b&&"datetime"===b.options.type&&p(a.key),g=f[g+"Format"];q&&!d&&(d=this.getXDateFormat(a,f,b));q&&d&&(g=g.replace("{point.key}","{point.key:"+d+"}"));return H(g,{point:a,series:e})},bodyFormatter:function(a){return l(a,function(a){var e=a.series.tooltipOptions;return(e.pointFormatter||a.point.tooltipFormatter).call(a.point,e.pointFormat)})}}})(N);(function(a){var D=a.addEvent,B=a.attr,G=a.charts,H=a.color,p=a.css,l= +a.defined,r=a.doc,w=a.each,t=a.extend,k=a.fireEvent,m=a.offset,e=a.pick,g=a.removeEvent,h=a.splat,C=a.Tooltip,f=a.win;a.Pointer=function(a,b){this.init(a,b)};a.Pointer.prototype={init:function(a,b){this.options=b;this.chart=a;this.runChartClick=b.chart.events&&!!b.chart.events.click;this.pinchDown=[];this.lastValidTouch={};C&&b.tooltip.enabled&&(a.tooltip=new C(a,b.tooltip),this.followTouchMove=e(b.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,d=b.options.chart, +f=d.zoomType||"",b=b.inverted;/touch/.test(a.type)&&(f=e(d.pinchType,f));this.zoomX=a=/x/.test(f);this.zoomY=f=/y/.test(f);this.zoomHor=a&&!b||f&&b;this.zoomVert=f&&!b||a&&b;this.hasZoom=a||f},normalize:function(a,b){var d,e;a=a||f.event;a.target||(a.target=a.srcElement);e=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;b||(this.chartPosition=b=m(this.chart.container));void 0===e.pageX?(d=Math.max(a.x,a.clientX-b.left),b=a.y):(d=e.pageX-b.left,b=e.pageY-b.top);return t(a,{chartX:Math.round(d), +chartY:Math.round(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};w(this.chart.axes,function(d){b[d.isXAxis?"xAxis":"yAxis"].push({axis:d,value:d.toValue(a[d.horiz?"chartX":"chartY"])})});return b},runPointActions:function(d){var b=this.chart,f=b.series,g=b.tooltip,c=g?g.shared:!1,h=!0,n=b.hoverPoint,m=b.hoverSeries,x,k,y,u=[],I;if(!c&&!m)for(x=0;xb.series.index?-1:1}));if(c)for(x=u.length;x--;)(u[x].x!==u[0].x||u[x].series.noSharedTooltip)&&u.splice(x,1);if(u[0]&&(u[0]!==this.prevKDPoint||g&&g.isHidden)){if(c&& +!u[0].series.noSharedTooltip){for(x=0;xh+k&&(f=h+k),cm+y&&(c=m+y),this.hasDragged=Math.sqrt(Math.pow(l-f,2)+Math.pow(v-c,2)),10x.max&&(l=x.max-c,v=!0);v?(u-=.8*(u-g[f][0]),J||(M-=.8*(M-g[f][1])),p()):g[f]=[u,M];A||(e[f]=F-E,e[q]=c);e=A?1/n:n;m[q]=c;m[f]=l;k[A?a?"scaleY":"scaleX":"scale"+d]=n;k["translate"+d]=e* +E+(u-e*y)},pinch:function(a){var r=this,t=r.chart,k=r.pinchDown,m=a.touches,e=m.length,g=r.lastValidTouch,h=r.hasZoom,C=r.selectionMarker,f={},d=1===e&&(r.inClass(a.target,"highcharts-tracker")&&t.runTrackerClick||r.runChartClick),b={};1b-6&&n(u||d.chartWidth- +2*x-v-e.x)&&(this.itemX=v,this.itemY+=p+this.lastLineHeight+I,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,c);this.lastItemY=p+this.itemY+I;this.lastLineHeight=Math.max(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];f?this.itemX+=c:(this.itemY+=p+g+I,this.lastLineHeight=g);this.offsetWidth=u||Math.max((f?this.itemX-v-l:c)+x,this.offsetWidth)},getAllItems:function(){var a=[];l(this.chart.series,function(d){var b=d&&d.options;d&&m(b.showInLegend,p(b.linkedTo)? +!1:void 0,!0)&&(a=a.concat(d.legendItems||("point"===b.legendType?d.data:d)))});return a},adjustMargins:function(a,d){var b=this.chart,e=this.options,f=e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0);e.floating||l([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(c,g){c.test(f)&&!p(a[g])&&(b[t[g]]=Math.max(b[t[g]],b.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*e[g%2?"x":"y"]+m(e.margin,12)+d[g]))})},render:function(){var a=this,d=a.chart,b=d.renderer, +e=a.group,h,c,m,n,k=a.box,x=a.options,p=a.padding;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;e||(a.group=e=b.g("legend").attr({zIndex:7}).add(),a.contentGroup=b.g().attr({zIndex:1}).add(e),a.scrollGroup=b.g().add(a.contentGroup));a.renderTitle();h=a.getAllItems();g(h,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});x.reversed&&h.reverse();a.allItems=h;a.display=c=!!h.length;a.lastLineHeight=0;l(h,function(b){a.renderItem(b)}); +m=(x.width||a.offsetWidth)+p;n=a.lastItemY+a.lastLineHeight+a.titleHeight;n=a.handleOverflow(n);n+=p;k||(a.box=k=b.rect().addClass("highcharts-legend-box").attr({r:x.borderRadius}).add(e),k.isNew=!0);k.attr({stroke:x.borderColor,"stroke-width":x.borderWidth||0,fill:x.backgroundColor||"none"}).shadow(x.shadow);0b&&!1!==h.enabled?(this.clipHeight=g=Math.max(b-20-this.titleHeight-I,0),this.currentPage=m(this.currentPage,1),this.fullHeight=a,l(v,function(a,b){var c=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var d=u.length;if(!d||c-u[d-1]>g&&(r||c)!==u[d-1])u.push(r||c),d++;b===v.length-1&&c+a-u[d-1]>g&&u.push(c);c!==r&&(r=c)}),n||(n=d.clipRect= +e.clipRect(0,I,9999,0),d.contentGroup.clip(n)),t(g),y||(this.nav=y=e.g().attr({zIndex:1}).add(this.group),this.up=e.symbol("triangle",0,0,p,p).on("click",function(){d.scroll(-1,k)}).add(y),this.pager=e.text("",15,10).addClass("highcharts-legend-navigation").css(h.style).add(y),this.down=e.symbol("triangle-down",0,0,p,p).on("click",function(){d.scroll(1,k)}).add(y)),d.scroll(0),a=b):y&&(t(),y.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,d){var b=this.pages, +f=b.length;a=this.currentPage+a;var g=this.clipHeight,c=this.options.navigation,h=this.pager,n=this.padding;a>f&&(a=f);0f&&(g=typeof a[0],"string"===g?e.name=a[0]:"number"===g&&(e.x=a[0]),d++);b=h.value;)h=e[++g];h&&h.color&&!this.options.color&&(this.color=h.color);return h},destroy:function(){var a=this.series.chart,e=a.hoverPoints,g;a.pointCount--;e&&(this.setState(),H(e,this),e.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)k(this), +this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(g in this)this[g]=null},destroyElements:function(){for(var a=["graphic","dataLabel","dataLabelUpper","connector","shadowGroup"],e,g=6;g--;)e=a[g],this[e]&&(this[e]=this[e].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var e=this.series,g= +e.tooltipOptions,h=t(g.valueDecimals,""),k=g.valuePrefix||"",f=g.valueSuffix||"";B(e.pointArrayMap||["y"],function(d){d="{point."+d;if(k||f)a=a.replace(d+"}",k+d+"}"+f);a=a.replace(d+"}",d+":,."+h+"f}")});return l(a,{point:this,series:this.series})},firePointEvent:function(a,e,g){var h=this,k=this.series.options;(k.point.events[a]||h.options&&h.options.events&&h.options.events[a])&&this.importEvents();"click"===a&&k.allowPointSelect&&(g=function(a){h.select&&h.select(null,a.ctrlKey||a.metaKey||a.shiftKey)}); +p(this,a,e,g)},visible:!0}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.correctFloat,l=a.Date,r=a.defaultOptions,w=a.defaultPlotOptions,t=a.defined,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.fireEvent,C=a.grep,f=a.isArray,d=a.isNumber,b=a.isString,q=a.merge,E=a.pick,c=a.removeEvent,F=a.splat,n=a.stableSort,A=a.SVGElement,x=a.syncTimeout,J=a.win;a.Series=a.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{}, +marker:{lineWidth:0,lineColor:"#ffffff",radius:4,states:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===this.y?"":a.numberFormat(this.y,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{lineWidthPlus:1, +marker:{},halo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3},{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],coll:"series",init:function(a,b){var c=this,d,e,f=a.series,u,y=function(a,b){return E(a.options.index,a._i)-E(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();g(c,{name:b.name,state:"",visible:!1!==b.visible,selected:!0=== +b.selected});e=b.events;for(d in e)D(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();k(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);c.isCartesian&&(a.hasCartesianSeries=!0);f.length&&(u=f[f.length-1]);c._i=E(u&&u._i,-1)+1;f.push(c);n(f,y);this.yAxis&&n(this.yAxis.series,y);k(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart, +d;k(a.axisTypes||[],function(f){k(c[f],function(c){d=c.options;if(b[f]===d.index||void 0!==b[f]&&b[f]===d.id||void 0===b[f]&&0===d.index)c.series.push(a),a[f]=c,c.isDirty=!0});a[f]||a.optionalAxis===f||e(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,e=arguments,f=d(b)?function(d){var e="y"===d&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=e}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(e,2))};k(c.parallelArrays,f)},autoIncrement:function(){var a=this.options, +b=this.xIncrement,c,d=a.pointIntervalUnit,b=E(b,a.pointStart,0);this.pointInterval=c=E(this.pointInterval,a.pointInterval,1);d&&(a=new l(b),"day"===d?a=+a[l.hcSetDate](a[l.hcGetDate]()+c):"month"===d?a=+a[l.hcSetMonth](a[l.hcGetMonth]()+c):"year"===d&&(a=+a[l.hcSetFullYear](a[l.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=q(e,c.series,a);this.tooltipOptions= +q(r.tooltip,r.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);null===e.marker&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();!c.negativeColor&&!c.negativeFillColor||c.zones||a.push({value:c[this.zoneAxis+"Threshold"]||c.threshold||0,className:"highcharts-negative",color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&t(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor}); +return c},getCyclic:function(a,b,c){var d,e=this.userOptions,f=a+"Index",g=a+"Counter",u=c?c.length:E(this.chart.options.chart[a+"Count"],this.chart[a+"Count"]);b||(d=E(e[f],e["_"+f]),t(d)||(e["_"+f]=d=this.chart[g]%u,this.chart[g]+=1),c&&(b=c[d]));void 0!==d&&(this[f]=d);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic("color",this.options.color||w[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol, +this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(a,c,g,n){var u=this,q=u.points,h=q&&q.length||0,y,m=u.options,x=u.chart,A=null,I=u.xAxis,l=m.turboThreshold,p=this.xData,r=this.yData,F=(y=u.pointArrayMap)&&y.length;a=a||[];y=a.length;c=E(c,!0);if(!1!==n&&y&&h===y&&!u.cropped&&!u.hasGroupedData&&u.visible)k(a,function(a,b){q[b].update&&a!==m.data[b]&&q[b].update(a,!1,null,!1)});else{u.xIncrement=null;u.colorCounter=0;k(this.parallelArrays,function(a){u[a+ +"Data"].length=0});if(l&&y>l){for(g=0;null===A&&gh||this.forceCrop))if(b[d-1]l)b=[],c=[];else if(b[0]l)f=this.cropData(this.xData,this.yData,A,l),b=f.xData,c=f.yData,f=f.start,g=!0;for(h=b.length||1;--h;)d=x?y(b[h])-y(b[h-1]):b[h]-b[h-1],0d&&this.requireSorting&&e(15);this.cropped=g;this.cropStart=f;this.processedXData=b;this.processedYData=c;this.closestPointRange=n},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,n=E(this.cropShoulder,1),u;for(u=0;u=c){f=Math.max(0,u- +n);break}for(c=u;cd){g=c+n;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,n=this.cropStart||0,q,h=this.hasGroupedData,k,m=[],x;b||h||(b=[],b.length=a.length,b=this.data=b);for(x=0;x=q&&(c[x-1]||k)<=h,y&&k)if(y=m.length)for(;y--;)null!==m[y]&&(g[n++]=m[y]);else g[n++]=m;this.dataMin=H(g);this.dataMax=G(g)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,e=c.categories,f=this.yAxis,g=this.points,n=g.length,q=!!this.modifyValue,h=a.pointPlacement,k="between"===h||d(h),m=a.threshold,x=a.startFromThreshold?m:0,A,l,r,F,J=Number.MAX_VALUE;"between"===h&&(h=.5);d(h)&&(h*=E(a.pointRange||c.pointRange)); +for(a=0;a=B&&(C.isNull=!0);C.plotX=A=p(Math.min(Math.max(-1E5,c.translate(w,0,0,0,1,h,"flags"===this.type)),1E5));b&&this.visible&&!C.isNull&&D&&D[w]&&(F=this.getStackIndicator(F,w,this.index),G=D[w],B=G.points[F.key],l=B[0],B=B[1],l===x&&F.key===D[w].base&&(l=E(m,f.min)),f.isLog&&0>=l&&(l=null),C.total=C.stackTotal=G.total,C.percentage=G.total&&C.y/G.total*100,C.stackY= +B,G.setOffset(this.pointXOffset||0,this.barW||0));C.yBottom=t(l)?f.translate(l,0,1,0,1):null;q&&(B=this.modifyValue(B,C));C.plotY=l="number"===typeof B&&Infinity!==B?Math.min(Math.max(-1E5,f.translate(B,0,1,0,1)),1E5):void 0;C.isInside=void 0!==l&&0<=l&&l<=f.len&&0<=A&&A<=c.len;C.clientX=k?p(c.translate(w,0,0,0,1,h)):A;C.negative=C.y<(m||0);C.category=e&&void 0!==e[C.x]?e[C.x]:C.x;C.isNull||(void 0!==r&&(J=Math.min(J,Math.abs(A-r))),r=A)}this.closestPointRangePx=J},getValidPoints:function(a,b){var c= +this.chart;return C(a||this.points||[],function(a){return b&&!c.isInsidePlot(a.plotX,a.plotY,c.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,e=b.inverted,f=this.clipBox,g=f||b.clipBox,n=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(),q=b[n],h=b[n+"m"];q||(a&&(g.width=0,b[n+"m"]=h=d.clipRect(-99,e?-b.plotLeft:-b.plotTop,99,e?b.chartWidth:b.chartHeight)),b[n]=q=d.clipRect(g),q.count={length:0});a&&!q.count[this.index]&& +(q.count[this.index]=!0,q.count.length+=1);!1!==c.clip&&(this.group.clip(a||f?q:b.clipRect),this.markerGroup.clip(h),this.sharedClipKey=n);a||(q.count[this.index]&&(delete q.count[this.index],--q.count.length),0===q.count.length&&n&&b[n]&&(f||(b[n]=b[n].destroy()),b[n+"m"]&&(b[n+"m"]=b[n+"m"].destroy())))},animate:function(a){var b=this.chart,c=B(this.options.animation),d;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+ +99},c),this.animate=null)},afterAnimate:function(){this.setClip();h(this,"afterAnimate")},drawPoints:function(){var a=this.points,b=this.chart,c,e,f,g,n=this.options.marker,q,h,k,m,x=this.markerGroup,A=E(n.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>2*n.radius);if(!1!==n.enabled||this._hasPointMarkers)for(e=a.length;e--;)f=a[e],c=f.plotY,g=f.graphic,q=f.marker||{},h=!!f.marker,k=A&&void 0===q.enabled||q.enabled,m=f.isInside,k&&d(c)&&null!==f.y?(c=E(q.symbol,this.symbol),f.hasImage= +0===c.indexOf("url"),k=this.markerAttribs(f,f.selected&&"select"),g?g[m?"show":"hide"](!0).animate(k):m&&(0e&&b.shadow));g&&(g.startX=c.xMap, +g.isArea=c.isArea)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],n,q=this.graph,h=this.area,m=Math.max(b.chartWidth,b.chartHeight),x=this[(this.zoneAxis||"y")+"Axis"],A,l,p=b.inverted,r,F,C,t,J=!1;d.length&&(q||h)&&x&&void 0!==x.min&&(l=x.reversed,r=x.horiz,q&&q.hide(),h&&h.hide(),A=x.getExtremes(),k(d,function(d,u){e=l?r?b.plotWidth:0:r?0:x.toPixels(A.min);e=Math.min(Math.max(E(f,e),0),m);f=Math.min(Math.max(Math.round(x.toPixels(E(d.value,A.max), +!0)),0),m);J&&(e=f=x.toPixels(A.max));F=Math.abs(e-f);C=Math.min(e,f);t=Math.max(e,f);x.isXAxis?(n={x:p?t:C,y:0,width:F,height:m},r||(n.x=b.plotHeight-n.x)):(n={x:0,y:p?t:C,width:m,height:F},r&&(n.y=b.plotWidth-n.y));p&&c.isVML&&(n=x.isXAxis?{x:0,y:l?C:t,height:n.width,width:b.chartWidth}:{x:n.y-b.plotLeft-b.spacingBox.x,y:0,width:n.height,height:b.chartHeight});g[u]?g[u].animate(n):(g[u]=c.clipRect(n),q&&a["zone-graph-"+u].clip(g[u]),h&&a["zone-area-"+u].clip(g[u]));J=d.value>A.max}),this.clips= +g)},invertGroups:function(a){function b(){var b={width:c.yAxis.len,height:c.xAxis.len};k(["group","markerGroup"],function(d){c[d]&&c[d].attr(b).invert(a)})}var c=this,d;c.xAxis&&(d=D(c.chart,"resize",b),D(c,"destroy",d),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({zIndex:d||.1}).add(e),f.addClass("highcharts-series-"+this.index+" highcharts-"+this.type+"-series highcharts-color-"+this.colorIndex+" "+(this.options.className|| +"")));f.attr({visibility:c})[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=!!a.animate&&b.renderer.isSVG&&B(d.animation).duration,f=a.visible?"inherit":"hidden",g=d.zIndex,n=a.hasRendered,q=b.seriesGroup,h=b.inverted;c=a.plotGroup("group","series",f,g,q);a.markerGroup= +a.plotGroup("markerGroup","markers",f,g,q);e&&a.animate(!0);c.inverted=a.isCartesian?h:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(h);!1===d.clip||a.sharedClipKey||n||c.clip(b.clipRect);e&&a.animate();n||(a.animationTimeout=x(function(){a.afterAnimate()},e));a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirty|| +this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:E(d&&d.left,a.plotLeft),translateY:E(e&&e.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)}, +buildKDTree:function(){function a(c,d,e){var f,g;if(g=c&&c.length)return f=b.kdAxisArray[d%e],c.sort(function(a,b){return a[f]-b[f]}),g=Math.floor(g/2),{point:c[g],left:a(c.slice(0,g),d+1,e),right:a(c.slice(g+1),d+1,e)}}var b=this,c=b.kdDimensions;delete b.kdTree;x(function(){b.kdTree=a(b.getValidPoints(null,!b.directTouch),c,c)},b.options.kdNow?0:1)},searchKDTree:function(a,b){function c(a,b,n,q){var h=b.point,u=d.kdAxisArray[n%q],k,m,x=h;m=t(a[e])&&t(h[e])?Math.pow(a[e]-h[e],2):null;k=t(a[f])&& +t(h[f])?Math.pow(a[f]-h[f],2):null;k=(m||0)+(k||0);h.dist=t(k)?Math.sqrt(k):Number.MAX_VALUE;h.distX=t(m)?Math.sqrt(m):Number.MAX_VALUE;u=a[u]-h[u];k=0>u?"left":"right";m=0>u?"right":"left";b[k]&&(k=c(a,b[k],n+1,q),x=k[g]A;)l--;this.updateParallelArrays(h,"splice",l,0,0);this.updateParallelArrays(h,l);n&&h.name&&(n[A]=h.name);q.splice(l,0,a);m&&(this.data.splice(l,0,null),this.processData());"point"===c.legendType&&this.generatePoints();d&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(h,"shift"),q.shift()));this.isDirtyData=this.isDirty=!0;b&&g.redraw(e)},removePoint:function(a, +b,d){var c=this,e=c.data,f=e[a],g=c.points,n=c.chart,h=function(){g&&g.length===e.length&&g.splice(a,1);e.splice(a,1);c.options.data.splice(a,1);c.updateParallelArrays(f||{series:c},"splice",a,1);f&&f.destroy();c.isDirty=!0;c.isDirtyData=!0;b&&n.redraw()};q(d,n);b=C(b,!0);f?f.firePointEvent("remove",null,h):h()},remove:function(a,b,d){function c(){e.destroy();f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();C(a,!0)&&f.redraw(b)}var e=this,f=e.chart;!1!==d?k(e,"remove",null,c):c()},update:function(a, +d){var c=this,e=this.chart,f=this.userOptions,g=this.type,q=a.type||f.type||e.options.chart.type,u=b[g].prototype,m=["group","markerGroup","dataLabelsGroup"],k;if(q&&q!==g||void 0!==a.zIndex)m.length=0;r(m,function(a){m[a]=c[a];delete c[a]});a=h(f,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1,null,!1);for(k in u)this[k]=void 0;t(this,b[q||g].prototype);r(m,function(a){c[a]=m[a]});this.init(e,a);e.linkSeries();C(d,!0)&&e.redraw(!1)}});t(G.prototype, +{update:function(a,b){var c=this.chart;a=c.options[this.coll][this.options.index]=h(this.userOptions,a);this.destroy(!0);this.init(c,t(a,{events:void 0}));c.isDirtyBox=!0;C(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);w(b.axes,this);w(b[c],this);b.options[c].splice(this.options.index,1);r(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;C(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a}, +b)},setCategories:function(a,b){this.update({categories:a},b)}})})(N);(function(a){var D=a.color,B=a.each,G=a.map,H=a.pick,p=a.Series,l=a.seriesType;l("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(){var a=[],l=[],p=this.xAxis,k=this.yAxis,m=k.stacks[this.stackKey],e={},g=this.points,h=this.index,C=k.series,f=C.length,d,b=H(k.options.reversedStacks,!0)?1:-1,q,E;if(this.options.stacking){for(q=0;qa&&t>l?(t=Math.max(a,l),m=2*l-t):tH&& +m>l?(m=Math.max(H,l),t=2*l-m):m=Math.abs(g)&&.5a.closestPointRange*a.xAxis.transA,k=a.borderWidth=r(h.borderWidth,k?0:1),f=a.yAxis,d=a.translatedThreshold=f.getThreshold(h.threshold),b=r(h.minPointLength,5),q=a.getColumnMetrics(),m=q.width,c=a.barW=Math.max(m,1+2*k),l=a.pointXOffset= +q.offset;g.inverted&&(d-=.5);h.pointPadding&&(c=Math.ceil(c));w.prototype.translate.apply(a);G(a.points,function(e){var n=r(e.yBottom,d),q=999+Math.abs(n),q=Math.min(Math.max(-q,e.plotY),f.len+q),h=e.plotX+l,k=c,u=Math.min(q,n),p,t=Math.max(q,n)-u;Math.abs(t)b?n-b:d-(p?b:0));e.barX=h;e.pointWidth=m;e.tooltipPos=g.inverted?[f.len+f.pos-g.plotLeft-q,a.xAxis.len-h-k/2,t]:[h+k/2,q+f.pos-g.plotTop,t];e.shapeType="rect";e.shapeArgs= +a.crispCol.apply(a,e.isNull?[e.plotX,f.len/2,0,0]:[h,u,k,t])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},pointAttribs:function(a,g){var e=this.options,k=this.pointAttrToOptions||{},f=k.stroke||"borderColor",d=k["stroke-width"]||"borderWidth",b=a&&a.color||this.color,q=a[f]||e[f]||this.color||b,k=e.dashStyle,m;a&&this.zones.length&&(b=(b=a.getZone())&&b.color||a.options.color|| +this.color);g&&(g=e.states[g],m=g.brightness,b=g.color||void 0!==m&&B(b).brighten(g.brightness).get()||b,q=g[f]||q,k=g.dashStyle||k);a={fill:b,stroke:q,"stroke-width":a[d]||e[d]||this[d]||0};e.borderRadius&&(a.r=e.borderRadius);k&&(a.dashstyle=k);return a},drawPoints:function(){var a=this,g=this.chart,h=a.options,m=g.renderer,f=h.animationLimit||250,d;G(a.points,function(b){var e=b.graphic;p(b.plotY)&&null!==b.y?(d=b.shapeArgs,e?(k(e),e[g.pointCountt;++t)k=r[t],a=2>t||2===t&&/%$/.test(k),r[t]=B(k,[l,H,w,r[2]][t])+(a?p:0);r[3]>r[2]&&(r[3]=r[2]);return r}}})(N);(function(a){var D=a.addEvent,B=a.defined,G=a.each,H=a.extend,p=a.inArray,l=a.noop,r=a.pick,w=a.Point,t=a.Series,k=a.seriesType,m=a.setAnimation;k("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return null===this.y? +void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,states:{hover:{brightness:.1,shadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var e=this,h=e.points,k=e.startAngleRad;a||(G(h,function(a){var d= +a.graphic,b=a.shapeArgs;d&&(d.attr({r:a.startR||e.center[3]/2,start:k,end:k}),d.animate({r:b.r,start:b.start,end:b.end},e.options.animation))}),e.animate=null)},updateTotals:function(){var a,g=0,h=this.points,k=h.length,f,d=this.options.ignoreHiddenPoint;for(a=0;af.y&&(f.y=null),g+=d&&!f.visible?0:f.y;this.total=g;for(a=0;a1.5*Math.PI?q-=2*Math.PI:q<-Math.PI/2&&(q+=2*Math.PI);t.slicedTranslation={translateX:Math.round(Math.cos(q)*k),translateY:Math.round(Math.sin(q)*k)};d=Math.cos(q)*a[2]/2;b=Math.sin(q)*a[2]/2;t.tooltipPos=[a[0]+.7*d,a[1]+.7*b];t.half=q<-Math.PI/2||q>Math.PI/2?1:0;t.angle=q;f=Math.min(f,n/5);t.labelPos=[a[0]+d+Math.cos(q)*n,a[1]+b+Math.sin(q)*n,a[0]+d+Math.cos(q)*f,a[1]+b+Math.sin(q)* +f,a[0]+d,a[1]+b,0>n?"center":t.half?"right":"left",q]}},drawGraph:null,drawPoints:function(){var a=this,g=a.chart.renderer,h,k,f,d,b=a.options.shadow;b&&!a.shadowGroup&&(a.shadowGroup=g.g("shadow").add(a.group));G(a.points,function(e){if(null!==e.y){k=e.graphic;d=e.shapeArgs;h=e.sliced?e.slicedTranslation:{};var q=e.shadowGroup;b&&!q&&(q=e.shadowGroup=g.g("shadow").add(a.shadowGroup));q&&q.attr(h);f=a.pointAttribs(e,e.selected&&"select");k?k.setRadialReference(a.center).attr(f).animate(H(d,h)):(e.graphic= +k=g[e.shapeType](d).addClass(e.getClassName()).setRadialReference(a.center).attr(h).add(a.group),e.visible||k.attr({visibility:"hidden"}),k.attr(f).attr({"stroke-linejoin":"round"}).shadow(b,q))}})},searchPoint:l,sortByAngle:function(a,g){a.sort(function(a,e){return void 0!==a.angle&&(e.angle-a.angle)*g})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:l},{init:function(){w.prototype.init.apply(this,arguments);var a=this,g;a.name=r(a.name,"Slice"); +g=function(e){a.slice("select"===e.type)};D(a,"select",g);D(a,"unselect",g);return a},setVisible:function(a,g){var e=this,k=e.series,f=k.chart,d=k.options.ignoreHiddenPoint;g=r(g,d);a!==e.visible&&(e.visible=e.options.visible=a=void 0===a?!e.visible:a,k.options.data[p(e,k.data)]=e.options,G(["graphic","dataLabel","connector","shadowGroup"],function(b){if(e[b])e[b][a?"show":"hide"](!0)}),e.legendItem&&f.legend.colorizeItem(e,a),a||"hover"!==e.state||e.setState(""),d&&(k.isDirty=!0),g&&f.redraw())}, +slice:function(a,g,h){var e=this.series;m(h,e.chart);r(g,!0);this.sliced=this.options.sliced=a=B(a)?a:!this.sliced;e.options.data[p(this,e.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+a,e.r+a,{innerR:this.shapeArgs.r,start:e.start,end:e.end})}})})(N);(function(a){var D= +a.addEvent,B=a.arrayMax,G=a.defined,H=a.each,p=a.extend,l=a.format,r=a.map,w=a.merge,t=a.noop,k=a.pick,m=a.relativeLength,e=a.Series,g=a.seriesTypes,h=a.stableSort,C=a.stop;a.distribute=function(a,d){function b(a,b){return a.target-b.target}var e,f=!0,c=a,g=[],n;n=0;for(e=a.length;e--;)n+=a[e].size;if(n>d){h(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(n=e=0;n<=d;)n+=a[e].size,e++;g=a.splice(e-1,a.length)}h(a,b);for(a=r(a,function(a){return{size:a.size,targets:[a.target]}});f;){for(e=a.length;e--;)f= +a[e],n=(Math.min.apply(0,f.targets)+Math.max.apply(0,f.targets))/2,f.pos=Math.min(Math.max(0,n-f.size/2),d-f.size);e=a.length;for(f=!1;e--;)0a[e].pos&&(a[e-1].size+=a[e].size,a[e-1].targets=a[e-1].targets.concat(a[e].targets),a[e-1].pos+a[e-1].size>d&&(a[e-1].pos=d-a[e-1].size),a.splice(e,1),f=!0)}e=0;H(a,function(a){var b=0;H(a.targets,function(){c[e].pos=a.pos+b;b+=c[e].size;e++})});c.push.apply(c,g);h(c,b)};e.prototype.drawDataLabels=function(){var a=this,d=a.options, +b=d.dataLabels,e=a.points,g,c,h=a.hasRendered||0,n,m,x=k(b.defer,!0),r=a.chart.renderer;if(b.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(b),m=a.plotGroup("dataLabelsGroup","data-labels",x&&!h?"hidden":"visible",b.zIndex||6),x&&(m.attr({opacity:+h}),h||D(a,"afterAnimate",function(){a.visible&&m.show(!0);m[d.animation?"animate":"attr"]({opacity:1},{duration:200})})),c=b,H(e,function(e){var f,q=e.dataLabel,h,x,A=e.connector,y=!0,t,z={};g=e.dlOptions||e.options&&e.options.dataLabels; +f=k(g&&g.enabled,c.enabled)&&null!==e.y;if(q&&!f)e.dataLabel=q.destroy();else if(f){b=w(c,g);t=b.style;f=b.rotation;h=e.getLabelConfig();n=b.format?l(b.format,h):b.formatter.call(h,b);t.color=k(b.color,t.color,a.color,"#000000");if(q)G(n)?(q.attr({text:n}),y=!1):(e.dataLabel=q=q.destroy(),A&&(e.connector=A.destroy()));else if(G(n)){q={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:f,padding:b.padding,zIndex:1};"contrast"===t.color&&(z.color=b.inside|| +0>b.distance||d.stacking?r.getContrast(e.color||a.color):"#000000");d.cursor&&(z.cursor=d.cursor);for(x in q)void 0===q[x]&&delete q[x];q=e.dataLabel=r[f?"text":"label"](n,0,-9999,b.shape,null,null,b.useHTML,null,"data-label").attr(q);q.addClass("highcharts-data-label-color-"+e.colorIndex+" "+(b.className||""));q.css(p(t,z));q.add(m);q.shadow(b.shadow)}q&&a.alignDataLabel(e,q,b,null,y)}})};e.prototype.alignDataLabel=function(a,d,b,e,g){var c=this.chart,f=c.inverted,n=k(a.plotX,-9999),q=k(a.plotY, +-9999),h=d.getBBox(),m,l=b.rotation,u=b.align,r=this.visible&&(a.series.forceDL||c.isInsidePlot(n,Math.round(q),f)||e&&c.isInsidePlot(n,f?e.x+1:e.y+e.height-1,f)),t="justify"===k(b.overflow,"justify");r&&(m=b.style.fontSize,m=c.renderer.fontMetrics(m,d).b,e=p({x:f?c.plotWidth-q:n,y:Math.round(f?c.plotHeight-n:q),width:0,height:0},e),p(b,{width:h.width,height:h.height}),l?(t=!1,f=c.renderer.rotCorr(m,l),f={x:e.x+b.x+e.width/2+f.x,y:e.y+b.y+{top:0,middle:.5,bottom:1}[b.verticalAlign]*e.height},d[g? +"attr":"animate"](f).attr({align:u}),n=(l+720)%360,n=180n,"left"===u?f.y-=n?h.height:0:"center"===u?(f.x-=h.width/2,f.y-=h.height/2):"right"===u&&(f.x-=h.width,f.y-=n?0:h.height)):(d.align(b,null,e),f=d.alignAttr),t?this.justifyDataLabel(d,b,f,h,e,g):k(b.crop,!0)&&(r=c.isInsidePlot(f.x,f.y)&&c.isInsidePlot(f.x+h.width,f.y+h.height)),b.shape&&!l&&d.attr({anchorX:a.plotX,anchorY:a.plotY}));r||(C(d),d.attr({y:-9999}),d.placed=!1)};e.prototype.justifyDataLabel=function(a,d,b,e,g,c){var f=this.chart, +n=d.align,h=d.verticalAlign,q,k,m=a.box?0:a.padding||0;q=b.x+m;0>q&&("right"===n?d.align="left":d.x=-q,k=!0);q=b.x+e.width-m;q>f.plotWidth&&("left"===n?d.align="right":d.x=f.plotWidth-q,k=!0);q=b.y+m;0>q&&("bottom"===h?d.verticalAlign="top":d.y=-q,k=!0);q=b.y+e.height-m;q>f.plotHeight&&("top"===h?d.verticalAlign="bottom":d.y=f.plotHeight-q,k=!0);k&&(a.placed=!c,a.align(d,null,g))};g.pie&&(g.pie.prototype.drawDataLabels=function(){var f=this,d=f.data,b,g=f.chart,h=f.options.dataLabels,c=k(h.connectorPadding, +10),m=k(h.connectorWidth,1),n=g.plotWidth,l=g.plotHeight,x,p=h.distance,y=f.center,u=y[2]/2,t=y[1],w=0k-2?A:P,e),v._attr={visibility:S,align:D[6]},v._pos={x:L+h.x+({left:c,right:-c}[D[6]]||0),y:P+h.y-10},D.x=L,D.y=P,null===f.options.size&&(C=v.width,L-Cn-c&&(T[1]=Math.max(Math.round(L+ +C-n+c),T[1])),0>P-G/2?T[0]=Math.max(Math.round(-P+G/2),T[0]):P+G/2>l&&(T[2]=Math.max(Math.round(P+G/2-l),T[2])))}),0===B(T)||this.verifyDataLabelOverflow(T))&&(this.placeDataLabels(),w&&m&&H(this.points,function(a){var b;x=a.connector;if((v=a.dataLabel)&&v._pos&&a.visible){S=v._attr.visibility;if(b=!x)a.connector=x=g.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+a.colorIndex).add(f.dataLabelsGroup),x.attr({"stroke-width":m,stroke:h.connectorColor||a.color||"#666666"}); +x[b?"attr":"animate"]({d:f.connectorPath(a.labelPos)});x.attr("visibility",S)}else x&&(a.connector=x.destroy())}))},g.pie.prototype.connectorPath=function(a){var d=a.x,b=a.y;return k(this.options.dataLabels.softConnector,!0)?["M",d+("left"===a[6]?5:-5),b,"C",d,b,2*a[2]-a[4],2*a[3]-a[5],a[2],a[3],"L",a[4],a[5]]:["M",d+("left"===a[6]?5:-5),b,"L",a[2],a[3],"L",a[4],a[5]]},g.pie.prototype.placeDataLabels=function(){H(this.points,function(a){var d=a.dataLabel;d&&a.visible&&((a=d._pos)?(d.attr(d._attr), +d[d.moved?"animate":"attr"](a),d.moved=!0):d&&d.attr({y:-9999}))})},g.pie.prototype.alignDataLabel=t,g.pie.prototype.verifyDataLabelOverflow=function(a){var d=this.center,b=this.options,e=b.center,f=b.minSize||80,c,g;null!==e[0]?c=Math.max(d[2]-Math.max(a[1],a[3]),f):(c=Math.max(d[2]-a[1]-a[3],f),d[0]+=(a[3]-a[1])/2);null!==e[1]?c=Math.max(Math.min(c,d[2]-Math.max(a[0],a[2])),f):(c=Math.max(Math.min(c,d[2]-a[0]-a[2]),f),d[1]+=(a[0]-a[2])/2);ck(this.translatedThreshold,f.yAxis.len)),m=k(b.inside,!!this.options.stacking);n&&(g=w(n),0>g.y&&(g.height+=g.y,g.y=0),n=g.y+g.height-f.yAxis.len,0a+e||c+nb+f||g+hthis.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints, +e;d&&r(d,function(a){a.setState()});r("xy"===b?[1,0]:[1],function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"],d=d?"mouseDownX":"mouseDownY",g=c[d],n=(b.pointRange||0)/2,h=b.getExtremes(),q=b.toValue(g-f,!0)+n,n=b.toValue(g+b.len-f,!0)-n,g=g>f;b.series.length&&(g||q>Math.min(h.dataMin,h.min))&&(!g||n=p(k.minWidth,0)&&this.chartHeight>=p(k.minHeight,0)};void 0===l._id&&(l._id=a.uniqueKey());m=m.call(this);!r[l._id]&&m?l.chartOptions&&(r[l._id]=this.currentOptions(l.chartOptions),this.update(l.chartOptions,w)):r[l._id]&&!m&&(this.update(r[l._id],w),delete r[l._id])};D.prototype.currentOptions=function(a){function p(a,m,e){var g,h;for(g in a)if(-1< +G(g,["series","xAxis","yAxis"]))for(a[g]=l(a[g]),e[g]=[],h=0;hd.length||void 0===h)return a.call(this,g,h,k,f);x=d.length;for(c=0;ck;d[c]5*b||w){if(d[c]>u){for(r=a.call(this,g,d[e],d[c],f);r.length&&r[0]<=u;)r.shift();r.length&&(u=r[r.length-1]);y=y.concat(r)}e=c+1}if(w)break}a= +r.info;if(q&&a.unitRange<=m.hour){c=y.length-1;for(e=1;ek?a-1:a;for(M=void 0;q--;)e=c[q],k=M-e,M&&k<.8*C&&(null===t||k<.8*t)?(n[y[q]]&&!n[y[q+1]]?(k=q+1,M=e):k=q,y.splice(k,1)):M=e}return y});w(B.prototype,{beforeSetTickPositions:function(){var a, +g=[],h=!1,k,f=this.getExtremes(),d=f.min,b=f.max,q,m=this.isXAxis&&!!this.options.breaks,f=this.options.ordinal,c=this.chart.options.chart.ignoreHiddenSeries;if(f||m){r(this.series,function(b,d){if(!(c&&!1===b.visible||!1===b.takeOrdinalPosition&&!m)&&(g=g.concat(b.processedXData),a=g.length,g.sort(function(a,b){return a-b}),a))for(d=a-1;d--;)g[d]===g[d+1]&&g.splice(d,1)});a=g.length;if(2k||b-g[g.length- +1]>k)&&(h=!0)}h?(this.ordinalPositions=g,k=this.val2lin(Math.max(d,g[0]),!0),q=Math.max(this.val2lin(Math.min(b,g[g.length-1]),!0),1),this.ordinalSlope=b=(b-d)/(q-k),this.ordinalOffset=d-k*b):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=f&&h;this.groupIntervalFactor=null},val2lin:function(a,g){var e=this.ordinalPositions;if(e){var k=e.length,f,d;for(f=k;f--;)if(e[f]===a){d=f;break}for(f=k-1;f--;)if(a>e[f]||0===f){a=(a-e[f])/(e[f+1]-e[f]);d=f+a;break}g=g?d:this.ordinalSlope* +(d||0)+this.ordinalOffset}else g=a;return g},lin2val:function(a,g){var e=this.ordinalPositions;if(e){var k=this.ordinalSlope,f=this.ordinalOffset,d=e.length-1,b;if(g)0>a?a=e[0]:a>d?a=e[d]:(d=Math.floor(a),b=a-d);else for(;d--;)if(g=k*d+f,a>=g){k=k*(d+1)+f;b=(a-g)/(k-g);break}return void 0!==b&&void 0!==e[d]?e[d]+(b?b*(e[d+1]-e[d]):0):a}return a},getExtendedPositions:function(){var a=this.chart,g=this.series[0].currentDataGrouping,h=this.ordinalIndex,k=g?g.count+g.unitName:"raw",f=this.getExtremes(), +d,b;h||(h=this.ordinalIndex={});h[k]||(d={series:[],chart:a,getExtremes:function(){return{min:f.dataMin,max:f.dataMax}},options:{ordinal:!0},val2lin:B.prototype.val2lin},r(this.series,function(e){b={xAxis:d,xData:e.xData,chart:a,destroyGroupedData:t};b.options={dataGrouping:g?{enabled:!0,forced:!0,approximation:"open",units:[[g.unitName,[g.count]]]}:{enabled:!1}};e.processData.apply(b);d.series.push(b)}),this.beforeSetTickPositions.apply(d),h[k]=d.ordinalPositions);return h[k]},getGroupIntervalFactor:function(a, +g,h){var e;h=h.processedXData;var f=h.length,d=[];e=this.groupIntervalFactor;if(!e){for(e=0;ed?(l=p,t=e.ordinalPositions?e:p):(l=e.ordinalPositions?e:p,t=p),p=t.ordinalPositions,q>p[p.length-1]&&p.push(q),this.fixedRange=c-m,d=e.toFixedRange(null,null,n.apply(l,[x.apply(l,[m,!0])+d,!0]),n.apply(t,[x.apply(t, +[c,!0])+d,!0])),d.min>=Math.min(b.dataMin,m)&&d.max<=Math.max(q,c)&&e.setExtremes(d.min,d.max,!0,!1,{trigger:"pan"}),this.mouseDownX=k,H(this.container,{cursor:"move"})):f=!0}else f=!0;f&&a.apply(this,Array.prototype.slice.call(arguments,1))});k.prototype.gappedPath=function(){var a=this.options.gapSize,g=this.points.slice(),h=g.length-1;if(a&&0this.closestPointRange*a&&g.splice(h+1,0,{isNull:!0});return this.getGraphPath(g)}})(N);(function(a){function D(){return Array.prototype.slice.call(arguments, +1)}function B(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,G(this.pointArrayMap,["y"]))}var G=a.pick,H=a.wrap,p=a.each,l=a.extend,r=a.fireEvent,w=a.Axis,t=a.Series;l(w.prototype,{isInBreak:function(a,m){var e=a.repeat||Infinity,g=a.from,h=a.to-a.from;m=m>=g?(m-g)%e:e-(g-m)%e;return a.inclusive?m<=h:m=a)break;else if(g.isInBreak(f,a)){e-=a-f.from;break}return e};this.lin2val=function(a){var e,f;for(f=0;f=a);f++)e.toh;)m-=b;for(;mb.to||l>b.from&&db.from&&db.from&&d>b.to&&d=c[0]);A++);for(A;A<=q;A++){for(;(void 0!==c[w+1]&&a[A]>=c[w+1]||A===q)&&(l=c[w],this.dataGroupInfo={start:p,length:t[0].length},p=d.apply(this,t),void 0!==p&&(g.push(l),h.push(p),m.push(this.dataGroupInfo)),p=A,t[0]=[],t[1]=[],t[2]=[],t[3]=[],w+=1,A!==q););if(A===q)break;if(x){l=this.cropStart+A;l=e&&e[l]|| +this.pointClass.prototype.applyOptions.apply({series:this},[f[l]]);var E,C;for(E=0;Ethis.chart.plotSizeX/d||b&&f.forced)&&(e=!0);return e?d:0};G.prototype.setDataGrouping=function(a,b){var c;b=e(b,!0);a||(a={forced:!1,units:null});if(this instanceof G)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else l(this.chart.options.series,function(b){b.dataGrouping=a},!1);b&&this.chart.redraw()}})(N);(function(a){var D=a.each,B=a.Point,G=a.seriesType,H=a.seriesTypes;G("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eOpen: {point.open}\x3cbr/\x3eHigh: {point.high}\x3cbr/\x3eLow: {point.low}\x3cbr/\x3eClose: {point.close}\x3cbr/\x3e'}, +threshold:null,states:{hover:{lineWidth:3}}},{pointArrayMap:["open","high","low","close"],toYData:function(a){return[a.open,a.high,a.low,a.close]},pointValKey:"high",pointAttribs:function(a,l){l=H.column.prototype.pointAttribs.call(this,a,l);var p=this.options;delete l.fill;l["stroke-width"]=p.lineWidth;l.stroke=a.options.color||(a.openk)););B(g,function(a,b){var d;void 0===a.plotY&&(a.x>=c.min&&a.x<=c.max?a.plotY=e.chartHeight-p.bottom-(p.opposite?p.height:0)+p.offset-e.plotTop:a.shapeArgs={});a.plotX+=t;(f=g[b-1])&&f.plotX===a.plotX&&(void 0===f.stackIndex&&(f.stackIndex=0),d=f.stackIndex+1);a.stackIndex=d})},drawPoints:function(){var a=this.points,e=this.chart,g=e.renderer,k,l,f=this.options,d=f.y,b,q,p,c,r,n,t,x=this.yAxis;for(q=a.length;q--;)p=a[q],t=p.plotX>this.xAxis.len,k=p.plotX,c=p.stackIndex,b= +p.options.shape||f.shape,l=p.plotY,void 0!==l&&(l=p.plotY+d-(void 0!==c&&c*f.stackDistance)),r=c?void 0:p.plotX,n=c?void 0:p.plotY,c=p.graphic,void 0!==l&&0<=k&&!t?(c||(c=p.graphic=g.label("",null,null,b,null,null,f.useHTML).attr(this.pointAttribs(p)).css(G(f.style,p.style)).attr({align:"flag"===b?"left":"center",width:f.width,height:f.height,"text-align":f.textAlign}).addClass("highcharts-point").add(this.markerGroup),c.shadow(f.shadow)),0h&&(e-=Math.round((l-h)/2),h=l);e=k[a](e,g,h,l);d&&f&&e.push("M",d,g>f?g:g+l,"L",d,f);return e}});p===t&&B(["flag","circlepin","squarepin"],function(a){t.prototype.symbols[a]=k[a]})})(N);(function(a){function D(a,d,e){this.init(a,d,e)}var B=a.addEvent,G=a.Axis,H=a.correctFloat,p=a.defaultOptions, +l=a.defined,r=a.destroyObjectProperties,w=a.doc,t=a.each,k=a.fireEvent,m=a.hasTouch,e=a.isTouchDevice,g=a.merge,h=a.pick,C=a.removeEvent,f=a.wrap,d={height:e?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!e,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2", +trackBorderWidth:1};p.scrollbar=g(!0,d,p.scrollbar);D.prototype={init:function(a,e,f){this.scrollbarButtons=[];this.renderer=a;this.userOptions=e;this.options=g(d,e);this.chart=f;this.size=h(this.options.size,this.options.height);e.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,d=this.options,e=this.size,c;this.group=c=a.g("scrollbar").attr({zIndex:d.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0, +r:d.trackBorderRadius||0,height:e,width:e}).add(c);this.track.attr({fill:d.trackBackgroundColor,stroke:d.trackBorderColor,"stroke-width":d.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(c);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:e,width:e,r:d.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(this.swapXY(["M",-3,e/4,"L",-3,2*e/3,"M",0,e/4,"L", +0,2*e/3,"M",3,e/4,"L",3,2*e/3],d.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);this.scrollbar.attr({fill:d.barBackgroundColor,stroke:d.barBorderColor,"stroke-width":d.barBorderWidth});this.scrollbarRifles.attr({stroke:d.rifleColor,"stroke-width":1});this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)},position:function(a, +d,e,c){var b=this.options.vertical,f=0,g=this.rendered?"animate":"attr";this.x=a;this.y=d+this.trackBorderWidth;this.width=e;this.xOffset=this.height=c;this.yOffset=f;b?(this.width=this.yOffset=e=f=this.size,this.xOffset=d=0,this.barWidth=c-2*e,this.x=a+=this.options.margin):(this.height=this.xOffset=c=d=this.size,this.barWidth=e-2*c,this.y+=this.options.margin);this.group[g]({translateX:a,translateY:this.y});this.track[g]({width:e,height:c});this.scrollbarButtons[1].attr({translateX:b?0:e-d,translateY:b? +c-f:0})},drawScrollbarButton:function(a){var b=this.renderer,d=this.scrollbarButtons,c=this.options,e=this.size,f;f=b.g().add(this.group);d.push(f);f=b.rect().addClass("highcharts-scrollbar-button").add(f);f.attr({stroke:c.buttonBorderColor,"stroke-width":c.buttonBorderWidth,fill:c.buttonBackgroundColor});f.attr(f.crisp({x:-.5,y:-.5,width:e+1,height:e+1,r:c.buttonBorderRadius},f.strokeWidth()));f=b.path(this.swapXY(["M",e/2+(a?-1:1),e/2-3,"L",e/2+(a?-1:1),e/2+3,"L",e/2+(a?2:-2),e/2],c.vertical)).addClass("highcharts-scrollbar-arrow").add(d[a]); +f.attr({fill:c.buttonArrowColor})},swapXY:function(a,d){var b=a.length,c;if(d)for(d=0;d=k?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===b.showFull&&(0>=a&&1<=d?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var d=a.chart.pointer.normalize(b),c=a.options.vertical? +"chartY":"chartX",e=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][c]||(d=a.cursorToScrollbarPosition(d)[c],c=a[c],c=d-c,a.hasDragged=!0,a.updatePosition(e[0]+c,e[1]+c),a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b); +b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var d=H(a.to-a.from)*a.options.step;a.updatePosition(H(a.from-d),H(a.to-d));k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var d=(a.to-a.from)*a.options.step;a.updatePosition(a.from+d,a.to+d);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var d=a.chart.pointer.normalize(b), +c=a.to-a.from,e=a.y+a.scrollbarTop,f=a.x+a.scrollbarLeft;a.options.vertical&&d.chartY>e||!a.options.vertical&&d.chartX>f?a.updatePosition(a.from+c,a.to+c):a.updatePosition(a.from-c,a.to-c);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options,b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a, +d){1a&&(d=H(d-a),a=0);this.from=a;this.to=d},update:function(a){this.destroy();this.init(this.chart.renderer,g(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],d=this.scrollbarButtons,e=this.scrollbarGroup.element,c=this.mouseDownHandler,f=this.mouseMoveHandler,g=this.mouseUpHandler,a=[[d[a[0]].element,"click",this.buttonToMinClick],[d[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[e, +"mousedown",c],[w,"mousemove",f],[w,"mouseup",g]];m&&a.push([e,"touchstart",c],[w,"touchmove",f],[w,"touchend",g]);t(a,function(a){B.apply(null,a)});this._events=a},removeEvents:function(){t(this._events,function(a){C.apply(null,a)});this._events=void 0},destroy:function(){var a=this.chart.scroller;this.removeEvents();t(["track","scrollbarRifles","scrollbar","scrollbarGroup","group"],function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&(a.scrollbar=null,r(a.scrollbarButtons))}}; +f(G.prototype,"init",function(a){var b=this;a.apply(b,[].slice.call(arguments,1));b.options.scrollbar&&b.options.scrollbar.enabled&&(b.options.scrollbar.vertical=!b.horiz,b.options.startOnTick=b.options.endOnTick=!1,b.scrollbar=new D(b.chart.renderer,b.options.scrollbar,b.chart),B(b.scrollbar,"changed",function(a){var c=Math.min(h(b.options.min,b.min),b.min,b.dataMin),d=Math.max(h(b.options.max,b.max),b.max,b.dataMax)-c,e;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(e=c+d*this.to,c+=d*this.from):(e= +c+d*(1-this.from),c+=d*(1-this.to));b.setExtremes(c,e,!0,!1,a)}))});f(G.prototype,"render",function(a){var b=Math.min(h(this.options.min,this.min),this.min,this.dataMin),d=Math.max(h(this.options.max,this.max),this.max,this.dataMax),c=this.scrollbar,e;a.apply(this,[].slice.call(arguments,1));c&&(this.horiz?c.position(this.left,this.top+this.height+this.offset+2+(this.opposite?0:this.axisTitleMargin),this.width,this.height):c.position(this.left+this.width+2+this.offset+(this.opposite?this.axisTitleMargin: +0),this.top,this.width,this.height),isNaN(b)||isNaN(d)||!l(this.min)||!l(this.max)?c.setRange(0,0):(e=(this.min-b)/(d-b),b=(this.max-b)/(d-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?c.setRange(e,b):c.setRange(1-b,1-e)))});f(G.prototype,"getOffset",function(a){var b=this.horiz?2:1,d=this.scrollbar;a.apply(this,[].slice.call(arguments,1));d&&(this.chart.axisOffset[b]+=d.size+d.options.margin)});f(G.prototype,"destroy",function(a){this.scrollbar&&(this.scrollbar=this.scrollbar.destroy()); +a.apply(this,[].slice.call(arguments,1))});a.Scrollbar=D})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.color,l=a.defaultOptions,r=a.defined,w=a.destroyObjectProperties,t=a.doc,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.grep,C=a.hasTouch,f=a.isNumber,d=a.isObject,b=a.isTouchDevice,q=a.merge,E=a.pick,c=a.removeEvent,F=a.Scrollbar,n=a.Series,A=a.seriesTypes,x=a.wrap,J=[].concat(a.defaultDataGroupingUnits),y=function(a){var b=h(arguments,f);if(b.length)return Math[a].apply(0, +b)};J[4]=["day",[1,2,3,4]];J[5]=["week",[1,2,3]];A=void 0===A.areaspline?"line":"areaspline";g(l,{navigator:{height:40,margin:25,maskInside:!0,handles:{backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:p("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",outlineWidth:1,series:{type:A,color:"#335cad",fillOpacity:.05,lineWidth:1,compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:J},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series", +className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},pointRange:0,shadow:!1,threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#999999"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}); +D.prototype={drawHandle:function(a,b){var c=this.chart.renderer,d=this.handles;this.rendered||(d[b]=c.path(["M",-4.5,.5,"L",3.5,.5,3.5,15.5,-4.5,15.5,-4.5,.5,"M",-1.5,4,"L",-1.5,12,"M",.5,4,"L",.5,12]).attr({zIndex:10-b}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][b]).add(),c=this.navigatorOptions.handles,d[b].attr({fill:c.backgroundColor,stroke:c.borderColor,"stroke-width":1}).css({cursor:"ew-resize"}));d[b][this.rendered&&!this.hasDragged?"animate":"attr"]({translateX:Math.round(this.scrollerLeft+ +this.scrollbarHeight+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-8)})},update:function(a){this.destroy();q(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,c,d){var e=this.chart,g=e.renderer,k,h,l,n;n=this.scrollbarHeight;var m=this.xAxis,p=this.navigatorOptions,u=p.maskInside,q=this.height,v=this.top,t=this.navigatorEnabled,x=this.outlineHeight,y;y=this.rendered;if(f(a)&&f(b)&&(!this.hasDragged||r(c))&&(this.navigatorLeft=k=E(m.left,e.plotLeft+ +n),this.navigatorWidth=h=E(m.len,e.plotWidth-2*n),this.scrollerLeft=l=k-n,this.scrollerWidth=n=n=h+2*n,c=E(c,m.translate(a)),d=E(d,m.translate(b)),f(c)&&Infinity!==Math.abs(c)||(c=0,d=n),!(m.translate(d,!0)-m.translate(c,!0)f&&tp+d-u&&rk&&re?e=0:e+v>=q&&(e=q-v,x=h.getUnionExtremes().dataMax),e!==d&&(h.fixedWidth=v,d=l.toFixedRange(e, +e+v,null,x),c.setExtremes(d.min,d.max,!0,null,{trigger:"navigator"}))))};h.mouseMoveHandler=function(b){var c=h.scrollbarHeight,d=h.navigatorLeft,e=h.navigatorWidth,f=h.scrollerLeft,g=h.scrollerWidth,k=h.range,l;b.touches&&0===b.touches[0].pageX||(b=a.pointer.normalize(b),l=b.chartX,lf+g-c&&(l=f+g-c),h.grabbedLeft?(h.hasDragged=!0,h.render(0,0,l-d,h.otherHandlePos)):h.grabbedRight?(h.hasDragged=!0,h.render(0,0,h.otherHandlePos,l-d)):h.grabbedCenter&&(h.hasDragged=!0,le+n-k&&(l=e+ +n-k),h.render(0,0,l-n,l-n+k)),h.hasDragged&&h.scrollbar&&h.scrollbar.options.liveRedraw&&(b.DOMType=b.type,setTimeout(function(){h.mouseUpHandler(b)},0)))};h.mouseUpHandler=function(b){var c,d,e=b.DOMEvent||b;if(h.hasDragged||"scrollbar"===b.trigger)h.zoomedMin===h.otherHandlePos?c=h.fixedExtreme:h.zoomedMax===h.otherHandlePos&&(d=h.fixedExtreme),h.zoomedMax===h.navigatorWidth&&(d=h.getUnionExtremes().dataMax),c=l.toFixedRange(h.zoomedMin,h.zoomedMax,c,d),r(c.min)&&a.xAxis[0].setExtremes(c.min,c.max, +!0,h.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:e});"mousemove"!==b.DOMType&&(h.grabbedLeft=h.grabbedRight=h.grabbedCenter=h.fixedWidth=h.fixedExtreme=h.otherHandlePos=h.hasDragged=n=null)};var c=a.xAxis.length,f=a.yAxis.length,m=e&&e[0]&&e[0].xAxis||a.xAxis[0];a.extraBottomMargin=h.outlineHeight+d.margin;a.isDirtyBox=!0;h.navigatorEnabled?(h.xAxis=l=new G(a,q({breaks:m.options.breaks,ordinal:m.options.ordinal},d.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis", +isX:!0,type:"datetime",index:c,height:g,offset:0,offsetLeft:k,offsetRight:-k,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1})),h.yAxis=new G(a,q(d.yAxis,{id:"navigator-y-axis",alignTicks:!1,height:g,offset:0,index:f,zoomEnabled:!1})),e||d.series.data?h.addBaseSeries():0===a.series.length&&x(a,"redraw",function(b,c){0=Math.round(a.navigatorWidth);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},destroy:function(){this.removeEvents();this.xAxis&&(m(this.chart.xAxis,this.xAxis),m(this.chart.axes,this.xAxis));this.yAxis&&(m(this.chart.yAxis,this.yAxis),m(this.chart.axes,this.yAxis));k(this.series||[],function(a){a.destroy&&a.destroy()});k("series xAxis yAxis leftShade rightShade outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" "), +function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);k([this.handles,this.elementsToDestroy],function(a){w(a)},this)}};a.Navigator=D;x(G.prototype,"zoom",function(a,b,c){var d=this.chart,e=d.options,f=e.chart.zoomType,g=e.navigator,e=e.rangeSelector,h;this.isXAxis&&(g&&g.enabled||e&&e.enabled)&&("x"===f?d.resetZoomButton="blocked":"y"===f?h=!1:"xy"===f&&(d=this.previousZoom,r(b)?this.previousZoom=[this.min,this.max]:d&&(b=d[0],c=d[1],delete this.previousZoom)));return void 0!== +h?h:a.call(this,b,c)});x(H.prototype,"init",function(a,b,c){B(this,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new D(this)});a.call(this,b,c)});x(H.prototype,"getMargins",function(a){var b=this.legend,c=b.options,d=this.scroller,e,f;a.apply(this,[].slice.call(arguments,1));d&&(e=d.xAxis,f=d.yAxis,d.top=d.navigatorOptions.top||this.chartHeight-d.height-d.scrollbarHeight-this.spacing[2]-("bottom"===c.verticalAlign&&c.enabled&& +!c.floating?b.legendHeight+E(c.margin,10):0),e&&f&&(e.options.top=f.options.top=d.top,e.setAxisSize(),f.setAxisSize()))});x(n.prototype,"addPoint",function(a,b,c,f,g){var h=this.options.turboThreshold;h&&this.xData.length>h&&d(b,!0)&&this.chart.scroller&&e(20,!0);a.call(this,b,c,f,g)});x(H.prototype,"addSeries",function(a,b,c,d){a=a.call(this,b,!1,d);this.scroller&&this.scroller.setBaseSeries();E(c,!0)&&this.redraw();return a});x(n.prototype,"update",function(a,b,c){a.call(this,b,!1);this.chart.scroller&& +this.chart.scroller.setBaseSeries();E(c,!0)&&this.chart.redraw()})})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.css,l=a.createElement,r=a.dateFormat,w=a.defaultOptions,t=w.global.useUTC,k=a.defined,m=a.destroyObjectProperties,e=a.discardElement,g=a.each,h=a.extend,C=a.fireEvent,f=a.Date,d=a.isNumber,b=a.merge,q=a.pick,E=a.pInt,c=a.splat,F=a.wrap;h(w,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18,padding:2,zIndex:7},height:35,inputPosition:{align:"right"}, +labelStyle:{color:"#666666"}}});w.lang=b(w.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});D.prototype={clickButton:function(a,b){var e=this,f=e.chart,h=e.buttonOptions[a],k=f.xAxis[0],l=f.scroller&&f.scroller.getUnionExtremes()||k||{},n=l.dataMin,m=l.dataMax,p,r=k&&Math.round(Math.min(k.max,q(m,k.max))),w=h.type,z,l=h._range,A,C,D,E=h.dataGrouping;if(null!==n&&null!==m){f.fixedRange=l;E&&(this.forcedDataGrouping=!0,G.prototype.setDataGrouping.call(k||{chart:this.chart}, +E,!1));if("month"===w||"year"===w)k?(w={range:h,max:r,dataMin:n,dataMax:m},p=k.minFromRange.call(w),d(w.newMax)&&(r=w.newMax)):l=h;else if(l)p=Math.max(r-l,n),r=Math.min(p+l,m);else if("ytd"===w)if(k)void 0===m&&(n=Number.MAX_VALUE,m=Number.MIN_VALUE,g(f.series,function(a){a=a.xData;n=Math.min(a[0],n);m=Math.max(a[a.length-1],m)}),b=!1),r=e.getYTDExtremes(m,n,t),p=A=r.min,r=r.max;else{B(f,"beforeRender",function(){e.clickButton(a)});return}else"all"===w&&k&&(p=n,r=m);e.setSelected(a);k?k.setExtremes(p, +r,q(b,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:h}):(z=c(f.options.xAxis)[0],D=z.range,z.range=l,C=z.min,z.min=A,B(f,"load",function(){z.range=D;z.min=C}))}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var b=this,c=a.options.rangeSelector,d=c.buttons|| +[].concat(b.defaultButtons),e=c.selected,f=function(){var a=b.minInput,c=b.maxInput;a&&a.blur&&C(a,"blur");c&&c.blur&&C(c,"blur")};b.chart=a;b.options=c;b.buttons=[];a.extraTopMargin=c.height;b.buttonOptions=d;this.unMouseDown=B(a.container,"mousedown",f);this.unResize=B(a,"resize",f);g(d,b.computeButtonRange);void 0!==e&&d[e]&&this.clickButton(e,!1);B(a,"load",function(){B(a.xAxis[0],"setExtremes",function(c){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==c.trigger&&"updatedData"!==c.trigger&& +b.forcedDataGrouping&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this.chart,b=a.xAxis[0],c=Math.round(b.max-b.min),e=!b.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||b,f=a.dataMin,h=a.dataMax,a=this.getYTDExtremes(h,f,t),k=a.min,l=a.max,m=this.selected,p=d(m),q=this.options.allButtonsEnabled,r=this.buttons;g(this.buttonOptions,function(a,d){var g=a._range,n=a.type,u=a.count||1;a=r[d];var t=0;d=d===m;var v=g>h-f,x=g=864E5*{month:28,year:365}[n]*u&&c<=864E5*{month:31,year:366}[n]*u?g=!0:"ytd"===n?(g=l-k===c,y=!d):"all"===n&&(g=b.max-b.min>=h-f,w=!d&&p&&g);n=!q&&(v||x||w||e);g=d&&g||g&&!p&&!y;n?t=3:g&&(p=!0,t=2);a.state!==t&&a.setState(t)})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c},setInputValue:function(a,b){var c= +this.chart.options.rangeSelector,d=this[a+"Input"];k(b)&&(d.previousValue=d.HCTime,d.HCTime=b);d.value=r(c.inputEditDateFormat||"%Y-%m-%d",d.HCTime);this[a+"DateBox"].attr({text:r(c.inputDateFormat||"%b %e, %Y",d.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];p(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){p(this[a+"Input"],{border:0,width:"1px",height:"1px"}); +this.setInputValue(a)},drawInput:function(a){function c(){var a=r.value,b=(m.inputDateParser||Date.parse)(a),c=f.xAxis[0],g=f.scroller&&f.scroller.xAxis?f.scroller.xAxis:c,h=g.dataMin,g=g.dataMax;b!==r.previousValue&&(r.previousValue=b,d(b)||(b=a.split("-"),b=Date.UTC(E(b[0]),E(b[1])-1,E(b[2]))),d(b)&&(t||(b+=6E4*(new Date).getTimezoneOffset()),q?b>e.maxInput.HCTime?b=void 0:bg&&(b=g),void 0!==b&&c.setExtremes(q?b:c.min,q?c.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))} +var e=this,f=e.chart,g=f.renderer.style||{},k=f.renderer,m=f.options.rangeSelector,n=e.div,q="min"===a,r,B,C=this.inputGroup;this[a+"Label"]=B=k.label(w.lang[q?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(C);C.offset+=B.width+5;this[a+"DateBox"]=k=k.label("",C.offset).addClass("highcharts-range-input").attr({padding:2,width:m.inputBoxWidth||90,height:m.inputBoxHeight||17,stroke:m.inputBoxBorderColor||"#cccccc","stroke-width":1, +"text-align":"center"}).on("click",function(){e.showInput(a);e[a+"Input"].focus()}).add(C);C.offset+=k.width+(q?10:0);this[a+"Input"]=r=l("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:f.plotTop+"px"},n);B.css(b(g,m.labelStyle));k.css(b({color:"#333333"},g,m.inputStyle));p(r,h({position:"absolute",border:0,width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:g.fontSize,fontFamily:g.fontFamily,left:"-9em"},m.inputStyle));r.onfocus=function(){e.showInput(a)};r.onblur= +function(){e.hideInput(a)};r.onchange=c;r.onkeypress=function(a){13===a.keyCode&&c()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=q((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a,b,c){var d=new f(a),e=d[f.hcGetFullYear]();c=c?f.UTC(e,0,1):+new f(e,0,1);b=Math.max(b||0,c);d=d.getTime();return{max:Math.min(a||d,d),min:b}},render:function(a,b){var c=this,d=c.chart,e=d.renderer,f=d.container,m=d.options, +n=m.exporting&&!1!==m.exporting.enabled&&m.navigation&&m.navigation.buttonOptions,p=m.rangeSelector,r=c.buttons,m=w.lang,t=c.div,t=c.inputGroup,A=p.buttonTheme,z=p.buttonPosition||{},B=p.inputEnabled,C=A&&A.states,D=d.plotLeft,E,G=this.getPosition(),F=c.group,H=c.rendered;!1!==p.enabled&&(H||(c.group=F=e.g("range-selector-buttons").add(),c.zoomText=e.text(m.rangeSelectorZoom,q(z.x,D),15).css(p.labelStyle).add(F),E=q(z.x,D)+c.zoomText.getBBox().width+5,g(c.buttonOptions,function(a,b){r[b]=e.button(a.text, +E,0,function(){c.clickButton(b);c.isActive=!0},A,C&&C.hover,C&&C.select,C&&C.disabled).attr({"text-align":"center"}).add(F);E+=r[b].width+q(p.buttonSpacing,5)}),!1!==B&&(c.div=t=l("div",null,{position:"relative",height:0,zIndex:1}),f.parentNode.insertBefore(t,f),c.inputGroup=t=e.g("input-group").add(),t.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),F[H?"animate":"attr"]({translateY:G.buttonTop}),!1!==B&&(t.align(h({y:G.inputTop,width:t.offset,x:n&&G.inputTop<(n.y||0)+n.height- +d.spacing[0]?-40:0},p.inputPosition),!0,d.spacingBox),k(B)||(d=F.getBBox(),t[t.alignAttr.translateXc&&(e?a=b-f:b=a+f);d(a)||(a=b=void 0);return{min:a,max:b}};G.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],c,e=this.max,f,g,h=function(a,c){var d=new Date(a);d["set"+b](d["get"+ +b]()+c);return d.getTime()-a};d(a)?(c=e-a,g=a):(c=e+h(e,-a.count),this.chart&&(this.chart.fixedRange=e-c));f=q(this.dataMin,Number.MIN_VALUE);d(c)||(c=f);c<=f&&(c=f,void 0===g&&(g=h(c,a.count)),this.newMax=Math.min(c+g,this.dataMax));d(e)||(c=void 0);return c};F(H.prototype,"init",function(a,b,c){B(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new D(this))});a.call(this,b,c)});a.RangeSelector=D})(N);(function(a){var D=a.addEvent,B=a.isNumber;a.Chart.prototype.callbacks.push(function(a){function G(){p= +a.xAxis[0].getExtremes();B(p.min)&&r.render(p.min,p.max)}var p,l=a.scroller,r=a.rangeSelector,w,t;l&&(p=a.xAxis[0].getExtremes(),l.render(p.min,p.max));r&&(t=D(a.xAxis[0],"afterSetExtremes",function(a){r.render(a.min,a.max)}),w=D(a,"redraw",G),G());D(a,"destroy",function(){r&&(w(),t())})})})(N);(function(a){var D=a.arrayMax,B=a.arrayMin,G=a.Axis,H=a.Chart,p=a.defined,l=a.each,r=a.extend,w=a.format,t=a.inArray,k=a.isNumber,m=a.isString,e=a.map,g=a.merge,h=a.pick,C=a.Point,f=a.Renderer,d=a.Series,b= +a.splat,q=a.stop,E=a.SVGRenderer,c=a.VMLRenderer,F=a.wrap,n=d.prototype,A=n.init,x=n.processData,J=C.prototype.tooltipFormatter;a.StockChart=a.stockChart=function(c,d,f){var k=m(c)||c.nodeName,l=arguments[k?1:0],n=l.series,p=a.getOptions(),q,r=h(l.navigator&&l.navigator.enabled,!0)?{startOnTick:!1,endOnTick:!1}:null,t={marker:{enabled:!1,radius:2}},u={shadow:!1,borderWidth:0};l.xAxis=e(b(l.xAxis||{}),function(a){return g({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"}, +showLastLabel:!0},p.xAxis,a,{type:"datetime",categories:null},r)});l.yAxis=e(b(l.yAxis||{}),function(a){q=h(a.opposite,!0);return g({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},p.yAxis,a)});l.series=null;l=g({chart:{panning:!0,pinchType:"x"},navigator:{enabled:!0},scrollbar:{enabled:!0},rangeSelector:{enabled:!0},title:{text:null,style:{fontSize:"16px"}},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:t,spline:t,area:t,areaspline:t,arearange:t,areasplinerange:t, +column:u,columnrange:u,candlestick:u,ohlc:u}},l,{_stock:!0,chart:{inverted:!1}});l.series=n;return k?new H(c,l,f):new H(l,d)};F(G.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options._stock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=1,"right"):a.call(this,[].slice.call(arguments,1))});F(G.prototype,"getPlotLinePath",function(a, +b,c,d,f,g){var n=this,q=this.isLinked&&!this.series?this.linkedParent.series:this.series,r=n.chart,u=r.renderer,v=n.left,w=n.top,y,x,A,B,C=[],D=[],E,F;if("colorAxis"===n.coll)return a.apply(this,[].slice.call(arguments,1));D=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=n.options[b];return k(a)?[r[b][a]]:m(a)?[r.get(a)]:e(q,function(a){return a[b]})}(n.coll);l(n.isXAxis?r.yAxis:r.xAxis,function(a){if(p(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=p(a.options[b])? +r[b][a.options[b]]:r[b][0];n===b&&D.push(a)}});E=D.length?[]:[n.isXAxis?r.yAxis[0]:r.xAxis[0]];l(D,function(a){-1===t(a,E)&&E.push(a)});F=h(g,n.translate(b,null,null,d));k(F)&&(n.horiz?l(E,function(a){var b;x=a.pos;B=x+a.len;y=A=Math.round(F+n.transB);if(yv+n.width)f?y=A=Math.min(Math.max(v,y),v+n.width):b=!0;b||C.push("M",y,x,"L",A,B)}):l(E,function(a){var b;y=a.pos;A=y+a.len;x=B=Math.round(w+n.height-F);if(xw+n.height)f?x=B=Math.min(Math.max(w,x),n.top+n.height):b=!0;b||C.push("M",y, +x,"L",A,B)}));return 0=e&&(x=-(l.translateX+b.width-e));l.attr({x:m+x,y:k,anchorX:g?m:this.opposite?0:a.chartWidth,anchorY:g?this.opposite?a.chartHeight:0:k+b.height/2})}});n.init=function(){A.apply(this,arguments);this.setCompare(this.options.compare)};n.setCompare=function(a){this.modifyValue= +"value"===a||"percent"===a?function(b,c){var d=this.compareValue;if(void 0!==b&&void 0!==d)return b="value"===a?b-d:b=b/d*100-100,c&&(c.change=b),b}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};n.processData=function(){var a,b=-1,c,d,e,f;x.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=t("close",this.pointArrayMap),-1===b&&(b=t(this.pointValKey||"y",this.pointArrayMap))),a=0;a< +e-1;a++)if(f=-1=this.xAxis.min&&0!==f){this.compareValue=f;break}};F(n,"getExtremes",function(a){var b;a.apply(this,[].slice.call(arguments,1));this.modifyValue&&(b=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)],this.dataMin=B(b),this.dataMax=D(b))});G.prototype.setCompare=function(a,b){this.isXAxis||(l(this.series,function(b){b.setCompare(a)}),h(b,!0)&&this.chart.redraw())};C.prototype.tooltipFormatter=function(b){b=b.replace("{point.change}",(0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(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 de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){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[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.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},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.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 l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(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?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);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\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.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)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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,n){S.fn[n]=function(e,t){return 0 '; + else + var expandButton = ''; + + return '' + expandButton + '' + ellipsedLabel({ name: item.name, parentClass: "nav-tooltip", childClass: "nav-label" }) + ''; +} + +function menuItemsForGroup(group, level, parent) { + var items = ''; + + if (level > 0) + items += menuItem(group, level - 1, parent, true); + + $.each(group.contents, function (contentName, content) { + if (content.type == 'GROUP') + items += menuItemsForGroup(content, level + 1, group.pathFormatted); + else if (content.type == 'REQUEST') + items += menuItem(content, level, group.pathFormatted); + }); + + return items; +} + +function setDetailsMenu(){ + $('.nav ul').append(menuItemsForGroup(stats, 0)); + $('.nav').expandable(); + $('.nav-tooltip').popover({trigger:'hover'}); +} + +function setGlobalMenu(){ + $('.nav ul') + .append('
  • Ranges
  • ') + .append('
  • Stats
  • ') + .append('
  • Active Users
  • ') + .append('
  • Requests / sec
  • ') + .append('
  • Responses / sec
  • '); +} + +function getLink(link){ + var a = link.split('/'); + return (a.length<=1)? link : a[a.length-1]; +} + +function expandUp(li) { + const parentId = li.attr("data-parent"); + if (parentId != "ROOT") { + const span = $('#' + parentId); + const parentLi = span.parents('li').first(); + span.expand(parentLi, false); + expandUp(parentLi); + } +} + +function setActiveMenu(){ + $('.nav a').each(function() { + const navA = $(this) + if(!navA.hasClass('expand-button') && navA.attr('href') == getLink(window.location.pathname)) { + const li = $(this).parents('li').first(); + li.addClass('on'); + expandUp(li); + return false; + } + }); +} diff --git a/Sources/API/gatling/results/Iris-Simulation/js/stats.js b/Sources/API/gatling/results/Iris-Simulation/js/stats.js new file mode 100644 index 0000000..3215d8f --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/stats.js @@ -0,0 +1,539 @@ +var stats = { + type: "GROUP", +name: "All Requests", +path: "", +pathFormatted: "group_missing-name-b06d1", +stats: { + "name": "All Requests", + "numberOfRequests": { + "total": "3262", + "ok": "2609", + "ko": "653" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "1" + }, + "maxResponseTime": { + "total": "4330", + "ok": "4330", + "ko": "3627" + }, + "meanResponseTime": { + "total": "358", + "ok": "347", + "ko": "403" + }, + "standardDeviation": { + "total": "729", + "ok": "731", + "ko": "719" + }, + "percentiles1": { + "total": "7", + "ok": "7", + "ko": "8" + }, + "percentiles2": { + "total": "174", + "ok": "106", + "ko": "594" + }, + "percentiles3": { + "total": "2117", + "ok": "2111", + "ko": "2153" + }, + "percentiles4": { + "total": "3109", + "ok": "3177", + "ko": "2964" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2145, + "percentage": 66 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 138, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 326, + "percentage": 10 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 653, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": "148.273", + "ok": "118.591", + "ko": "29.682" + } +}, +contents: { +"req_get-all-users-b5141": { + type: "REQUEST", + name: "Get All Users", +path: "Get All Users", +pathFormatted: "req_get-all-users-b5141", +stats: { + "name": "Get All Users", + "numberOfRequests": { + "total": "871", + "ok": "871", + "ko": "0" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "-" + }, + "maxResponseTime": { + "total": "4285", + "ok": "4285", + "ko": "-" + }, + "meanResponseTime": { + "total": "141", + "ok": "141", + "ko": "-" + }, + "standardDeviation": { + "total": "529", + "ok": "529", + "ko": "-" + }, + "percentiles1": { + "total": "7", + "ok": "7", + "ko": "-" + }, + "percentiles2": { + "total": "11", + "ok": "11", + "ko": "-" + }, + "percentiles3": { + "total": "1215", + "ok": "1215", + "ko": "-" + }, + "percentiles4": { + "total": "2969", + "ok": "2969", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 818, + "percentage": 94 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 9, + "percentage": 1 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 44, + "percentage": 5 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "39.591", + "ok": "39.591", + "ko": "-" + } +} + },"req_get-user-00551": { + type: "REQUEST", + name: "Get User", +path: "Get User", +pathFormatted: "req_get-user-00551", +stats: { + "name": "Get User", + "numberOfRequests": { + "total": "871", + "ok": "871", + "ko": "0" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "-" + }, + "maxResponseTime": { + "total": "4031", + "ok": "4031", + "ko": "-" + }, + "meanResponseTime": { + "total": "488", + "ok": "488", + "ko": "-" + }, + "standardDeviation": { + "total": "867", + "ok": "867", + "ko": "-" + }, + "percentiles1": { + "total": "5", + "ok": "5", + "ko": "-" + }, + "percentiles2": { + "total": "708", + "ok": "708", + "ko": "-" + }, + "percentiles3": { + "total": "2540", + "ok": "2540", + "ko": "-" + }, + "percentiles4": { + "total": "3569", + "ok": "3569", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 659, + "percentage": 76 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 57, + "percentage": 7 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 155, + "percentage": 18 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "39.591", + "ok": "39.591", + "ko": "-" + } +} + },"req_create-user-266a3": { + type: "REQUEST", + name: "Create User", +path: "Create User", +pathFormatted: "req_create-user-266a3", +stats: { + "name": "Create User", + "numberOfRequests": { + "total": "871", + "ok": "431", + "ko": "440" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "1" + }, + "maxResponseTime": { + "total": "3756", + "ok": "3756", + "ko": "3627" + }, + "meanResponseTime": { + "total": "380", + "ok": "403", + "ko": "358" + }, + "standardDeviation": { + "total": "681", + "ok": "687", + "ko": "675" + }, + "percentiles1": { + "total": "7", + "ok": "7", + "ko": "7" + }, + "percentiles2": { + "total": "579", + "ok": "709", + "ko": "441" + }, + "percentiles3": { + "total": "1956", + "ok": "1956", + "ko": "1799" + }, + "percentiles4": { + "total": "2794", + "ok": "2566", + "ko": "2845" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 328, + "percentage": 38 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 41, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 62, + "percentage": 7 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 440, + "percentage": 51 +}, + "meanNumberOfRequestsPerSecond": { + "total": "39.591", + "ok": "19.591", + "ko": "20" + } +} + },"req_update-user-6b160": { + type: "REQUEST", + name: "Update User", +path: "Update User", +pathFormatted: "req_update-user-6b160", +stats: { + "name": "Update User", + "numberOfRequests": { + "total": "431", + "ok": "218", + "ko": "213" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "2" + }, + "maxResponseTime": { + "total": "4330", + "ok": "4330", + "ko": "3150" + }, + "meanResponseTime": { + "total": "467", + "ok": "438", + "ko": "496" + }, + "standardDeviation": { + "total": "781", + "ok": "767", + "ko": "794" + }, + "percentiles1": { + "total": "11", + "ok": "12", + "ko": "10" + }, + "percentiles2": { + "total": "777", + "ok": "637", + "ko": "822" + }, + "percentiles3": { + "total": "2283", + "ok": "2110", + "ko": "2391" + }, + "percentiles4": { + "total": "3035", + "ok": "2873", + "ko": "3064" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 168, + "percentage": 39 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 16, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 34, + "percentage": 8 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 213, + "percentage": 49 +}, + "meanNumberOfRequestsPerSecond": { + "total": "19.591", + "ok": "9.909", + "ko": "9.682" + } +} + },"req_delete-user-516b1": { + type: "REQUEST", + name: "Delete User", +path: "Delete User", +pathFormatted: "req_delete-user-516b1", +stats: { + "name": "Delete User", + "numberOfRequests": { + "total": "218", + "ok": "218", + "ko": "0" + }, + "minResponseTime": { + "total": "2", + "ok": "2", + "ko": "-" + }, + "maxResponseTime": { + "total": "3017", + "ok": "3017", + "ko": "-" + }, + "meanResponseTime": { + "total": "408", + "ok": "408", + "ko": "-" + }, + "standardDeviation": { + "total": "701", + "ok": "701", + "ko": "-" + }, + "percentiles1": { + "total": "11", + "ok": "11", + "ko": "-" + }, + "percentiles2": { + "total": "585", + "ok": "585", + "ko": "-" + }, + "percentiles3": { + "total": "2065", + "ok": "2065", + "ko": "-" + }, + "percentiles4": { + "total": "2668", + "ok": "2668", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 172, + "percentage": 79 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 15, + "percentage": 7 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 31, + "percentage": 14 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "9.909", + "ok": "9.909", + "ko": "-" + } +} + } +} + +} + +function fillStats(stat){ + $("#numberOfRequests").append(stat.numberOfRequests.total); + $("#numberOfRequestsOK").append(stat.numberOfRequests.ok); + $("#numberOfRequestsKO").append(stat.numberOfRequests.ko); + + $("#minResponseTime").append(stat.minResponseTime.total); + $("#minResponseTimeOK").append(stat.minResponseTime.ok); + $("#minResponseTimeKO").append(stat.minResponseTime.ko); + + $("#maxResponseTime").append(stat.maxResponseTime.total); + $("#maxResponseTimeOK").append(stat.maxResponseTime.ok); + $("#maxResponseTimeKO").append(stat.maxResponseTime.ko); + + $("#meanResponseTime").append(stat.meanResponseTime.total); + $("#meanResponseTimeOK").append(stat.meanResponseTime.ok); + $("#meanResponseTimeKO").append(stat.meanResponseTime.ko); + + $("#standardDeviation").append(stat.standardDeviation.total); + $("#standardDeviationOK").append(stat.standardDeviation.ok); + $("#standardDeviationKO").append(stat.standardDeviation.ko); + + $("#percentiles1").append(stat.percentiles1.total); + $("#percentiles1OK").append(stat.percentiles1.ok); + $("#percentiles1KO").append(stat.percentiles1.ko); + + $("#percentiles2").append(stat.percentiles2.total); + $("#percentiles2OK").append(stat.percentiles2.ok); + $("#percentiles2KO").append(stat.percentiles2.ko); + + $("#percentiles3").append(stat.percentiles3.total); + $("#percentiles3OK").append(stat.percentiles3.ok); + $("#percentiles3KO").append(stat.percentiles3.ko); + + $("#percentiles4").append(stat.percentiles4.total); + $("#percentiles4OK").append(stat.percentiles4.ok); + $("#percentiles4KO").append(stat.percentiles4.ko); + + $("#meanNumberOfRequestsPerSecond").append(stat.meanNumberOfRequestsPerSecond.total); + $("#meanNumberOfRequestsPerSecondOK").append(stat.meanNumberOfRequestsPerSecond.ok); + $("#meanNumberOfRequestsPerSecondKO").append(stat.meanNumberOfRequestsPerSecond.ko); +} diff --git a/Sources/API/gatling/results/Iris-Simulation/js/stats.json b/Sources/API/gatling/results/Iris-Simulation/js/stats.json new file mode 100644 index 0000000..067f2fd --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/stats.json @@ -0,0 +1,497 @@ +{ + "type": "GROUP", +"name": "All Requests", +"path": "", +"pathFormatted": "group_missing-name-b06d1", +"stats": { + "name": "All Requests", + "numberOfRequests": { + "total": 3262, + "ok": 2609, + "ko": 653 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 1 + }, + "maxResponseTime": { + "total": 4330, + "ok": 4330, + "ko": 3627 + }, + "meanResponseTime": { + "total": 358, + "ok": 347, + "ko": 403 + }, + "standardDeviation": { + "total": 729, + "ok": 731, + "ko": 719 + }, + "percentiles1": { + "total": 7, + "ok": 7, + "ko": 8 + }, + "percentiles2": { + "total": 174, + "ok": 106, + "ko": 594 + }, + "percentiles3": { + "total": 2117, + "ok": 2111, + "ko": 2153 + }, + "percentiles4": { + "total": 3109, + "ok": 3177, + "ko": 2964 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2145, + "percentage": 66 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 138, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 326, + "percentage": 10 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 653, + "percentage": 20 +}, + "meanNumberOfRequestsPerSecond": { + "total": 148.27272727272728, + "ok": 118.5909090909091, + "ko": 29.681818181818183 + } +}, +"contents": { +"req_get-all-users-b5141": { + "type": "REQUEST", + "name": "Get All Users", +"path": "Get All Users", +"pathFormatted": "req_get-all-users-b5141", +"stats": { + "name": "Get All Users", + "numberOfRequests": { + "total": 871, + "ok": 871, + "ko": 0 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 4285, + "ok": 4285, + "ko": 0 + }, + "meanResponseTime": { + "total": 141, + "ok": 141, + "ko": 0 + }, + "standardDeviation": { + "total": 529, + "ok": 529, + "ko": 0 + }, + "percentiles1": { + "total": 7, + "ok": 7, + "ko": 0 + }, + "percentiles2": { + "total": 11, + "ok": 11, + "ko": 0 + }, + "percentiles3": { + "total": 1215, + "ok": 1215, + "ko": 0 + }, + "percentiles4": { + "total": 2969, + "ok": 2969, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 818, + "percentage": 94 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 9, + "percentage": 1 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 44, + "percentage": 5 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 39.59090909090909, + "ok": 39.59090909090909, + "ko": 0 + } +} + },"req_get-user-00551": { + "type": "REQUEST", + "name": "Get User", +"path": "Get User", +"pathFormatted": "req_get-user-00551", +"stats": { + "name": "Get User", + "numberOfRequests": { + "total": 871, + "ok": 871, + "ko": 0 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 0 + }, + "maxResponseTime": { + "total": 4031, + "ok": 4031, + "ko": 0 + }, + "meanResponseTime": { + "total": 488, + "ok": 488, + "ko": 0 + }, + "standardDeviation": { + "total": 867, + "ok": 867, + "ko": 0 + }, + "percentiles1": { + "total": 5, + "ok": 5, + "ko": 0 + }, + "percentiles2": { + "total": 708, + "ok": 708, + "ko": 0 + }, + "percentiles3": { + "total": 2540, + "ok": 2540, + "ko": 0 + }, + "percentiles4": { + "total": 3569, + "ok": 3569, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 659, + "percentage": 76 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 57, + "percentage": 7 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 155, + "percentage": 18 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 39.59090909090909, + "ok": 39.59090909090909, + "ko": 0 + } +} + },"req_create-user-266a3": { + "type": "REQUEST", + "name": "Create User", +"path": "Create User", +"pathFormatted": "req_create-user-266a3", +"stats": { + "name": "Create User", + "numberOfRequests": { + "total": 871, + "ok": 431, + "ko": 440 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 1 + }, + "maxResponseTime": { + "total": 3756, + "ok": 3756, + "ko": 3627 + }, + "meanResponseTime": { + "total": 380, + "ok": 403, + "ko": 358 + }, + "standardDeviation": { + "total": 681, + "ok": 687, + "ko": 675 + }, + "percentiles1": { + "total": 7, + "ok": 7, + "ko": 7 + }, + "percentiles2": { + "total": 579, + "ok": 709, + "ko": 441 + }, + "percentiles3": { + "total": 1956, + "ok": 1956, + "ko": 1799 + }, + "percentiles4": { + "total": 2794, + "ok": 2566, + "ko": 2845 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 328, + "percentage": 38 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 41, + "percentage": 5 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 62, + "percentage": 7 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 440, + "percentage": 51 +}, + "meanNumberOfRequestsPerSecond": { + "total": 39.59090909090909, + "ok": 19.59090909090909, + "ko": 20.0 + } +} + },"req_update-user-6b160": { + "type": "REQUEST", + "name": "Update User", +"path": "Update User", +"pathFormatted": "req_update-user-6b160", +"stats": { + "name": "Update User", + "numberOfRequests": { + "total": 431, + "ok": 218, + "ko": 213 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 2 + }, + "maxResponseTime": { + "total": 4330, + "ok": 4330, + "ko": 3150 + }, + "meanResponseTime": { + "total": 467, + "ok": 438, + "ko": 496 + }, + "standardDeviation": { + "total": 781, + "ok": 767, + "ko": 794 + }, + "percentiles1": { + "total": 11, + "ok": 12, + "ko": 10 + }, + "percentiles2": { + "total": 777, + "ok": 637, + "ko": 822 + }, + "percentiles3": { + "total": 2283, + "ok": 2110, + "ko": 2391 + }, + "percentiles4": { + "total": 3035, + "ok": 2873, + "ko": 3064 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 168, + "percentage": 39 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 16, + "percentage": 4 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 34, + "percentage": 8 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 213, + "percentage": 49 +}, + "meanNumberOfRequestsPerSecond": { + "total": 19.59090909090909, + "ok": 9.909090909090908, + "ko": 9.681818181818182 + } +} + },"req_delete-user-516b1": { + "type": "REQUEST", + "name": "Delete User", +"path": "Delete User", +"pathFormatted": "req_delete-user-516b1", +"stats": { + "name": "Delete User", + "numberOfRequests": { + "total": 218, + "ok": 218, + "ko": 0 + }, + "minResponseTime": { + "total": 2, + "ok": 2, + "ko": 0 + }, + "maxResponseTime": { + "total": 3017, + "ok": 3017, + "ko": 0 + }, + "meanResponseTime": { + "total": 408, + "ok": 408, + "ko": 0 + }, + "standardDeviation": { + "total": 701, + "ok": 701, + "ko": 0 + }, + "percentiles1": { + "total": 11, + "ok": 11, + "ko": 0 + }, + "percentiles2": { + "total": 585, + "ok": 585, + "ko": 0 + }, + "percentiles3": { + "total": 2065, + "ok": 2065, + "ko": 0 + }, + "percentiles4": { + "total": 2668, + "ok": 2668, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 172, + "percentage": 79 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 15, + "percentage": 7 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 31, + "percentage": 14 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 9.909090909090908, + "ok": 9.909090909090908, + "ko": 0 + } +} + } +} + +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Iris-Simulation/js/theme.js b/Sources/API/gatling/results/Iris-Simulation/js/theme.js new file mode 100644 index 0000000..b95a7b3 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/theme.js @@ -0,0 +1,127 @@ +/* + * Copyright 2011-2022 Gatling Corp + * + * Licensed under the Gatling Highcharts License + */ +Highcharts.theme = { + chart: { + backgroundColor: '#f7f7f7', + borderWidth: 0, + borderRadius: 8, + plotBackgroundColor: null, + plotShadow: false, + plotBorderWidth: 0 + }, + xAxis: { + gridLineWidth: 0, + lineColor: '#666', + tickColor: '#666', + labels: { + style: { + color: '#666' + } + }, + title: { + style: { + color: '#666' + } + } + }, + yAxis: { + alternateGridColor: null, + minorTickInterval: null, + gridLineColor: '#999', + lineWidth: 0, + tickWidth: 0, + labels: { + style: { + color: '#666', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#666', + font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + labels: { + style: { + color: '#CCC' + } + }, + + + rangeSelector: { + buttonTheme: { + fill: '#cfc9c6', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#b2b2a9' + }, + states: { + hover: { + fill: '#92918C', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#8b897d' + } + }, + select: { + fill: '#E37400', + stroke: '#000000', + style: { + color: '#FFF' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: '#8b897d' + } + }, + + navigator: { + handles: { + backgroundColor: '#f7f7f7', + borderColor: '#92918C' + }, + outlineColor: '#92918C', + outlineWidth: 1, + maskFill: 'rgba(146, 145, 140, 0.5)', + series: { + color: '#5E7BE2', + lineColor: '#5E7BE2' + } + }, + + scrollbar: { + buttonBackgroundColor: '#f7f7f7', + buttonBorderWidth: 1, + buttonBorderColor: '#92918C', + buttonArrowColor: '#92918C', + buttonBorderRadius: 2, + + barBorderWidth: 1, + barBorderRadius: 0, + barBackgroundColor: '#92918C', + barBorderColor: '#92918C', + + rifleColor: '#92918C', + + trackBackgroundColor: '#b0b0a8', + trackBorderWidth: 1, + trackBorderColor: '#b0b0a8' + } +}; + +Highcharts.setOptions(Highcharts.theme); diff --git a/Sources/API/gatling/results/Iris-Simulation/js/unpack.js b/Sources/API/gatling/results/Iris-Simulation/js/unpack.js new file mode 100644 index 0000000..883c33e --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/js/unpack.js @@ -0,0 +1,38 @@ +'use strict'; + +var unpack = function (array) { + var findNbSeries = function (array) { + var currentPlotPack; + var length = array.length; + + for (var i = 0; i < length; i++) { + currentPlotPack = array[i][1]; + if(currentPlotPack !== null) { + return currentPlotPack.length; + } + } + return 0; + }; + + var i, j; + var nbPlots = array.length; + var nbSeries = findNbSeries(array); + + // Prepare unpacked array + var unpackedArray = new Array(nbSeries); + + for (i = 0; i < nbSeries; i++) { + unpackedArray[i] = new Array(nbPlots); + } + + // Unpack the array + for (i = 0; i < nbPlots; i++) { + var timestamp = array[i][0]; + var values = array[i][1]; + for (j = 0; j < nbSeries; j++) { + unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; + } + } + + return unpackedArray; +}; diff --git a/Sources/API/gatling/results/Iris-Simulation/req_create-user-266a3.html b/Sources/API/gatling/results/Iris-Simulation/req_create-user-266a3.html new file mode 100644 index 0000000..70dc3ea --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/req_create-user-266a3.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Create User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/req_delete-user-516b1.html b/Sources/API/gatling/results/Iris-Simulation/req_delete-user-516b1.html new file mode 100644 index 0000000..7a8f113 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/req_delete-user-516b1.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Delete User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/req_get-all-users-b5141.html b/Sources/API/gatling/results/Iris-Simulation/req_get-all-users-b5141.html new file mode 100644 index 0000000..625cfb0 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/req_get-all-users-b5141.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get All Users + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/req_get-user-00551.html b/Sources/API/gatling/results/Iris-Simulation/req_get-user-00551.html new file mode 100644 index 0000000..6a59e69 --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/req_get-user-00551.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/req_update-user-6b160.html b/Sources/API/gatling/results/Iris-Simulation/req_update-user-6b160.html new file mode 100644 index 0000000..efc9a8f --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/req_update-user-6b160.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Update User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Iris-Simulation/style/arrow_down.png b/Sources/API/gatling/results/Iris-Simulation/style/arrow_down.png new file mode 100644 index 0000000..3efdbc8 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/arrow_down.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/arrow_down_black.png b/Sources/API/gatling/results/Iris-Simulation/style/arrow_down_black.png new file mode 100644 index 0000000..3bae685 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/arrow_down_black.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/arrow_right.png b/Sources/API/gatling/results/Iris-Simulation/style/arrow_right.png new file mode 100644 index 0000000..a609f80 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/arrow_right.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/arrow_right_black.png b/Sources/API/gatling/results/Iris-Simulation/style/arrow_right_black.png new file mode 100644 index 0000000..651bd5d Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/arrow_right_black.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/bootstrap.min.css b/Sources/API/gatling/results/Iris-Simulation/style/bootstrap.min.css new file mode 100644 index 0000000..76a2b9b --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/style/bootstrap.min.css @@ -0,0 +1,27 @@ +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} +.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-3px;} +.tooltip.right{margin-left:3px;} +.tooltip.bottom{margin-top:3px;} +.tooltip.left{margin-left:-3px;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} +.popover.right{margin-left:10px;} +.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} +.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow:after{content:"";z-index:-1;} +.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} +.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} +.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} +.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} diff --git a/Sources/API/gatling/results/Iris-Simulation/style/favicon.ico b/Sources/API/gatling/results/Iris-Simulation/style/favicon.ico new file mode 100644 index 0000000..d2d20e1 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/favicon.ico differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/little_arrow_right.png b/Sources/API/gatling/results/Iris-Simulation/style/little_arrow_right.png new file mode 100644 index 0000000..252abe6 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/little_arrow_right.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/logo-enterprise.svg b/Sources/API/gatling/results/Iris-Simulation/style/logo-enterprise.svg new file mode 100644 index 0000000..4a6e1de --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/style/logo-enterprise.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Sources/API/gatling/results/Iris-Simulation/style/logo.svg b/Sources/API/gatling/results/Iris-Simulation/style/logo.svg new file mode 100644 index 0000000..f519eef --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/style/logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/Sources/API/gatling/results/Iris-Simulation/style/sortable.png b/Sources/API/gatling/results/Iris-Simulation/style/sortable.png new file mode 100644 index 0000000..a8bb54f Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/sortable.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/sorted-down.png b/Sources/API/gatling/results/Iris-Simulation/style/sorted-down.png new file mode 100644 index 0000000..5100cc8 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/sorted-down.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/sorted-up.png b/Sources/API/gatling/results/Iris-Simulation/style/sorted-up.png new file mode 100644 index 0000000..340a5f0 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/sorted-up.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/stat-fleche-bas.png b/Sources/API/gatling/results/Iris-Simulation/style/stat-fleche-bas.png new file mode 100644 index 0000000..8e0b501 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/stat-fleche-bas.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/stat-l-roue.png b/Sources/API/gatling/results/Iris-Simulation/style/stat-l-roue.png new file mode 100644 index 0000000..c9a3aae Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/stat-l-roue.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/stat-l-temps.png b/Sources/API/gatling/results/Iris-Simulation/style/stat-l-temps.png new file mode 100644 index 0000000..1ce2680 Binary files /dev/null and b/Sources/API/gatling/results/Iris-Simulation/style/stat-l-temps.png differ diff --git a/Sources/API/gatling/results/Iris-Simulation/style/style.css b/Sources/API/gatling/results/Iris-Simulation/style/style.css new file mode 100644 index 0000000..7f50e1b --- /dev/null +++ b/Sources/API/gatling/results/Iris-Simulation/style/style.css @@ -0,0 +1,988 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --gatling-background-color: #f2f2f2; + --gatling-background-light-color: #f7f7f7; + --gatling-border-color: #dddddd; + --gatling-blue-color: #4a9fe5; + --gatling-dark-blue-color: #24275e; + --gatling-danger-color: #f15b4f; + --gatling-danger-light-color: #f5d1ce; + --gatling-enterprise-color: #6161d6; + --gatling-enterprise-light-color: #c4c4ed; + --gatling-gray-medium-color: #bbb; + --gatling-hover-color: #e6e6e6; + --gatling-light-color: #ffffff; + --gatling-orange-color: #f78557; + --gatling-success-color: #68b65c; + --gatling-text-color: #1f2024; + --gatling-total-color: #ffa900; + + --gatling-border-radius: 2px; + --gatling-spacing-small: 5px; + --gatling-spacing: 10px; + --gatling-spacing-layout: 20px; + + --gatling-font-weight-normal: 400; + --gatling-font-weight-medium: 500; + --gatling-font-weight-bold: 700; + --gatling-font-size-secondary: 12px; + --gatling-font-size-default: 14px; + --gatling-font-size-heading: 16px; + --gatling-font-size-section: 22px; + --gatling-font-size-header: 34px; + + --gatling-media-desktop-large: 1920px; +} + +* { + min-height: 0; + min-width: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + color: var(--gatling-text-color); + font-family: arial; + font-size: var(--gatling-font-size-secondary); + margin: 0; +} + +.app-container { + display: flex; + flex-direction: column; + + height: 100%; + width: 100%; +} + +.head { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + + flex: 1; + + background-color: var(--gatling-light-color); + border-bottom: 1px solid var(--gatling-border-color); + min-height: 69px; + padding: 0 var(--gatling-spacing-layout); +} + +.gatling-open-source { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + gap: var(--gatling-spacing-layout); +} + +.gatling-documentation { + display: flex; + align-items: center; + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-orange-color); + border: 1px solid var(--gatling-orange-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 23px; +} + +.gatling-documentation:hover { + background-color: var(--gatling-orange-color); + color: var(--gatling-light-color); +} + +.gatling-logo { + height: 35px; +} + +.gatling-logo img { + height: 100%; +} + +.container { + display: flex; + align-items: stretch; + height: 100%; +} + +.nav { + min-width: 210px; + width: 210px; + max-height: calc(100vh - var(--gatling-spacing-layout) - var(--gatling-spacing-layout)); + background: var(--gatling-light-color); + border-right: 1px solid var(--gatling-border-color); + overflow-y: auto; +} + +@media print { + .nav { + display: none; + } +} + +@media screen and (min-width: 1920px) { + .nav { + min-width: 310px; + width: 310px; + } +} + +.nav ul { + display: flex; + flex-direction: column; + + padding: 0; + margin: 0; +} + +.nav li { + display: flex; + list-style: none; + width: 100%; + padding: 0; +} + +.nav .item { + display: inline-flex; + align-items: center; + margin: 0 auto; + white-space: nowrap; + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + margin: 0; + width: 100%; +} + +.nav .item .nav-label { + padding: var(--gatling-spacing) var(--gatling-spacing-layout); +} + +.nav .item:hover { + background-color: var(--gatling-hover-color); +} + +.nav .on .item { + background-color: var(--gatling-orange-color); +} + +.nav .on .item span { + color: var(--gatling-light-color); +} + +.cadre { + width: 100%; + height: 100%; + overflow-y: scroll; + scroll-behavior: smooth; +} + +@media print { + .cadre { + overflow-y: unset; + } +} + +.frise { + position: absolute; + top: 60px; + z-index: -1; + + background-color: var(--gatling-background-color); + height: 530px; +} + +.global { + height: 650px +} + +a { + text-decoration: none; +} + +a:hover { + color: var(--gatling-hover-color); +} + +img { + border: 0; +} + +h1 { + color: var(--gatling-dark-blue-color); + font-size: var(--gatling-font-size-section); + font-weight: var(--gatling-font-weight-medium); + text-align: center; + margin: 0; +} + +h1 span { + color: var(--gatling-hover-color); +} + +.enterprise { + display: flex; + align-items: center; + justify-content: center; + gap: var(--gatling-spacing-small); + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-enterprise-color); + color: var(--gatling-enterprise-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 25px; +} + +.enterprise:hover { + background-color: var(--gatling-enterprise-light-color); + color: var(--gatling-enterprise-color); +} + +.enterprise img { + display: block; + width: 160px; +} + +.simulation-card { + display: flex; + flex-direction: column; + align-self: stretch; + flex: 1; + gap: var(--gatling-spacing-layout); + max-height: 375px; +} + +#simulation-information { + flex: 1; +} + +.simulation-version-information { + display: flex; + flex-direction: column; + + gap: var(--gatling-spacing); + font-size: var(--gatling-font-size-default); + + background-color: var(--gatling-background-color); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing); +} + +.simulation-information-container { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing); +} + +.withTooltip .popover-title { + display: none; +} + +.popover-content p { + margin: 0; +} + +.ellipsed-name { + display: block; + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.simulation-information-item { + display: flex; + flex-direction: row; + align-items: flex-start; + gap: var(--gatling-spacing-small); +} + +.simulation-information-item.description { + flex-direction: column; +} + +.simulation-information-label { + display: inline-block; + font-weight: var(--gatling-font-weight-bold); + min-width: fit-content; +} + +.simulation-information-title { + display: block; + text-align: center; + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + width: 100%; +} + +.simulation-tooltip span { + display: inline-block; + word-wrap: break-word; + overflow: hidden; + text-overflow: ellipsis; +} + +.content { + display: flex; + flex-direction: column; +} + +.content-in { + width: 100%; + height: 100%; + + overflow-x: scroll; +} + +@media print { + .content-in { + overflow-x: unset; + } +} + +.container-article { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + min-width: 1050px; + width: 1050px; + margin: 0 auto; + padding: var(--gatling-spacing-layout); + box-sizing: border-box; +} + +@media screen and (min-width: 1920px) { + .container-article { + min-width: 1350px; + width: 1350px; + } + + #responses * .highcharts-tracker { + transform: translate(400px, 70px); + } +} + +.content-header { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + background-color: var(--gatling-background-light-color); + border-bottom: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-layout) var(--gatling-spacing-layout) 0; +} + +.onglet { + font-size: var(--gatling-font-size-header); + font-weight: var(--gatling-font-weight-medium); + text-align: center; +} + +.sous-menu { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.sous-menu-spacer { + display: flex; + align-items: center; + flex-direction: row; +} + +.sous-menu .item { + margin-bottom: -1px; +} + +.sous-menu a { + display: block; + + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-normal); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border-bottom: 2px solid transparent; + color: var(--gatling-text-color); + text-align: center; + width: 100px; +} + +.sous-menu a:hover { + border-bottom-color: var(--gatling-text-color); +} + +.sous-menu .ouvert a { + border-bottom-color: var(--gatling-orange-color); + font-weight: var(--gatling-font-weight-bold); +} + +.article { + position: relative; + + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); +} + +.infos { + width: 340px; + color: var(--gatling-light-color); +} + +.infos-title { + background-color: var(--gatling-background-light-color); + border: 1px solid var(--gatling-border-color); + border-bottom: 0; + border-top-left-radius: var(--gatling-border-radius); + border-top-right-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.info { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + height: 100%; + margin: 0; +} + +.info table { + margin: auto; + padding-right: 15px; +} + +.alert-danger { + background-color: var(--gatling-danger-light-color); + border: 1px solid var(--gatling-danger-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + padding: var(--gatling-spacing-layout); + font-weight: var(--gatling-font-weight-bold); +} + +.repli { + position: absolute; + bottom: 0; + right: 0; + + background: url('stat-fleche-bas.png') no-repeat top left; + height: 25px; + width: 22px; +} + +.infos h2 { + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + height: 19px; + margin: 0; + padding: 3.5px 0 0 35px; +} + +.infos .first { + background: url('stat-l-roue.png') no-repeat 15px 5px; +} + +.infos .second { + background: url('stat-l-temps.png') no-repeat 15px 3px; + border-top: 1px solid var(--gatling-border-color); +} + +.infos th { + text-align: center; +} + +.infos td { + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing-small); + -webkit-border-radius: var(--gatling-border-radius); + -moz-border-radius: var(--gatling-border-radius); + -ms-border-radius: var(--gatling-border-radius); + -o-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + text-align: right; + width: 50px; +} + +.infos .title { + width: 120px; +} + +.infos .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); +} + +.infos .total { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); +} + +.infos .ko { + background-color: var(--gatling-danger-color); + -webkit-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); +} + +.schema-container { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gatling-spacing-layout); +} + +.schema { + background: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); +} + +.ranges { + height: 375px; + width: 500px; +} + +.ranges-large { + height: 375px; + width: 530px; +} + +.geant { + height: 362px; +} + +.extensible-geant { + width: 100%; +} + +.polar { + height: 375px; + width: 230px; +} + +.chart_title { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + padding: 2px var(--gatling-spacing); +} + +.statistics { + display: flex; + flex-direction: column; + + background-color: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border-collapse: collapse; + color: var(--gatling-text-color); + max-height: 100%; +} + +.statistics .title { + display: flex; + text-align: center; + justify-content: space-between; + + min-height: 49.5px; + box-sizing: border-box; + + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing); +} + +.title_base { + display: flex; + align-items: center; + text-align: left; + user-select: none; +} + +.title_base_stats { + color: var(--gatling-text-color); + margin-right: 20px; +} + +.toggle-table { + position: relative; + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: 25px; + width: 40px; + height: 20px; + margin: 0 var(--gatling-spacing-small); +} + +.toggle-table::before { + position: absolute; + top: calc(50% - 9px); + left: 1px; + content: ""; + width: 50%; + height: 18px; + border-radius: 50%; + background-color: var(--gatling-text-color); +} + +.toggle-table.off::before { + left: unset; + right: 1px; +} + +.title_expanded { + cursor: pointer; + color: var(--gatling-text-color); +} + +.expand-table, +.collapse-table { + font-size: var(--gatling-font-size-secondary); + font-weight: var(--gatling-font-weight-normal); +} + +.title_expanded span.expand-table { + color: var(--gatling-gray-medium-color); +} + +.title_collapsed { + cursor: pointer; + color: var(--gatling-text-color); +} + +.title_collapsed span.collapse-table { + color: var(--gatling-gray-medium-color); +} + +#container_statistics_head { + position: sticky; + top: -1px; + + background: var(--gatling-background-light-color); + margin-top: -1px; + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); +} + +#container_statistics_body { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + margin-top: -1px; + padding: 0px var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small); +} + +#container_errors { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); + margin-top: -1px; +} + +#container_assertions { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small); + margin-top: -1px; +} + +.statistics-in { + border-spacing: var(--gatling-spacing-small); + border-collapse: collapse; + margin: 0; +} + +.statistics .scrollable { + max-height: 100%; + overflow-y: auto; +} + +#statistics_table_container .statistics .scrollable { + max-height: 785px; +} + +.statistics-in a { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .header { + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small); +} + +.sortable { + cursor: pointer; +} + +.sortable span { + background: url('sortable.png') no-repeat right 3px; + padding-right: 10px; +} + +.sorted-up span { + background-image: url('sorted-up.png'); +} + +.sorted-down span { + background-image: url('sorted-down.png'); +} + +.executions { + background: url('stat-l-roue.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.response-time { + background: url('stat-l-temps.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.statistics-in td { + background-color: var(--gatling-light-color); + border: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-small); + min-width: 50px; +} + +.statistics-in .col-1 { + width: 175px; + max-width: 175px; +} +@media screen and (min-width: 1200px) { + .statistics-in .col-1 { + width: 50%; + } +} + +.expandable-container { + display: flex; + flex-direction: row; + box-sizing: border-box; + max-width: 100%; +} + +.statistics-in .value { + text-align: right; + width: 50px; +} + +.statistics-in .total { + color: var(--gatling-text-color); +} + +.statistics-in .col-2 { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .error-col-1 { + background-color: var(--gatling-light-color); + color: var(--gatling-text-color); +} + +.statistics-in .error-col-2 { + text-align: center; +} + +.statistics-in .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .ko { + background-color: var(--gatling-danger-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .expand-button { + padding-left: var(--gatling-spacing); + cursor: pointer; +} + +.expand-button.hidden { + background: none; + cursor: default; +} + +.statistics-button { + background-color: var(--gatling-light-color); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); +} + +.statistics-button:hover:not(:disabled) { + cursor: pointer; + background-color: var(--gatling-hover-color); +} + +.statistics-in .expand-button.expand { + background: url('little_arrow_right.png') no-repeat 3px 3px; +} + +.statistics-in .expand-button.collapse { + background: url('sorted-down.png') no-repeat 3px 3px; +} + +.nav .expand-button { + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.nav .expand-button.expand { + background: url('arrow_right_black.png') no-repeat 5px 10px; + cursor: pointer; +} + +.nav .expand-button.collapse { + background: url('arrow_down_black.png') no-repeat 3px 12px; + cursor: pointer; +} + +.nav .on .expand-button.expand { + background-image: url('arrow_right_black.png'); +} + +.nav .on .expand-button.collapse { + background-image: url('arrow_down_black.png'); +} + +.right { + display: flex; + align-items: center; + gap: var(--gatling-spacing); + float: right; + font-size: var(--gatling-font-size-default); +} + +.withTooltip { + outline: none; +} + +.withTooltip:hover { + text-decoration: none; +} + +.withTooltip .tooltipContent { + position: absolute; + z-index: 10; + display: none; + + background: var(--gatling-orange-color); + -webkit-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + -moz-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); + margin-top: -5px; + padding: var(--gatling-spacing-small); +} + +.withTooltip:hover .tooltipContent { + display: inline; +} + +.statistics-table-modal { + height: calc(100% - 60px); + width: calc(100% - 60px); + border-radius: var(--gatling-border-radius); +} + +.statistics-table-modal::backdrop { + position: fixed; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + + background-color: rgba(100, 100, 100, 0.9); +} + +.statistics-table-modal-container { + display: flex; + flex-direction: column; + + width: 100%; + height: calc(100% - 35px); + overflow-x: auto; +} + +.button-modal { + cursor: pointer; + + height: 25px; + width: 25px; + + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); +} + +.button-modal:hover { + background-color: var(--gatling-background-color); +} + +.statistics-table-modal-header { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-bottom: var(--gatling-spacing); +} + +.statistics-table-modal-content { + flex: 1; + overflow-y: auto; + min-width: 1050px; +} + +.statistics-table-modal-footer { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-top: var(--gatling-spacing); +} diff --git a/Sources/API/gatling/results/Quarkus-Simulation/index.html b/Sources/API/gatling/results/Quarkus-Simulation/index.html new file mode 100644 index 0000000..8316252 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/index.html @@ -0,0 +1,1127 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Global Information + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    +
    +
    + Gatling Version + + Version: + 3.9.0 + + + Released: + 2022-12-14 + +
    +
    + Run Information +
    + + Date: + 2023-02-28 21:34:45 GMT + + + Duration: + 17s + + + Description: + Load testing quarkus API + + +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/all_sessions.js b/Sources/API/gatling/results/Quarkus-Simulation/js/all_sessions.js new file mode 100644 index 0000000..8b410cc --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/all_sessions.js @@ -0,0 +1,11 @@ +allUsersData = { + +color: '#FFA900', +name: 'Active Users', +data: [ + [1677620085000,52],[1677620086000,103],[1677620087000,153],[1677620088000,202],[1677620089000,252],[1677620090000,303],[1677620091000,327],[1677620092000,347],[1677620093000,337],[1677620094000,327],[1677620095000,274],[1677620096000,220],[1677620097000,172],[1677620098000,128],[1677620099000,72],[1677620100000,33],[1677620101000,13],[1677620102000,4] +], +tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } + , zIndex: 20 + , yAxis: 1 +}; \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.json b/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.json new file mode 100644 index 0000000..b9432f5 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.json @@ -0,0 +1,10 @@ +{ + "simulation": "benchmark.UserSimulation", + "simulationId": "usersimulation-20230228213443882", + "start": 1677620085142, + "description": "Load testing quarkus API", + "scenarios": ["Users"], + "assertions": [ + + ] +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.xml b/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.xml new file mode 100644 index 0000000..f6a86c9 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/assertions.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/bootstrap.min.js b/Sources/API/gatling/results/Quarkus-Simulation/js/bootstrap.min.js new file mode 100644 index 0000000..ea41042 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/** +* Bootstrap.js by @fat & @mdo +* plugins: bootstrap-tooltip.js, bootstrap-popover.js +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);if(!c.options.delay||!c.options.delay.show)return c.show();clearTimeout(this.timeout),c.hoverState="in",this.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.offset(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var b=this,c=this.tip();return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.detach(),this},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);c[c.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
    ',trigger:"hover",title:"",delay:0,html:!1}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content > *")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

    '})}(window.jQuery) \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/ellipsis.js b/Sources/API/gatling/results/Quarkus-Simulation/js/ellipsis.js new file mode 100644 index 0000000..781d0de --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/ellipsis.js @@ -0,0 +1,26 @@ +function parentId(name) { + return "parent-" + name; +} + +function isEllipsed(name) { + const child = document.getElementById(name); + const parent = document.getElementById(parentId(name)); + const emptyData = parent.getAttribute("data-content") === ""; + const hasOverflow = child.clientWidth < child.scrollWidth; + + if (hasOverflow) { + if (emptyData) { + parent.setAttribute("data-content", name); + } + } else { + if (!emptyData) { + parent.setAttribute("data-content", ""); + } + } +} + +function ellipsedLabel ({ name, parentClass = "", childClass = "" }) { + const child = "" + name + ""; + + return "" + child + ""; +} diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/gatling.js b/Sources/API/gatling/results/Quarkus-Simulation/js/gatling.js new file mode 100644 index 0000000..0208f82 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/gatling.js @@ -0,0 +1,137 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function ($) { + $.fn.expandable = function () { + var scope = this; + + this.find('.expand-button:not([class*=hidden])').addClass('collapse').on('click', function () { + var $this = $(this); + + if ($this.hasClass('expand')) + $this.expand(scope); + else + $this.collapse(scope); + }); + + this.find('.expand-all-button').on('click', function () { + $(this).expandAll(scope); + }); + + this.find('.collapse-all-button').on('click', function () { + $(this).collapseAll(scope); + }); + + this.collapseAll(this); + + return this; + }; + + $.fn.expand = function (scope, recursive) { + return this.each(function () { + var $this = $(this); + + if (recursive) { + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + scope.find('*[data-parent=' + $this.attr('id') + ']').find('.expand-button.expand').expand(scope, true); + } + + if ($this.hasClass('expand')) { + $('*[data-parent=' + $this.attr('id') + ']').toggle(true); + $this.toggleClass('expand').toggleClass('collapse'); + } + }); + }; + + $.fn.expandAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.expand').expand(scope, true); + $('*[data-parent=ROOT]').find('.expand-button.collapse').expand(scope, true); + }; + + $.fn.collapse = function (scope) { + return this.each(function () { + var $this = $(this); + + scope.find('*[data-parent=' + $this.attr('id') + '] .expand-button.collapse').collapse(scope); + scope.find('*[data-parent=' + $this.attr('id') + ']').toggle(false); + $this.toggleClass('expand').toggleClass('collapse'); + }); + }; + + $.fn.collapseAll = function (scope) { + $('*[data-parent=ROOT]').find('.expand-button.collapse').collapse(scope); + }; + + $.fn.sortable = function (target) { + var table = this; + + this.find('thead .sortable').on('click', function () { + var $this = $(this); + + if ($this.hasClass('sorted-down')) { + var desc = false; + var style = 'sorted-up'; + } + else { + var desc = true; + var style = 'sorted-down'; + } + + $(target).sortTable($this.attr('id'), desc); + + table.find('thead .sortable').removeClass('sorted-up sorted-down'); + $this.addClass(style); + + return false; + }); + + return this; + }; + + $.fn.sortTable = function (col, desc) { + function getValue(line) { + var cell = $(line).find('.' + col); + + if (cell.hasClass('value')) + var value = cell.text(); + else + var value = cell.find('.value').text(); + + return parseFloat(value); + } + + function sortLines (lines, group) { + var notErrorTable = col.search("error") == -1; + var linesToSort = notErrorTable ? lines.filter('*[data-parent=' + group + ']') : lines; + + var sortedLines = linesToSort.sort(function (a, b) { + return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); + }).toArray(); + + var result = []; + $.each(sortedLines, function (i, line) { + result.push(line); + if (notErrorTable) + result = result.concat(sortLines(lines, $(line).attr('id'))); + }); + + return result; + } + + this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); + + return this; + }; +})(jQuery); diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/global_stats.json b/Sources/API/gatling/results/Quarkus-Simulation/js/global_stats.json new file mode 100644 index 0000000..0e6fc2a --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/global_stats.json @@ -0,0 +1,77 @@ +{ + "name": "All Requests", + "numberOfRequests": { + "total": 3748, + "ok": 2748, + "ko": 1000 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 733, + "ok": 733, + "ko": 233 + }, + "meanResponseTime": { + "total": 9, + "ok": 10, + "ko": 5 + }, + "standardDeviation": { + "total": 48, + "ok": 54, + "ko": 23 + }, + "percentiles1": { + "total": 2, + "ok": 2, + "ko": 1 + }, + "percentiles2": { + "total": 3, + "ok": 4, + "ko": 2 + }, + "percentiles3": { + "total": 12, + "ok": 15, + "ko": 5 + }, + "percentiles4": { + "total": 181, + "ok": 235, + "ko": 151 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2748, + "percentage": 73 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 1000, + "percentage": 27 +}, + "meanNumberOfRequestsPerSecond": { + "total": 208.22222222222223, + "ok": 152.66666666666666, + "ko": 55.55555555555556 + } +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/highcharts-more.js b/Sources/API/gatling/results/Quarkus-Simulation/js/highcharts-more.js new file mode 100644 index 0000000..2d78893 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/highcharts-more.js @@ -0,0 +1,60 @@ +/* + Highcharts JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(x){"object"===typeof module&&module.exports?module.exports=x:x(Highcharts)})(function(x){(function(b){function r(b,a,d){this.init(b,a,d)}var t=b.each,w=b.extend,m=b.merge,q=b.splat;w(r.prototype,{init:function(b,a,d){var f=this,h=f.defaultOptions;f.chart=a;f.options=b=m(h,a.angular?{background:{}}:void 0,b);(b=b.background)&&t([].concat(q(b)).reverse(),function(a){var c,h=d.userOptions;c=m(f.defaultBackgroundOptions,a);a.backgroundColor&&(c.backgroundColor=a.backgroundColor);c.color=c.backgroundColor; +d.options.plotBands.unshift(c);h.plotBands=h.plotBands||[];h.plotBands!==d.options.plotBands&&h.plotBands.unshift(c)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{className:"highcharts-pane",shape:"circle",borderWidth:1,borderColor:"#cccccc",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#ffffff"],[1,"#e6e6e6"]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});b.Pane=r})(x);(function(b){var r=b.CenteredSeriesMixin, +t=b.each,w=b.extend,m=b.map,q=b.merge,e=b.noop,a=b.Pane,d=b.pick,f=b.pInt,h=b.splat,u=b.wrap,c,l,k=b.Axis.prototype;b=b.Tick.prototype;c={getOffset:e,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:e,setCategories:e,setTitle:e};l={defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2}, +defaultRadialXOptions:{gridLineWidth:1,labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=q(this.defaultOptions,this.defaultRadialOptions,a);a.plotBands||(a.plotBands=[])},getOffset:function(){k.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center= +r.getCenter.call(this.pane)},getLinePath:function(a,g){a=this.center;var c=this.chart,f=d(g,a[2]/2-this.offset);this.isCircular||void 0!==g?g=this.chart.renderer.symbols.arc(this.left+a[0],this.top+a[1],f,f,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0}):(g=this.postTranslate(this.angleRad,f),g=["M",a[0]+c.plotLeft,a[1]+c.plotTop,"L",g.x,g.y]);return g},setAxisTranslation:function(){k.setAxisTranslation.call(this);this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/ +(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0)},beforeSetTickPositions:function(){if(this.autoConnect=this.isCircular&&void 0===d(this.userMax,this.options.max)&&this.endAngleRad-this.startAngleRad===2*Math.PI)this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0},setAxisSize:function(){k.setAxisSize.call(this);this.isRadial&&(this.center=this.pane.center=r.getCenter.call(this.pane),this.isCircular&& +(this.sector=this.endAngleRad-this.startAngleRad),this.len=this.width=this.height=this.center[2]*d(this.sector,1)/2)},getPosition:function(a,g){return this.postTranslate(this.isCircular?this.translate(a):this.angleRad,d(this.isCircular?g:this.translate(a),this.center[2]/2)-this.offset)},postTranslate:function(a,g){var d=this.chart,c=this.center;a=this.startAngleRad+a;return{x:d.plotLeft+c[0]+Math.cos(a)*g,y:d.plotTop+c[1]+Math.sin(a)*g}},getPlotBandPath:function(a,g,c){var h=this.center,p=this.startAngleRad, +k=h[2]/2,n=[d(c.outerRadius,"100%"),c.innerRadius,d(c.thickness,10)],b=Math.min(this.offset,0),l=/%$/,u,e=this.isCircular;"polygon"===this.options.gridLineInterpolation?h=this.getPlotLinePath(a).concat(this.getPlotLinePath(g,!0)):(a=Math.max(a,this.min),g=Math.min(g,this.max),e||(n[0]=this.translate(a),n[1]=this.translate(g)),n=m(n,function(a){l.test(a)&&(a=f(a,10)*k/100);return a}),"circle"!==c.shape&&e?(a=p+this.translate(a),g=p+this.translate(g)):(a=-Math.PI/2,g=1.5*Math.PI,u=!0),n[0]-=b,n[2]-= +b,h=this.chart.renderer.symbols.arc(this.left+h[0],this.top+h[1],n[0],n[0],{start:Math.min(a,g),end:Math.max(a,g),innerR:d(n[1],n[0]-n[2]),open:u}));return h},getPlotLinePath:function(a,g){var d=this,c=d.center,f=d.chart,h=d.getPosition(a),k,b,p;d.isCircular?p=["M",c[0]+f.plotLeft,c[1]+f.plotTop,"L",h.x,h.y]:"circle"===d.options.gridLineInterpolation?(a=d.translate(a))&&(p=d.getLinePath(0,a)):(t(f.xAxis,function(a){a.pane===d.pane&&(k=a)}),p=[],a=d.translate(a),c=k.tickPositions,k.autoConnect&&(c= +c.concat([c[0]])),g&&(c=[].concat(c).reverse()),t(c,function(g,d){b=k.getPosition(g,a);p.push(d?"L":"M",b.x,b.y)}));return p},getTitlePosition:function(){var a=this.center,g=this.chart,d=this.options.title;return{x:g.plotLeft+a[0]+(d.x||0),y:g.plotTop+a[1]-{high:.5,middle:.25,low:0}[d.align]*a[2]+(d.y||0)}}};u(k,"init",function(f,g,k){var b=g.angular,p=g.polar,n=k.isX,u=b&&n,e,A=g.options,m=k.pane||0;if(b){if(w(this,u?c:l),e=!n)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else p&&(w(this, +l),this.defaultRadialOptions=(e=n)?this.defaultRadialXOptions:q(this.defaultYAxisOptions,this.defaultRadialYOptions));b||p?(this.isRadial=!0,g.inverted=!1,A.chart.zoomType=null):this.isRadial=!1;f.call(this,g,k);u||!b&&!p||(f=this.options,g.panes||(g.panes=[]),this.pane=g=g.panes[m]=g.panes[m]||new a(h(A.pane)[m],g,this),g=g.options,this.angleRad=(f.angle||0)*Math.PI/180,this.startAngleRad=(g.startAngle-90)*Math.PI/180,this.endAngleRad=(d(g.endAngle,g.startAngle+360)-90)*Math.PI/180,this.offset=f.offset|| +0,this.isCircular=e)});u(k,"autoLabelAlign",function(a){if(!this.isRadial)return a.apply(this,[].slice.call(arguments,1))});u(b,"getPosition",function(a,d,c,f,h){var g=this.axis;return g.getPosition?g.getPosition(c):a.call(this,d,c,f,h)});u(b,"getLabelPosition",function(a,g,c,f,h,k,b,l,u){var n=this.axis,p=k.y,e=20,y=k.align,v=(n.translate(this.pos)+n.startAngleRad+Math.PI/2)/Math.PI*180%360;n.isRadial?(a=n.getPosition(this.pos,n.center[2]/2+d(k.distance,-25)),"auto"===k.rotation?f.attr({rotation:v}): +null===p&&(p=n.chart.renderer.fontMetrics(f.styles.fontSize).b-f.getBBox().height/2),null===y&&(n.isCircular?(this.label.getBBox().width>n.len*n.tickInterval/(n.max-n.min)&&(e=0),y=v>e&&v<180-e?"left":v>180+e&&v<360-e?"right":"center"):y="center",f.attr({align:y})),a.x+=k.x,a.y+=p):a=a.call(this,g,c,f,h,k,b,l,u);return a});u(b,"getMarkPath",function(a,d,c,f,h,k,b){var g=this.axis;g.isRadial?(a=g.getPosition(this.pos,g.center[2]/2+f),d=["M",d,c,"L",a.x,a.y]):d=a.call(this,d,c,f,h,k,b);return d})})(x); +(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.Series,q=b.seriesType,e=b.seriesTypes;q("arearange","area",{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{series.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}},{pointArrayMap:["low","high"],dataLabelCollections:["dataLabel", +"dataLabelUpper"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,highToXY:function(a){var d=this.chart,f=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=f.x-d.plotLeft;a.plotHigh=f.y-d.plotTop},translate:function(){var a=this,d=a.yAxis,f=!!a.modifyValue;e.area.prototype.translate.apply(a);r(a.points,function(h){var b=h.low,c=h.high,l=h.plotY;null===c||null===b?h.isNull=!0:(h.plotLow=l,h.plotHigh=d.translate(f?a.modifyValue(c,h):c,0,1, +0,1),f&&(h.yBottom=h.plotHigh))});this.chart.polar&&r(this.points,function(d){a.highToXY(d)})},getGraphPath:function(a){var d=[],f=[],h,b=e.area.prototype.getGraphPath,c,l,k;k=this.options;var p=k.step;a=a||this.points;for(h=a.length;h--;)c=a[h],c.isNull||k.connectEnds||a[h+1]&&!a[h+1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1}),l={polarPlotY:c.polarPlotY,rectPlotX:c.rectPlotX,yBottom:c.yBottom,plotX:w(c.plotHighX,c.plotX),plotY:c.plotHigh,isNull:c.isNull},f.push(l),d.push(l),c.isNull|| +k.connectEnds||a[h-1]&&!a[h-1].isNull||f.push({plotX:c.plotX,plotY:c.plotY,doCurve:!1});a=b.call(this,a);p&&(!0===p&&(p="left"),k.step={left:"right",center:"center",right:"left"}[p]);d=b.call(this,d);f=b.call(this,f);k.step=p;k=[].concat(a,d);this.chart.polar||"M"!==f[0]||(f[0]="L");this.graphPath=k;this.areaPath=this.areaPath.concat(a,f);k.isArea=!0;k.xMap=a.xMap;this.areaPath.xMap=a.xMap;return k},drawDataLabels:function(){var a=this.data,d=a.length,f,h=[],b=m.prototype,c=this.options.dataLabels, +l=c.align,k=c.verticalAlign,p=c.inside,g,n,e=this.chart.inverted;if(c.enabled||this._hasPointLabels){for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.y=g.high,g._plotY=g.plotY,g.plotY=g.plotHigh,h[f]=g.dataLabel,g.dataLabel=g.dataLabelUpper,g.below=n,e?l||(c.align=n?"right":"left"):k||(c.verticalAlign=n?"top":"bottom"),c.x=c.xHigh,c.y=c.yHigh;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments);for(f=d;f--;)if(g=a[f])n=p?g.plotHighg.plotLow,g.dataLabelUpper= +g.dataLabel,g.dataLabel=h[f],g.y=g.low,g.plotY=g._plotY,g.below=!n,e?l||(c.align=n?"left":"right"):k||(c.verticalAlign=n?"bottom":"top"),c.x=c.xLow,c.y=c.yLow;b.drawDataLabels&&b.drawDataLabels.apply(this,arguments)}c.align=l;c.verticalAlign=k},alignDataLabel:function(){e.column.prototype.alignDataLabel.apply(this,arguments)},setStackedPoints:t,getSymbol:t,drawPoints:t})})(x);(function(b){var r=b.seriesType;r("areasplinerange","arearange",null,{getPointSpline:b.seriesTypes.spline.prototype.getPointSpline})})(x); +(function(b){var r=b.defaultPlotOptions,t=b.each,w=b.merge,m=b.noop,q=b.pick,e=b.seriesType,a=b.seriesTypes.column.prototype;e("columnrange","arearange",w(r.column,r.arearange,{lineWidth:1,pointRange:null}),{translate:function(){var d=this,f=d.yAxis,b=d.xAxis,u=b.startAngleRad,c,l=d.chart,k=d.xAxis.isRadial,p;a.translate.apply(d);t(d.points,function(a){var g=a.shapeArgs,h=d.options.minPointLength,e,v;a.plotHigh=p=f.translate(a.high,0,1,0,1);a.plotLow=a.plotY;v=p;e=q(a.rectPlotY,a.plotY)-p;Math.abs(e)< +h?(h-=e,e+=h,v-=h/2):0>e&&(e*=-1,v-=e);k?(c=a.barX+u,a.shapeType="path",a.shapeArgs={d:d.polarArc(v+e,v,c,c+a.pointWidth)}):(g.height=e,g.y=v,a.tooltipPos=l.inverted?[f.len+f.pos-l.plotLeft-v-e/2,b.len+b.pos-l.plotTop-g.x-g.width/2,e]:[b.left-l.plotLeft+g.x+g.width/2,f.pos-l.plotTop+v+e/2,e])})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:m,crispCol:a.crispCol,drawPoints:a.drawPoints,drawTracker:a.drawTracker,getColumnMetrics:a.getColumnMetrics,animate:function(){return a.animate.apply(this, +arguments)},polarArc:function(){return a.polarArc.apply(this,arguments)},pointAttribs:a.pointAttribs})})(x);(function(b){var r=b.each,t=b.isNumber,w=b.merge,m=b.pick,q=b.pInt,e=b.Series,a=b.seriesType,d=b.TrackerMixin;a("gauge","line",{dataLabels:{enabled:!0,defer:!1,y:15,borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2,borderWidth:1,borderColor:"#cccccc"},dial:{},pivot:{},tooltip:{headerFormat:""},showInLegend:!1},{angular:!0,directTouch:!0,drawGraph:b.noop,fixedBox:!0,forceDL:!0,noSharedTooltip:!0, +trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,d=this.options,b=a.center;this.generatePoints();r(this.points,function(c){var f=w(d.dial,c.dial),k=q(m(f.radius,80))*b[2]/200,h=q(m(f.baseLength,70))*k/100,g=q(m(f.rearLength,10))*k/100,n=f.baseWidth||3,u=f.topWidth||1,e=d.overshoot,v=a.startAngleRad+a.translate(c.y,null,null,null,!0);t(e)?(e=e/180*Math.PI,v=Math.max(a.startAngleRad-e,Math.min(a.endAngleRad+e,v))):!1===d.wrap&&(v=Math.max(a.startAngleRad,Math.min(a.endAngleRad, +v)));v=180*v/Math.PI;c.shapeType="path";c.shapeArgs={d:f.path||["M",-g,-n/2,"L",h,-n/2,k,-u/2,k,u/2,h,n/2,-g,n/2,"z"],translateX:b[0],translateY:b[1],rotation:v};c.plotX=b[0];c.plotY=b[1]})},drawPoints:function(){var a=this,d=a.yAxis.center,b=a.pivot,c=a.options,l=c.pivot,k=a.chart.renderer;r(a.points,function(d){var g=d.graphic,b=d.shapeArgs,f=b.d,h=w(c.dial,d.dial);g?(g.animate(b),b.d=f):(d.graphic=k[d.shapeType](b).attr({rotation:b.rotation,zIndex:1}).addClass("highcharts-dial").add(a.group),d.graphic.attr({stroke:h.borderColor|| +"none","stroke-width":h.borderWidth||0,fill:h.backgroundColor||"#000000"}))});b?b.animate({translateX:d[0],translateY:d[1]}):(a.pivot=k.circle(0,0,m(l.radius,5)).attr({zIndex:2}).addClass("highcharts-pivot").translate(d[0],d[1]).add(a.group),a.pivot.attr({"stroke-width":l.borderWidth||0,stroke:l.borderColor||"#cccccc",fill:l.backgroundColor||"#000000"}))},animate:function(a){var d=this;a||(r(d.points,function(a){var c=a.graphic;c&&(c.attr({rotation:180*d.yAxis.startAngleRad/Math.PI}),c.animate({rotation:a.shapeArgs.rotation}, +d.options.animation))}),d.animate=null)},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);e.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,d){e.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();m(d,!0)&&this.chart.redraw()},drawTracker:d&&d.drawTrackerPoint},{setState:function(a){this.state=a}})})(x);(function(b){var r=b.each,t=b.noop,w=b.pick,m=b.seriesType, +q=b.seriesTypes;m("boxplot","column",{threshold:null,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eMaximum: {point.high}\x3cbr/\x3eUpper quartile: {point.q3}\x3cbr/\x3eMedian: {point.median}\x3cbr/\x3eLower quartile: {point.q1}\x3cbr/\x3eMinimum: {point.low}\x3cbr/\x3e'},whiskerLength:"50%",fillColor:"#ffffff",lineWidth:1,medianWidth:2,states:{hover:{brightness:-.3}},whiskerWidth:2},{pointArrayMap:["low","q1","median", +"q3","high"],toYData:function(b){return[b.low,b.q1,b.median,b.q3,b.high]},pointValKey:"high",pointAttribs:function(b){var a=this.options,d=b&&b.color||this.color;return{fill:b.fillColor||a.fillColor||d,stroke:a.lineColor||d,"stroke-width":a.lineWidth||0}},drawDataLabels:t,translate:function(){var b=this.yAxis,a=this.pointArrayMap;q.column.prototype.translate.apply(this);r(this.points,function(d){r(a,function(a){null!==d[a]&&(d[a+"Plot"]=b.translate(d[a],0,1,0,1))})})},drawPoints:function(){var b= +this,a=b.options,d=b.chart.renderer,f,h,u,c,l,k,p=0,g,n,m,q,v=!1!==b.doQuartiles,t,x=b.options.whiskerLength;r(b.points,function(e){var r=e.graphic,y=r?"animate":"attr",I=e.shapeArgs,z={},B={},G={},H=e.color||b.color;void 0!==e.plotY&&(g=I.width,n=Math.floor(I.x),m=n+g,q=Math.round(g/2),f=Math.floor(v?e.q1Plot:e.lowPlot),h=Math.floor(v?e.q3Plot:e.lowPlot),u=Math.floor(e.highPlot),c=Math.floor(e.lowPlot),r||(e.graphic=r=d.g("point").add(b.group),e.stem=d.path().addClass("highcharts-boxplot-stem").add(r), +x&&(e.whiskers=d.path().addClass("highcharts-boxplot-whisker").add(r)),v&&(e.box=d.path(void 0).addClass("highcharts-boxplot-box").add(r)),e.medianShape=d.path(void 0).addClass("highcharts-boxplot-median").add(r),z.stroke=e.stemColor||a.stemColor||H,z["stroke-width"]=w(e.stemWidth,a.stemWidth,a.lineWidth),z.dashstyle=e.stemDashStyle||a.stemDashStyle,e.stem.attr(z),x&&(B.stroke=e.whiskerColor||a.whiskerColor||H,B["stroke-width"]=w(e.whiskerWidth,a.whiskerWidth,a.lineWidth),e.whiskers.attr(B)),v&&(r= +b.pointAttribs(e),e.box.attr(r)),G.stroke=e.medianColor||a.medianColor||H,G["stroke-width"]=w(e.medianWidth,a.medianWidth,a.lineWidth),e.medianShape.attr(G)),k=e.stem.strokeWidth()%2/2,p=n+q+k,e.stem[y]({d:["M",p,h,"L",p,u,"M",p,f,"L",p,c]}),v&&(k=e.box.strokeWidth()%2/2,f=Math.floor(f)+k,h=Math.floor(h)+k,n+=k,m+=k,e.box[y]({d:["M",n,h,"L",n,f,"L",m,f,"L",m,h,"L",n,h,"z"]})),x&&(k=e.whiskers.strokeWidth()%2/2,u+=k,c+=k,t=/%$/.test(x)?q*parseFloat(x)/100:x/2,e.whiskers[y]({d:["M",p-t,u,"L",p+t,u, +"M",p-t,c,"L",p+t,c]})),l=Math.round(e.medianPlot),k=e.medianShape.strokeWidth()%2/2,l+=k,e.medianShape[y]({d:["M",n,l,"L",m,l]}))})},setStackedPoints:t})})(x);(function(b){var r=b.each,t=b.noop,w=b.seriesType,m=b.seriesTypes;w("errorbar","boxplot",{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.low}\x3c/b\x3e - \x3cb\x3e{point.high}\x3c/b\x3e\x3cbr/\x3e'},whiskerWidth:null},{type:"errorbar", +pointArrayMap:["low","high"],toYData:function(b){return[b.low,b.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:m.arearange?function(){var b=this.pointValKey;m.arearange.prototype.drawDataLabels.call(this);r(this.data,function(e){e.y=e[b]})}:t,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||m.column.prototype.getColumnMetrics.call(this)}})})(x);(function(b){var r=b.correctFloat,t=b.isNumber,w=b.pick,m=b.Point,q=b.Series,e=b.seriesType,a=b.seriesTypes; +e("waterfall","column",{dataLabels:{inside:!0},lineWidth:1,lineColor:"#333333",dashStyle:"dot",borderColor:"#333333",states:{hover:{lineWidthPlus:0}}},{pointValKey:"y",translate:function(){var d=this.options,b=this.yAxis,h,e,c,l,k,p,g,n,m,q=w(d.minPointLength,5),v=d.threshold,t=d.stacking;a.column.prototype.translate.apply(this);this.minPointLengthOffset=0;g=n=v;e=this.points;h=0;for(d=e.length;hl.height&&(l.y+=l.height,l.height*=-1),c.plotY=l.y=Math.round(l.y)- +this.borderWidth%2/2,l.height=Math.max(Math.round(l.height),.001),c.yBottom=l.y+l.height,l.height<=q&&(l.height=q,this.minPointLengthOffset+=q),l.y-=this.minPointLengthOffset,l=c.plotY+(c.negative?l.height:0)-this.minPointLengthOffset,this.chart.inverted?c.tooltipPos[0]=b.len-l:c.tooltipPos[1]=l},processData:function(a){var b=this.yData,d=this.options.data,e,c=b.length,l,k,p,g,n,m;k=l=p=g=this.options.threshold||0;for(m=0;ma[k-1].y&&(l[2]+=c.height,l[5]+=c.height),e=e.concat(l);return e},drawGraph:function(){q.prototype.drawGraph.call(this);this.graph.attr({d:this.getCrispPath()})},getExtremes:b.noop},{getClassName:function(){var a=m.prototype.getClassName.call(this);this.isSum?a+=" highcharts-sum":this.isIntermediateSum&&(a+=" highcharts-intermediate-sum"); +return a},isValid:function(){return t(this.y,!0)||this.isSum||this.isIntermediateSum}})})(x);(function(b){var r=b.Series,t=b.seriesType,w=b.seriesTypes;t("polygon","scatter",{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:""},trackByArea:!0},{type:"polygon",getGraphPath:function(){for(var b=r.prototype.getGraphPath.call(this),q=b.length+1;q--;)(q===b.length||"M"===b[q])&&0=this.minPxSize/2?(d.shapeType="circle",d.shapeArgs={x:d.plotX,y:d.plotY,r:c},d.dlBox={x:d.plotX-c,y:d.plotY-c,width:2*c,height:2*c}):d.shapeArgs=d.plotY=d.dlBox=void 0},drawLegendSymbol:function(a,b){var d=this.chart.renderer,c=d.fontMetrics(a.itemStyle.fontSize).f/2;b.legendSymbol=d.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker= +!0},drawPoints:l.column.prototype.drawPoints,alignDataLabel:l.column.prototype.alignDataLabel,buildKDTree:a,applyZones:a},{haloPath:function(a){return h.prototype.haloPath.call(this,this.shapeArgs.r+a)},ttBelow:!1});w.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,h=0,l=b,u=this.isXAxis,m=u?"xData":"yData",w=this.min,x={},A=Math.min(c.plotWidth,c.plotHeight),C=Number.MAX_VALUE,D=-Number.MAX_VALUE,E=this.max-w,z=b/E,F=[];q(this.series,function(b){var g=b.options;!b.bubblePadding|| +!b.visible&&c.options.chart.ignoreHiddenSeries||(a.allowZoomOutside=!0,F.push(b),u&&(q(["minSize","maxSize"],function(a){var b=g[a],d=/%$/.test(b),b=f(b);x[a]=d?A*b/100:b}),b.minPxSize=x.minSize,b.maxPxSize=Math.max(x.maxSize,x.minSize),b=b.zData,b.length&&(C=d(g.zMin,Math.min(C,Math.max(t(b),!1===g.displayNegative?g.zThreshold:-Number.MAX_VALUE))),D=d(g.zMax,Math.max(D,r(b))))))});q(F,function(b){var d=b[m],c=d.length,f;u&&b.getRadii(C,D,b.minPxSize,b.maxPxSize);if(0f&&(f+=360),a.clientX=f):a.clientX=a.plotX};m.spline&&q(m.spline.prototype,"getPointSpline",function(a,b,f,h){var d,c,e,k,p,g,n;this.chart.polar?(d=f.plotX, +c=f.plotY,a=b[h-1],e=b[h+1],this.connectEnds&&(a||(a=b[b.length-2]),e||(e=b[1])),a&&e&&(k=a.plotX,p=a.plotY,b=e.plotX,g=e.plotY,k=(1.5*d+k)/2.5,p=(1.5*c+p)/2.5,e=(1.5*d+b)/2.5,n=(1.5*c+g)/2.5,b=Math.sqrt(Math.pow(k-d,2)+Math.pow(p-c,2)),g=Math.sqrt(Math.pow(e-d,2)+Math.pow(n-c,2)),k=Math.atan2(p-c,k-d),p=Math.atan2(n-c,e-d),n=Math.PI/2+(k+p)/2,Math.abs(k-n)>Math.PI/2&&(n-=Math.PI),k=d+Math.cos(n)*b,p=c+Math.sin(n)*b,e=d+Math.cos(Math.PI+n)*g,n=c+Math.sin(Math.PI+n)*g,f.rightContX=e,f.rightContY=n), +h?(f=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,k||d,p||c,d,c],a.rightContX=a.rightContY=null):f=["M",d,c]):f=a.call(this,b,f,h);return f});q(e,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,!this.preventPostTranslate))for(a=this.points,b=a.length;b--;)this.toXY(a[b])});q(e,"getGraphPath",function(a,b){var d=this,e,m;if(this.chart.polar){b=b||this.points;for(e=0;eb.center[1]}),q(m,"alignDataLabel",function(a,b,f,h,m,c){this.chart.polar?(a=b.rectPlotX/Math.PI*180,null===h.align&&(h.align=20a?"left":200a?"right":"center"),null===h.verticalAlign&&(h.verticalAlign=45>a||315a?"top":"middle"),e.alignDataLabel.call(this,b,f,h,m,c)):a.call(this, +b,f,h,m,c)}));q(b,"getCoordinates",function(a,b){var d=this.chart,e={xAxis:[],yAxis:[]};d.polar?t(d.axes,function(a){var c=a.isXAxis,f=a.center,h=b.chartX-f[0]-d.plotLeft,f=b.chartY-f[1]-d.plotTop;e[c?"xAxis":"yAxis"].push({axis:a,value:a.translate(c?Math.PI-Math.atan2(h,f):Math.sqrt(Math.pow(h,2)+Math.pow(f,2)),!0)})}):e=a.call(this,b);return e})})(x)}); diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/highstock.js b/Sources/API/gatling/results/Quarkus-Simulation/js/highstock.js new file mode 100644 index 0000000..34a3f91 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/highstock.js @@ -0,0 +1,496 @@ +/* + Highstock JS v5.0.3 (2016-11-18) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(N,a){"object"===typeof module&&module.exports?module.exports=N.document?a(N):a:N.Highcharts=a(N)})("undefined"!==typeof window?window:this,function(N){N=function(){var a=window,D=a.document,B=a.navigator&&a.navigator.userAgent||"",G=D&&D.createElementNS&&!!D.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,H=/(edge|msie|trident)/i.test(B)&&!window.opera,p=!G,l=/Firefox/.test(B),r=l&&4>parseInt(B.split("Firefox/")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:"Highstock", +version:"5.0.3",deg2rad:2*Math.PI/360,doc:D,hasBidiBug:r,hasTouch:D&&void 0!==D.documentElement.ontouchstart,isMS:H,isWebKit:/AppleWebKit/.test(B),isFirefox:l,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(B),SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,vml:p,win:a,charts:[],marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){}}}();(function(a){var D=[],B=a.charts,G=a.doc,H=a.win;a.error=function(a,l){a="Highcharts error #"+ +a+": www.highcharts.com/errors/"+a;if(l)throw Error(a);H.console&&console.log(a)};a.Fx=function(a,l,r){this.options=l;this.elem=a;this.prop=r};a.Fx.prototype={dSetter:function(){var a=this.paths[0],l=this.paths[1],r=[],w=this.now,t=a.length,k;if(1===w)r=this.toD;else if(t===l.length&&1>w)for(;t--;)k=parseFloat(a[t]),r[t]=isNaN(k)?a[t]:w*parseFloat(l[t]-k)+k;else r=l;this.elem.attr("d",r)},update:function(){var a=this.elem,l=this.prop,r=this.now,w=this.options.step;if(this[l+"Setter"])this[l+"Setter"](); +else a.attr?a.element&&a.attr(l,r):a.style[l]=r+this.unit;w&&w.call(a,r,this)},run:function(a,l,r){var p=this,t=function(a){return t.stopped?!1:p.step(a)},k;this.startTime=+new Date;this.start=a;this.end=l;this.unit=r;this.now=this.start;this.pos=0;t.elem=this.elem;t()&&1===D.push(t)&&(t.timerId=setInterval(function(){for(k=0;k=k+this.startTime){this.now=this.end;this.pos=1;this.update();a=m[this.prop]=!0;for(e in m)!0!==m[e]&&(a=!1);a&&t&&t.call(p);p=!1}else this.pos=w.easing((l-this.startTime)/k),this.now=this.start+(this.end-this.start)*this.pos,this.update(),p=!0;return p},initPath:function(p,l,r){function w(a){for(b=a.length;b--;)"M"!==a[b]&&"L"!==a[b]||a.splice(b+1,0,a[b+1],a[b+2],a[b+1],a[b+2])}function t(a,c){for(;a.lengthm?"AM":"PM",P:12>m?"am":"pm",S:q(t.getSeconds()),L:q(Math.round(l%1E3),3)},a.dateFormats);for(k in w)for(;-1!==p.indexOf("%"+k);)p= +p.replace("%"+k,"function"===typeof w[k]?w[k](l):w[k]);return r?p.substr(0,1).toUpperCase()+p.substr(1):p};a.formatSingle=function(p,l){var r=/\.([0-9])/,w=a.defaultOptions.lang;/f$/.test(p)?(r=(r=p.match(r))?r[1]:-1,null!==l&&(l=a.numberFormat(l,r,w.decimalPoint,-1=r&&(l=[1/r])));for(w=0;w=p||!t&&k<=(l[w]+(l[w+1]||l[w]))/ +2);w++);return m*r};a.stableSort=function(a,l){var r=a.length,p,t;for(t=0;tr&&(r=a[l]);return r};a.destroyObjectProperties=function(a,l){for(var r in a)a[r]&&a[r]!==l&&a[r].destroy&&a[r].destroy(),delete a[r]};a.discardElement=function(p){var l= +a.garbageBin;l||(l=a.createElement("div"));p&&l.appendChild(p);l.innerHTML=""};a.correctFloat=function(a,l){return parseFloat(a.toPrecision(l||14))};a.setAnimation=function(p,l){l.renderer.globalAnimation=a.pick(p,l.options.chart.animation,!0)};a.animObject=function(p){return a.isObject(p)?a.merge(p):{duration:p?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(p,l,r,w){p=+p||0;l=+l;var t=a.defaultOptions.lang, +k=(p.toString().split(".")[1]||"").length,m,e,g=Math.abs(p);-1===l?l=Math.min(k,20):a.isNumber(l)||(l=2);m=String(a.pInt(g.toFixed(l)));e=3p?"-":"")+(e?m.substr(0,e)+w:"");p+=m.substr(e).replace(/(\d{3})(?=\d)/g,"$1"+w);l&&(w=Math.abs(g-m+Math.pow(10,-Math.max(l,k)-1)),p+=r+w.toFixed(l).slice(2));return p};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(p,l){return"width"===l?Math.min(p.offsetWidth, +p.scrollWidth)-a.getStyle(p,"padding-left")-a.getStyle(p,"padding-right"):"height"===l?Math.min(p.offsetHeight,p.scrollHeight)-a.getStyle(p,"padding-top")-a.getStyle(p,"padding-bottom"):(p=H.getComputedStyle(p,void 0))&&a.pInt(p.getPropertyValue(l))};a.inArray=function(a,l){return l.indexOf?l.indexOf(a):[].indexOf.call(l,a)};a.grep=function(a,l){return[].filter.call(a,l)};a.map=function(a,l){for(var r=[],p=0,t=a.length;pl;l++)w[l]+=p(255*a),0>w[l]&&(w[l]=0),255z.width)z={width:0,height:0}}else z=this.htmlGetBBox();b.isSVG&&(a=z.width, +b=z.height,c&&L&&"11px"===L.fontSize&&"16.9"===b.toPrecision(3)&&(z.height=b=14),v&&(z.width=Math.abs(b*Math.sin(d))+Math.abs(a*Math.cos(d)),z.height=Math.abs(b*Math.cos(d))+Math.abs(a*Math.sin(d))));if(g&&0]*>/g,"")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,c,v){"string"===typeof a?v.setAttribute(c, +a):a&&this.colorGradient(a,c,v)},visibilitySetter:function(a,c,v){"inherit"===a?v.removeAttribute(c):v.setAttribute(c,a)},zIndexSetter:function(a,c){var v=this.renderer,z=this.parentGroup,b=(z||v).element||v.box,d,n=this.element,f;d=this.added;var e;k(a)&&(n.zIndex=a,a=+a,this[c]===a&&(d=!1),this[c]=a);if(d){(a=this.zIndex)&&z&&(z.handleZ=!0);c=b.childNodes;for(e=0;ea||!k(a)&&k(d)||0>a&&!k(d)&&b!==v.box)&&(b.insertBefore(n,z),f=!0);f||b.appendChild(n)}return f}, +_defaultSetter:function(a,c,v){v.setAttribute(c,a)}};D.prototype.yGetter=D.prototype.xGetter;D.prototype.translateXSetter=D.prototype.translateYSetter=D.prototype.rotationSetter=D.prototype.verticalAlignSetter=D.prototype.scaleXSetter=D.prototype.scaleYSetter=function(a,c){this[c]=a;this.doTransform=!0};D.prototype["stroke-widthSetter"]=D.prototype.strokeSetter=function(a,c,v){this[c]=a;this.stroke&&this["stroke-width"]?(D.prototype.fillSetter.call(this,this.stroke,"stroke",v),v.setAttribute("stroke-width", +this["stroke-width"]),this.hasStroke=!0):"stroke-width"===c&&0===a&&this.hasStroke&&(v.removeAttribute("stroke"),this.hasStroke=!1)};B=a.SVGRenderer=function(){this.init.apply(this,arguments)};B.prototype={Element:D,SVG_NS:K,init:function(a,c,v,b,d,n){var z;b=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}).css(this.getStyle(b));z=b.element;a.appendChild(z);-1===a.innerHTML.indexOf("xmlns")&&p(z,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=z;this.boxWrapper=b;this.alignedObjects= +[];this.url=(E||A)&&g.getElementsByTagName("base").length?R.location.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(g.createTextNode("Created with Highstock 5.0.3"));this.defs=this.createElement("defs").add();this.allowHTML=n;this.forExport=d;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(c,v,!1);var f;E&&a.getBoundingClientRect&&(c=function(){w(a,{left:0,top:0});f=a.getBoundingClientRect(); +w(a,{left:Math.ceil(f.left)-f.left+"px",top:Math.ceil(f.top)-f.top+"px"})},c(),this.unSubPixelFix=G(R,"resize",c))},getStyle:function(a){return this.style=C({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();e(this.gradients||{});this.gradients= +null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var c=new this.Element;c.init(this,a);return c},draw:J,getRadialAttr:function(a,c){return{cx:a[0]-a[2]/2+c.cx*a[2],cy:a[1]-a[2]/2+c.cy*a[2],r:c.r*a[2]}},buildText:function(a){for(var c=a.element,z=this,b=z.forExport,n=y(a.textStr,"").toString(),f=-1!==n.indexOf("\x3c"),e=c.childNodes,q,F,x,A,I=p(c,"x"),m=a.styles,k=a.textWidth,C=m&&m.lineHeight,M=m&&m.textOutline,J=m&& +"ellipsis"===m.textOverflow,E=e.length,O=k&&!a.added&&this.box,t=function(a){var v;v=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:m&&m.fontSize||z.style.fontSize||12;return C?u(C):z.fontMetrics(v,a.getAttribute("style")?a:c).h};E--;)c.removeChild(e[E]);f||M||J||k||-1!==n.indexOf(" ")?(q=/<.*class="([^"]+)".*>/,F=/<.*style="([^"]+)".*>/,x=/<.*href="(http[^"]+)".*>/,O&&O.appendChild(c),n=f?n.replace(/<(b|strong)>/g,'\x3cspan style\x3d"font-weight:bold"\x3e').replace(/<(i|em)>/g,'\x3cspan style\x3d"font-style:italic"\x3e').replace(//g,"\x3c/span\x3e").split(//g):[n],n=d(n,function(a){return""!==a}),h(n,function(d,n){var f,e=0;d=d.replace(/^\s+|\s+$/g,"").replace(//g,"\x3c/span\x3e|||");f=d.split("|||");h(f,function(d){if(""!==d||1===f.length){var u={},y=g.createElementNS(z.SVG_NS,"tspan"),L,h;q.test(d)&&(L=d.match(q)[1],p(y,"class",L));F.test(d)&&(h=d.match(F)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),p(y,"style",h));x.test(d)&&!b&&(p(y, +"onclick",'location.href\x3d"'+d.match(x)[1]+'"'),w(y,{cursor:"pointer"}));d=(d.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"\x3c").replace(/>/g,"\x3e");if(" "!==d){y.appendChild(g.createTextNode(d));e?u.dx=0:n&&null!==I&&(u.x=I);p(y,u);c.appendChild(y);!e&&n&&(!v&&b&&w(y,{display:"block"}),p(y,"dy",t(y)));if(k){u=d.replace(/([^\^])-/g,"$1- ").split(" ");L="nowrap"===m.whiteSpace;for(var C=1k,void 0===A&&(A=M),J&&A?(Q/=2,""===l||!M&&.5>Q?u=[]:(l=d.substring(0,l.length+(M?-1:1)*Math.ceil(Q)),u=[l+(3k&&(k=P)),u.length&&y.appendChild(g.createTextNode(u.join(" ").replace(/- /g, +"-")));a.rotation=R}e++}}})}),A&&a.attr("title",a.textStr),O&&O.removeChild(c),M&&a.applyTextOutline&&a.applyTextOutline(M)):c.appendChild(g.createTextNode(n.replace(/</g,"\x3c").replace(/>/g,"\x3e")))},getContrast:function(a){a=r(a).rgba;return 510v?d>c+f&&de?d>c+f&&db&&e>a+f&&ed&&e>a+f&&ea?a+3:Math.round(1.2*a);return{h:c,b:Math.round(.8*c),f:a}},rotCorr:function(a, +c,v){var b=a;c&&v&&(b=Math.max(b*Math.cos(c*m),4));return{x:-a/3*Math.sin(c*m),y:b}},label:function(a,c,v,b,d,n,f,e,K){var q=this,u=q.g("button"!==K&&"label"),y=u.text=q.text("",0,0,f).attr({zIndex:1}),g,F,z=0,A=3,L=0,m,M,J,E,O,t={},l,R,r=/^url\((.*?)\)$/.test(b),p=r,P,w,Q,S;K&&u.addClass("highcharts-"+K);p=r;P=function(){return(l||0)%2/2};w=function(){var a=y.element.style,c={};F=(void 0===m||void 0===M||O)&&k(y.textStr)&&y.getBBox();u.width=(m||F.width||0)+2*A+L;u.height=(M||F.height||0)+2*A;R= +A+q.fontMetrics(a&&a.fontSize,y).b;p&&(g||(u.box=g=q.symbols[b]||r?q.symbol(b):q.rect(),g.addClass(("button"===K?"":"highcharts-label-box")+(K?" highcharts-"+K+"-box":"")),g.add(u),a=P(),c.x=a,c.y=(e?-R:0)+a),c.width=Math.round(u.width),c.height=Math.round(u.height),g.attr(C(c,t)),t={})};Q=function(){var a=L+A,c;c=e?0:R;k(m)&&F&&("center"===O||"right"===O)&&(a+={center:.5,right:1}[O]*(m-F.width));if(a!==y.x||c!==y.y)y.attr("x",a),void 0!==c&&y.attr("y",c);y.x=a;y.y=c};S=function(a,c){g?g.attr(a,c): +t[a]=c};u.onAdd=function(){y.add(u);u.attr({text:a||0===a?a:"",x:c,y:v});g&&k(d)&&u.attr({anchorX:d,anchorY:n})};u.widthSetter=function(a){m=a};u.heightSetter=function(a){M=a};u["text-alignSetter"]=function(a){O=a};u.paddingSetter=function(a){k(a)&&a!==A&&(A=u.padding=a,Q())};u.paddingLeftSetter=function(a){k(a)&&a!==L&&(L=a,Q())};u.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==z&&(z=a,F&&u.attr({x:J}))};u.textSetter=function(a){void 0!==a&&y.textSetter(a);w();Q()};u["stroke-widthSetter"]= +function(a,c){a&&(p=!0);l=this["stroke-width"]=a;S(c,a)};u.strokeSetter=u.fillSetter=u.rSetter=function(a,c){"fill"===c&&a&&(p=!0);S(c,a)};u.anchorXSetter=function(a,c){d=a;S(c,Math.round(a)-P()-J)};u.anchorYSetter=function(a,c){n=a;S(c,a-E)};u.xSetter=function(a){u.x=a;z&&(a-=z*((m||F.width)+2*A));J=Math.round(a);u.attr("translateX",J)};u.ySetter=function(a){E=u.y=Math.round(a);u.attr("translateY",E)};var T=u.css;return C(u,{css:function(a){if(a){var c={};a=x(a);h(u.textProps,function(v){void 0!== +a[v]&&(c[v]=a[v],delete a[v])});y.css(c)}return T.call(u,a)},getBBox:function(){return{width:F.width+2*A,height:F.height+2*A,x:F.x-A,y:F.y-A}},shadow:function(a){a&&(w(),g&&g.shadow(a));return u},destroy:function(){I(u.element,"mouseenter");I(u.element,"mouseleave");y&&(y=y.destroy());g&&(g=g.destroy());D.prototype.destroy.call(u);u=q=w=Q=S=null}})}};a.Renderer=B})(N);(function(a){var D=a.attr,B=a.createElement,G=a.css,H=a.defined,p=a.each,l=a.extend,r=a.isFirefox,w=a.isMS,t=a.isWebKit,k=a.pInt,m= +a.SVGRenderer,e=a.win,g=a.wrap;l(a.SVGElement.prototype,{htmlCss:function(a){var e=this.element;if(e=a&&"SPAN"===e.tagName&&a.width)delete a.width,this.textWidth=e,this.updateTransform();a&&"ellipsis"===a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=l(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=this.element;"text"===a.nodeName&&(a.style.position="absolute");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a= +this.renderer,e=this.element,f=this.translateX||0,d=this.translateY||0,b=this.x||0,q=this.y||0,g=this.textAlign||"left",c={left:0,center:.5,right:1}[g],F=this.styles;G(e,{marginLeft:f,marginTop:d});this.shadows&&p(this.shadows,function(a){G(a,{marginLeft:f+1,marginTop:d+1})});this.inverted&&p(e.childNodes,function(c){a.invertChild(c,e)});if("SPAN"===e.tagName){var n=this.rotation,A=k(this.textWidth),x=F&&F.whiteSpace,m=[n,g,e.innerHTML,this.textWidth,this.textAlign].join();m!==this.cTT&&(F=a.fontMetrics(e.style.fontSize).b, +H(n)&&this.setSpanRotation(n,c,F),G(e,{width:"",whiteSpace:x||"nowrap"}),e.offsetWidth>A&&/[ \-]/.test(e.textContent||e.innerText)&&G(e,{width:A+"px",display:"block",whiteSpace:x||"normal"}),this.getSpanCorrection(e.offsetWidth,F,c,n,g));G(e,{left:b+(this.xCorr||0)+"px",top:q+(this.yCorr||0)+"px"});t&&(F=e.offsetHeight);this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,g,f){var d={},b=w?"-ms-transform":t?"-webkit-transform":r?"MozTransform":e.opera?"-o-transform":"";d[b]=d.transform= +"rotate("+a+"deg)";d[b+(r?"Origin":"-origin")]=d.transformOrigin=100*g+"% "+f+"px";G(this.element,d)},getSpanCorrection:function(a,e,f){this.xCorr=-a*f;this.yCorr=-e}});l(m.prototype,{html:function(a,e,f){var d=this.createElement("span"),b=d.element,q=d.renderer,h=q.isSVG,c=function(a,c){p(["opacity","visibility"],function(b){g(a,b+"Setter",function(a,b,d,n){a.call(this,b,d,n);c[d]=b})})};d.textSetter=function(a){a!==b.innerHTML&&delete this.bBox;b.innerHTML=this.textStr=a;d.htmlUpdateTransform()}; +h&&c(d,d.element.style);d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,c){"align"===c&&(c="textAlign");d[c]=a;d.htmlUpdateTransform()};d.attr({text:a,x:Math.round(e),y:Math.round(f)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:"absolute"});b.style.whiteSpace="nowrap";d.css=d.htmlCss;h&&(d.add=function(a){var n,f=q.box.parentNode,e=[];if(this.parentGroup=a){if(n=a.div,!n){for(;a;)e.push(a),a=a.parentGroup;p(e.reverse(),function(a){var b,d=D(a.element, +"class");d&&(d={className:d});n=a.div=a.div||B("div",d,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},n||f);b=n.style;l(a,{translateXSetter:function(c,d){b.left=c+"px";a[d]=c;a.doTransform=!0},translateYSetter:function(c,d){b.top=c+"px";a[d]=c;a.doTransform=!0}});c(a,b)})}}else n=f;n.appendChild(b);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})})(N);(function(a){var D, +B,G=a.createElement,H=a.css,p=a.defined,l=a.deg2rad,r=a.discardElement,w=a.doc,t=a.each,k=a.erase,m=a.extend;D=a.extendClass;var e=a.isArray,g=a.isNumber,h=a.isObject,C=a.merge;B=a.noop;var f=a.pick,d=a.pInt,b=a.SVGElement,q=a.SVGRenderer,E=a.win;a.svg||(B={docMode8:w&&8===w.documentMode,init:function(a,b){var c=["\x3c",b,' filled\x3d"f" stroked\x3d"f"'],d=["position: ","absolute",";"],f="div"===b;("shape"===b||f)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",f?"hidden":"visible"); +c.push(' style\x3d"',d.join(""),'"/\x3e');b&&(c=f||"span"===b||"img"===b?c.join(""):a.prepVML(c),this.element=G(c));this.renderer=a},add:function(a){var c=this.renderer,b=this.element,d=c.box,f=a&&a.inverted,d=a?a.element||a:d;a&&(this.parentGroup=a);f&&c.invertChild(b,d);d.appendChild(b);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr("class",this.className);return this},updateTransform:b.prototype.htmlUpdateTransform, +setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*l),d=Math.sin(a*l);H(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11\x3d",b,", M12\x3d",-d,", M21\x3d",d,", M22\x3d",b,", sizingMethod\x3d'auto expand')"].join(""):"none"})},getSpanCorrection:function(a,b,d,e,q){var c=e?Math.cos(e*l):1,n=e?Math.sin(e*l):0,u=f(this.elemHeight,this.element.offsetHeight),g;this.xCorr=0>c&&-a;this.yCorr=0>n&&-u;g=0>c*n;this.xCorr+=n*b*(g?1-d:d);this.yCorr-=c*b*(e?g?d:1-d:1);q&&"left"!== +q&&(this.xCorr-=a*d*(0>c?-1:1),e&&(this.yCorr-=u*d*(0>n?-1:1)),H(this.element,{textAlign:q}))},pathToVML:function(a){for(var c=a.length,b=[];c--;)g(a[c])?b[c]=Math.round(10*a[c])-5:"Z"===a[c]?b[c]="x":(b[c]=a[c],!a.isArc||"wa"!==a[c]&&"at"!==a[c]||(b[c+5]===b[c+7]&&(b[c+7]+=a[c+7]>a[c+5]?1:-1),b[c+6]===b[c+8]&&(b[c+8]+=a[c+8]>a[c+6]?1:-1)));return b.join(" ")||"x"},clip:function(a){var c=this,b;a?(b=a.members,k(b,c),b.push(c),c.destroyClip=function(){k(b,c)},a=a.getCSS(c)):(c.destroyClip&&c.destroyClip(), +a={clip:c.docMode8?"inherit":"rect(auto)"});return c.css(a)},css:b.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&r(a)},destroy:function(){this.destroyClip&&this.destroyClip();return b.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=E.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c;a=a.split(/[ ,]/);c=a.length;if(9===c||11===c)a[c-4]=a[c-2]=d(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,e){var c=[],n,q=this.element, +g=this.renderer,u,I=q.style,F,v=q.path,K,h,m,z;v&&"string"!==typeof v.value&&(v="x");h=v;if(a){m=f(a.width,3);z=(a.opacity||.15)/m;for(n=1;3>=n;n++)K=2*m+1-2*n,e&&(h=this.cutOffPath(v.value,K+.5)),F=['\x3cshape isShadow\x3d"true" strokeweight\x3d"',K,'" filled\x3d"false" path\x3d"',h,'" coordsize\x3d"10 10" style\x3d"',q.style.cssText,'" /\x3e'],u=G(g.prepVML(F),null,{left:d(I.left)+f(a.offsetX,1),top:d(I.top)+f(a.offsetY,1)}),e&&(u.cutOff=K+1),F=['\x3cstroke color\x3d"',a.color||"#000000",'" opacity\x3d"', +z*n,'"/\x3e'],G(g.prepVML(F),null,null,u),b?b.element.appendChild(u):q.parentNode.insertBefore(u,q),c.push(u);this.shadows=c}return this},updateShadows:B,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,d){(d.getElementsByTagName("stroke")[0]||G(this.renderer.prepVML(["\x3cstroke/\x3e"]),null,null,d))[b]=a||"solid";this[b]=a},dSetter:function(a,b,d){var c=this.shadows; +a=a||[];this.d=a.join&&a.join(" ");d.path=a=this.pathToVML(a);if(c)for(d=c.length;d--;)c[d].path=c[d].cutOff?this.cutOffPath(a,c[d].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,d){var c=d.nodeName;"SPAN"===c?d.style.color=a:"IMG"!==c&&(d.filled="none"!==a,this.setAttr("fillcolor",this.renderer.color(a,d,b,this)))},"fill-opacitySetter":function(a,b,d){G(this.renderer.prepVML(["\x3c",b.split("-")[0],' opacity\x3d"',a,'"/\x3e']),null,null,d)},opacitySetter:B,rotationSetter:function(a,b,d){d= +d.style;this[b]=d[b]=a;d.left=-Math.round(Math.sin(a*l)+1)+"px";d.top=Math.round(Math.cos(a*l))+"px"},strokeSetter:function(a,b,d){this.setAttr("strokecolor",this.renderer.color(a,d,b,this))},"stroke-widthSetter":function(a,b,d){d.stroked=!!a;this[b]=a;g(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,d){"inherit"===a&&(a="visible");this.shadows&&t(this.shadows,function(c){c.style[b]=a});"DIV"===d.nodeName&&(a="hidden"===a?"-999em": +0,this.docMode8||(d.style[b]=a?"visible":"hidden"),b="top");d.style[b]=a},xSetter:function(a,b,d){this[b]=a;"x"===b?b="left":"y"===b&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):d.style[b]=a},zIndexSetter:function(a,b,d){d.style[b]=a}},B["stroke-opacitySetter"]=B["fill-opacitySetter"],a.VMLElement=B=D(b,B),B.prototype.ySetter=B.prototype.widthSetter=B.prototype.heightSetter=B.prototype.xSetter,B={Element:B,isIE8:-1l[0]&&c.push([1,l[1]]);t(c,function(c,b){q.test(c[1])?(n=a.color(c[1]),v=n.get("rgb"),K=n.get("a")):(v=c[1],K=1);r.push(100*c[0]+"% "+v);b?(m=K,k=v):(z=K,E=v)});if("fill"===d)if("gradient"===g)d=A.x1||A[0]||0,c=A.y1||A[1]||0,F=A.x2||A[2]||0,A=A.y2||A[3]||0,C='angle\x3d"'+(90-180*Math.atan((A-c)/(F-d))/Math.PI)+'"',p();else{var h=A.r,w=2*h,B=2*h,D=A.cx,H=A.cy,V=b.radialReference,U,h=function(){V&&(U=f.getBBox(),D+=(V[0]- +U.x)/U.width-.5,H+=(V[1]-U.y)/U.height-.5,w*=V[2]/U.width,B*=V[2]/U.height);C='src\x3d"'+a.getOptions().global.VMLRadialGradientURL+'" size\x3d"'+w+","+B+'" origin\x3d"0.5,0.5" position\x3d"'+D+","+H+'" color2\x3d"'+E+'" ';p()};f.added?h():f.onAdd=h;h=k}else h=v}else q.test(c)&&"IMG"!==b.tagName?(n=a.color(c),f[d+"-opacitySetter"](n.get("a"),d,b),h=n.get("rgb")):(h=b.getElementsByTagName(d),h.length&&(h[0].opacity=1,h[0].type="solid"),h=c);return h},prepVML:function(a){var c=this.isIE8;a=a.join(""); +c?(a=a.replace("/\x3e",' xmlns\x3d"urn:schemas-microsoft-com:vml" /\x3e'),a=-1===a.indexOf('style\x3d"')?a.replace("/\x3e",' style\x3d"display:inline-block;behavior:url(#default#VML);" /\x3e'):a.replace('style\x3d"','style\x3d"display:inline-block;behavior:url(#default#VML);')):a=a.replace("\x3c","\x3chcv:");return a},text:q.prototype.html,path:function(a){var c={coordsize:"10 10"};e(a)?c.d=a:h(a)&&m(c,a);return this.createElement("shape").attr(c)},circle:function(a,b,d){var c=this.symbol("circle"); +h(a)&&(d=a.r,b=a.y,a=a.x);c.isCircle=!0;c.r=d;return c.attr({x:a,y:b})},g:function(a){var c;a&&(c={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement("div").attr(c)},image:function(a,b,d,f,e){var c=this.createElement("img").attr({src:a});1f&&m-d*bg&&(F=Math.round((e-m)/Math.cos(f*w)));else if(e=m+(1-d)*b,m-d*bg&&(E=g-a.x+E*d,c=-1),E=Math.min(q, +E),EE||k.autoRotation&&(C.styles||{}).width)F=E;F&&(n.width=F,(k.options.labels.style||{}).textOverflow||(n.textOverflow="ellipsis"),C.css(n))},getPosition:function(a,k,m,e){var g=this.axis,h=g.chart,l=e&&h.oldChartHeight||h.chartHeight;return{x:a?g.translate(k+m,null,null,e)+g.transB:g.left+g.offset+(g.opposite?(e&&h.oldChartWidth||h.chartWidth)-g.right-g.left:0),y:a?l-g.bottom+g.offset-(g.opposite?g.height:0):l-g.translate(k+m,null, +null,e)-g.transB}},getLabelPosition:function(a,k,m,e,g,h,l,f){var d=this.axis,b=d.transA,q=d.reversed,E=d.staggerLines,c=d.tickRotCorr||{x:0,y:0},F=g.y;B(F)||(F=0===d.side?m.rotation?-8:-m.getBBox().height:2===d.side?c.y+8:Math.cos(m.rotation*w)*(c.y-m.getBBox(!1,0).height/2));a=a+g.x+c.x-(h&&e?h*b*(q?-1:1):0);k=k+F-(h&&!e?h*b*(q?1:-1):0);E&&(m=l/(f||1)%E,d.opposite&&(m=E-m-1),k+=d.labelOffset/E*m);return{x:a,y:Math.round(k)}},getMarkPath:function(a,k,m,e,g,h){return h.crispLine(["M",a,k,"L",a+(g? +0:-m),k+(g?m:0)],e)},render:function(a,k,m){var e=this.axis,g=e.options,h=e.chart.renderer,C=e.horiz,f=this.type,d=this.label,b=this.pos,q=g.labels,E=this.gridLine,c=f?f+"Tick":"tick",F=e.tickSize(c),n=this.mark,A=!n,x=q.step,p={},y=!0,u=e.tickmarkOffset,I=this.getPosition(C,b,u,k),M=I.x,I=I.y,v=C&&M===e.pos+e.len||!C&&I===e.pos?-1:1,K=f?f+"Grid":"grid",O=g[K+"LineWidth"],R=g[K+"LineColor"],z=g[K+"LineDashStyle"],K=l(g[c+"Width"],!f&&e.isXAxis?1:0),c=g[c+"Color"];m=l(m,1);this.isActive=!0;E||(p.stroke= +R,p["stroke-width"]=O,z&&(p.dashstyle=z),f||(p.zIndex=1),k&&(p.opacity=0),this.gridLine=E=h.path().attr(p).addClass("highcharts-"+(f?f+"-":"")+"grid-line").add(e.gridGroup));if(!k&&E&&(b=e.getPlotLinePath(b+u,E.strokeWidth()*v,k,!0)))E[this.isNew?"attr":"animate"]({d:b,opacity:m});F&&(e.opposite&&(F[0]=-F[0]),A&&(this.mark=n=h.path().addClass("highcharts-"+(f?f+"-":"")+"tick").add(e.axisGroup),n.attr({stroke:c,"stroke-width":K})),n[A?"attr":"animate"]({d:this.getMarkPath(M,I,F[0],n.strokeWidth()* +v,C,h),opacity:m}));d&&H(M)&&(d.xy=I=this.getLabelPosition(M,I,d,C,q,u,a,x),this.isFirst&&!this.isLast&&!l(g.showFirstLabel,1)||this.isLast&&!this.isFirst&&!l(g.showLastLabel,1)?y=!1:!C||e.isRadial||q.step||q.rotation||k||0===m||this.handleOverflow(I),x&&a%x&&(y=!1),y&&H(I.y)?(I.opacity=m,d[this.isNew?"attr":"animate"](I)):(r(d),d.attr("y",-9999)),this.isNew=!1)},destroy:function(){G(this,this.axis)}}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.AxisPlotLineOrBandExtension, +l=a.color,r=a.correctFloat,w=a.defaultOptions,t=a.defined,k=a.deg2rad,m=a.destroyObjectProperties,e=a.each,g=a.error,h=a.extend,C=a.fireEvent,f=a.format,d=a.getMagnitude,b=a.grep,q=a.inArray,E=a.isArray,c=a.isNumber,F=a.isString,n=a.merge,A=a.normalizeTickInterval,x=a.pick,J=a.PlotLineOrBand,y=a.removeEvent,u=a.splat,I=a.syncTimeout,M=a.Tick;a.Axis=function(){this.init.apply(this,arguments)};a.Axis.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M", +hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,labels:{enabled:!0,style:{color:"#666666",cursor:"default",fontSize:"11px"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb", +lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"#000000",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15}, +title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,c){var b=c.isX;this.chart=a;this.horiz=a.inverted?!b:b;this.isXAxis=b;this.coll=this.coll||(b?"xAxis":"yAxis");this.opposite=c.opposite;this.side=c.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(c);var d=this.options,v=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter; +this.userOptions=c;this.minPixelPadding=0;this.reversed=d.reversed;this.visible=!1!==d.visible;this.zoomEnabled=!1!==d.zoomEnabled;this.hasNames="category"===v||!0===d.categories;this.categories=d.categories||this.hasNames;this.names=this.names||[];this.isLog="logarithmic"===v;this.isDatetimeAxis="datetime"===v;this.isLinked=t(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom; +this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stacksTouched=0;this.min=this.max=null;this.crosshair=x(d.crosshair,u(a.options.tooltip.crosshairs)[b?0:1],!1);var f;c=this.options.events;-1===q(this,a.axes)&&(b?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];a.inverted&&b&&void 0===this.reversed&&(this.reversed=!0);this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in c)D(this,f,c[f]); +this.isLog&&(this.val2lin=this.log2lin,this.lin2val=this.lin2log)},setOptions:function(a){this.options=n(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],n(w[this.coll],a))},defaultLabelFormatter:function(){var c=this.axis,b=this.value,d=c.categories,e=this.dateTimeLabelFormat,q=w.lang,u=q.numericSymbols,q=q.numericSymbolMagnitude||1E3,n=u&&u.length,g,y=c.options.labels.format, +c=c.isLog?b:c.tickInterval;if(y)g=f(y,this);else if(d)g=b;else if(e)g=a.dateFormat(e,b);else if(n&&1E3<=c)for(;n--&&void 0===g;)d=Math.pow(q,n+1),c>=d&&0===10*b%d&&null!==u[n]&&0!==b&&(g=a.numberFormat(b/d,-1)+u[n]);void 0===g&&(g=1E4<=Math.abs(b)?a.numberFormat(b,-1):a.numberFormat(b,-1,void 0,""));return g},getSeriesExtremes:function(){var a=this,d=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();e(a.series,function(v){if(v.visible|| +!d.options.chart.ignoreHiddenSeries){var f=v.options,e=f.threshold,q;a.hasVisibleSeries=!0;a.isLog&&0>=e&&(e=null);if(a.isXAxis)f=v.xData,f.length&&(v=H(f),c(v)||v instanceof Date||(f=b(f,function(a){return c(a)}),v=H(f)),a.dataMin=Math.min(x(a.dataMin,f[0]),v),a.dataMax=Math.max(x(a.dataMax,f[0]),G(f)));else if(v.getExtremes(),q=v.dataMax,v=v.dataMin,t(v)&&t(q)&&(a.dataMin=Math.min(x(a.dataMin,v),v),a.dataMax=Math.max(x(a.dataMax,q),q)),t(e)&&(a.threshold=e),!f.softThreshold||a.isLog)a.softThreshold= +!1}})},translate:function(a,b,d,f,e,q){var v=this.linkedParent||this,u=1,n=0,g=f?v.oldTransA:v.transA;f=f?v.oldMin:v.min;var K=v.minPixelPadding;e=(v.isOrdinal||v.isBroken||v.isLog&&e)&&v.lin2val;g||(g=v.transA);d&&(u*=-1,n=v.len);v.reversed&&(u*=-1,n-=u*(v.sector||v.len));b?(a=(a*u+n-K)/g+f,e&&(a=v.lin2val(a))):(e&&(a=v.val2lin(a)),a=u*(a-f)*g+n+u*K+(c(q)?g*q:0));return a},toPixels:function(a,c){return this.translate(a,!1,!this.horiz,null,!0)+(c?0:this.pos)},toValue:function(a,c){return this.translate(a- +(c?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,d,f,e){var v=this.chart,q=this.left,u=this.top,n,g,K=d&&v.oldChartHeight||v.chartHeight,y=d&&v.oldChartWidth||v.chartWidth,z;n=this.transB;var h=function(a,c,b){if(ab)f?a=Math.min(Math.max(c,a),b):z=!0;return a};e=x(e,this.translate(a,null,null,d));a=d=Math.round(e+n);n=g=Math.round(K-e-n);c(e)?this.horiz?(n=u,g=K-this.bottom,a=d=h(a,q,q+this.width)):(a=q,d=y-this.right,n=g=h(n,u,u+this.height)):z=!0;return z&&!f?null:v.renderer.crispLine(["M", +a,n,"L",d,g],b||1)},getLinearTickPositions:function(a,b,d){var v,f=r(Math.floor(b/a)*a),e=r(Math.ceil(d/a)*a),q=[];if(b===d&&c(b))return[b];for(b=f;b<=e;){q.push(b);b=r(b+a);if(b===v)break;v=b}return q},getMinorTickPositions:function(){var a=this.options,c=this.tickPositions,b=this.minorTickInterval,d=[],f,e=this.pointRangePadding||0;f=this.min-e;var e=this.max+e,q=e-f;if(q&&q/b=this.minRange,q,u,n,g,y,h;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(t(a.min)||t(a.max)?this.minRange=null:(e(this.series,function(a){g=a.xData;for(u=y=a.xIncrement? +1:g.length-1;0=E?(p=E,m=0):b.dataMax<=E&&(J=E,I=0)),b.min=x(w,p,b.dataMin),b.max=x(B,J,b.dataMax));q&&(!a&&0>=Math.min(b.min, +x(b.dataMin,b.min))&&g(10,1),b.min=r(u(b.min),15),b.max=r(u(b.max),15));b.range&&t(b.max)&&(b.userMin=b.min=w=Math.max(b.min,b.minFromRange()),b.userMax=B=b.max,b.range=null);C(b,"foundExtremes");b.beforePadding&&b.beforePadding();b.adjustForMinRange();!(l||b.axisPointRange||b.usePercentage||h)&&t(b.min)&&t(b.max)&&(u=b.max-b.min)&&(!t(w)&&m&&(b.min-=u*m),!t(B)&&I&&(b.max+=u*I));c(f.floor)?b.min=Math.max(b.min,f.floor):c(f.softMin)&&(b.min=Math.min(b.min,f.softMin));c(f.ceiling)?b.max=Math.min(b.max, +f.ceiling):c(f.softMax)&&(b.max=Math.max(b.max,f.softMax));M&&t(b.dataMin)&&(E=E||0,!t(w)&&b.min=E?b.min=E:!t(B)&&b.max>E&&b.dataMax<=E&&(b.max=E));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:h&&!k&&F===b.linkedParent.options.tickPixelInterval?k=b.linkedParent.tickInterval:x(k,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,l?1:(b.max-b.min)*F/Math.max(b.len,F));y&&!a&&e(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0); +b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!k&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=x(f.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!k&&b.tickIntervalb.tickInterval&&1E3b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval= +b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,f=a.startOnTick,e=a.endOnTick,q;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units), +this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,d&&(d=d.apply(this,[this.min,this.max])))&&(this.tickPositions=b=d);this.isLinked||(this.trimTicks(b,f,e),this.min===this.max&&t(this.min)&&!this.tickAmount&&(q=!0,this.min-=.5,this.max+=.5),this.single=q,c||d||this.adjustTickAmount())}, +trimTicks:function(a,b,c){var d=a[0],f=a[a.length-1],v=this.minPointOffset||0;if(b)this.min=d;else for(;this.min-v>a[0];)a.shift();if(c)this.max=f;else for(;this.max+vb&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,f=b&&b.length;if(fc&&(this.tickInterval*= +2,this.setTickPositions());if(t(d)){for(a=c=b.length;a--;)(3===d&&1===a%2||2>=d&&0=f&&(b=f)),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,f=x(b.width,a.plotWidth-c+(b.offsetRight||0)),e=x(b.height,a.plotHeight),q=x(b.top,a.plotTop),b=x(b.left,a.plotLeft+c),c=/%$/;c.test(e)&&(e=Math.round(parseFloat(e)/ +100*a.plotHeight));c.test(q)&&(q=Math.round(parseFloat(q)/100*a.plotHeight+a.plotTop));this.left=b;this.top=q;this.width=f;this.height=e;this.bottom=a.chartHeight-e-q;this.right=a.chartWidth-f-b;this.len=Math.max(d?f:e,0);this.pos=d?b:q},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?r(b(this.min)):this.min,max:a?r(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=this.lin2log, +d=b?c(this.min):this.min,b=b?c(this.max):this.max;null===a?a=d:d>a?a=d:ba?"right":195a?"left":"center"},tickSize:function(a){var b=this.options,c=b[a+"Length"],d=x(b[a+"Width"],"tick"===a&&this.isXAxis?1:0);if(d&&c)return"inside"===b[a+"Position"]&&(c=-c),[c,d]},labelMetrics:function(){return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize, +this.ticks[0]&&this.ticks[0].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,c=this.tickInterval,d=c,f=this.len/(((this.categories?1:0)+this.max-this.min)/c),q,u=a.rotation,n=this.labelMetrics(),g,y=Number.MAX_VALUE,h,I=function(a){a/=f||1;a=1=a)g=I(Math.abs(n.h/Math.sin(k*a))),b=g+Math.abs(a/360),b(c.step||0)&&!c.rotation&&(this.staggerLines||1)*a.plotWidth/d||!b&&(f&&f-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,f=this.options.labels,q=this.horiz,u=this.getSlotWidth(),g=Math.max(1, +Math.round(u-2*(f.padding||5))),y={},h=this.labelMetrics(),I=f.style&&f.style.textOverflow,A,x=0,m,k;F(f.rotation)||(y.rotation=f.rotation||0);e(c,function(a){(a=d[a])&&a.labelLength>x&&(x=a.labelLength)});this.maxLabelLength=x;if(this.autoRotation)x>g&&x>h.h?y.rotation=this.labelRotation:this.labelRotation=0;else if(u&&(A={width:g+"px"},!I))for(A.textOverflow="clip",m=c.length;!q&&m--;)if(k=c[m],g=d[k].label)g.styles&&"ellipsis"===g.styles.textOverflow?g.css({textOverflow:"clip"}):d[k].labelLength> +u&&g.css({width:u+"px"}),g.getBBox().height>this.len/c.length-(h.h-h.f)&&(g.specCss={textOverflow:"ellipsis"});y.rotation&&(A={width:(x>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+"px"},I||(A.textOverflow="ellipsis"));if(this.labelAlign=f.align||this.autoLabelAlign(this.labelRotation))y.align=this.labelAlign;e(c,function(a){var b=(a=d[a])&&a.label;b&&(b.attr(y),A&&b.css(n(A,b.specCss)),delete b.specCss,a.rotation=y.rotation)});this.tickRotCorr=b.rotCorr(h.b,this.labelRotation||0,0!==this.side)}, +hasData:function(){return this.hasVisibleSeries||t(this.min)&&t(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,f=a.tickPositions,q=a.ticks,u=a.horiz,n=a.side,g=b.inverted?[1,0,3,2][n]:n,y,h,I=0,A,m=0,k=d.title,F=d.labels,E=0,l=a.opposite,C=b.axisOffset,b=b.clipOffset,p=[-1,1,1,-1][n],r,J=d.className,w=a.axisParent,B=this.tickSize("tick");y=a.hasData();a.showAxis=h=y||x(d.showEmpty,!0);a.staggerLines=a.horiz&&F.staggerLines;a.axisGroup||(a.gridGroup= +c.g("grid").attr({zIndex:d.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(J||"")).add(w),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(J||"")).add(w),a.labelGroup=c.g("axis-labels").attr({zIndex:F.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels "+(J||"")).add(w));if(y||a.isLinked)e(f,function(b){q[b]?q[b].addLabel():q[b]=new M(a,b)}),a.renderUnsquish(),!1===F.reserveSpace||0!==n&&2!==n&&{1:"left",3:"right"}[n]!== +a.labelAlign&&"center"!==a.labelAlign||e(f,function(a){E=Math.max(q[a].getLabelSize(),E)}),a.staggerLines&&(E*=a.staggerLines,a.labelOffset=E*(a.opposite?-1:1));else for(r in q)q[r].destroy(),delete q[r];k&&k.text&&!1!==k.enabled&&(a.axisTitle||((r=k.textAlign)||(r=(u?{low:"left",middle:"center",high:"right"}:{low:l?"right":"left",middle:"center",high:l?"left":"right"})[k.align]),a.axisTitle=c.text(k.text,0,0,k.useHTML).attr({zIndex:7,rotation:k.rotation||0,align:r}).addClass("highcharts-axis-title").css(k.style).add(a.axisGroup), +a.axisTitle.isNew=!0),h&&(I=a.axisTitle.getBBox()[u?"height":"width"],A=k.offset,m=t(A)?0:x(k.margin,u?5:10)),a.axisTitle[h?"show":"hide"](!0));a.renderLine();a.offset=p*x(d.offset,C[n]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=0===n?-a.labelMetrics().h:2===n?a.tickRotCorr.y:0;m=Math.abs(E)+m;E&&(m=m-c+p*(u?x(F.y,a.tickRotCorr.y+8*p):F.x));a.axisTitleMargin=x(A,m);C[n]=Math.max(C[n],a.axisTitleMargin+I+p*a.offset,m,y&&f.length&&B?B[0]:0);d=d.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[g]= +Math.max(b[g],d)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,f=this.horiz,e=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",f?this.left:e,f?d:this.top,"L",f?b.chartWidth-this.right:e,f?d:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),this.axisLine.attr({stroke:this.options.lineColor, +"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,f=this.options.title,e=a?b:c,q=this.opposite,u=this.offset,n=f.x||0,g=f.y||0,y=this.chart.renderer.fontMetrics(f.style&&f.style.fontSize,this.axisTitle).f,d={low:e+(a?0:d),middle:e+d/2,high:e+(a?d:0)}[f.align],b=(a?c+this.height:b)+(a?1:-1)*(q?-1:1)*this.axisTitleMargin+(2===this.side?y:0);return{x:a?d+n:b+(q?this.width:0)+u+n,y:a?b+g-(q?this.height:0)+u:d+g}},render:function(){var a= +this,b=a.chart,d=b.renderer,f=a.options,q=a.isLog,u=a.lin2log,n=a.isLinked,g=a.tickPositions,y=a.axisTitle,h=a.ticks,A=a.minorTicks,x=a.alternateBands,m=f.stackLabels,k=f.alternateGridColor,F=a.tickmarkOffset,E=a.axisLine,l=b.hasRendered&&c(a.oldMin),C=a.showAxis,p=B(d.globalAnimation),r,t;a.labelEdge.length=0;a.overlap=!1;e([h,A,x],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||n)a.minorTickInterval&&!a.categories&&e(a.getMinorTickPositions(),function(b){A[b]||(A[b]=new M(a,b,"minor")); +l&&A[b].isNew&&A[b].render(null,!0);A[b].render(null,!1,1)}),g.length&&(e(g,function(b,c){if(!n||b>=a.min&&b<=a.max)h[b]||(h[b]=new M(a,b)),l&&h[b].isNew&&h[b].render(c,!0,.1),h[b].render(c)}),F&&(0===a.min||a.single)&&(h[-1]||(h[-1]=new M(a,-1,null,!0)),h[-1].render(-1))),k&&e(g,function(c,d){t=void 0!==g[d+1]?g[d+1]+F:a.max-F;0===d%2&&c=e.second?0:A*Math.floor(c.getMilliseconds()/A));if(n>=e.second)c[B.hcSetSeconds](n>=e.minute?0:A*Math.floor(c.getSeconds()/ +A));if(n>=e.minute)c[B.hcSetMinutes](n>=e.hour?0:A*Math.floor(c[B.hcGetMinutes]()/A));if(n>=e.hour)c[B.hcSetHours](n>=e.day?0:A*Math.floor(c[B.hcGetHours]()/A));if(n>=e.day)c[B.hcSetDate](n>=e.month?1:A*Math.floor(c[B.hcGetDate]()/A));n>=e.month&&(c[B.hcSetMonth](n>=e.year?0:A*Math.floor(c[B.hcGetMonth]()/A)),g=c[B.hcGetFullYear]());if(n>=e.year)c[B.hcSetFullYear](g-g%A);if(n===e.week)c[B.hcSetDate](c[B.hcGetDate]()-c[B.hcGetDay]()+m(f,1));g=c[B.hcGetFullYear]();f=c[B.hcGetMonth]();var C=c[B.hcGetDate](), +y=c[B.hcGetHours]();if(B.hcTimezoneOffset||B.hcGetTimezoneOffset)x=(!q||!!B.hcGetTimezoneOffset)&&(k-h>4*e.month||t(h)!==t(k)),c=c.getTime(),c=new B(c+t(c));q=c.getTime();for(h=1;qr&&(!t||b<=w)&&void 0!==b&&h.push(b),b>w&&(q=!0),b=d;else r=e(r),w= +e(w),a=k[t?"minorTickInterval":"tickInterval"],a=p("auto"===a?null:a,this._minorAutoInterval,k.tickPixelInterval/(t?5:1)*(w-r)/((t?m/this.tickPositions.length:m)||1)),a=H(a,null,B(a)),h=G(this.getLinearTickPositions(a,r,w),g),t||(this._minorAutoInterval=a/5);t||(this.tickInterval=a);return h};D.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};D.prototype.lin2log=function(a){return Math.pow(10,a)}})(N);(function(a){var D=a.dateFormat,B=a.each,G=a.extend,H=a.format,p=a.isNumber,l=a.map,r= +a.merge,w=a.pick,t=a.splat,k=a.stop,m=a.syncTimeout,e=a.timeUnits;a.Tooltip=function(){this.init.apply(this,arguments)};a.Tooltip.prototype={init:function(a,e){this.chart=a;this.options=e;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=e.split&&!a.inverted;this.shared=e.shared||this.split},cleanSplit:function(a){B(this.chart.series,function(e){var g=e&&e.tt;g&&(!g.isActive||a?e.tt=g.destroy():g.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,e=this.options;this.label|| +(this.split?this.label=a.g("tooltip"):(this.label=a.label("",0,0,e.shape||"callout",null,null,e.useHTML,null,"tooltip").attr({padding:e.padding,r:e.borderRadius}),this.label.attr({fill:e.backgroundColor,"stroke-width":e.borderWidth}).css(e.style).shadow(e.shadow)),this.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();this.init(this.chart,r(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart, +!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,e,m,f){var d=this,b=d.now,q=!1!==d.options.animation&&!d.isHidden&&(1h-q?h:h-q);else if(v)b[a]=Math.max(g,e+q+f>c?e:e+q);else return!1},x=function(a,c,f,e){var q;ec-d?q=!1:b[a]=ec-f/2?c-f-2:e-f/2;return q},k=function(a){var b=c;c=h;h=b;g=a},y=function(){!1!==A.apply(0,c)?!1!==x.apply(0,h)||g||(k(!0),y()):g?b.x=b.y=0:(k(!0),y())};(f.inverted||1y&&(q=!1);a=(e.series&&e.series.yAxis&&e.series.yAxis.pos)+(e.plotY||0);a-=d.plotTop;f.push({target:e.isHeader?d.plotHeight+c:a,rank:e.isHeader?1:0,size:n.tt.getBBox().height+1,point:e,x:y,tt:A})});this.cleanSplit(); +a.distribute(f,d.plotHeight+c);B(f,function(a){var b=a.point;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:q||b.isHeader?a.x:b.plotX+d.plotLeft+w(m.distance,16),y:a.pos+d.plotTop,anchorX:b.plotX+d.plotLeft,anchorY:b.isHeader?a.pos+d.plotTop-15:b.plotY+d.plotTop})})},updatePosition:function(a){var e=this.chart,g=this.getLabel(),g=(this.options.positioner||this.getPosition).call(this,g.width,g.height,a);this.move(Math.round(g.x),Math.round(g.y||0),a.plotX+e.plotLeft,a.plotY+e.plotTop)}, +getXDateFormat:function(a,h,m){var f;h=h.dateTimeLabelFormats;var d=m&&m.closestPointRange,b,q={millisecond:15,second:12,minute:9,hour:6,day:3},g,c="millisecond";if(d){g=D("%m-%d %H:%M:%S.%L",a.x);for(b in e){if(d===e.week&&+D("%w",a.x)===m.options.startOfWeek&&"00:00:00.000"===g.substr(6)){b="week";break}if(e[b]>d){b=c;break}if(q[b]&&g.substr(q[b])!=="01-01 00:00:00.000".substr(q[b]))break;"week"!==b&&(c=b)}b&&(f=h[b])}else f=h.day;return f||h.year},tooltipFooterHeaderFormatter:function(a,e){var g= +e?"footer":"header";e=a.series;var f=e.tooltipOptions,d=f.xDateFormat,b=e.xAxis,q=b&&"datetime"===b.options.type&&p(a.key),g=f[g+"Format"];q&&!d&&(d=this.getXDateFormat(a,f,b));q&&d&&(g=g.replace("{point.key}","{point.key:"+d+"}"));return H(g,{point:a,series:e})},bodyFormatter:function(a){return l(a,function(a){var e=a.series.tooltipOptions;return(e.pointFormatter||a.point.tooltipFormatter).call(a.point,e.pointFormat)})}}})(N);(function(a){var D=a.addEvent,B=a.attr,G=a.charts,H=a.color,p=a.css,l= +a.defined,r=a.doc,w=a.each,t=a.extend,k=a.fireEvent,m=a.offset,e=a.pick,g=a.removeEvent,h=a.splat,C=a.Tooltip,f=a.win;a.Pointer=function(a,b){this.init(a,b)};a.Pointer.prototype={init:function(a,b){this.options=b;this.chart=a;this.runChartClick=b.chart.events&&!!b.chart.events.click;this.pinchDown=[];this.lastValidTouch={};C&&b.tooltip.enabled&&(a.tooltip=new C(a,b.tooltip),this.followTouchMove=e(b.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,d=b.options.chart, +f=d.zoomType||"",b=b.inverted;/touch/.test(a.type)&&(f=e(d.pinchType,f));this.zoomX=a=/x/.test(f);this.zoomY=f=/y/.test(f);this.zoomHor=a&&!b||f&&b;this.zoomVert=f&&!b||a&&b;this.hasZoom=a||f},normalize:function(a,b){var d,e;a=a||f.event;a.target||(a.target=a.srcElement);e=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;b||(this.chartPosition=b=m(this.chart.container));void 0===e.pageX?(d=Math.max(a.x,a.clientX-b.left),b=a.y):(d=e.pageX-b.left,b=e.pageY-b.top);return t(a,{chartX:Math.round(d), +chartY:Math.round(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};w(this.chart.axes,function(d){b[d.isXAxis?"xAxis":"yAxis"].push({axis:d,value:d.toValue(a[d.horiz?"chartX":"chartY"])})});return b},runPointActions:function(d){var b=this.chart,f=b.series,g=b.tooltip,c=g?g.shared:!1,h=!0,n=b.hoverPoint,m=b.hoverSeries,x,k,y,u=[],I;if(!c&&!m)for(x=0;xb.series.index?-1:1}));if(c)for(x=u.length;x--;)(u[x].x!==u[0].x||u[x].series.noSharedTooltip)&&u.splice(x,1);if(u[0]&&(u[0]!==this.prevKDPoint||g&&g.isHidden)){if(c&& +!u[0].series.noSharedTooltip){for(x=0;xh+k&&(f=h+k),cm+y&&(c=m+y),this.hasDragged=Math.sqrt(Math.pow(l-f,2)+Math.pow(v-c,2)),10x.max&&(l=x.max-c,v=!0);v?(u-=.8*(u-g[f][0]),J||(M-=.8*(M-g[f][1])),p()):g[f]=[u,M];A||(e[f]=F-E,e[q]=c);e=A?1/n:n;m[q]=c;m[f]=l;k[A?a?"scaleY":"scaleX":"scale"+d]=n;k["translate"+d]=e* +E+(u-e*y)},pinch:function(a){var r=this,t=r.chart,k=r.pinchDown,m=a.touches,e=m.length,g=r.lastValidTouch,h=r.hasZoom,C=r.selectionMarker,f={},d=1===e&&(r.inClass(a.target,"highcharts-tracker")&&t.runTrackerClick||r.runChartClick),b={};1b-6&&n(u||d.chartWidth- +2*x-v-e.x)&&(this.itemX=v,this.itemY+=p+this.lastLineHeight+I,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,c);this.lastItemY=p+this.itemY+I;this.lastLineHeight=Math.max(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];f?this.itemX+=c:(this.itemY+=p+g+I,this.lastLineHeight=g);this.offsetWidth=u||Math.max((f?this.itemX-v-l:c)+x,this.offsetWidth)},getAllItems:function(){var a=[];l(this.chart.series,function(d){var b=d&&d.options;d&&m(b.showInLegend,p(b.linkedTo)? +!1:void 0,!0)&&(a=a.concat(d.legendItems||("point"===b.legendType?d.data:d)))});return a},adjustMargins:function(a,d){var b=this.chart,e=this.options,f=e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0);e.floating||l([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(c,g){c.test(f)&&!p(a[g])&&(b[t[g]]=Math.max(b[t[g]],b.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*e[g%2?"x":"y"]+m(e.margin,12)+d[g]))})},render:function(){var a=this,d=a.chart,b=d.renderer, +e=a.group,h,c,m,n,k=a.box,x=a.options,p=a.padding;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;e||(a.group=e=b.g("legend").attr({zIndex:7}).add(),a.contentGroup=b.g().attr({zIndex:1}).add(e),a.scrollGroup=b.g().add(a.contentGroup));a.renderTitle();h=a.getAllItems();g(h,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});x.reversed&&h.reverse();a.allItems=h;a.display=c=!!h.length;a.lastLineHeight=0;l(h,function(b){a.renderItem(b)}); +m=(x.width||a.offsetWidth)+p;n=a.lastItemY+a.lastLineHeight+a.titleHeight;n=a.handleOverflow(n);n+=p;k||(a.box=k=b.rect().addClass("highcharts-legend-box").attr({r:x.borderRadius}).add(e),k.isNew=!0);k.attr({stroke:x.borderColor,"stroke-width":x.borderWidth||0,fill:x.backgroundColor||"none"}).shadow(x.shadow);0b&&!1!==h.enabled?(this.clipHeight=g=Math.max(b-20-this.titleHeight-I,0),this.currentPage=m(this.currentPage,1),this.fullHeight=a,l(v,function(a,b){var c=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var d=u.length;if(!d||c-u[d-1]>g&&(r||c)!==u[d-1])u.push(r||c),d++;b===v.length-1&&c+a-u[d-1]>g&&u.push(c);c!==r&&(r=c)}),n||(n=d.clipRect= +e.clipRect(0,I,9999,0),d.contentGroup.clip(n)),t(g),y||(this.nav=y=e.g().attr({zIndex:1}).add(this.group),this.up=e.symbol("triangle",0,0,p,p).on("click",function(){d.scroll(-1,k)}).add(y),this.pager=e.text("",15,10).addClass("highcharts-legend-navigation").css(h.style).add(y),this.down=e.symbol("triangle-down",0,0,p,p).on("click",function(){d.scroll(1,k)}).add(y)),d.scroll(0),a=b):y&&(t(),y.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,d){var b=this.pages, +f=b.length;a=this.currentPage+a;var g=this.clipHeight,c=this.options.navigation,h=this.pager,n=this.padding;a>f&&(a=f);0f&&(g=typeof a[0],"string"===g?e.name=a[0]:"number"===g&&(e.x=a[0]),d++);b=h.value;)h=e[++g];h&&h.color&&!this.options.color&&(this.color=h.color);return h},destroy:function(){var a=this.series.chart,e=a.hoverPoints,g;a.pointCount--;e&&(this.setState(),H(e,this),e.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)k(this), +this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(g in this)this[g]=null},destroyElements:function(){for(var a=["graphic","dataLabel","dataLabelUpper","connector","shadowGroup"],e,g=6;g--;)e=a[g],this[e]&&(this[e]=this[e].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var e=this.series,g= +e.tooltipOptions,h=t(g.valueDecimals,""),k=g.valuePrefix||"",f=g.valueSuffix||"";B(e.pointArrayMap||["y"],function(d){d="{point."+d;if(k||f)a=a.replace(d+"}",k+d+"}"+f);a=a.replace(d+"}",d+":,."+h+"f}")});return l(a,{point:this,series:this.series})},firePointEvent:function(a,e,g){var h=this,k=this.series.options;(k.point.events[a]||h.options&&h.options.events&&h.options.events[a])&&this.importEvents();"click"===a&&k.allowPointSelect&&(g=function(a){h.select&&h.select(null,a.ctrlKey||a.metaKey||a.shiftKey)}); +p(this,a,e,g)},visible:!0}})(N);(function(a){var D=a.addEvent,B=a.animObject,G=a.arrayMax,H=a.arrayMin,p=a.correctFloat,l=a.Date,r=a.defaultOptions,w=a.defaultPlotOptions,t=a.defined,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.fireEvent,C=a.grep,f=a.isArray,d=a.isNumber,b=a.isString,q=a.merge,E=a.pick,c=a.removeEvent,F=a.splat,n=a.stableSort,A=a.SVGElement,x=a.syncTimeout,J=a.win;a.Series=a.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{}, +marker:{lineWidth:0,lineColor:"#ffffff",radius:4,states:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===this.y?"":a.numberFormat(this.y,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{lineWidthPlus:1, +marker:{},halo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3},{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],coll:"series",init:function(a,b){var c=this,d,e,f=a.series,u,y=function(a,b){return E(a.options.index,a._i)-E(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();g(c,{name:b.name,state:"",visible:!1!==b.visible,selected:!0=== +b.selected});e=b.events;for(d in e)D(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();k(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);c.isCartesian&&(a.hasCartesianSeries=!0);f.length&&(u=f[f.length-1]);c._i=E(u&&u._i,-1)+1;f.push(c);n(f,y);this.yAxis&&n(this.yAxis.series,y);k(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart, +d;k(a.axisTypes||[],function(f){k(c[f],function(c){d=c.options;if(b[f]===d.index||void 0!==b[f]&&b[f]===d.id||void 0===b[f]&&0===d.index)c.series.push(a),a[f]=c,c.isDirty=!0});a[f]||a.optionalAxis===f||e(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,e=arguments,f=d(b)?function(d){var e="y"===d&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=e}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(e,2))};k(c.parallelArrays,f)},autoIncrement:function(){var a=this.options, +b=this.xIncrement,c,d=a.pointIntervalUnit,b=E(b,a.pointStart,0);this.pointInterval=c=E(this.pointInterval,a.pointInterval,1);d&&(a=new l(b),"day"===d?a=+a[l.hcSetDate](a[l.hcGetDate]()+c):"month"===d?a=+a[l.hcSetMonth](a[l.hcGetMonth]()+c):"year"===d&&(a=+a[l.hcSetFullYear](a[l.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=q(e,c.series,a);this.tooltipOptions= +q(r.tooltip,r.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);null===e.marker&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();!c.negativeColor&&!c.negativeFillColor||c.zones||a.push({value:c[this.zoneAxis+"Threshold"]||c.threshold||0,className:"highcharts-negative",color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&t(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor}); +return c},getCyclic:function(a,b,c){var d,e=this.userOptions,f=a+"Index",g=a+"Counter",u=c?c.length:E(this.chart.options.chart[a+"Count"],this.chart[a+"Count"]);b||(d=E(e[f],e["_"+f]),t(d)||(e["_"+f]=d=this.chart[g]%u,this.chart[g]+=1),c&&(b=c[d]));void 0!==d&&(this[f]=d);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic("color",this.options.color||w[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol, +this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(a,c,g,n){var u=this,q=u.points,h=q&&q.length||0,y,m=u.options,x=u.chart,A=null,I=u.xAxis,l=m.turboThreshold,p=this.xData,r=this.yData,F=(y=u.pointArrayMap)&&y.length;a=a||[];y=a.length;c=E(c,!0);if(!1!==n&&y&&h===y&&!u.cropped&&!u.hasGroupedData&&u.visible)k(a,function(a,b){q[b].update&&a!==m.data[b]&&q[b].update(a,!1,null,!1)});else{u.xIncrement=null;u.colorCounter=0;k(this.parallelArrays,function(a){u[a+ +"Data"].length=0});if(l&&y>l){for(g=0;null===A&&gh||this.forceCrop))if(b[d-1]l)b=[],c=[];else if(b[0]l)f=this.cropData(this.xData,this.yData,A,l),b=f.xData,c=f.yData,f=f.start,g=!0;for(h=b.length||1;--h;)d=x?y(b[h])-y(b[h-1]):b[h]-b[h-1],0d&&this.requireSorting&&e(15);this.cropped=g;this.cropStart=f;this.processedXData=b;this.processedYData=c;this.closestPointRange=n},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,n=E(this.cropShoulder,1),u;for(u=0;u=c){f=Math.max(0,u- +n);break}for(c=u;cd){g=c+n;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,n=this.cropStart||0,q,h=this.hasGroupedData,k,m=[],x;b||h||(b=[],b.length=a.length,b=this.data=b);for(x=0;x=q&&(c[x-1]||k)<=h,y&&k)if(y=m.length)for(;y--;)null!==m[y]&&(g[n++]=m[y]);else g[n++]=m;this.dataMin=H(g);this.dataMax=G(g)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,e=c.categories,f=this.yAxis,g=this.points,n=g.length,q=!!this.modifyValue,h=a.pointPlacement,k="between"===h||d(h),m=a.threshold,x=a.startFromThreshold?m:0,A,l,r,F,J=Number.MAX_VALUE;"between"===h&&(h=.5);d(h)&&(h*=E(a.pointRange||c.pointRange)); +for(a=0;a=B&&(C.isNull=!0);C.plotX=A=p(Math.min(Math.max(-1E5,c.translate(w,0,0,0,1,h,"flags"===this.type)),1E5));b&&this.visible&&!C.isNull&&D&&D[w]&&(F=this.getStackIndicator(F,w,this.index),G=D[w],B=G.points[F.key],l=B[0],B=B[1],l===x&&F.key===D[w].base&&(l=E(m,f.min)),f.isLog&&0>=l&&(l=null),C.total=C.stackTotal=G.total,C.percentage=G.total&&C.y/G.total*100,C.stackY= +B,G.setOffset(this.pointXOffset||0,this.barW||0));C.yBottom=t(l)?f.translate(l,0,1,0,1):null;q&&(B=this.modifyValue(B,C));C.plotY=l="number"===typeof B&&Infinity!==B?Math.min(Math.max(-1E5,f.translate(B,0,1,0,1)),1E5):void 0;C.isInside=void 0!==l&&0<=l&&l<=f.len&&0<=A&&A<=c.len;C.clientX=k?p(c.translate(w,0,0,0,1,h)):A;C.negative=C.y<(m||0);C.category=e&&void 0!==e[C.x]?e[C.x]:C.x;C.isNull||(void 0!==r&&(J=Math.min(J,Math.abs(A-r))),r=A)}this.closestPointRangePx=J},getValidPoints:function(a,b){var c= +this.chart;return C(a||this.points||[],function(a){return b&&!c.isInsidePlot(a.plotX,a.plotY,c.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,e=b.inverted,f=this.clipBox,g=f||b.clipBox,n=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(),q=b[n],h=b[n+"m"];q||(a&&(g.width=0,b[n+"m"]=h=d.clipRect(-99,e?-b.plotLeft:-b.plotTop,99,e?b.chartWidth:b.chartHeight)),b[n]=q=d.clipRect(g),q.count={length:0});a&&!q.count[this.index]&& +(q.count[this.index]=!0,q.count.length+=1);!1!==c.clip&&(this.group.clip(a||f?q:b.clipRect),this.markerGroup.clip(h),this.sharedClipKey=n);a||(q.count[this.index]&&(delete q.count[this.index],--q.count.length),0===q.count.length&&n&&b[n]&&(f||(b[n]=b[n].destroy()),b[n+"m"]&&(b[n+"m"]=b[n+"m"].destroy())))},animate:function(a){var b=this.chart,c=B(this.options.animation),d;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+ +99},c),this.animate=null)},afterAnimate:function(){this.setClip();h(this,"afterAnimate")},drawPoints:function(){var a=this.points,b=this.chart,c,e,f,g,n=this.options.marker,q,h,k,m,x=this.markerGroup,A=E(n.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>2*n.radius);if(!1!==n.enabled||this._hasPointMarkers)for(e=a.length;e--;)f=a[e],c=f.plotY,g=f.graphic,q=f.marker||{},h=!!f.marker,k=A&&void 0===q.enabled||q.enabled,m=f.isInside,k&&d(c)&&null!==f.y?(c=E(q.symbol,this.symbol),f.hasImage= +0===c.indexOf("url"),k=this.markerAttribs(f,f.selected&&"select"),g?g[m?"show":"hide"](!0).animate(k):m&&(0e&&b.shadow));g&&(g.startX=c.xMap, +g.isArea=c.isArea)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],n,q=this.graph,h=this.area,m=Math.max(b.chartWidth,b.chartHeight),x=this[(this.zoneAxis||"y")+"Axis"],A,l,p=b.inverted,r,F,C,t,J=!1;d.length&&(q||h)&&x&&void 0!==x.min&&(l=x.reversed,r=x.horiz,q&&q.hide(),h&&h.hide(),A=x.getExtremes(),k(d,function(d,u){e=l?r?b.plotWidth:0:r?0:x.toPixels(A.min);e=Math.min(Math.max(E(f,e),0),m);f=Math.min(Math.max(Math.round(x.toPixels(E(d.value,A.max), +!0)),0),m);J&&(e=f=x.toPixels(A.max));F=Math.abs(e-f);C=Math.min(e,f);t=Math.max(e,f);x.isXAxis?(n={x:p?t:C,y:0,width:F,height:m},r||(n.x=b.plotHeight-n.x)):(n={x:0,y:p?t:C,width:m,height:F},r&&(n.y=b.plotWidth-n.y));p&&c.isVML&&(n=x.isXAxis?{x:0,y:l?C:t,height:n.width,width:b.chartWidth}:{x:n.y-b.plotLeft-b.spacingBox.x,y:0,width:n.height,height:b.chartHeight});g[u]?g[u].animate(n):(g[u]=c.clipRect(n),q&&a["zone-graph-"+u].clip(g[u]),h&&a["zone-area-"+u].clip(g[u]));J=d.value>A.max}),this.clips= +g)},invertGroups:function(a){function b(){var b={width:c.yAxis.len,height:c.xAxis.len};k(["group","markerGroup"],function(d){c[d]&&c[d].attr(b).invert(a)})}var c=this,d;c.xAxis&&(d=D(c.chart,"resize",b),D(c,"destroy",d),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({zIndex:d||.1}).add(e),f.addClass("highcharts-series-"+this.index+" highcharts-"+this.type+"-series highcharts-color-"+this.colorIndex+" "+(this.options.className|| +"")));f.attr({visibility:c})[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=!!a.animate&&b.renderer.isSVG&&B(d.animation).duration,f=a.visible?"inherit":"hidden",g=d.zIndex,n=a.hasRendered,q=b.seriesGroup,h=b.inverted;c=a.plotGroup("group","series",f,g,q);a.markerGroup= +a.plotGroup("markerGroup","markers",f,g,q);e&&a.animate(!0);c.inverted=a.isCartesian?h:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(h);!1===d.clip||a.sharedClipKey||n||c.clip(b.clipRect);e&&a.animate();n||(a.animationTimeout=x(function(){a.afterAnimate()},e));a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirty|| +this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:E(d&&d.left,a.plotLeft),translateY:E(e&&e.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)}, +buildKDTree:function(){function a(c,d,e){var f,g;if(g=c&&c.length)return f=b.kdAxisArray[d%e],c.sort(function(a,b){return a[f]-b[f]}),g=Math.floor(g/2),{point:c[g],left:a(c.slice(0,g),d+1,e),right:a(c.slice(g+1),d+1,e)}}var b=this,c=b.kdDimensions;delete b.kdTree;x(function(){b.kdTree=a(b.getValidPoints(null,!b.directTouch),c,c)},b.options.kdNow?0:1)},searchKDTree:function(a,b){function c(a,b,n,q){var h=b.point,u=d.kdAxisArray[n%q],k,m,x=h;m=t(a[e])&&t(h[e])?Math.pow(a[e]-h[e],2):null;k=t(a[f])&& +t(h[f])?Math.pow(a[f]-h[f],2):null;k=(m||0)+(k||0);h.dist=t(k)?Math.sqrt(k):Number.MAX_VALUE;h.distX=t(m)?Math.sqrt(m):Number.MAX_VALUE;u=a[u]-h[u];k=0>u?"left":"right";m=0>u?"right":"left";b[k]&&(k=c(a,b[k],n+1,q),x=k[g]A;)l--;this.updateParallelArrays(h,"splice",l,0,0);this.updateParallelArrays(h,l);n&&h.name&&(n[A]=h.name);q.splice(l,0,a);m&&(this.data.splice(l,0,null),this.processData());"point"===c.legendType&&this.generatePoints();d&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(h,"shift"),q.shift()));this.isDirtyData=this.isDirty=!0;b&&g.redraw(e)},removePoint:function(a, +b,d){var c=this,e=c.data,f=e[a],g=c.points,n=c.chart,h=function(){g&&g.length===e.length&&g.splice(a,1);e.splice(a,1);c.options.data.splice(a,1);c.updateParallelArrays(f||{series:c},"splice",a,1);f&&f.destroy();c.isDirty=!0;c.isDirtyData=!0;b&&n.redraw()};q(d,n);b=C(b,!0);f?f.firePointEvent("remove",null,h):h()},remove:function(a,b,d){function c(){e.destroy();f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();C(a,!0)&&f.redraw(b)}var e=this,f=e.chart;!1!==d?k(e,"remove",null,c):c()},update:function(a, +d){var c=this,e=this.chart,f=this.userOptions,g=this.type,q=a.type||f.type||e.options.chart.type,u=b[g].prototype,m=["group","markerGroup","dataLabelsGroup"],k;if(q&&q!==g||void 0!==a.zIndex)m.length=0;r(m,function(a){m[a]=c[a];delete c[a]});a=h(f,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1,null,!1);for(k in u)this[k]=void 0;t(this,b[q||g].prototype);r(m,function(a){c[a]=m[a]});this.init(e,a);e.linkSeries();C(d,!0)&&e.redraw(!1)}});t(G.prototype, +{update:function(a,b){var c=this.chart;a=c.options[this.coll][this.options.index]=h(this.userOptions,a);this.destroy(!0);this.init(c,t(a,{events:void 0}));c.isDirtyBox=!0;C(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);w(b.axes,this);w(b[c],this);b.options[c].splice(this.options.index,1);r(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;C(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a}, +b)},setCategories:function(a,b){this.update({categories:a},b)}})})(N);(function(a){var D=a.color,B=a.each,G=a.map,H=a.pick,p=a.Series,l=a.seriesType;l("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(){var a=[],l=[],p=this.xAxis,k=this.yAxis,m=k.stacks[this.stackKey],e={},g=this.points,h=this.index,C=k.series,f=C.length,d,b=H(k.options.reversedStacks,!0)?1:-1,q,E;if(this.options.stacking){for(q=0;qa&&t>l?(t=Math.max(a,l),m=2*l-t):tH&& +m>l?(m=Math.max(H,l),t=2*l-m):m=Math.abs(g)&&.5a.closestPointRange*a.xAxis.transA,k=a.borderWidth=r(h.borderWidth,k?0:1),f=a.yAxis,d=a.translatedThreshold=f.getThreshold(h.threshold),b=r(h.minPointLength,5),q=a.getColumnMetrics(),m=q.width,c=a.barW=Math.max(m,1+2*k),l=a.pointXOffset= +q.offset;g.inverted&&(d-=.5);h.pointPadding&&(c=Math.ceil(c));w.prototype.translate.apply(a);G(a.points,function(e){var n=r(e.yBottom,d),q=999+Math.abs(n),q=Math.min(Math.max(-q,e.plotY),f.len+q),h=e.plotX+l,k=c,u=Math.min(q,n),p,t=Math.max(q,n)-u;Math.abs(t)b?n-b:d-(p?b:0));e.barX=h;e.pointWidth=m;e.tooltipPos=g.inverted?[f.len+f.pos-g.plotLeft-q,a.xAxis.len-h-k/2,t]:[h+k/2,q+f.pos-g.plotTop,t];e.shapeType="rect";e.shapeArgs= +a.crispCol.apply(a,e.isNull?[e.plotX,f.len/2,0,0]:[h,u,k,t])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},pointAttribs:function(a,g){var e=this.options,k=this.pointAttrToOptions||{},f=k.stroke||"borderColor",d=k["stroke-width"]||"borderWidth",b=a&&a.color||this.color,q=a[f]||e[f]||this.color||b,k=e.dashStyle,m;a&&this.zones.length&&(b=(b=a.getZone())&&b.color||a.options.color|| +this.color);g&&(g=e.states[g],m=g.brightness,b=g.color||void 0!==m&&B(b).brighten(g.brightness).get()||b,q=g[f]||q,k=g.dashStyle||k);a={fill:b,stroke:q,"stroke-width":a[d]||e[d]||this[d]||0};e.borderRadius&&(a.r=e.borderRadius);k&&(a.dashstyle=k);return a},drawPoints:function(){var a=this,g=this.chart,h=a.options,m=g.renderer,f=h.animationLimit||250,d;G(a.points,function(b){var e=b.graphic;p(b.plotY)&&null!==b.y?(d=b.shapeArgs,e?(k(e),e[g.pointCountt;++t)k=r[t],a=2>t||2===t&&/%$/.test(k),r[t]=B(k,[l,H,w,r[2]][t])+(a?p:0);r[3]>r[2]&&(r[3]=r[2]);return r}}})(N);(function(a){var D=a.addEvent,B=a.defined,G=a.each,H=a.extend,p=a.inArray,l=a.noop,r=a.pick,w=a.Point,t=a.Series,k=a.seriesType,m=a.setAnimation;k("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return null===this.y? +void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,states:{hover:{brightness:.1,shadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var e=this,h=e.points,k=e.startAngleRad;a||(G(h,function(a){var d= +a.graphic,b=a.shapeArgs;d&&(d.attr({r:a.startR||e.center[3]/2,start:k,end:k}),d.animate({r:b.r,start:b.start,end:b.end},e.options.animation))}),e.animate=null)},updateTotals:function(){var a,g=0,h=this.points,k=h.length,f,d=this.options.ignoreHiddenPoint;for(a=0;af.y&&(f.y=null),g+=d&&!f.visible?0:f.y;this.total=g;for(a=0;a1.5*Math.PI?q-=2*Math.PI:q<-Math.PI/2&&(q+=2*Math.PI);t.slicedTranslation={translateX:Math.round(Math.cos(q)*k),translateY:Math.round(Math.sin(q)*k)};d=Math.cos(q)*a[2]/2;b=Math.sin(q)*a[2]/2;t.tooltipPos=[a[0]+.7*d,a[1]+.7*b];t.half=q<-Math.PI/2||q>Math.PI/2?1:0;t.angle=q;f=Math.min(f,n/5);t.labelPos=[a[0]+d+Math.cos(q)*n,a[1]+b+Math.sin(q)*n,a[0]+d+Math.cos(q)*f,a[1]+b+Math.sin(q)* +f,a[0]+d,a[1]+b,0>n?"center":t.half?"right":"left",q]}},drawGraph:null,drawPoints:function(){var a=this,g=a.chart.renderer,h,k,f,d,b=a.options.shadow;b&&!a.shadowGroup&&(a.shadowGroup=g.g("shadow").add(a.group));G(a.points,function(e){if(null!==e.y){k=e.graphic;d=e.shapeArgs;h=e.sliced?e.slicedTranslation:{};var q=e.shadowGroup;b&&!q&&(q=e.shadowGroup=g.g("shadow").add(a.shadowGroup));q&&q.attr(h);f=a.pointAttribs(e,e.selected&&"select");k?k.setRadialReference(a.center).attr(f).animate(H(d,h)):(e.graphic= +k=g[e.shapeType](d).addClass(e.getClassName()).setRadialReference(a.center).attr(h).add(a.group),e.visible||k.attr({visibility:"hidden"}),k.attr(f).attr({"stroke-linejoin":"round"}).shadow(b,q))}})},searchPoint:l,sortByAngle:function(a,g){a.sort(function(a,e){return void 0!==a.angle&&(e.angle-a.angle)*g})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:l},{init:function(){w.prototype.init.apply(this,arguments);var a=this,g;a.name=r(a.name,"Slice"); +g=function(e){a.slice("select"===e.type)};D(a,"select",g);D(a,"unselect",g);return a},setVisible:function(a,g){var e=this,k=e.series,f=k.chart,d=k.options.ignoreHiddenPoint;g=r(g,d);a!==e.visible&&(e.visible=e.options.visible=a=void 0===a?!e.visible:a,k.options.data[p(e,k.data)]=e.options,G(["graphic","dataLabel","connector","shadowGroup"],function(b){if(e[b])e[b][a?"show":"hide"](!0)}),e.legendItem&&f.legend.colorizeItem(e,a),a||"hover"!==e.state||e.setState(""),d&&(k.isDirty=!0),g&&f.redraw())}, +slice:function(a,g,h){var e=this.series;m(h,e.chart);r(g,!0);this.sliced=this.options.sliced=a=B(a)?a:!this.sliced;e.options.data[p(this,e.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+a,e.r+a,{innerR:this.shapeArgs.r,start:e.start,end:e.end})}})})(N);(function(a){var D= +a.addEvent,B=a.arrayMax,G=a.defined,H=a.each,p=a.extend,l=a.format,r=a.map,w=a.merge,t=a.noop,k=a.pick,m=a.relativeLength,e=a.Series,g=a.seriesTypes,h=a.stableSort,C=a.stop;a.distribute=function(a,d){function b(a,b){return a.target-b.target}var e,f=!0,c=a,g=[],n;n=0;for(e=a.length;e--;)n+=a[e].size;if(n>d){h(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(n=e=0;n<=d;)n+=a[e].size,e++;g=a.splice(e-1,a.length)}h(a,b);for(a=r(a,function(a){return{size:a.size,targets:[a.target]}});f;){for(e=a.length;e--;)f= +a[e],n=(Math.min.apply(0,f.targets)+Math.max.apply(0,f.targets))/2,f.pos=Math.min(Math.max(0,n-f.size/2),d-f.size);e=a.length;for(f=!1;e--;)0a[e].pos&&(a[e-1].size+=a[e].size,a[e-1].targets=a[e-1].targets.concat(a[e].targets),a[e-1].pos+a[e-1].size>d&&(a[e-1].pos=d-a[e-1].size),a.splice(e,1),f=!0)}e=0;H(a,function(a){var b=0;H(a.targets,function(){c[e].pos=a.pos+b;b+=c[e].size;e++})});c.push.apply(c,g);h(c,b)};e.prototype.drawDataLabels=function(){var a=this,d=a.options, +b=d.dataLabels,e=a.points,g,c,h=a.hasRendered||0,n,m,x=k(b.defer,!0),r=a.chart.renderer;if(b.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(b),m=a.plotGroup("dataLabelsGroup","data-labels",x&&!h?"hidden":"visible",b.zIndex||6),x&&(m.attr({opacity:+h}),h||D(a,"afterAnimate",function(){a.visible&&m.show(!0);m[d.animation?"animate":"attr"]({opacity:1},{duration:200})})),c=b,H(e,function(e){var f,q=e.dataLabel,h,x,A=e.connector,y=!0,t,z={};g=e.dlOptions||e.options&&e.options.dataLabels; +f=k(g&&g.enabled,c.enabled)&&null!==e.y;if(q&&!f)e.dataLabel=q.destroy();else if(f){b=w(c,g);t=b.style;f=b.rotation;h=e.getLabelConfig();n=b.format?l(b.format,h):b.formatter.call(h,b);t.color=k(b.color,t.color,a.color,"#000000");if(q)G(n)?(q.attr({text:n}),y=!1):(e.dataLabel=q=q.destroy(),A&&(e.connector=A.destroy()));else if(G(n)){q={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:f,padding:b.padding,zIndex:1};"contrast"===t.color&&(z.color=b.inside|| +0>b.distance||d.stacking?r.getContrast(e.color||a.color):"#000000");d.cursor&&(z.cursor=d.cursor);for(x in q)void 0===q[x]&&delete q[x];q=e.dataLabel=r[f?"text":"label"](n,0,-9999,b.shape,null,null,b.useHTML,null,"data-label").attr(q);q.addClass("highcharts-data-label-color-"+e.colorIndex+" "+(b.className||""));q.css(p(t,z));q.add(m);q.shadow(b.shadow)}q&&a.alignDataLabel(e,q,b,null,y)}})};e.prototype.alignDataLabel=function(a,d,b,e,g){var c=this.chart,f=c.inverted,n=k(a.plotX,-9999),q=k(a.plotY, +-9999),h=d.getBBox(),m,l=b.rotation,u=b.align,r=this.visible&&(a.series.forceDL||c.isInsidePlot(n,Math.round(q),f)||e&&c.isInsidePlot(n,f?e.x+1:e.y+e.height-1,f)),t="justify"===k(b.overflow,"justify");r&&(m=b.style.fontSize,m=c.renderer.fontMetrics(m,d).b,e=p({x:f?c.plotWidth-q:n,y:Math.round(f?c.plotHeight-n:q),width:0,height:0},e),p(b,{width:h.width,height:h.height}),l?(t=!1,f=c.renderer.rotCorr(m,l),f={x:e.x+b.x+e.width/2+f.x,y:e.y+b.y+{top:0,middle:.5,bottom:1}[b.verticalAlign]*e.height},d[g? +"attr":"animate"](f).attr({align:u}),n=(l+720)%360,n=180n,"left"===u?f.y-=n?h.height:0:"center"===u?(f.x-=h.width/2,f.y-=h.height/2):"right"===u&&(f.x-=h.width,f.y-=n?0:h.height)):(d.align(b,null,e),f=d.alignAttr),t?this.justifyDataLabel(d,b,f,h,e,g):k(b.crop,!0)&&(r=c.isInsidePlot(f.x,f.y)&&c.isInsidePlot(f.x+h.width,f.y+h.height)),b.shape&&!l&&d.attr({anchorX:a.plotX,anchorY:a.plotY}));r||(C(d),d.attr({y:-9999}),d.placed=!1)};e.prototype.justifyDataLabel=function(a,d,b,e,g,c){var f=this.chart, +n=d.align,h=d.verticalAlign,q,k,m=a.box?0:a.padding||0;q=b.x+m;0>q&&("right"===n?d.align="left":d.x=-q,k=!0);q=b.x+e.width-m;q>f.plotWidth&&("left"===n?d.align="right":d.x=f.plotWidth-q,k=!0);q=b.y+m;0>q&&("bottom"===h?d.verticalAlign="top":d.y=-q,k=!0);q=b.y+e.height-m;q>f.plotHeight&&("top"===h?d.verticalAlign="bottom":d.y=f.plotHeight-q,k=!0);k&&(a.placed=!c,a.align(d,null,g))};g.pie&&(g.pie.prototype.drawDataLabels=function(){var f=this,d=f.data,b,g=f.chart,h=f.options.dataLabels,c=k(h.connectorPadding, +10),m=k(h.connectorWidth,1),n=g.plotWidth,l=g.plotHeight,x,p=h.distance,y=f.center,u=y[2]/2,t=y[1],w=0k-2?A:P,e),v._attr={visibility:S,align:D[6]},v._pos={x:L+h.x+({left:c,right:-c}[D[6]]||0),y:P+h.y-10},D.x=L,D.y=P,null===f.options.size&&(C=v.width,L-Cn-c&&(T[1]=Math.max(Math.round(L+ +C-n+c),T[1])),0>P-G/2?T[0]=Math.max(Math.round(-P+G/2),T[0]):P+G/2>l&&(T[2]=Math.max(Math.round(P+G/2-l),T[2])))}),0===B(T)||this.verifyDataLabelOverflow(T))&&(this.placeDataLabels(),w&&m&&H(this.points,function(a){var b;x=a.connector;if((v=a.dataLabel)&&v._pos&&a.visible){S=v._attr.visibility;if(b=!x)a.connector=x=g.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+a.colorIndex).add(f.dataLabelsGroup),x.attr({"stroke-width":m,stroke:h.connectorColor||a.color||"#666666"}); +x[b?"attr":"animate"]({d:f.connectorPath(a.labelPos)});x.attr("visibility",S)}else x&&(a.connector=x.destroy())}))},g.pie.prototype.connectorPath=function(a){var d=a.x,b=a.y;return k(this.options.dataLabels.softConnector,!0)?["M",d+("left"===a[6]?5:-5),b,"C",d,b,2*a[2]-a[4],2*a[3]-a[5],a[2],a[3],"L",a[4],a[5]]:["M",d+("left"===a[6]?5:-5),b,"L",a[2],a[3],"L",a[4],a[5]]},g.pie.prototype.placeDataLabels=function(){H(this.points,function(a){var d=a.dataLabel;d&&a.visible&&((a=d._pos)?(d.attr(d._attr), +d[d.moved?"animate":"attr"](a),d.moved=!0):d&&d.attr({y:-9999}))})},g.pie.prototype.alignDataLabel=t,g.pie.prototype.verifyDataLabelOverflow=function(a){var d=this.center,b=this.options,e=b.center,f=b.minSize||80,c,g;null!==e[0]?c=Math.max(d[2]-Math.max(a[1],a[3]),f):(c=Math.max(d[2]-a[1]-a[3],f),d[0]+=(a[3]-a[1])/2);null!==e[1]?c=Math.max(Math.min(c,d[2]-Math.max(a[0],a[2])),f):(c=Math.max(Math.min(c,d[2]-a[0]-a[2]),f),d[1]+=(a[0]-a[2])/2);ck(this.translatedThreshold,f.yAxis.len)),m=k(b.inside,!!this.options.stacking);n&&(g=w(n),0>g.y&&(g.height+=g.y,g.y=0),n=g.y+g.height-f.yAxis.len,0a+e||c+nb+f||g+hthis.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints, +e;d&&r(d,function(a){a.setState()});r("xy"===b?[1,0]:[1],function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"],d=d?"mouseDownX":"mouseDownY",g=c[d],n=(b.pointRange||0)/2,h=b.getExtremes(),q=b.toValue(g-f,!0)+n,n=b.toValue(g+b.len-f,!0)-n,g=g>f;b.series.length&&(g||q>Math.min(h.dataMin,h.min))&&(!g||n=p(k.minWidth,0)&&this.chartHeight>=p(k.minHeight,0)};void 0===l._id&&(l._id=a.uniqueKey());m=m.call(this);!r[l._id]&&m?l.chartOptions&&(r[l._id]=this.currentOptions(l.chartOptions),this.update(l.chartOptions,w)):r[l._id]&&!m&&(this.update(r[l._id],w),delete r[l._id])};D.prototype.currentOptions=function(a){function p(a,m,e){var g,h;for(g in a)if(-1< +G(g,["series","xAxis","yAxis"]))for(a[g]=l(a[g]),e[g]=[],h=0;hd.length||void 0===h)return a.call(this,g,h,k,f);x=d.length;for(c=0;ck;d[c]5*b||w){if(d[c]>u){for(r=a.call(this,g,d[e],d[c],f);r.length&&r[0]<=u;)r.shift();r.length&&(u=r[r.length-1]);y=y.concat(r)}e=c+1}if(w)break}a= +r.info;if(q&&a.unitRange<=m.hour){c=y.length-1;for(e=1;ek?a-1:a;for(M=void 0;q--;)e=c[q],k=M-e,M&&k<.8*C&&(null===t||k<.8*t)?(n[y[q]]&&!n[y[q+1]]?(k=q+1,M=e):k=q,y.splice(k,1)):M=e}return y});w(B.prototype,{beforeSetTickPositions:function(){var a, +g=[],h=!1,k,f=this.getExtremes(),d=f.min,b=f.max,q,m=this.isXAxis&&!!this.options.breaks,f=this.options.ordinal,c=this.chart.options.chart.ignoreHiddenSeries;if(f||m){r(this.series,function(b,d){if(!(c&&!1===b.visible||!1===b.takeOrdinalPosition&&!m)&&(g=g.concat(b.processedXData),a=g.length,g.sort(function(a,b){return a-b}),a))for(d=a-1;d--;)g[d]===g[d+1]&&g.splice(d,1)});a=g.length;if(2k||b-g[g.length- +1]>k)&&(h=!0)}h?(this.ordinalPositions=g,k=this.val2lin(Math.max(d,g[0]),!0),q=Math.max(this.val2lin(Math.min(b,g[g.length-1]),!0),1),this.ordinalSlope=b=(b-d)/(q-k),this.ordinalOffset=d-k*b):this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0}this.isOrdinal=f&&h;this.groupIntervalFactor=null},val2lin:function(a,g){var e=this.ordinalPositions;if(e){var k=e.length,f,d;for(f=k;f--;)if(e[f]===a){d=f;break}for(f=k-1;f--;)if(a>e[f]||0===f){a=(a-e[f])/(e[f+1]-e[f]);d=f+a;break}g=g?d:this.ordinalSlope* +(d||0)+this.ordinalOffset}else g=a;return g},lin2val:function(a,g){var e=this.ordinalPositions;if(e){var k=this.ordinalSlope,f=this.ordinalOffset,d=e.length-1,b;if(g)0>a?a=e[0]:a>d?a=e[d]:(d=Math.floor(a),b=a-d);else for(;d--;)if(g=k*d+f,a>=g){k=k*(d+1)+f;b=(a-g)/(k-g);break}return void 0!==b&&void 0!==e[d]?e[d]+(b?b*(e[d+1]-e[d]):0):a}return a},getExtendedPositions:function(){var a=this.chart,g=this.series[0].currentDataGrouping,h=this.ordinalIndex,k=g?g.count+g.unitName:"raw",f=this.getExtremes(), +d,b;h||(h=this.ordinalIndex={});h[k]||(d={series:[],chart:a,getExtremes:function(){return{min:f.dataMin,max:f.dataMax}},options:{ordinal:!0},val2lin:B.prototype.val2lin},r(this.series,function(e){b={xAxis:d,xData:e.xData,chart:a,destroyGroupedData:t};b.options={dataGrouping:g?{enabled:!0,forced:!0,approximation:"open",units:[[g.unitName,[g.count]]]}:{enabled:!1}};e.processData.apply(b);d.series.push(b)}),this.beforeSetTickPositions.apply(d),h[k]=d.ordinalPositions);return h[k]},getGroupIntervalFactor:function(a, +g,h){var e;h=h.processedXData;var f=h.length,d=[];e=this.groupIntervalFactor;if(!e){for(e=0;ed?(l=p,t=e.ordinalPositions?e:p):(l=e.ordinalPositions?e:p,t=p),p=t.ordinalPositions,q>p[p.length-1]&&p.push(q),this.fixedRange=c-m,d=e.toFixedRange(null,null,n.apply(l,[x.apply(l,[m,!0])+d,!0]),n.apply(t,[x.apply(t, +[c,!0])+d,!0])),d.min>=Math.min(b.dataMin,m)&&d.max<=Math.max(q,c)&&e.setExtremes(d.min,d.max,!0,!1,{trigger:"pan"}),this.mouseDownX=k,H(this.container,{cursor:"move"})):f=!0}else f=!0;f&&a.apply(this,Array.prototype.slice.call(arguments,1))});k.prototype.gappedPath=function(){var a=this.options.gapSize,g=this.points.slice(),h=g.length-1;if(a&&0this.closestPointRange*a&&g.splice(h+1,0,{isNull:!0});return this.getGraphPath(g)}})(N);(function(a){function D(){return Array.prototype.slice.call(arguments, +1)}function B(a){a.apply(this);this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,G(this.pointArrayMap,["y"]))}var G=a.pick,H=a.wrap,p=a.each,l=a.extend,r=a.fireEvent,w=a.Axis,t=a.Series;l(w.prototype,{isInBreak:function(a,m){var e=a.repeat||Infinity,g=a.from,h=a.to-a.from;m=m>=g?(m-g)%e:e-(g-m)%e;return a.inclusive?m<=h:m=a)break;else if(g.isInBreak(f,a)){e-=a-f.from;break}return e};this.lin2val=function(a){var e,f;for(f=0;f=a);f++)e.toh;)m-=b;for(;mb.to||l>b.from&&db.from&&db.from&&d>b.to&&d=c[0]);A++);for(A;A<=q;A++){for(;(void 0!==c[w+1]&&a[A]>=c[w+1]||A===q)&&(l=c[w],this.dataGroupInfo={start:p,length:t[0].length},p=d.apply(this,t),void 0!==p&&(g.push(l),h.push(p),m.push(this.dataGroupInfo)),p=A,t[0]=[],t[1]=[],t[2]=[],t[3]=[],w+=1,A!==q););if(A===q)break;if(x){l=this.cropStart+A;l=e&&e[l]|| +this.pointClass.prototype.applyOptions.apply({series:this},[f[l]]);var E,C;for(E=0;Ethis.chart.plotSizeX/d||b&&f.forced)&&(e=!0);return e?d:0};G.prototype.setDataGrouping=function(a,b){var c;b=e(b,!0);a||(a={forced:!1,units:null});if(this instanceof G)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else l(this.chart.options.series,function(b){b.dataGrouping=a},!1);b&&this.chart.redraw()}})(N);(function(a){var D=a.each,B=a.Point,G=a.seriesType,H=a.seriesTypes;G("ohlc","column",{lineWidth:1,tooltip:{pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cb\x3e {series.name}\x3c/b\x3e\x3cbr/\x3eOpen: {point.open}\x3cbr/\x3eHigh: {point.high}\x3cbr/\x3eLow: {point.low}\x3cbr/\x3eClose: {point.close}\x3cbr/\x3e'}, +threshold:null,states:{hover:{lineWidth:3}}},{pointArrayMap:["open","high","low","close"],toYData:function(a){return[a.open,a.high,a.low,a.close]},pointValKey:"high",pointAttribs:function(a,l){l=H.column.prototype.pointAttribs.call(this,a,l);var p=this.options;delete l.fill;l["stroke-width"]=p.lineWidth;l.stroke=a.options.color||(a.openk)););B(g,function(a,b){var d;void 0===a.plotY&&(a.x>=c.min&&a.x<=c.max?a.plotY=e.chartHeight-p.bottom-(p.opposite?p.height:0)+p.offset-e.plotTop:a.shapeArgs={});a.plotX+=t;(f=g[b-1])&&f.plotX===a.plotX&&(void 0===f.stackIndex&&(f.stackIndex=0),d=f.stackIndex+1);a.stackIndex=d})},drawPoints:function(){var a=this.points,e=this.chart,g=e.renderer,k,l,f=this.options,d=f.y,b,q,p,c,r,n,t,x=this.yAxis;for(q=a.length;q--;)p=a[q],t=p.plotX>this.xAxis.len,k=p.plotX,c=p.stackIndex,b= +p.options.shape||f.shape,l=p.plotY,void 0!==l&&(l=p.plotY+d-(void 0!==c&&c*f.stackDistance)),r=c?void 0:p.plotX,n=c?void 0:p.plotY,c=p.graphic,void 0!==l&&0<=k&&!t?(c||(c=p.graphic=g.label("",null,null,b,null,null,f.useHTML).attr(this.pointAttribs(p)).css(G(f.style,p.style)).attr({align:"flag"===b?"left":"center",width:f.width,height:f.height,"text-align":f.textAlign}).addClass("highcharts-point").add(this.markerGroup),c.shadow(f.shadow)),0h&&(e-=Math.round((l-h)/2),h=l);e=k[a](e,g,h,l);d&&f&&e.push("M",d,g>f?g:g+l,"L",d,f);return e}});p===t&&B(["flag","circlepin","squarepin"],function(a){t.prototype.symbols[a]=k[a]})})(N);(function(a){function D(a,d,e){this.init(a,d,e)}var B=a.addEvent,G=a.Axis,H=a.correctFloat,p=a.defaultOptions, +l=a.defined,r=a.destroyObjectProperties,w=a.doc,t=a.each,k=a.fireEvent,m=a.hasTouch,e=a.isTouchDevice,g=a.merge,h=a.pick,C=a.removeEvent,f=a.wrap,d={height:e?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:a.svg&&!e,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2", +trackBorderWidth:1};p.scrollbar=g(!0,d,p.scrollbar);D.prototype={init:function(a,e,f){this.scrollbarButtons=[];this.renderer=a;this.userOptions=e;this.options=g(d,e);this.chart=f;this.size=h(this.options.size,this.options.height);e.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,d=this.options,e=this.size,c;this.group=c=a.g("scrollbar").attr({zIndex:d.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0, +r:d.trackBorderRadius||0,height:e,width:e}).add(c);this.track.attr({fill:d.trackBackgroundColor,stroke:d.trackBorderColor,"stroke-width":d.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(c);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:e,width:e,r:d.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(this.swapXY(["M",-3,e/4,"L",-3,2*e/3,"M",0,e/4,"L", +0,2*e/3,"M",3,e/4,"L",3,2*e/3],d.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);this.scrollbar.attr({fill:d.barBackgroundColor,stroke:d.barBorderColor,"stroke-width":d.barBorderWidth});this.scrollbarRifles.attr({stroke:d.rifleColor,"stroke-width":1});this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)},position:function(a, +d,e,c){var b=this.options.vertical,f=0,g=this.rendered?"animate":"attr";this.x=a;this.y=d+this.trackBorderWidth;this.width=e;this.xOffset=this.height=c;this.yOffset=f;b?(this.width=this.yOffset=e=f=this.size,this.xOffset=d=0,this.barWidth=c-2*e,this.x=a+=this.options.margin):(this.height=this.xOffset=c=d=this.size,this.barWidth=e-2*c,this.y+=this.options.margin);this.group[g]({translateX:a,translateY:this.y});this.track[g]({width:e,height:c});this.scrollbarButtons[1].attr({translateX:b?0:e-d,translateY:b? +c-f:0})},drawScrollbarButton:function(a){var b=this.renderer,d=this.scrollbarButtons,c=this.options,e=this.size,f;f=b.g().add(this.group);d.push(f);f=b.rect().addClass("highcharts-scrollbar-button").add(f);f.attr({stroke:c.buttonBorderColor,"stroke-width":c.buttonBorderWidth,fill:c.buttonBackgroundColor});f.attr(f.crisp({x:-.5,y:-.5,width:e+1,height:e+1,r:c.buttonBorderRadius},f.strokeWidth()));f=b.path(this.swapXY(["M",e/2+(a?-1:1),e/2-3,"L",e/2+(a?-1:1),e/2+3,"L",e/2+(a?2:-2),e/2],c.vertical)).addClass("highcharts-scrollbar-arrow").add(d[a]); +f.attr({fill:c.buttonArrowColor})},swapXY:function(a,d){var b=a.length,c;if(d)for(d=0;d=k?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0),!1===b.showFull&&(0>=a&&1<=d?this.group.hide():this.group.show()),this.rendered=!0)},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var d=a.chart.pointer.normalize(b),c=a.options.vertical? +"chartY":"chartX",e=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][c]||(d=a.cursorToScrollbarPosition(d)[c],c=a[c],c=d-c,a.hasDragged=!0,a.updatePosition(e[0]+c,e[1]+c),a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b); +b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var d=H(a.to-a.from)*a.options.step;a.updatePosition(H(a.from-d),H(a.to-d));k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var d=(a.to-a.from)*a.options.step;a.updatePosition(a.from+d,a.to+d);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var d=a.chart.pointer.normalize(b), +c=a.to-a.from,e=a.y+a.scrollbarTop,f=a.x+a.scrollbarLeft;a.options.vertical&&d.chartY>e||!a.options.vertical&&d.chartX>f?a.updatePosition(a.from+c,a.to+c):a.updatePosition(a.from-c,a.to-c);k(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options,b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a, +d){1a&&(d=H(d-a),a=0);this.from=a;this.to=d},update:function(a){this.destroy();this.init(this.chart.renderer,g(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],d=this.scrollbarButtons,e=this.scrollbarGroup.element,c=this.mouseDownHandler,f=this.mouseMoveHandler,g=this.mouseUpHandler,a=[[d[a[0]].element,"click",this.buttonToMinClick],[d[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[e, +"mousedown",c],[w,"mousemove",f],[w,"mouseup",g]];m&&a.push([e,"touchstart",c],[w,"touchmove",f],[w,"touchend",g]);t(a,function(a){B.apply(null,a)});this._events=a},removeEvents:function(){t(this._events,function(a){C.apply(null,a)});this._events=void 0},destroy:function(){var a=this.chart.scroller;this.removeEvents();t(["track","scrollbarRifles","scrollbar","scrollbarGroup","group"],function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&(a.scrollbar=null,r(a.scrollbarButtons))}}; +f(G.prototype,"init",function(a){var b=this;a.apply(b,[].slice.call(arguments,1));b.options.scrollbar&&b.options.scrollbar.enabled&&(b.options.scrollbar.vertical=!b.horiz,b.options.startOnTick=b.options.endOnTick=!1,b.scrollbar=new D(b.chart.renderer,b.options.scrollbar,b.chart),B(b.scrollbar,"changed",function(a){var c=Math.min(h(b.options.min,b.min),b.min,b.dataMin),d=Math.max(h(b.options.max,b.max),b.max,b.dataMax)-c,e;b.horiz&&!b.reversed||!b.horiz&&b.reversed?(e=c+d*this.to,c+=d*this.from):(e= +c+d*(1-this.from),c+=d*(1-this.to));b.setExtremes(c,e,!0,!1,a)}))});f(G.prototype,"render",function(a){var b=Math.min(h(this.options.min,this.min),this.min,this.dataMin),d=Math.max(h(this.options.max,this.max),this.max,this.dataMax),c=this.scrollbar,e;a.apply(this,[].slice.call(arguments,1));c&&(this.horiz?c.position(this.left,this.top+this.height+this.offset+2+(this.opposite?0:this.axisTitleMargin),this.width,this.height):c.position(this.left+this.width+2+this.offset+(this.opposite?this.axisTitleMargin: +0),this.top,this.width,this.height),isNaN(b)||isNaN(d)||!l(this.min)||!l(this.max)?c.setRange(0,0):(e=(this.min-b)/(d-b),b=(this.max-b)/(d-b),this.horiz&&!this.reversed||!this.horiz&&this.reversed?c.setRange(e,b):c.setRange(1-b,1-e)))});f(G.prototype,"getOffset",function(a){var b=this.horiz?2:1,d=this.scrollbar;a.apply(this,[].slice.call(arguments,1));d&&(this.chart.axisOffset[b]+=d.size+d.options.margin)});f(G.prototype,"destroy",function(a){this.scrollbar&&(this.scrollbar=this.scrollbar.destroy()); +a.apply(this,[].slice.call(arguments,1))});a.Scrollbar=D})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.color,l=a.defaultOptions,r=a.defined,w=a.destroyObjectProperties,t=a.doc,k=a.each,m=a.erase,e=a.error,g=a.extend,h=a.grep,C=a.hasTouch,f=a.isNumber,d=a.isObject,b=a.isTouchDevice,q=a.merge,E=a.pick,c=a.removeEvent,F=a.Scrollbar,n=a.Series,A=a.seriesTypes,x=a.wrap,J=[].concat(a.defaultDataGroupingUnits),y=function(a){var b=h(arguments,f);if(b.length)return Math[a].apply(0, +b)};J[4]=["day",[1,2,3,4]];J[5]=["week",[1,2,3]];A=void 0===A.areaspline?"line":"areaspline";g(l,{navigator:{height:40,margin:25,maskInside:!0,handles:{backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:p("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",outlineWidth:1,series:{type:A,color:"#335cad",fillOpacity:.05,lineWidth:1,compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:J},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series", +className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},pointRange:0,shadow:!1,threshold:null},xAxis:{className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#999999"},x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}); +D.prototype={drawHandle:function(a,b){var c=this.chart.renderer,d=this.handles;this.rendered||(d[b]=c.path(["M",-4.5,.5,"L",3.5,.5,3.5,15.5,-4.5,15.5,-4.5,.5,"M",-1.5,4,"L",-1.5,12,"M",.5,4,"L",.5,12]).attr({zIndex:10-b}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][b]).add(),c=this.navigatorOptions.handles,d[b].attr({fill:c.backgroundColor,stroke:c.borderColor,"stroke-width":1}).css({cursor:"ew-resize"}));d[b][this.rendered&&!this.hasDragged?"animate":"attr"]({translateX:Math.round(this.scrollerLeft+ +this.scrollbarHeight+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-8)})},update:function(a){this.destroy();q(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,c,d){var e=this.chart,g=e.renderer,k,h,l,n;n=this.scrollbarHeight;var m=this.xAxis,p=this.navigatorOptions,u=p.maskInside,q=this.height,v=this.top,t=this.navigatorEnabled,x=this.outlineHeight,y;y=this.rendered;if(f(a)&&f(b)&&(!this.hasDragged||r(c))&&(this.navigatorLeft=k=E(m.left,e.plotLeft+ +n),this.navigatorWidth=h=E(m.len,e.plotWidth-2*n),this.scrollerLeft=l=k-n,this.scrollerWidth=n=n=h+2*n,c=E(c,m.translate(a)),d=E(d,m.translate(b)),f(c)&&Infinity!==Math.abs(c)||(c=0,d=n),!(m.translate(d,!0)-m.translate(c,!0)f&&tp+d-u&&rk&&re?e=0:e+v>=q&&(e=q-v,x=h.getUnionExtremes().dataMax),e!==d&&(h.fixedWidth=v,d=l.toFixedRange(e, +e+v,null,x),c.setExtremes(d.min,d.max,!0,null,{trigger:"navigator"}))))};h.mouseMoveHandler=function(b){var c=h.scrollbarHeight,d=h.navigatorLeft,e=h.navigatorWidth,f=h.scrollerLeft,g=h.scrollerWidth,k=h.range,l;b.touches&&0===b.touches[0].pageX||(b=a.pointer.normalize(b),l=b.chartX,lf+g-c&&(l=f+g-c),h.grabbedLeft?(h.hasDragged=!0,h.render(0,0,l-d,h.otherHandlePos)):h.grabbedRight?(h.hasDragged=!0,h.render(0,0,h.otherHandlePos,l-d)):h.grabbedCenter&&(h.hasDragged=!0,le+n-k&&(l=e+ +n-k),h.render(0,0,l-n,l-n+k)),h.hasDragged&&h.scrollbar&&h.scrollbar.options.liveRedraw&&(b.DOMType=b.type,setTimeout(function(){h.mouseUpHandler(b)},0)))};h.mouseUpHandler=function(b){var c,d,e=b.DOMEvent||b;if(h.hasDragged||"scrollbar"===b.trigger)h.zoomedMin===h.otherHandlePos?c=h.fixedExtreme:h.zoomedMax===h.otherHandlePos&&(d=h.fixedExtreme),h.zoomedMax===h.navigatorWidth&&(d=h.getUnionExtremes().dataMax),c=l.toFixedRange(h.zoomedMin,h.zoomedMax,c,d),r(c.min)&&a.xAxis[0].setExtremes(c.min,c.max, +!0,h.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:e});"mousemove"!==b.DOMType&&(h.grabbedLeft=h.grabbedRight=h.grabbedCenter=h.fixedWidth=h.fixedExtreme=h.otherHandlePos=h.hasDragged=n=null)};var c=a.xAxis.length,f=a.yAxis.length,m=e&&e[0]&&e[0].xAxis||a.xAxis[0];a.extraBottomMargin=h.outlineHeight+d.margin;a.isDirtyBox=!0;h.navigatorEnabled?(h.xAxis=l=new G(a,q({breaks:m.options.breaks,ordinal:m.options.ordinal},d.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis", +isX:!0,type:"datetime",index:c,height:g,offset:0,offsetLeft:k,offsetRight:-k,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1})),h.yAxis=new G(a,q(d.yAxis,{id:"navigator-y-axis",alignTicks:!1,height:g,offset:0,index:f,zoomEnabled:!1})),e||d.series.data?h.addBaseSeries():0===a.series.length&&x(a,"redraw",function(b,c){0=Math.round(a.navigatorWidth);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},destroy:function(){this.removeEvents();this.xAxis&&(m(this.chart.xAxis,this.xAxis),m(this.chart.axes,this.xAxis));this.yAxis&&(m(this.chart.yAxis,this.yAxis),m(this.chart.axes,this.yAxis));k(this.series||[],function(a){a.destroy&&a.destroy()});k("series xAxis yAxis leftShade rightShade outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" "), +function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);k([this.handles,this.elementsToDestroy],function(a){w(a)},this)}};a.Navigator=D;x(G.prototype,"zoom",function(a,b,c){var d=this.chart,e=d.options,f=e.chart.zoomType,g=e.navigator,e=e.rangeSelector,h;this.isXAxis&&(g&&g.enabled||e&&e.enabled)&&("x"===f?d.resetZoomButton="blocked":"y"===f?h=!1:"xy"===f&&(d=this.previousZoom,r(b)?this.previousZoom=[this.min,this.max]:d&&(b=d[0],c=d[1],delete this.previousZoom)));return void 0!== +h?h:a.call(this,b,c)});x(H.prototype,"init",function(a,b,c){B(this,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new D(this)});a.call(this,b,c)});x(H.prototype,"getMargins",function(a){var b=this.legend,c=b.options,d=this.scroller,e,f;a.apply(this,[].slice.call(arguments,1));d&&(e=d.xAxis,f=d.yAxis,d.top=d.navigatorOptions.top||this.chartHeight-d.height-d.scrollbarHeight-this.spacing[2]-("bottom"===c.verticalAlign&&c.enabled&& +!c.floating?b.legendHeight+E(c.margin,10):0),e&&f&&(e.options.top=f.options.top=d.top,e.setAxisSize(),f.setAxisSize()))});x(n.prototype,"addPoint",function(a,b,c,f,g){var h=this.options.turboThreshold;h&&this.xData.length>h&&d(b,!0)&&this.chart.scroller&&e(20,!0);a.call(this,b,c,f,g)});x(H.prototype,"addSeries",function(a,b,c,d){a=a.call(this,b,!1,d);this.scroller&&this.scroller.setBaseSeries();E(c,!0)&&this.redraw();return a});x(n.prototype,"update",function(a,b,c){a.call(this,b,!1);this.chart.scroller&& +this.chart.scroller.setBaseSeries();E(c,!0)&&this.chart.redraw()})})(N);(function(a){function D(a){this.init(a)}var B=a.addEvent,G=a.Axis,H=a.Chart,p=a.css,l=a.createElement,r=a.dateFormat,w=a.defaultOptions,t=w.global.useUTC,k=a.defined,m=a.destroyObjectProperties,e=a.discardElement,g=a.each,h=a.extend,C=a.fireEvent,f=a.Date,d=a.isNumber,b=a.merge,q=a.pick,E=a.pInt,c=a.splat,F=a.wrap;h(w,{rangeSelector:{buttonTheme:{"stroke-width":0,width:28,height:18,padding:2,zIndex:7},height:35,inputPosition:{align:"right"}, +labelStyle:{color:"#666666"}}});w.lang=b(w.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});D.prototype={clickButton:function(a,b){var e=this,f=e.chart,h=e.buttonOptions[a],k=f.xAxis[0],l=f.scroller&&f.scroller.getUnionExtremes()||k||{},n=l.dataMin,m=l.dataMax,p,r=k&&Math.round(Math.min(k.max,q(m,k.max))),w=h.type,z,l=h._range,A,C,D,E=h.dataGrouping;if(null!==n&&null!==m){f.fixedRange=l;E&&(this.forcedDataGrouping=!0,G.prototype.setDataGrouping.call(k||{chart:this.chart}, +E,!1));if("month"===w||"year"===w)k?(w={range:h,max:r,dataMin:n,dataMax:m},p=k.minFromRange.call(w),d(w.newMax)&&(r=w.newMax)):l=h;else if(l)p=Math.max(r-l,n),r=Math.min(p+l,m);else if("ytd"===w)if(k)void 0===m&&(n=Number.MAX_VALUE,m=Number.MIN_VALUE,g(f.series,function(a){a=a.xData;n=Math.min(a[0],n);m=Math.max(a[a.length-1],m)}),b=!1),r=e.getYTDExtremes(m,n,t),p=A=r.min,r=r.max;else{B(f,"beforeRender",function(){e.clickButton(a)});return}else"all"===w&&k&&(p=n,r=m);e.setSelected(a);k?k.setExtremes(p, +r,q(b,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:h}):(z=c(f.options.xAxis)[0],D=z.range,z.range=l,C=z.min,z.min=A,B(f,"load",function(){z.range=D;z.min=C}))}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var b=this,c=a.options.rangeSelector,d=c.buttons|| +[].concat(b.defaultButtons),e=c.selected,f=function(){var a=b.minInput,c=b.maxInput;a&&a.blur&&C(a,"blur");c&&c.blur&&C(c,"blur")};b.chart=a;b.options=c;b.buttons=[];a.extraTopMargin=c.height;b.buttonOptions=d;this.unMouseDown=B(a.container,"mousedown",f);this.unResize=B(a,"resize",f);g(d,b.computeButtonRange);void 0!==e&&d[e]&&this.clickButton(e,!1);B(a,"load",function(){B(a.xAxis[0],"setExtremes",function(c){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==c.trigger&&"updatedData"!==c.trigger&& +b.forcedDataGrouping&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this.chart,b=a.xAxis[0],c=Math.round(b.max-b.min),e=!b.hasVisibleSeries,a=a.scroller&&a.scroller.getUnionExtremes()||b,f=a.dataMin,h=a.dataMax,a=this.getYTDExtremes(h,f,t),k=a.min,l=a.max,m=this.selected,p=d(m),q=this.options.allButtonsEnabled,r=this.buttons;g(this.buttonOptions,function(a,d){var g=a._range,n=a.type,u=a.count||1;a=r[d];var t=0;d=d===m;var v=g>h-f,x=g=864E5*{month:28,year:365}[n]*u&&c<=864E5*{month:31,year:366}[n]*u?g=!0:"ytd"===n?(g=l-k===c,y=!d):"all"===n&&(g=b.max-b.min>=h-f,w=!d&&p&&g);n=!q&&(v||x||w||e);g=d&&g||g&&!p&&!y;n?t=3:g&&(p=!0,t=2);a.state!==t&&a.setState(t)})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c},setInputValue:function(a,b){var c= +this.chart.options.rangeSelector,d=this[a+"Input"];k(b)&&(d.previousValue=d.HCTime,d.HCTime=b);d.value=r(c.inputEditDateFormat||"%Y-%m-%d",d.HCTime);this[a+"DateBox"].attr({text:r(c.inputDateFormat||"%b %e, %Y",d.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];p(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){p(this[a+"Input"],{border:0,width:"1px",height:"1px"}); +this.setInputValue(a)},drawInput:function(a){function c(){var a=r.value,b=(m.inputDateParser||Date.parse)(a),c=f.xAxis[0],g=f.scroller&&f.scroller.xAxis?f.scroller.xAxis:c,h=g.dataMin,g=g.dataMax;b!==r.previousValue&&(r.previousValue=b,d(b)||(b=a.split("-"),b=Date.UTC(E(b[0]),E(b[1])-1,E(b[2]))),d(b)&&(t||(b+=6E4*(new Date).getTimezoneOffset()),q?b>e.maxInput.HCTime?b=void 0:bg&&(b=g),void 0!==b&&c.setExtremes(q?b:c.min,q?c.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))} +var e=this,f=e.chart,g=f.renderer.style||{},k=f.renderer,m=f.options.rangeSelector,n=e.div,q="min"===a,r,B,C=this.inputGroup;this[a+"Label"]=B=k.label(w.lang[q?"rangeSelectorFrom":"rangeSelectorTo"],this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(C);C.offset+=B.width+5;this[a+"DateBox"]=k=k.label("",C.offset).addClass("highcharts-range-input").attr({padding:2,width:m.inputBoxWidth||90,height:m.inputBoxHeight||17,stroke:m.inputBoxBorderColor||"#cccccc","stroke-width":1, +"text-align":"center"}).on("click",function(){e.showInput(a);e[a+"Input"].focus()}).add(C);C.offset+=k.width+(q?10:0);this[a+"Input"]=r=l("input",{name:a,className:"highcharts-range-selector",type:"text"},{top:f.plotTop+"px"},n);B.css(b(g,m.labelStyle));k.css(b({color:"#333333"},g,m.inputStyle));p(r,h({position:"absolute",border:0,width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:g.fontSize,fontFamily:g.fontFamily,left:"-9em"},m.inputStyle));r.onfocus=function(){e.showInput(a)};r.onblur= +function(){e.hideInput(a)};r.onchange=c;r.onkeypress=function(a){13===a.keyCode&&c()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector,a=q((b.buttonPosition||{}).y,a.plotTop-a.axisOffset[0]-b.height);return{buttonTop:a,inputTop:a-10}},getYTDExtremes:function(a,b,c){var d=new f(a),e=d[f.hcGetFullYear]();c=c?f.UTC(e,0,1):+new f(e,0,1);b=Math.max(b||0,c);d=d.getTime();return{max:Math.min(a||d,d),min:b}},render:function(a,b){var c=this,d=c.chart,e=d.renderer,f=d.container,m=d.options, +n=m.exporting&&!1!==m.exporting.enabled&&m.navigation&&m.navigation.buttonOptions,p=m.rangeSelector,r=c.buttons,m=w.lang,t=c.div,t=c.inputGroup,A=p.buttonTheme,z=p.buttonPosition||{},B=p.inputEnabled,C=A&&A.states,D=d.plotLeft,E,G=this.getPosition(),F=c.group,H=c.rendered;!1!==p.enabled&&(H||(c.group=F=e.g("range-selector-buttons").add(),c.zoomText=e.text(m.rangeSelectorZoom,q(z.x,D),15).css(p.labelStyle).add(F),E=q(z.x,D)+c.zoomText.getBBox().width+5,g(c.buttonOptions,function(a,b){r[b]=e.button(a.text, +E,0,function(){c.clickButton(b);c.isActive=!0},A,C&&C.hover,C&&C.select,C&&C.disabled).attr({"text-align":"center"}).add(F);E+=r[b].width+q(p.buttonSpacing,5)}),!1!==B&&(c.div=t=l("div",null,{position:"relative",height:0,zIndex:1}),f.parentNode.insertBefore(t,f),c.inputGroup=t=e.g("input-group").add(),t.offset=0,c.drawInput("min"),c.drawInput("max"))),c.updateButtonStates(),F[H?"animate":"attr"]({translateY:G.buttonTop}),!1!==B&&(t.align(h({y:G.inputTop,width:t.offset,x:n&&G.inputTop<(n.y||0)+n.height- +d.spacing[0]?-40:0},p.inputPosition),!0,d.spacingBox),k(B)||(d=F.getBBox(),t[t.alignAttr.translateXc&&(e?a=b-f:b=a+f);d(a)||(a=b=void 0);return{min:a,max:b}};G.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],c,e=this.max,f,g,h=function(a,c){var d=new Date(a);d["set"+b](d["get"+ +b]()+c);return d.getTime()-a};d(a)?(c=e-a,g=a):(c=e+h(e,-a.count),this.chart&&(this.chart.fixedRange=e-c));f=q(this.dataMin,Number.MIN_VALUE);d(c)||(c=f);c<=f&&(c=f,void 0===g&&(g=h(c,a.count)),this.newMax=Math.min(c+g,this.dataMax));d(e)||(c=void 0);return c};F(H.prototype,"init",function(a,b,c){B(this,"init",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new D(this))});a.call(this,b,c)});a.RangeSelector=D})(N);(function(a){var D=a.addEvent,B=a.isNumber;a.Chart.prototype.callbacks.push(function(a){function G(){p= +a.xAxis[0].getExtremes();B(p.min)&&r.render(p.min,p.max)}var p,l=a.scroller,r=a.rangeSelector,w,t;l&&(p=a.xAxis[0].getExtremes(),l.render(p.min,p.max));r&&(t=D(a.xAxis[0],"afterSetExtremes",function(a){r.render(a.min,a.max)}),w=D(a,"redraw",G),G());D(a,"destroy",function(){r&&(w(),t())})})})(N);(function(a){var D=a.arrayMax,B=a.arrayMin,G=a.Axis,H=a.Chart,p=a.defined,l=a.each,r=a.extend,w=a.format,t=a.inArray,k=a.isNumber,m=a.isString,e=a.map,g=a.merge,h=a.pick,C=a.Point,f=a.Renderer,d=a.Series,b= +a.splat,q=a.stop,E=a.SVGRenderer,c=a.VMLRenderer,F=a.wrap,n=d.prototype,A=n.init,x=n.processData,J=C.prototype.tooltipFormatter;a.StockChart=a.stockChart=function(c,d,f){var k=m(c)||c.nodeName,l=arguments[k?1:0],n=l.series,p=a.getOptions(),q,r=h(l.navigator&&l.navigator.enabled,!0)?{startOnTick:!1,endOnTick:!1}:null,t={marker:{enabled:!1,radius:2}},u={shadow:!1,borderWidth:0};l.xAxis=e(b(l.xAxis||{}),function(a){return g({minPadding:0,maxPadding:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"}, +showLastLabel:!0},p.xAxis,a,{type:"datetime",categories:null},r)});l.yAxis=e(b(l.yAxis||{}),function(a){q=h(a.opposite,!0);return g({labels:{y:-2},opposite:q,showLastLabel:!1,title:{text:null}},p.yAxis,a)});l.series=null;l=g({chart:{panning:!0,pinchType:"x"},navigator:{enabled:!0},scrollbar:{enabled:!0},rangeSelector:{enabled:!0},title:{text:null,style:{fontSize:"16px"}},tooltip:{shared:!0,crosshairs:!0},legend:{enabled:!1},plotOptions:{line:t,spline:t,area:t,areaspline:t,arearange:t,areasplinerange:t, +column:u,columnrange:u,candlestick:u,ohlc:u}},l,{_stock:!0,chart:{inverted:!1}});l.series=n;return k?new H(c,l,f):new H(l,d)};F(G.prototype,"autoLabelAlign",function(a){var b=this.chart,c=this.options,b=b._labelPanes=b._labelPanes||{},d=this.options.labels;return this.chart.options._stock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled)?(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=1,"right"):a.call(this,[].slice.call(arguments,1))});F(G.prototype,"getPlotLinePath",function(a, +b,c,d,f,g){var n=this,q=this.isLinked&&!this.series?this.linkedParent.series:this.series,r=n.chart,u=r.renderer,v=n.left,w=n.top,y,x,A,B,C=[],D=[],E,F;if("colorAxis"===n.coll)return a.apply(this,[].slice.call(arguments,1));D=function(a){var b="xAxis"===a?"yAxis":"xAxis";a=n.options[b];return k(a)?[r[b][a]]:m(a)?[r.get(a)]:e(q,function(a){return a[b]})}(n.coll);l(n.isXAxis?r.yAxis:r.xAxis,function(a){if(p(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis",b=p(a.options[b])? +r[b][a.options[b]]:r[b][0];n===b&&D.push(a)}});E=D.length?[]:[n.isXAxis?r.yAxis[0]:r.xAxis[0]];l(D,function(a){-1===t(a,E)&&E.push(a)});F=h(g,n.translate(b,null,null,d));k(F)&&(n.horiz?l(E,function(a){var b;x=a.pos;B=x+a.len;y=A=Math.round(F+n.transB);if(yv+n.width)f?y=A=Math.min(Math.max(v,y),v+n.width):b=!0;b||C.push("M",y,x,"L",A,B)}):l(E,function(a){var b;y=a.pos;A=y+a.len;x=B=Math.round(w+n.height-F);if(xw+n.height)f?x=B=Math.min(Math.max(w,x),n.top+n.height):b=!0;b||C.push("M",y, +x,"L",A,B)}));return 0=e&&(x=-(l.translateX+b.width-e));l.attr({x:m+x,y:k,anchorX:g?m:this.opposite?0:a.chartWidth,anchorY:g?this.opposite?a.chartHeight:0:k+b.height/2})}});n.init=function(){A.apply(this,arguments);this.setCompare(this.options.compare)};n.setCompare=function(a){this.modifyValue= +"value"===a||"percent"===a?function(b,c){var d=this.compareValue;if(void 0!==b&&void 0!==d)return b="value"===a?b-d:b=b/d*100-100,c&&(c.change=b),b}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};n.processData=function(){var a,b=-1,c,d,e,f;x.apply(this,arguments);if(this.xAxis&&this.processedYData)for(c=this.processedXData,d=this.processedYData,e=d.length,this.pointArrayMap&&(b=t("close",this.pointArrayMap),-1===b&&(b=t(this.pointValKey||"y",this.pointArrayMap))),a=0;a< +e-1;a++)if(f=-1=this.xAxis.min&&0!==f){this.compareValue=f;break}};F(n,"getExtremes",function(a){var b;a.apply(this,[].slice.call(arguments,1));this.modifyValue&&(b=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)],this.dataMin=B(b),this.dataMax=D(b))});G.prototype.setCompare=function(a,b){this.isXAxis||(l(this.series,function(b){b.setCompare(a)}),h(b,!0)&&this.chart.redraw())};C.prototype.tooltipFormatter=function(b){b=b.replace("{point.change}",(0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),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("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(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 de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){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[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.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},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.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 l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(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?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);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\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.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"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.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)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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,n){S.fn[n]=function(e,t){return 0 '; + else + var expandButton = ''; + + return '' + expandButton + '' + ellipsedLabel({ name: item.name, parentClass: "nav-tooltip", childClass: "nav-label" }) + ''; +} + +function menuItemsForGroup(group, level, parent) { + var items = ''; + + if (level > 0) + items += menuItem(group, level - 1, parent, true); + + $.each(group.contents, function (contentName, content) { + if (content.type == 'GROUP') + items += menuItemsForGroup(content, level + 1, group.pathFormatted); + else if (content.type == 'REQUEST') + items += menuItem(content, level, group.pathFormatted); + }); + + return items; +} + +function setDetailsMenu(){ + $('.nav ul').append(menuItemsForGroup(stats, 0)); + $('.nav').expandable(); + $('.nav-tooltip').popover({trigger:'hover'}); +} + +function setGlobalMenu(){ + $('.nav ul') + .append('
  • Ranges
  • ') + .append('
  • Stats
  • ') + .append('
  • Active Users
  • ') + .append('
  • Requests / sec
  • ') + .append('
  • Responses / sec
  • '); +} + +function getLink(link){ + var a = link.split('/'); + return (a.length<=1)? link : a[a.length-1]; +} + +function expandUp(li) { + const parentId = li.attr("data-parent"); + if (parentId != "ROOT") { + const span = $('#' + parentId); + const parentLi = span.parents('li').first(); + span.expand(parentLi, false); + expandUp(parentLi); + } +} + +function setActiveMenu(){ + $('.nav a').each(function() { + const navA = $(this) + if(!navA.hasClass('expand-button') && navA.attr('href') == getLink(window.location.pathname)) { + const li = $(this).parents('li').first(); + li.addClass('on'); + expandUp(li); + return false; + } + }); +} diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/stats.js b/Sources/API/gatling/results/Quarkus-Simulation/js/stats.js new file mode 100644 index 0000000..a13d26e --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/stats.js @@ -0,0 +1,539 @@ +var stats = { + type: "GROUP", +name: "All Requests", +path: "", +pathFormatted: "group_missing-name-b06d1", +stats: { + "name": "All Requests", + "numberOfRequests": { + "total": "3748", + "ok": "2748", + "ko": "1000" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "0" + }, + "maxResponseTime": { + "total": "733", + "ok": "733", + "ko": "233" + }, + "meanResponseTime": { + "total": "9", + "ok": "10", + "ko": "5" + }, + "standardDeviation": { + "total": "48", + "ok": "54", + "ko": "23" + }, + "percentiles1": { + "total": "2", + "ok": "2", + "ko": "1" + }, + "percentiles2": { + "total": "3", + "ok": "4", + "ko": "2" + }, + "percentiles3": { + "total": "12", + "ok": "15", + "ko": "5" + }, + "percentiles4": { + "total": "181", + "ok": "235", + "ko": "151" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2748, + "percentage": 73 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 1000, + "percentage": 27 +}, + "meanNumberOfRequestsPerSecond": { + "total": "208.222", + "ok": "152.667", + "ko": "55.556" + } +}, +contents: { +"req_get-all-users-b5141": { + type: "REQUEST", + name: "Get All Users", +path: "Get All Users", +pathFormatted: "req_get-all-users-b5141", +stats: { + "name": "Get All Users", + "numberOfRequests": { + "total": "1000", + "ok": "1000", + "ko": "0" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "-" + }, + "maxResponseTime": { + "total": "733", + "ok": "733", + "ko": "-" + }, + "meanResponseTime": { + "total": "19", + "ok": "19", + "ko": "-" + }, + "standardDeviation": { + "total": "85", + "ok": "85", + "ko": "-" + }, + "percentiles1": { + "total": "3", + "ok": "3", + "ko": "-" + }, + "percentiles2": { + "total": "4", + "ok": "4", + "ko": "-" + }, + "percentiles3": { + "total": "30", + "ok": "30", + "ko": "-" + }, + "percentiles4": { + "total": "543", + "ok": "543", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1000, + "percentage": 100 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "55.556", + "ok": "55.556", + "ko": "-" + } +} + },"req_get-user-00551": { + type: "REQUEST", + name: "Get User", +path: "Get User", +pathFormatted: "req_get-user-00551", +stats: { + "name": "Get User", + "numberOfRequests": { + "total": "1000", + "ok": "1000", + "ko": "0" + }, + "minResponseTime": { + "total": "1", + "ok": "1", + "ko": "-" + }, + "maxResponseTime": { + "total": "52", + "ok": "52", + "ko": "-" + }, + "meanResponseTime": { + "total": "4", + "ok": "4", + "ko": "-" + }, + "standardDeviation": { + "total": "6", + "ok": "6", + "ko": "-" + }, + "percentiles1": { + "total": "3", + "ok": "3", + "ko": "-" + }, + "percentiles2": { + "total": "4", + "ok": "4", + "ko": "-" + }, + "percentiles3": { + "total": "12", + "ok": "12", + "ko": "-" + }, + "percentiles4": { + "total": "42", + "ok": "42", + "ko": "-" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1000, + "percentage": 100 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": "55.556", + "ok": "55.556", + "ko": "-" + } +} + },"req_create-user-266a3": { + type: "REQUEST", + name: "Create User", +path: "Create User", +pathFormatted: "req_create-user-266a3", +stats: { + "name": "Create User", + "numberOfRequests": { + "total": "1000", + "ok": "496", + "ko": "504" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "0" + }, + "maxResponseTime": { + "total": "236", + "ok": "236", + "ko": "233" + }, + "meanResponseTime": { + "total": "9", + "ok": "9", + "ko": "8" + }, + "standardDeviation": { + "total": "33", + "ok": "35", + "ko": "32" + }, + "percentiles1": { + "total": "1", + "ok": "1", + "ko": "1" + }, + "percentiles2": { + "total": "2", + "ok": "2", + "ko": "2" + }, + "percentiles3": { + "total": "16", + "ok": "24", + "ko": "10" + }, + "percentiles4": { + "total": "175", + "ok": "191", + "ko": "166" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 496, + "percentage": 50 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 504, + "percentage": 50 +}, + "meanNumberOfRequestsPerSecond": { + "total": "55.556", + "ok": "27.556", + "ko": "28" + } +} + },"req_update-user-6b160": { + type: "REQUEST", + name: "Update User", +path: "Update User", +pathFormatted: "req_update-user-6b160", +stats: { + "name": "Update User", + "numberOfRequests": { + "total": "496", + "ok": "252", + "ko": "244" + }, + "minResponseTime": { + "total": "0", + "ok": "0", + "ko": "0" + }, + "maxResponseTime": { + "total": "14", + "ok": "14", + "ko": "6" + }, + "meanResponseTime": { + "total": "1", + "ok": "1", + "ko": "1" + }, + "standardDeviation": { + "total": "1", + "ok": "2", + "ko": "1" + }, + "percentiles1": { + "total": "1", + "ok": "1", + "ko": "1" + }, + "percentiles2": { + "total": "1", + "ok": "2", + "ko": "1" + }, + "percentiles3": { + "total": "3", + "ok": "5", + "ko": "2" + }, + "percentiles4": { + "total": "6", + "ok": "7", + "ko": "6" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 252, + "percentage": 51 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 244, + "percentage": 49 +}, + "meanNumberOfRequestsPerSecond": { + "total": "27.556", + "ok": "14", + "ko": "13.556" + } +} + },"req_delete-user-516b1": { + type: "REQUEST", + name: "Delete User", +path: "Delete User", +pathFormatted: "req_delete-user-516b1", +stats: { + "name": "Delete User", + "numberOfRequests": { + "total": "252", + "ok": "0", + "ko": "252" + }, + "minResponseTime": { + "total": "0", + "ok": "-", + "ko": "0" + }, + "maxResponseTime": { + "total": "10", + "ok": "-", + "ko": "10" + }, + "meanResponseTime": { + "total": "1", + "ok": "-", + "ko": "1" + }, + "standardDeviation": { + "total": "1", + "ok": "-", + "ko": "1" + }, + "percentiles1": { + "total": "1", + "ok": "-", + "ko": "1" + }, + "percentiles2": { + "total": "1", + "ok": "-", + "ko": "1" + }, + "percentiles3": { + "total": "2", + "ok": "-", + "ko": "2" + }, + "percentiles4": { + "total": "8", + "ok": "-", + "ko": "8" + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 0, + "percentage": 0 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 252, + "percentage": 100 +}, + "meanNumberOfRequestsPerSecond": { + "total": "14", + "ok": "-", + "ko": "14" + } +} + } +} + +} + +function fillStats(stat){ + $("#numberOfRequests").append(stat.numberOfRequests.total); + $("#numberOfRequestsOK").append(stat.numberOfRequests.ok); + $("#numberOfRequestsKO").append(stat.numberOfRequests.ko); + + $("#minResponseTime").append(stat.minResponseTime.total); + $("#minResponseTimeOK").append(stat.minResponseTime.ok); + $("#minResponseTimeKO").append(stat.minResponseTime.ko); + + $("#maxResponseTime").append(stat.maxResponseTime.total); + $("#maxResponseTimeOK").append(stat.maxResponseTime.ok); + $("#maxResponseTimeKO").append(stat.maxResponseTime.ko); + + $("#meanResponseTime").append(stat.meanResponseTime.total); + $("#meanResponseTimeOK").append(stat.meanResponseTime.ok); + $("#meanResponseTimeKO").append(stat.meanResponseTime.ko); + + $("#standardDeviation").append(stat.standardDeviation.total); + $("#standardDeviationOK").append(stat.standardDeviation.ok); + $("#standardDeviationKO").append(stat.standardDeviation.ko); + + $("#percentiles1").append(stat.percentiles1.total); + $("#percentiles1OK").append(stat.percentiles1.ok); + $("#percentiles1KO").append(stat.percentiles1.ko); + + $("#percentiles2").append(stat.percentiles2.total); + $("#percentiles2OK").append(stat.percentiles2.ok); + $("#percentiles2KO").append(stat.percentiles2.ko); + + $("#percentiles3").append(stat.percentiles3.total); + $("#percentiles3OK").append(stat.percentiles3.ok); + $("#percentiles3KO").append(stat.percentiles3.ko); + + $("#percentiles4").append(stat.percentiles4.total); + $("#percentiles4OK").append(stat.percentiles4.ok); + $("#percentiles4KO").append(stat.percentiles4.ko); + + $("#meanNumberOfRequestsPerSecond").append(stat.meanNumberOfRequestsPerSecond.total); + $("#meanNumberOfRequestsPerSecondOK").append(stat.meanNumberOfRequestsPerSecond.ok); + $("#meanNumberOfRequestsPerSecondKO").append(stat.meanNumberOfRequestsPerSecond.ko); +} diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/stats.json b/Sources/API/gatling/results/Quarkus-Simulation/js/stats.json new file mode 100644 index 0000000..6aea031 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/stats.json @@ -0,0 +1,497 @@ +{ + "type": "GROUP", +"name": "All Requests", +"path": "", +"pathFormatted": "group_missing-name-b06d1", +"stats": { + "name": "All Requests", + "numberOfRequests": { + "total": 3748, + "ok": 2748, + "ko": 1000 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 733, + "ok": 733, + "ko": 233 + }, + "meanResponseTime": { + "total": 9, + "ok": 10, + "ko": 5 + }, + "standardDeviation": { + "total": 48, + "ok": 54, + "ko": 23 + }, + "percentiles1": { + "total": 2, + "ok": 2, + "ko": 1 + }, + "percentiles2": { + "total": 3, + "ok": 4, + "ko": 2 + }, + "percentiles3": { + "total": 12, + "ok": 15, + "ko": 5 + }, + "percentiles4": { + "total": 181, + "ok": 235, + "ko": 151 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 2748, + "percentage": 73 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 1000, + "percentage": 27 +}, + "meanNumberOfRequestsPerSecond": { + "total": 208.22222222222223, + "ok": 152.66666666666666, + "ko": 55.55555555555556 + } +}, +"contents": { +"req_get-all-users-b5141": { + "type": "REQUEST", + "name": "Get All Users", +"path": "Get All Users", +"pathFormatted": "req_get-all-users-b5141", +"stats": { + "name": "Get All Users", + "numberOfRequests": { + "total": 1000, + "ok": 1000, + "ko": 0 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 733, + "ok": 733, + "ko": 0 + }, + "meanResponseTime": { + "total": 19, + "ok": 19, + "ko": 0 + }, + "standardDeviation": { + "total": 85, + "ok": 85, + "ko": 0 + }, + "percentiles1": { + "total": 3, + "ok": 3, + "ko": 0 + }, + "percentiles2": { + "total": 4, + "ok": 4, + "ko": 0 + }, + "percentiles3": { + "total": 30, + "ok": 30, + "ko": 0 + }, + "percentiles4": { + "total": 543, + "ok": 543, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1000, + "percentage": 100 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 55.55555555555556, + "ok": 55.55555555555556, + "ko": 0 + } +} + },"req_get-user-00551": { + "type": "REQUEST", + "name": "Get User", +"path": "Get User", +"pathFormatted": "req_get-user-00551", +"stats": { + "name": "Get User", + "numberOfRequests": { + "total": 1000, + "ok": 1000, + "ko": 0 + }, + "minResponseTime": { + "total": 1, + "ok": 1, + "ko": 0 + }, + "maxResponseTime": { + "total": 52, + "ok": 52, + "ko": 0 + }, + "meanResponseTime": { + "total": 4, + "ok": 4, + "ko": 0 + }, + "standardDeviation": { + "total": 6, + "ok": 6, + "ko": 0 + }, + "percentiles1": { + "total": 3, + "ok": 3, + "ko": 0 + }, + "percentiles2": { + "total": 4, + "ok": 4, + "ko": 0 + }, + "percentiles3": { + "total": 12, + "ok": 12, + "ko": 0 + }, + "percentiles4": { + "total": 42, + "ok": 42, + "ko": 0 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 1000, + "percentage": 100 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 0, + "percentage": 0 +}, + "meanNumberOfRequestsPerSecond": { + "total": 55.55555555555556, + "ok": 55.55555555555556, + "ko": 0 + } +} + },"req_create-user-266a3": { + "type": "REQUEST", + "name": "Create User", +"path": "Create User", +"pathFormatted": "req_create-user-266a3", +"stats": { + "name": "Create User", + "numberOfRequests": { + "total": 1000, + "ok": 496, + "ko": 504 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 236, + "ok": 236, + "ko": 233 + }, + "meanResponseTime": { + "total": 9, + "ok": 9, + "ko": 8 + }, + "standardDeviation": { + "total": 33, + "ok": 35, + "ko": 32 + }, + "percentiles1": { + "total": 1, + "ok": 1, + "ko": 1 + }, + "percentiles2": { + "total": 2, + "ok": 2, + "ko": 2 + }, + "percentiles3": { + "total": 16, + "ok": 24, + "ko": 10 + }, + "percentiles4": { + "total": 175, + "ok": 191, + "ko": 166 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 496, + "percentage": 50 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 504, + "percentage": 50 +}, + "meanNumberOfRequestsPerSecond": { + "total": 55.55555555555556, + "ok": 27.555555555555557, + "ko": 28.0 + } +} + },"req_update-user-6b160": { + "type": "REQUEST", + "name": "Update User", +"path": "Update User", +"pathFormatted": "req_update-user-6b160", +"stats": { + "name": "Update User", + "numberOfRequests": { + "total": 496, + "ok": 252, + "ko": 244 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 14, + "ok": 14, + "ko": 6 + }, + "meanResponseTime": { + "total": 1, + "ok": 1, + "ko": 1 + }, + "standardDeviation": { + "total": 1, + "ok": 2, + "ko": 1 + }, + "percentiles1": { + "total": 1, + "ok": 1, + "ko": 1 + }, + "percentiles2": { + "total": 1, + "ok": 2, + "ko": 1 + }, + "percentiles3": { + "total": 3, + "ok": 5, + "ko": 2 + }, + "percentiles4": { + "total": 6, + "ok": 7, + "ko": 6 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 252, + "percentage": 51 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 244, + "percentage": 49 +}, + "meanNumberOfRequestsPerSecond": { + "total": 27.555555555555557, + "ok": 14.0, + "ko": 13.555555555555555 + } +} + },"req_delete-user-516b1": { + "type": "REQUEST", + "name": "Delete User", +"path": "Delete User", +"pathFormatted": "req_delete-user-516b1", +"stats": { + "name": "Delete User", + "numberOfRequests": { + "total": 252, + "ok": 0, + "ko": 252 + }, + "minResponseTime": { + "total": 0, + "ok": 0, + "ko": 0 + }, + "maxResponseTime": { + "total": 10, + "ok": 0, + "ko": 10 + }, + "meanResponseTime": { + "total": 1, + "ok": 0, + "ko": 1 + }, + "standardDeviation": { + "total": 1, + "ok": 0, + "ko": 1 + }, + "percentiles1": { + "total": 1, + "ok": 0, + "ko": 1 + }, + "percentiles2": { + "total": 1, + "ok": 0, + "ko": 1 + }, + "percentiles3": { + "total": 2, + "ok": 0, + "ko": 2 + }, + "percentiles4": { + "total": 8, + "ok": 0, + "ko": 8 + }, + "group1": { + "name": "t < 800 ms", + "htmlName": "t < 800 ms", + "count": 0, + "percentage": 0 +}, + "group2": { + "name": "800 ms <= t < 1200 ms", + "htmlName": "t ≥ 800 ms
    t < 1200 ms", + "count": 0, + "percentage": 0 +}, + "group3": { + "name": "t ≥ 1200 ms", + "htmlName": "t ≥ 1200 ms", + "count": 0, + "percentage": 0 +}, + "group4": { + "name": "failed", + "htmlName": "failed", + "count": 252, + "percentage": 100 +}, + "meanNumberOfRequestsPerSecond": { + "total": 14.0, + "ok": 0, + "ko": 14.0 + } +} + } +} + +} \ No newline at end of file diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/theme.js b/Sources/API/gatling/results/Quarkus-Simulation/js/theme.js new file mode 100644 index 0000000..b95a7b3 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/theme.js @@ -0,0 +1,127 @@ +/* + * Copyright 2011-2022 Gatling Corp + * + * Licensed under the Gatling Highcharts License + */ +Highcharts.theme = { + chart: { + backgroundColor: '#f7f7f7', + borderWidth: 0, + borderRadius: 8, + plotBackgroundColor: null, + plotShadow: false, + plotBorderWidth: 0 + }, + xAxis: { + gridLineWidth: 0, + lineColor: '#666', + tickColor: '#666', + labels: { + style: { + color: '#666' + } + }, + title: { + style: { + color: '#666' + } + } + }, + yAxis: { + alternateGridColor: null, + minorTickInterval: null, + gridLineColor: '#999', + lineWidth: 0, + tickWidth: 0, + labels: { + style: { + color: '#666', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#666', + font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + labels: { + style: { + color: '#CCC' + } + }, + + + rangeSelector: { + buttonTheme: { + fill: '#cfc9c6', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#b2b2a9' + }, + states: { + hover: { + fill: '#92918C', + stroke: '#000000', + style: { + color: '#34332e', + fontWeight: 'bold', + borderColor: '#8b897d' + } + }, + select: { + fill: '#E37400', + stroke: '#000000', + style: { + color: '#FFF' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: '#8b897d' + } + }, + + navigator: { + handles: { + backgroundColor: '#f7f7f7', + borderColor: '#92918C' + }, + outlineColor: '#92918C', + outlineWidth: 1, + maskFill: 'rgba(146, 145, 140, 0.5)', + series: { + color: '#5E7BE2', + lineColor: '#5E7BE2' + } + }, + + scrollbar: { + buttonBackgroundColor: '#f7f7f7', + buttonBorderWidth: 1, + buttonBorderColor: '#92918C', + buttonArrowColor: '#92918C', + buttonBorderRadius: 2, + + barBorderWidth: 1, + barBorderRadius: 0, + barBackgroundColor: '#92918C', + barBorderColor: '#92918C', + + rifleColor: '#92918C', + + trackBackgroundColor: '#b0b0a8', + trackBorderWidth: 1, + trackBorderColor: '#b0b0a8' + } +}; + +Highcharts.setOptions(Highcharts.theme); diff --git a/Sources/API/gatling/results/Quarkus-Simulation/js/unpack.js b/Sources/API/gatling/results/Quarkus-Simulation/js/unpack.js new file mode 100644 index 0000000..883c33e --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/js/unpack.js @@ -0,0 +1,38 @@ +'use strict'; + +var unpack = function (array) { + var findNbSeries = function (array) { + var currentPlotPack; + var length = array.length; + + for (var i = 0; i < length; i++) { + currentPlotPack = array[i][1]; + if(currentPlotPack !== null) { + return currentPlotPack.length; + } + } + return 0; + }; + + var i, j; + var nbPlots = array.length; + var nbSeries = findNbSeries(array); + + // Prepare unpacked array + var unpackedArray = new Array(nbSeries); + + for (i = 0; i < nbSeries; i++) { + unpackedArray[i] = new Array(nbPlots); + } + + // Unpack the array + for (i = 0; i < nbPlots; i++) { + var timestamp = array[i][0]; + var values = array[i][1]; + for (j = 0; j < nbSeries; j++) { + unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; + } + } + + return unpackedArray; +}; diff --git a/Sources/API/gatling/results/Quarkus-Simulation/req_create-user-266a3.html b/Sources/API/gatling/results/Quarkus-Simulation/req_create-user-266a3.html new file mode 100644 index 0000000..f186ec2 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/req_create-user-266a3.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Create User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/req_delete-user-516b1.html b/Sources/API/gatling/results/Quarkus-Simulation/req_delete-user-516b1.html new file mode 100644 index 0000000..0887c95 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/req_delete-user-516b1.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Delete User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/req_get-all-users-b5141.html b/Sources/API/gatling/results/Quarkus-Simulation/req_get-all-users-b5141.html new file mode 100644 index 0000000..a8617ee --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/req_get-all-users-b5141.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get All Users + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/req_get-user-00551.html b/Sources/API/gatling/results/Quarkus-Simulation/req_get-user-00551.html new file mode 100644 index 0000000..7ff66a6 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/req_get-user-00551.html @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Get User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/req_update-user-6b160.html b/Sources/API/gatling/results/Quarkus-Simulation/req_update-user-6b160.html new file mode 100644 index 0000000..93b578d --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/req_update-user-6b160.html @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + +Gatling Stats - Update User + + +
    +
    +
    + + Try Gatling Enterprise
    +
    + +
    +
    +
    +
    + UserSimulation +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    Stats
    +
    +
    +

    Executions

    + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Total count
    Mean count/s
    +

    Response Time (ms)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TotalOKKO
    Min
    50th percentile
    75th percentile
    95th percentile
    99th percentile
    Max
    Mean
    Standard Deviation
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/simulation.log b/Sources/API/gatling/results/Quarkus-Simulation/simulation.log new file mode 100644 index 0000000..76e03e6 --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/simulation.log @@ -0,0 +1,4749 @@ +RUN benchmark.UserSimulation usersimulation 1677620083882 Load testing quarkus API 3.9.0 +USER Users START 1677620085356 +USER Users START 1677620085355 +USER Users START 1677620085355 +USER Users START 1677620085356 +USER Users START 1677620085355 +USER Users START 1677620085356 +USER Users START 1677620085355 +USER Users START 1677620085355 +USER Users START 1677620085359 +USER Users START 1677620085357 +USER Users START 1677620085355 +USER Users START 1677620085355 +USER Users START 1677620085355 +USER Users START 1677620085371 +USER Users START 1677620085383 +USER Users START 1677620085413 +USER Users START 1677620085428 +USER Users START 1677620085444 +USER Users START 1677620085477 +USER Users START 1677620085491 +USER Users START 1677620085506 +USER Users START 1677620085535 +USER Users START 1677620085550 +USER Users START 1677620085565 +USER Users START 1677620085596 +USER Users START 1677620085611 +USER Users START 1677620085626 +USER Users START 1677620085658 +USER Users START 1677620085673 +USER Users START 1677620085688 +USER Users START 1677620085721 +USER Users START 1677620085736 +USER Users START 1677620085751 +USER Users START 1677620085781 +USER Users START 1677620085797 +USER Users START 1677620085812 +REQUEST Get All Users 1677620085183 1677620085822 OK +REQUEST Get All Users 1677620085142 1677620085817 OK +REQUEST Get All Users 1677620085198 1677620085805 OK +USER Users START 1677620085832 +REQUEST Get All Users 1677620085352 1677620085837 OK +REQUEST Get All Users 1677620085243 1677620085840 OK +REQUEST Get All Users 1677620085168 1677620085844 OK +REQUEST Get All Users 1677620085305 1677620085847 OK +REQUEST Get All Users 1677620085320 1677620085849 OK +REQUEST Get All Users 1677620085366 1677620085852 OK +REQUEST Get All Users 1677620085412 1677620085854 OK +REQUEST Get All Users 1677620085443 1677620085857 OK +USER Users START 1677620085859 +REQUEST Get All Users 1677620085228 1677620085874 OK +REQUEST Get All Users 1677620085382 1677620085875 OK +REQUEST Get All Users 1677620085142 1677620085875 OK +USER Users START 1677620085876 +REQUEST Get All Users 1677620085152 1677620085879 OK +REQUEST Get All Users 1677620085427 1677620085881 OK +REQUEST Get All Users 1677620085490 1677620085882 OK +REQUEST Get All Users 1677620085259 1677620085882 OK +REQUEST Get All Users 1677620085534 1677620085886 OK +REQUEST Get All Users 1677620085564 1677620085887 OK +REQUEST Get All Users 1677620085290 1677620085888 OK +REQUEST Get All Users 1677620085611 1677620085889 OK +USER Users START 1677620085891 +REQUEST Get All Users 1677620085657 1677620085891 OK +REQUEST Get All Users 1677620085475 1677620085892 OK +REQUEST Get All Users 1677620085687 1677620085893 OK +REQUEST Get All Users 1677620085505 1677620085896 OK +REQUEST Get All Users 1677620085734 1677620085898 OK +REQUEST Get All Users 1677620085549 1677620085898 OK +REQUEST Get All Users 1677620085595 1677620085899 OK +REQUEST Get All Users 1677620085625 1677620085901 OK +REQUEST Get All Users 1677620085719 1677620085902 OK +REQUEST Get All Users 1677620085750 1677620085903 OK +REQUEST Get All Users 1677620085672 1677620085904 OK +USER Users START 1677620085906 +REQUEST Get All Users 1677620085796 1677620085906 OK +REQUEST Get All Users 1677620085811 1677620085907 OK +REQUEST Get All Users 1677620085780 1677620085909 OK +REQUEST Get All Users 1677620085831 1677620085909 OK +REQUEST Get All Users 1677620085859 1677620085910 OK +REQUEST Get All Users 1677620085876 1677620085911 OK +REQUEST Get All Users 1677620085890 1677620085914 OK +REQUEST Get All Users 1677620085905 1677620085917 OK +USER Users START 1677620085937 +REQUEST Get All Users 1677620085936 1677620085945 OK +USER Users START 1677620085952 +REQUEST Get All Users 1677620085952 1677620085960 OK +USER Users START 1677620085968 +REQUEST Get All Users 1677620085967 1677620085975 OK +USER Users START 1677620085999 +REQUEST Get All Users 1677620085998 1677620086006 OK +USER Users START 1677620086014 +REQUEST Get All Users 1677620086014 1677620086021 OK +USER Users START 1677620086029 +REQUEST Get All Users 1677620086028 1677620086035 OK +USER Users START 1677620086061 +REQUEST Get All Users 1677620086060 1677620086067 OK +USER Users START 1677620086076 +REQUEST Get All Users 1677620086076 1677620086083 OK +USER Users START 1677620086093 +REQUEST Get All Users 1677620086092 1677620086100 OK +USER Users START 1677620086109 +REQUEST Get All Users 1677620086108 1677620086116 OK +USER Users START 1677620086139 +REQUEST Get All Users 1677620086138 1677620086146 OK +USER Users START 1677620086154 +REQUEST Get All Users 1677620086154 1677620086162 OK +USER Users START 1677620086170 +REQUEST Get All Users 1677620086169 1677620086176 OK +USER Users START 1677620086201 +REQUEST Get All Users 1677620086200 1677620086205 OK +USER Users START 1677620086216 +REQUEST Get All Users 1677620086215 1677620086220 OK +USER Users START 1677620086231 +REQUEST Get All Users 1677620086231 1677620086236 OK +USER Users START 1677620086248 +REQUEST Get All Users 1677620086247 1677620086253 OK +USER Users START 1677620086279 +REQUEST Get All Users 1677620086278 1677620086284 OK +USER Users START 1677620086294 +REQUEST Get All Users 1677620086293 1677620086299 OK +USER Users START 1677620086310 +REQUEST Get All Users 1677620086310 1677620086315 OK +USER Users START 1677620086341 +REQUEST Get All Users 1677620086340 1677620086346 OK +USER Users START 1677620086356 +REQUEST Get All Users 1677620086355 1677620086363 OK +USER Users START 1677620086372 +REQUEST Get All Users 1677620086371 1677620086380 OK +USER Users START 1677620086387 +REQUEST Get All Users 1677620086387 1677620086395 OK +USER Users START 1677620086419 +REQUEST Get All Users 1677620086418 1677620086427 OK +USER Users START 1677620086435 +REQUEST Get All Users 1677620086434 1677620086441 OK +USER Users START 1677620086450 +REQUEST Get All Users 1677620086450 1677620086457 OK +USER Users START 1677620086466 +REQUEST Get All Users 1677620086466 1677620086472 OK +USER Users START 1677620086497 +REQUEST Get All Users 1677620086497 1677620086504 OK +USER Users START 1677620086513 +REQUEST Get All Users 1677620086512 1677620086517 OK +USER Users START 1677620086528 +REQUEST Get All Users 1677620086528 1677620086531 OK +USER Users START 1677620086560 +REQUEST Get All Users 1677620086560 1677620086564 OK +USER Users START 1677620086575 +REQUEST Get All Users 1677620086575 1677620086588 OK +USER Users START 1677620086591 +REQUEST Get All Users 1677620086591 1677620086596 OK +USER Users START 1677620086606 +REQUEST Get All Users 1677620086606 1677620086613 OK +USER Users START 1677620086637 +REQUEST Get All Users 1677620086637 1677620086642 OK +USER Users START 1677620086653 +REQUEST Get All Users 1677620086653 1677620086659 OK +USER Users START 1677620086669 +REQUEST Get All Users 1677620086669 1677620086674 OK +USER Users START 1677620086701 +REQUEST Get All Users 1677620086701 1677620086706 OK +USER Users START 1677620086716 +REQUEST Get All Users 1677620086716 1677620086721 OK +USER Users START 1677620086732 +REQUEST Get All Users 1677620086732 1677620086736 OK +USER Users START 1677620086748 +REQUEST Get All Users 1677620086748 1677620086753 OK +USER Users START 1677620086780 +REQUEST Get All Users 1677620086780 1677620086784 OK +USER Users START 1677620086796 +REQUEST Get All Users 1677620086795 1677620086799 OK +USER Users START 1677620086810 +REQUEST Get All Users 1677620086810 1677620086814 OK +USER Users START 1677620086841 +USER Users START 1677620086857 +USER Users START 1677620086874 +REQUEST Get User 1677620086840 1677620086887 OK +REQUEST Get User 1677620086840 1677620086887 OK +REQUEST Get User 1677620086840 1677620086887 OK +USER Users START 1677620086889 +REQUEST Get User 1677620086840 1677620086892 OK +REQUEST Get User 1677620086856 1677620086893 OK +REQUEST Get User 1677620086856 1677620086894 OK +REQUEST Get All Users 1677620086841 1677620086897 OK +REQUEST Get User 1677620086856 1677620086898 OK +REQUEST Get User 1677620086856 1677620086899 OK +REQUEST Get User 1677620086856 1677620086901 OK +REQUEST Get All Users 1677620086857 1677620086902 OK +REQUEST Get All Users 1677620086873 1677620086902 OK +REQUEST Get User 1677620086873 1677620086903 OK +REQUEST Get User 1677620086888 1677620086905 OK +REQUEST Get User 1677620086888 1677620086905 OK +REQUEST Get User 1677620086888 1677620086905 OK +REQUEST Get User 1677620086856 1677620086908 OK +REQUEST Get User 1677620086888 1677620086911 OK +REQUEST Get User 1677620086888 1677620086911 OK +REQUEST Get User 1677620086888 1677620086912 OK +REQUEST Get User 1677620086888 1677620086912 OK +REQUEST Get User 1677620086888 1677620086913 OK +REQUEST Get User 1677620086891 1677620086914 OK +REQUEST Get All Users 1677620086888 1677620086916 OK +REQUEST Get User 1677620086903 1677620086916 OK +REQUEST Get User 1677620086888 1677620086916 OK +REQUEST Get User 1677620086903 1677620086918 OK +REQUEST Get User 1677620086903 1677620086918 OK +REQUEST Get User 1677620086903 1677620086918 OK +REQUEST Get User 1677620086903 1677620086920 OK +USER Users START 1677620086920 +REQUEST Get User 1677620086903 1677620086921 OK +REQUEST Get User 1677620086903 1677620086922 OK +REQUEST Get User 1677620086903 1677620086923 OK +REQUEST Get User 1677620086912 1677620086924 OK +REQUEST Get User 1677620086919 1677620086925 OK +REQUEST Get User 1677620086919 1677620086926 OK +REQUEST Get User 1677620086921 1677620086928 OK +REQUEST Get User 1677620086919 1677620086928 OK +REQUEST Get User 1677620086913 1677620086929 OK +REQUEST Get User 1677620086919 1677620086930 OK +REQUEST Get User 1677620086919 1677620086931 OK +REQUEST Get User 1677620086919 1677620086931 OK +REQUEST Get User 1677620086904 1677620086932 OK +REQUEST Get User 1677620086919 1677620086932 OK +REQUEST Get User 1677620086919 1677620086932 OK +REQUEST Get All Users 1677620086920 1677620086933 OK +USER Users START 1677620086935 +REQUEST Get All Users 1677620086935 1677620086939 OK +USER Users START 1677620086951 +REQUEST Get User 1677620086950 1677620086954 OK +REQUEST Get All Users 1677620086950 1677620086955 OK +USER Users START 1677620086966 +REQUEST Get User 1677620086966 1677620086969 OK +REQUEST Get All Users 1677620086966 1677620086970 OK +REQUEST Get User 1677620086981 1677620086984 OK +USER Users START 1677620086997 +REQUEST Get All Users 1677620086996 1677620087001 OK +USER Users START 1677620087014 +REQUEST Get User 1677620087012 1677620087016 OK +REQUEST Get All Users 1677620087013 1677620087017 OK +USER Users START 1677620087029 +REQUEST Get User 1677620087028 1677620087031 OK +REQUEST Get All Users 1677620087028 1677620087031 OK +REQUEST Get User 1677620087043 1677620087046 OK +USER Users START 1677620087059 +REQUEST Get All Users 1677620087058 1677620087062 OK +USER Users START 1677620087074 +REQUEST Get User 1677620087073 1677620087077 OK +REQUEST Get All Users 1677620087074 1677620087077 OK +USER Users START 1677620087091 +REQUEST Get User 1677620087090 1677620087093 OK +REQUEST Get All Users 1677620087090 1677620087093 OK +REQUEST Get User 1677620087105 1677620087107 OK +USER Users START 1677620087121 +USER Users START 1677620087121 +REQUEST Get All Users 1677620087120 1677620087124 OK +REQUEST Get User 1677620087120 1677620087124 OK +REQUEST Get All Users 1677620087120 1677620087125 OK +USER Users START 1677620087137 +REQUEST Get All Users 1677620087137 1677620087143 OK +REQUEST Get User 1677620087151 1677620087156 OK +USER Users START 1677620087168 +REQUEST Get User 1677620087167 1677620087170 OK +REQUEST Get All Users 1677620087167 1677620087171 OK +USER Users START 1677620087183 +REQUEST Get User 1677620087182 1677620087185 OK +REQUEST Get All Users 1677620087183 1677620087186 OK +USER Users START 1677620087199 +REQUEST Get All Users 1677620087199 1677620087203 OK +USER Users START 1677620087215 +REQUEST Get User 1677620087214 1677620087217 OK +REQUEST Get All Users 1677620087214 1677620087218 OK +REQUEST Get User 1677620087230 1677620087232 OK +USER Users START 1677620087245 +REQUEST Get User 1677620087245 1677620087248 OK +REQUEST Get All Users 1677620087245 1677620087248 OK +USER Users START 1677620087261 +REQUEST Get All Users 1677620087260 1677620087263 OK +REQUEST Get User 1677620087260 1677620087263 OK +USER Users START 1677620087277 +REQUEST Get All Users 1677620087276 1677620087281 OK +REQUEST Get User 1677620087292 1677620087296 OK +USER Users START 1677620087308 +REQUEST Get User 1677620087307 1677620087311 OK +REQUEST Get All Users 1677620087307 1677620087313 OK +USER Users START 1677620087323 +REQUEST Get User 1677620087322 1677620087327 OK +REQUEST Get All Users 1677620087323 1677620087327 OK +USER Users START 1677620087339 +REQUEST Get All Users 1677620087338 1677620087343 OK +REQUEST Get User 1677620087353 1677620087358 OK +USER Users START 1677620087369 +REQUEST Get User 1677620087368 1677620087372 OK +REQUEST Get All Users 1677620087368 1677620087374 OK +USER Users START 1677620087385 +REQUEST Get User 1677620087384 1677620087389 OK +REQUEST Get All Users 1677620087384 1677620087391 OK +USER Users START 1677620087400 +REQUEST Get User 1677620087399 1677620087402 OK +REQUEST Get All Users 1677620087399 1677620087403 OK +USER Users START 1677620087416 +REQUEST Get All Users 1677620087416 1677620087420 OK +REQUEST Get User 1677620087431 1677620087434 OK +USER Users START 1677620087447 +REQUEST Get All Users 1677620087446 1677620087451 OK +USER Users START 1677620087463 +REQUEST Get User 1677620087446 1677620087465 OK +REQUEST Get User 1677620087462 1677620087466 OK +REQUEST Get All Users 1677620087462 1677620087468 OK +USER Users START 1677620087478 +REQUEST Get User 1677620087477 1677620087480 OK +REQUEST Get All Users 1677620087477 1677620087481 OK +USER Users START 1677620087509 +REQUEST Get User 1677620087508 1677620087512 OK +REQUEST Get All Users 1677620087508 1677620087512 OK +USER Users START 1677620087524 +REQUEST Get User 1677620087523 1677620087528 OK +REQUEST Get All Users 1677620087523 1677620087529 OK +USER Users START 1677620087539 +REQUEST Get User 1677620087538 1677620087543 OK +REQUEST Get All Users 1677620087539 1677620087543 OK +USER Users START 1677620087570 +REQUEST Get User 1677620087569 1677620087574 OK +REQUEST Get All Users 1677620087570 1677620087574 OK +USER Users START 1677620087586 +REQUEST Get All Users 1677620087585 1677620087592 OK +USER Users START 1677620087601 +REQUEST Get User 1677620087600 1677620087604 OK +REQUEST Get User 1677620087600 1677620087604 OK +REQUEST Get All Users 1677620087600 1677620087605 OK +USER Users START 1677620087617 +REQUEST Get User 1677620087616 1677620087619 OK +REQUEST Get All Users 1677620087616 1677620087621 OK +USER Users START 1677620087647 +REQUEST Get User 1677620087646 1677620087650 OK +REQUEST Get All Users 1677620087646 1677620087651 OK +USER Users START 1677620087662 +REQUEST Get User 1677620087661 1677620087664 OK +REQUEST Get All Users 1677620087661 1677620087665 OK +USER Users START 1677620087678 +REQUEST Get User 1677620087677 1677620087681 OK +REQUEST Get All Users 1677620087678 1677620087681 OK +USER Users START 1677620087708 +REQUEST Get User 1677620087707 1677620087710 OK +REQUEST Get All Users 1677620087707 1677620087710 OK +USER Users START 1677620087723 +REQUEST Get User 1677620087722 1677620087725 OK +REQUEST Get All Users 1677620087723 1677620087726 OK +USER Users START 1677620087739 +REQUEST Get User 1677620087738 1677620087741 OK +REQUEST Get All Users 1677620087739 1677620087742 OK +USER Users START 1677620087755 +REQUEST Get All Users 1677620087755 1677620087758 OK +REQUEST Get User 1677620087769 1677620087772 OK +USER Users START 1677620087786 +REQUEST Get User 1677620087785 1677620087789 OK +REQUEST Get All Users 1677620087785 1677620087789 OK +USER Users START 1677620087802 +REQUEST Get User 1677620087801 1677620087804 OK +REQUEST Get All Users 1677620087802 1677620087805 OK +USER Users START 1677620087817 +REQUEST Get User 1677620087816 1677620087819 OK +REQUEST Get All Users 1677620087816 1677620087819 OK +USER Users START 1677620087847 +REQUEST Get All Users 1677620087846 1677620087850 OK +USER Users START 1677620087862 +REQUEST Get All Users 1677620087861 1677620087866 OK +USER Users START 1677620087877 +REQUEST Get All Users 1677620087877 1677620087880 OK +USER Users START 1677620087900 +USER Users START 1677620087924 +USER Users START 1677620087940 +REQUEST Get All Users 1677620087900 1677620087940 OK +REQUEST Get User 1677620087908 1677620087952 OK +REQUEST Get User 1677620087908 1677620087960 OK +REQUEST Get User 1677620087924 1677620087960 OK +REQUEST Get User 1677620087908 1677620087960 OK +REQUEST Get All Users 1677620087923 1677620087960 OK +REQUEST Get User 1677620087954 1677620087965 OK +REQUEST Get User 1677620087940 1677620087966 OK +REQUEST Get All Users 1677620087939 1677620087967 OK +USER Users START 1677620087970 +REQUEST Get User 1677620087969 1677620087973 OK +REQUEST Get All Users 1677620087970 1677620087974 OK +USER Users START 1677620087985 +REQUEST Get User 1677620087985 1677620087988 OK +REQUEST Get All Users 1677620087985 1677620087989 OK +USER Users START 1677620088000 +REQUEST Get All Users 1677620087999 1677620088003 OK +USER Users START 1677620088016 +REQUEST Get User 1677620088015 1677620088020 OK +REQUEST Get All Users 1677620088016 1677620088022 OK +REQUEST Get User 1677620088031 1677620088036 OK +USER Users START 1677620088048 +REQUEST Get User 1677620088047 1677620088053 OK +REQUEST Get All Users 1677620088047 1677620088054 OK +USER Users START 1677620088064 +REQUEST Get All Users 1677620088063 1677620088070 OK +USER Users START 1677620088079 +REQUEST Create User 1677620087923 1677620088075 OK +REQUEST Create User 1677620087939 1677620088069 OK +REQUEST Create User 1677620087939 1677620088069 OK +REQUEST Create User 1677620087923 1677620088079 OK +REQUEST Create User 1677620087908 1677620088077 OK +REQUEST Create User 1677620087908 1677620088079 OK +REQUEST Create User 1677620087939 1677620088068 OK +REQUEST Create User 1677620087898 1677620088076 OK +REQUEST Create User 1677620087908 1677620088080 OK +REQUEST Create User 1677620087923 1677620088069 OK +REQUEST Create User 1677620087939 1677620088074 OK +REQUEST Create User 1677620087939 1677620088078 OK +REQUEST Create User 1677620087908 1677620088099 OK +REQUEST Create User 1677620087939 1677620088099 OK +REQUEST Create User 1677620087985 1677620088099 OK +REQUEST Create User 1677620087923 1677620088077 OK +REQUEST Create User 1677620087923 1677620088100 OK +REQUEST Create User 1677620087908 1677620088100 OK +USER Users START 1677620088101 +REQUEST Create User 1677620088100 1677620088105 OK +REQUEST Get User 1677620088099 1677620088105 OK +REQUEST Get User 1677620088100 1677620088106 OK +REQUEST Get All Users 1677620088078 1677620088105 OK +REQUEST Get All Users 1677620088100 1677620088108 OK +REQUEST Create User 1677620087939 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088077 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088047 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087939 1677620088079 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087939 1677620088099 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087939 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088074 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087908 1677620088075 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087908 1677620088074 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088076 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087898 1677620088070 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088070 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087924 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087908 1677620088076 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087923 1677620088069 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087924 1677620088076 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087898 1677620088077 KO status.find.is(200), but actually found 201 +USER Users START 1677620088125 +REQUEST Get All Users 1677620088124 1677620088131 OK +USER Users START 1677620088140 +REQUEST Create User 1677620087939 1677620088140 OK +REQUEST Create User 1677620087939 1677620088140 OK +REQUEST Create User 1677620087939 1677620088140 OK +REQUEST Create User 1677620087908 1677620088141 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088031 1677620088140 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620087999 1677620088144 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088047 1677620088143 OK +REQUEST Create User 1677620087969 1677620088144 OK +REQUEST Create User 1677620087908 1677620088144 OK +REQUEST Create User 1677620088140 1677620088150 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088140 1677620088151 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088140 1677620088153 OK +REQUEST Get All Users 1677620088139 1677620088154 OK +REQUEST Get User 1677620088139 1677620088155 OK +REQUEST Get All Users 1677620088139 1677620088156 OK +REQUEST Get All Users 1677620088139 1677620088157 OK +REQUEST Get All Users 1677620088139 1677620088158 OK +REQUEST Get All Users 1677620088139 1677620088159 OK +REQUEST Get All Users 1677620088139 1677620088160 OK +REQUEST Get All Users 1677620088140 1677620088161 OK +REQUEST Get All Users 1677620088140 1677620088161 OK +REQUEST Get All Users 1677620088139 1677620088161 OK +REQUEST Get All Users 1677620088139 1677620088164 OK +REQUEST Get All Users 1677620088139 1677620088165 OK +REQUEST Create User 1677620088161 1677620088165 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620088140 1677620088165 OK +USER Users START 1677620088166 +REQUEST Get All Users 1677620088139 1677620088166 OK +REQUEST Get All Users 1677620088139 1677620088167 OK +REQUEST Get All Users 1677620088139 1677620088168 OK +REQUEST Get User 1677620088140 1677620088171 OK +REQUEST Get All Users 1677620088141 1677620088172 OK +REQUEST Get All Users 1677620088141 1677620088172 OK +REQUEST Get All Users 1677620088143 1677620088172 OK +REQUEST Get All Users 1677620088143 1677620088173 OK +REQUEST Get User 1677620088140 1677620088174 OK +REQUEST Get All Users 1677620088144 1677620088175 OK +REQUEST Get All Users 1677620088141 1677620088176 OK +REQUEST Get All Users 1677620088150 1677620088177 OK +REQUEST Get All Users 1677620088143 1677620088177 OK +REQUEST Get All Users 1677620088139 1677620088178 OK +REQUEST Get All Users 1677620088151 1677620088179 OK +REQUEST Get All Users 1677620088143 1677620088179 OK +REQUEST Get All Users 1677620088166 1677620088180 OK +REQUEST Get User 1677620088154 1677620088180 OK +REQUEST Get All Users 1677620088165 1677620088180 OK +USER Users START 1677620088186 +REQUEST Create User 1677620088185 1677620088187 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088185 1677620088189 OK +REQUEST Get All Users 1677620088185 1677620088191 OK +REQUEST Get All Users 1677620088188 1677620088191 OK +USER Users START 1677620088201 +REQUEST Create User 1677620088200 1677620088202 OK +REQUEST Get User 1677620088200 1677620088204 OK +REQUEST Get All Users 1677620088200 1677620088206 OK +USER Users START 1677620088216 +REQUEST Get User 1677620088215 1677620088219 OK +REQUEST Get All Users 1677620088215 1677620088221 OK +REQUEST Create User 1677620088230 1677620088233 OK +REQUEST Get User 1677620088230 1677620088234 OK +USER Users START 1677620088247 +REQUEST Create User 1677620088247 1677620088249 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620088247 1677620088251 OK +REQUEST Get All Users 1677620088249 1677620088252 OK +USER Users START 1677620088262 +REQUEST Create User 1677620088261 1677620088263 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088261 1677620088264 OK +REQUEST Get All Users 1677620088262 1677620088266 OK +REQUEST Get All Users 1677620088263 1677620088266 OK +USER Users START 1677620088278 +REQUEST Create User 1677620088277 1677620088280 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088277 1677620088280 OK +REQUEST Get All Users 1677620088278 1677620088282 OK +REQUEST Get All Users 1677620088280 1677620088284 OK +REQUEST Get User 1677620088293 1677620088295 OK +USER Users START 1677620088309 +REQUEST Create User 1677620088308 1677620088311 OK +REQUEST Get All Users 1677620088308 1677620088314 OK +USER Users START 1677620088324 +REQUEST Create User 1677620088324 1677620088326 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088324 1677620088328 OK +REQUEST Get All Users 1677620088324 1677620088329 OK +REQUEST Get All Users 1677620088327 1677620088331 OK +USER Users START 1677620088340 +REQUEST Create User 1677620088339 1677620088340 OK +REQUEST Get User 1677620088339 1677620088342 OK +REQUEST Get All Users 1677620088339 1677620088344 OK +REQUEST Get User 1677620088354 1677620088358 OK +USER Users START 1677620088371 +REQUEST Create User 1677620088370 1677620088372 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620088370 1677620088376 OK +REQUEST Get All Users 1677620088373 1677620088377 OK +USER Users START 1677620088386 +REQUEST Create User 1677620088385 1677620088390 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088385 1677620088391 OK +REQUEST Get All Users 1677620088386 1677620088392 OK +REQUEST Get All Users 1677620088391 1677620088393 OK +USER Users START 1677620088402 +REQUEST Create User 1677620088401 1677620088404 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088401 1677620088405 OK +REQUEST Get All Users 1677620088401 1677620088407 OK +REQUEST Get All Users 1677620088405 1677620088408 OK +USER Users START 1677620088418 +REQUEST Create User 1677620088417 1677620088418 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088417 1677620088421 OK +REQUEST Get All Users 1677620088417 1677620088422 OK +REQUEST Get All Users 1677620088419 1677620088424 OK +REQUEST Get User 1677620088433 1677620088438 OK +USER Users START 1677620088449 +REQUEST Create User 1677620088448 1677620088452 OK +REQUEST Get All Users 1677620088449 1677620088456 OK +USER Users START 1677620088465 +REQUEST Get User 1677620088463 1677620088469 OK +REQUEST Get All Users 1677620088464 1677620088470 OK +USER Users START 1677620088481 +REQUEST Create User 1677620088479 1677620088482 OK +REQUEST Create User 1677620088479 1677620088483 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088479 1677620088484 OK +REQUEST Get All Users 1677620088480 1677620088485 OK +REQUEST Get All Users 1677620088484 1677620088488 OK +USER Users START 1677620088496 +REQUEST Create User 1677620088496 1677620088500 OK +REQUEST Get User 1677620088495 1677620088500 OK +REQUEST Get All Users 1677620088495 1677620088503 OK +USER Users START 1677620088527 +REQUEST Create User 1677620088526 1677620088530 OK +REQUEST Get User 1677620088526 1677620088532 OK +REQUEST Get All Users 1677620088527 1677620088533 OK +USER Users START 1677620088542 +REQUEST Create User 1677620088541 1677620088544 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088541 1677620088546 OK +REQUEST Get All Users 1677620088542 1677620088547 OK +REQUEST Get All Users 1677620088545 1677620088547 OK +USER Users START 1677620088558 +REQUEST Create User 1677620088557 1677620088559 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088557 1677620088560 OK +REQUEST Get All Users 1677620088557 1677620088562 OK +REQUEST Get All Users 1677620088559 1677620088562 OK +USER Users START 1677620088590 +REQUEST Create User 1677620088589 1677620088591 OK +REQUEST Get User 1677620088589 1677620088593 OK +REQUEST Get All Users 1677620088589 1677620088594 OK +USER Users START 1677620088605 +REQUEST Get User 1677620088604 1677620088607 OK +REQUEST Get All Users 1677620088604 1677620088609 OK +USER Users START 1677620088620 +REQUEST Create User 1677620088619 1677620088622 OK +REQUEST Create User 1677620088619 1677620088623 OK +REQUEST Get User 1677620088619 1677620088623 OK +REQUEST Get All Users 1677620088619 1677620088625 OK +REQUEST Create User 1677620088634 1677620088635 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088634 1677620088636 OK +REQUEST Get All Users 1677620088635 1677620088637 OK +USER Users START 1677620088651 +REQUEST Get All Users 1677620088650 1677620088654 OK +USER Users START 1677620088665 +REQUEST Create User 1677620088665 1677620088666 OK +REQUEST Get User 1677620088664 1677620088667 OK +REQUEST Get All Users 1677620088665 1677620088667 OK +USER Users START 1677620088680 +REQUEST Create User 1677620088680 1677620088681 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088680 1677620088682 OK +REQUEST Get All Users 1677620088680 1677620088683 OK +REQUEST Get All Users 1677620088681 1677620088684 OK +USER Users START 1677620088696 +REQUEST Create User 1677620088695 1677620088697 OK +REQUEST Get User 1677620088695 1677620088698 OK +REQUEST Get All Users 1677620088696 1677620088698 OK +REQUEST Create User 1677620088712 1677620088714 OK +REQUEST Get User 1677620088711 1677620088715 OK +USER Users START 1677620088729 +REQUEST Create User 1677620088728 1677620088729 OK +REQUEST Get User 1677620088728 1677620088731 OK +REQUEST Get All Users 1677620088728 1677620088732 OK +USER Users START 1677620088744 +REQUEST Create User 1677620088744 1677620088745 OK +REQUEST Get User 1677620088744 1677620088747 OK +REQUEST Get All Users 1677620088744 1677620088748 OK +USER Users START 1677620088761 +REQUEST Get User 1677620088760 1677620088763 OK +REQUEST Get All Users 1677620088760 1677620088764 OK +USER Users START 1677620088776 +REQUEST Create User 1677620088776 1677620088777 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620088776 1677620088780 OK +REQUEST Get All Users 1677620088777 1677620088780 OK +REQUEST Create User 1677620088792 1677620088793 OK +REQUEST Get User 1677620088791 1677620088794 OK +USER Users START 1677620088808 +REQUEST Create User 1677620088807 1677620088809 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088807 1677620088810 OK +REQUEST Get All Users 1677620088808 1677620088811 OK +REQUEST Get All Users 1677620088810 1677620088811 OK +USER Users START 1677620088823 +REQUEST Create User 1677620088823 1677620088824 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088823 1677620088825 OK +REQUEST Get All Users 1677620088824 1677620088826 OK +REQUEST Get All Users 1677620088823 1677620088826 OK +USER Users START 1677620088839 +REQUEST Get All Users 1677620088838 1677620088842 OK +REQUEST Get User 1677620088854 1677620088857 OK +USER Users START 1677620088873 +REQUEST Get User 1677620088870 1677620088873 OK +REQUEST Get All Users 1677620088872 1677620088876 OK +USER Users START 1677620088887 +REQUEST Get User 1677620088886 1677620088889 OK +REQUEST Get All Users 1677620088886 1677620088891 OK +USER Users START 1677620088902 +REQUEST Get All Users 1677620088902 1677620088906 OK +USER Users START 1677620088918 +REQUEST Get All Users 1677620088917 1677620088921 OK +USER Users START 1677620088948 +REQUEST Get User 1677620088947 1677620088950 OK +REQUEST Get All Users 1677620088948 1677620088951 OK +USER Users START 1677620088963 +REQUEST Create User 1677620088963 1677620088964 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088963 1677620088964 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620088963 1677620088965 OK +REQUEST Create User 1677620088963 1677620088965 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620088962 1677620088966 OK +REQUEST Get All Users 1677620088963 1677620088968 OK +REQUEST Get All Users 1677620088966 1677620088968 OK +REQUEST Get All Users 1677620088965 1677620088968 OK +REQUEST Get All Users 1677620088965 1677620088969 OK +USER Users START 1677620088978 +REQUEST Create User 1677620088978 1677620088980 OK +REQUEST Create User 1677620088978 1677620088980 OK +REQUEST Create User 1677620088978 1677620088980 OK +REQUEST Get User 1677620088978 1677620088981 OK +REQUEST Get User 1677620088978 1677620088981 OK +REQUEST Get All Users 1677620088978 1677620088982 OK +REQUEST Create User 1677620088994 1677620088995 OK +REQUEST Get User 1677620088994 1677620088997 OK +USER Users START 1677620089010 +REQUEST Get User 1677620089009 1677620089012 OK +REQUEST Get All Users 1677620089009 1677620089013 OK +USER Users START 1677620089025 +REQUEST Create User 1677620089024 1677620089026 OK +REQUEST Get User 1677620089024 1677620089027 OK +REQUEST Get All Users 1677620089024 1677620089028 OK +USER Users START 1677620089040 +REQUEST Create User 1677620089040 1677620089041 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089040 1677620089043 OK +REQUEST Get All Users 1677620089041 1677620089043 OK +REQUEST Create User 1677620089055 1677620089056 OK +USER Users START 1677620089071 +REQUEST Get User 1677620089070 1677620089073 OK +REQUEST Get All Users 1677620089070 1677620089073 OK +USER Users START 1677620089086 +REQUEST Get User 1677620089085 1677620089088 OK +REQUEST Get All Users 1677620089085 1677620089088 OK +USER Users START 1677620089101 +REQUEST Get All Users 1677620089101 1677620089104 OK +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089101 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089100 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089100 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089100 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089101 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089100 1677620089106 OK +REQUEST Update User 1677620089101 1677620089106 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089100 1677620089107 OK +REQUEST Update User 1677620089101 1677620089107 OK +REQUEST Update User 1677620089106 1677620089108 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089106 1677620089109 OK +REQUEST Get All Users 1677620089106 1677620089109 OK +REQUEST Get All Users 1677620089106 1677620089109 OK +REQUEST Get All Users 1677620089106 1677620089109 OK +REQUEST Get All Users 1677620089106 1677620089110 OK +REQUEST Get All Users 1677620089106 1677620089110 OK +REQUEST Get User 1677620089106 1677620089111 OK +REQUEST Get All Users 1677620089107 1677620089111 OK +REQUEST Get All Users 1677620089109 1677620089112 OK +REQUEST Get User 1677620089110 1677620089113 OK +USER Users START 1677620089116 +REQUEST Update User 1677620089116 1677620089117 OK +REQUEST Update User 1677620089115 1677620089117 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089115 1677620089118 OK +REQUEST Create User 1677620089116 1677620089118 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089116 1677620089122 OK +REQUEST Get All Users 1677620089118 1677620089123 OK +REQUEST Get All Users 1677620089119 1677620089124 OK +USER Users START 1677620089147 +REQUEST Update User 1677620089146 1677620089148 OK +REQUEST Update User 1677620089146 1677620089148 OK +REQUEST Update User 1677620089146 1677620089148 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620089146 1677620089149 OK +REQUEST Update User 1677620089146 1677620089149 OK +REQUEST Update User 1677620089146 1677620089149 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620089146 1677620089150 OK +REQUEST Get All Users 1677620089149 1677620089153 OK +REQUEST Get All Users 1677620089146 1677620089153 OK +REQUEST Get All Users 1677620089149 1677620089153 OK +USER Users START 1677620089161 +REQUEST Update User 1677620089161 1677620089163 OK +REQUEST Create User 1677620089161 1677620089164 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620089161 1677620089165 OK +REQUEST Get User 1677620089161 1677620089165 OK +REQUEST Get User 1677620089161 1677620089165 OK +REQUEST Get User 1677620089161 1677620089166 OK +REQUEST Get User 1677620089161 1677620089166 OK +REQUEST Get User 1677620089161 1677620089166 OK +REQUEST Get All Users 1677620089161 1677620089167 OK +REQUEST Get All Users 1677620089164 1677620089168 OK +USER Users START 1677620089178 +REQUEST Create User 1677620089177 1677620089178 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620089177 1677620089178 OK +REQUEST Get User 1677620089177 1677620089183 OK +REQUEST Get User 1677620089177 1677620089183 OK +REQUEST Get User 1677620089177 1677620089183 OK +REQUEST Get User 1677620089177 1677620089183 OK +REQUEST Get User 1677620089177 1677620089184 OK +REQUEST Get User 1677620089177 1677620089184 OK +REQUEST Get User 1677620089177 1677620089184 OK +REQUEST Get User 1677620089177 1677620089185 OK +REQUEST Get User 1677620089177 1677620089185 OK +REQUEST Get User 1677620089177 1677620089185 OK +REQUEST Get User 1677620089177 1677620089186 OK +REQUEST Get User 1677620089177 1677620089186 OK +REQUEST Get User 1677620089177 1677620089186 OK +REQUEST Get User 1677620089177 1677620089187 OK +REQUEST Get User 1677620089178 1677620089187 OK +REQUEST Get All Users 1677620089177 1677620089188 OK +REQUEST Get User 1677620089183 1677620089188 OK +REQUEST Get All Users 1677620089178 1677620089188 OK +REQUEST Get User 1677620089183 1677620089189 OK +REQUEST Get User 1677620089184 1677620089189 OK +REQUEST Get User 1677620089186 1677620089189 OK +REQUEST Create User 1677620089192 1677620089194 OK +REQUEST Create User 1677620089192 1677620089194 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620089192 1677620089194 OK +REQUEST Get User 1677620089192 1677620089194 OK +REQUEST Get User 1677620089192 1677620089194 OK +REQUEST Get All Users 1677620089194 1677620089197 OK +USER Users START 1677620089208 +REQUEST Update User 1677620089207 1677620089209 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089207 1677620089209 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620089207 1677620089210 OK +REQUEST Get User 1677620089207 1677620089210 OK +REQUEST Get User 1677620089207 1677620089210 OK +REQUEST Get All Users 1677620089210 1677620089212 OK +REQUEST Get All Users 1677620089210 1677620089212 OK +REQUEST Get All Users 1677620089208 1677620089213 OK +USER Users START 1677620089223 +REQUEST Get User 1677620089222 1677620089224 OK +REQUEST Create User 1677620089223 1677620089225 OK +REQUEST Get All Users 1677620089223 1677620089225 OK +USER Users START 1677620089239 +REQUEST Update User 1677620089238 1677620089240 OK +REQUEST Create User 1677620089238 1677620089240 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089240 1677620089242 OK +REQUEST Get All Users 1677620089239 1677620089242 OK +USER Users START 1677620089255 +REQUEST Get User 1677620089254 1677620089257 OK +REQUEST Get All Users 1677620089255 1677620089257 OK +REQUEST Get User 1677620089254 1677620089257 OK +REQUEST Create User 1677620089270 1677620089271 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089272 1677620089273 OK +REQUEST Get User 1677620089270 1677620089273 OK +REQUEST Get User 1677620089270 1677620089274 OK +USER Users START 1677620089286 +REQUEST Create User 1677620089285 1677620089286 OK +REQUEST Get User 1677620089285 1677620089289 OK +REQUEST Get User 1677620089285 1677620089289 OK +REQUEST Get All Users 1677620089285 1677620089290 OK +USER Users START 1677620089301 +REQUEST Create User 1677620089300 1677620089302 OK +REQUEST Get All Users 1677620089301 1677620089304 OK +USER Users START 1677620089317 +REQUEST Update User 1677620089316 1677620089318 OK +REQUEST Get User 1677620089316 1677620089318 OK +REQUEST Get All Users 1677620089316 1677620089319 OK +REQUEST Create User 1677620089332 1677620089333 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089333 1677620089335 OK +REQUEST Get User 1677620089332 1677620089335 OK +REQUEST Get User 1677620089332 1677620089335 OK +USER Users START 1677620089348 +REQUEST Create User 1677620089348 1677620089349 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620089348 1677620089349 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620089348 1677620089350 OK +REQUEST Get All Users 1677620089349 1677620089351 OK +REQUEST Get All Users 1677620089348 1677620089351 OK +REQUEST Get All Users 1677620089349 1677620089352 OK +USER Users START 1677620089364 +REQUEST Create User 1677620089363 1677620089365 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089365 1677620089367 OK +REQUEST Get All Users 1677620089364 1677620089367 OK +USER Users START 1677620089379 +REQUEST Get User 1677620089379 1677620089381 OK +REQUEST Get User 1677620089379 1677620089381 OK +REQUEST Get All Users 1677620089379 1677620089381 OK +REQUEST Create User 1677620089394 1677620089395 OK +REQUEST Get User 1677620089394 1677620089396 OK +REQUEST Get User 1677620089394 1677620089397 OK +USER Users START 1677620089410 +REQUEST Create User 1677620089409 1677620089410 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089410 1677620089411 OK +REQUEST Get User 1677620089409 1677620089411 OK +REQUEST Get User 1677620089409 1677620089411 OK +REQUEST Get All Users 1677620089409 1677620089412 OK +USER Users START 1677620089426 +REQUEST Create User 1677620089425 1677620089426 OK +REQUEST Get User 1677620089425 1677620089428 OK +REQUEST Get User 1677620089425 1677620089428 OK +REQUEST Get All Users 1677620089425 1677620089428 OK +USER Users START 1677620089441 +REQUEST Create User 1677620089441 1677620089442 OK +REQUEST Get All Users 1677620089441 1677620089444 OK +USER Users START 1677620089457 +REQUEST Get All Users 1677620089456 1677620089459 OK +REQUEST Update User 1677620089456 1677620089470 OK +REQUEST Create User 1677620089471 1677620089473 OK +REQUEST Get User 1677620089471 1677620089473 OK +REQUEST Get User 1677620089471 1677620089473 OK +USER Users START 1677620089487 +REQUEST Update User 1677620089486 1677620089487 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089486 1677620089488 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089488 1677620089490 OK +REQUEST Get User 1677620089486 1677620089491 OK +REQUEST Get All Users 1677620089488 1677620089492 OK +REQUEST Get All Users 1677620089487 1677620089492 OK +USER Users START 1677620089503 +REQUEST Create User 1677620089502 1677620089503 OK +REQUEST Update User 1677620089502 1677620089504 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620089502 1677620089505 OK +REQUEST Get All Users 1677620089502 1677620089508 OK +REQUEST Get All Users 1677620089504 1677620089508 OK +USER Users START 1677620089518 +REQUEST Get User 1677620089517 1677620089520 OK +REQUEST Get All Users 1677620089518 1677620089521 OK +REQUEST Create User 1677620089533 1677620089535 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620089533 1677620089535 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620089535 1677620089536 OK +REQUEST Get All Users 1677620089535 1677620089536 OK +USER Users START 1677620089549 +REQUEST Create User 1677620089548 1677620089550 OK +REQUEST Get User 1677620089548 1677620089550 OK +REQUEST Get User 1677620089548 1677620089550 OK +REQUEST Get User 1677620089548 1677620089550 OK +REQUEST Get All Users 1677620089549 1677620089551 OK +USER Users START 1677620089564 +REQUEST Create User 1677620089564 1677620089565 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089566 1677620089567 OK +REQUEST Get User 1677620089564 1677620089568 OK +REQUEST Get User 1677620089564 1677620089568 OK +REQUEST Get All Users 1677620089564 1677620089569 OK +USER Users START 1677620089580 +REQUEST Get All Users 1677620089580 1677620089584 OK +USER Users START 1677620089595 +REQUEST Update User 1677620089595 1677620089596 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089595 1677620089596 OK +REQUEST Get All Users 1677620089596 1677620089599 OK +REQUEST Get All Users 1677620089595 1677620089599 OK +REQUEST Create User 1677620089611 1677620089612 OK +REQUEST Get User 1677620089611 1677620089613 OK +REQUEST Get User 1677620089611 1677620089613 OK +USER Users START 1677620089627 +REQUEST Update User 1677620089626 1677620089627 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089626 1677620089628 OK +REQUEST Update User 1677620089626 1677620089628 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620089628 1677620089630 OK +REQUEST Get User 1677620089626 1677620089630 OK +REQUEST Get All Users 1677620089627 1677620089632 OK +REQUEST Get All Users 1677620089629 1677620089632 OK +USER Users START 1677620089643 +REQUEST Create User 1677620089642 1677620089644 OK +REQUEST Get User 1677620089642 1677620089645 OK +REQUEST Get All Users 1677620089642 1677620089647 OK +USER Users START 1677620089659 +REQUEST Get User 1677620089659 1677620089661 OK +REQUEST Get All Users 1677620089659 1677620089662 OK +REQUEST Create User 1677620089673 1677620089676 OK +REQUEST Update User 1677620089673 1677620089676 OK +REQUEST Get User 1677620089673 1677620089676 OK +USER Users START 1677620089690 +REQUEST Create User 1677620089689 1677620089691 OK +REQUEST Get User 1677620089689 1677620089694 OK +REQUEST Get User 1677620089689 1677620089694 OK +REQUEST Get All Users 1677620089689 1677620089695 OK +USER Users START 1677620089705 +REQUEST Create User 1677620089704 1677620089706 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620089704 1677620089706 OK +REQUEST Get User 1677620089704 1677620089707 OK +REQUEST Get All Users 1677620089706 1677620089709 OK +REQUEST Get All Users 1677620089705 1677620089709 OK +USER Users START 1677620089720 +REQUEST Update User 1677620089720 1677620089721 OK +REQUEST Create User 1677620089720 1677620089721 OK +REQUEST Get All Users 1677620089720 1677620089724 OK +USER Users START 1677620089736 +REQUEST Update User 1677620089735 1677620089736 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089735 1677620089737 OK +REQUEST Get User 1677620089735 1677620089737 OK +REQUEST Get All Users 1677620089736 1677620089737 OK +REQUEST Get All Users 1677620089736 1677620089738 OK +REQUEST Update User 1677620089751 1677620089752 OK +REQUEST Create User 1677620089751 1677620089753 OK +REQUEST Get User 1677620089751 1677620089754 OK +USER Users START 1677620089768 +REQUEST Create User 1677620089767 1677620089769 OK +REQUEST Get User 1677620089767 1677620089769 OK +REQUEST Get All Users 1677620089767 1677620089770 OK +USER Users START 1677620089784 +REQUEST Get User 1677620089783 1677620089785 OK +REQUEST Get User 1677620089783 1677620089785 OK +REQUEST Get All Users 1677620089784 1677620089786 OK +USER Users START 1677620089799 +REQUEST Update User 1677620089798 1677620089799 OK +REQUEST Create User 1677620089798 1677620089799 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089799 1677620089800 OK +REQUEST Get All Users 1677620089798 1677620089800 OK +REQUEST Create User 1677620089814 1677620089815 OK +REQUEST Get User 1677620089814 1677620089816 OK +REQUEST Get User 1677620089814 1677620089816 OK +USER Users START 1677620089830 +REQUEST Create User 1677620089829 1677620089831 OK +REQUEST Get User 1677620089829 1677620089831 OK +REQUEST Get User 1677620089829 1677620089831 OK +REQUEST Get All Users 1677620089830 1677620089832 OK +USER Users START 1677620089846 +REQUEST Get User 1677620089845 1677620089847 OK +REQUEST Get All Users 1677620089845 1677620089848 OK +USER Users START 1677620089862 +REQUEST Create User 1677620089861 1677620089862 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089862 1677620089864 OK +REQUEST Get All Users 1677620089861 1677620089864 OK +USER Users START 1677620089878 +REQUEST Create User 1677620089877 1677620089878 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089879 1677620089880 OK +REQUEST Get All Users 1677620089877 1677620089880 OK +REQUEST Get User 1677620089892 1677620089894 OK +REQUEST Create User 1677620089892 1677620089894 OK +REQUEST Get User 1677620089892 1677620089894 OK +USER Users START 1677620089909 +REQUEST Get User 1677620089908 1677620089910 OK +REQUEST Get All Users 1677620089909 1677620089911 OK +USER Users START 1677620089924 +REQUEST Get User 1677620089924 1677620089926 OK +REQUEST Get All Users 1677620089924 1677620089927 OK +USER Users START 1677620089940 +REQUEST Get All Users 1677620089939 1677620089942 OK +USER Users START 1677620089956 +REQUEST Create User 1677620089955 1677620089956 OK +REQUEST Get User 1677620089955 1677620089957 OK +REQUEST Get All Users 1677620089955 1677620089958 OK +REQUEST Create User 1677620089971 1677620089972 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620089971 1677620089972 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620089971 1677620089973 OK +REQUEST Get User 1677620089971 1677620089973 OK +REQUEST Get User 1677620089971 1677620089973 OK +REQUEST Get User 1677620089971 1677620089973 OK +REQUEST Get All Users 1677620089973 1677620089974 OK +REQUEST Get All Users 1677620089973 1677620089974 OK +USER Users START 1677620089987 +REQUEST Update User 1677620089986 1677620089987 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620089986 1677620089987 OK +REQUEST Update User 1677620089986 1677620089988 OK +REQUEST Update User 1677620089986 1677620089988 OK +REQUEST Create User 1677620089986 1677620089988 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620089988 1677620089989 OK +REQUEST Get User 1677620089986 1677620089989 OK +REQUEST Get All Users 1677620089987 1677620089990 OK +REQUEST Get All Users 1677620089988 1677620089990 OK +USER Users START 1677620090002 +REQUEST Create User 1677620090002 1677620090003 OK +REQUEST Update User 1677620090002 1677620090003 OK +REQUEST Get All Users 1677620090002 1677620090006 OK +USER Users START 1677620090018 +REQUEST Create User 1677620090017 1677620090019 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090017 1677620090020 OK +REQUEST Get All Users 1677620090019 1677620090020 OK +REQUEST Get All Users 1677620090018 1677620090020 OK +REQUEST Create User 1677620090033 1677620090035 OK +REQUEST Update User 1677620090033 1677620090035 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620090033 1677620090035 OK +REQUEST Get All Users 1677620090035 1677620090036 OK +USER Users START 1677620090051 +REQUEST Get User 1677620090049 1677620090052 OK +REQUEST Get User 1677620090049 1677620090052 OK +REQUEST Get All Users 1677620090050 1677620090053 OK +USER Users START 1677620090066 +REQUEST Update User 1677620090064 1677620090066 OK +REQUEST Get All Users 1677620090065 1677620090069 OK +REQUEST Create User 1677620090080 1677620090081 KO status.find.is(200), but actually found 201 +USER Users START 1677620090081 +REQUEST Get User 1677620090080 1677620090082 OK +REQUEST Get All Users 1677620090081 1677620090083 OK +REQUEST Get All Users 1677620090080 1677620090085 OK +USER Users START 1677620090097 +REQUEST Create User 1677620090096 1677620090097 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090095 1677620090098 OK +REQUEST Get All Users 1677620090097 1677620090100 OK +REQUEST Get All Users 1677620090096 1677620090100 OK +REQUEST Delete User 1677620090111 1677620090116 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090116 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090117 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090117 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090118 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090118 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090119 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090119 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090111 1677620090119 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620090112 1677620090121 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620090112 1677620090122 OK +REQUEST Get User 1677620090112 1677620090124 OK +REQUEST Get User 1677620090112 1677620090124 OK +REQUEST Get User 1677620090112 1677620090125 OK +REQUEST Get User 1677620090111 1677620090125 OK +REQUEST Get User 1677620090111 1677620090125 OK +REQUEST Get All Users 1677620090118 1677620090125 OK +REQUEST Get User 1677620090111 1677620090126 OK +REQUEST Get All Users 1677620090117 1677620090126 OK +REQUEST Get User 1677620090112 1677620090127 OK +REQUEST Delete User 1677620090126 1677620090127 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620090127 +REQUEST Create User 1677620090125 1677620090127 OK +REQUEST Get All Users 1677620090118 1677620090128 OK +REQUEST Delete User 1677620090126 1677620090128 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620090118 1677620090128 OK +REQUEST Get All Users 1677620090119 1677620090129 OK +REQUEST Get All Users 1677620090119 1677620090130 OK +REQUEST Get All Users 1677620090117 1677620090130 OK +REQUEST Get All Users 1677620090120 1677620090130 OK +REQUEST Get User 1677620090119 1677620090131 OK +REQUEST Get User 1677620090126 1677620090132 OK +REQUEST Get All Users 1677620090118 1677620090132 OK +REQUEST Get All Users 1677620090121 1677620090133 OK +REQUEST Get User 1677620090126 1677620090134 OK +REQUEST Get All Users 1677620090128 1677620090135 OK +REQUEST Get All Users 1677620090128 1677620090136 OK +REQUEST Get All Users 1677620090127 1677620090136 OK +REQUEST Get User 1677620090126 1677620090136 OK +USER Users START 1677620090143 +REQUEST Get All Users 1677620090143 1677620090147 OK +REQUEST Delete User 1677620090157 1677620090158 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090157 1677620090158 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620090158 +REQUEST Delete User 1677620090157 1677620090158 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090157 1677620090159 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620090157 1677620090159 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090157 1677620090161 OK +REQUEST Get User 1677620090157 1677620090163 OK +REQUEST Get All Users 1677620090158 1677620090163 OK +REQUEST Get All Users 1677620090158 1677620090164 OK +REQUEST Get All Users 1677620090158 1677620090164 OK +REQUEST Get User 1677620090157 1677620090164 OK +REQUEST Get All Users 1677620090157 1677620090164 OK +REQUEST Get All Users 1677620090159 1677620090165 OK +REQUEST Get All Users 1677620090159 1677620090165 OK +REQUEST Delete User 1677620090173 1677620090174 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620090173 1677620090176 OK +REQUEST Create User 1677620090173 1677620090176 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090173 1677620090176 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090173 1677620090177 OK +REQUEST Create User 1677620090173 1677620090177 OK +REQUEST Create User 1677620090173 1677620090177 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090173 1677620090177 OK +REQUEST Get User 1677620090173 1677620090178 OK +REQUEST Get All Users 1677620090175 1677620090178 OK +USER Users END 1677620090184 +USER Users END 1677620090184 +USER Users END 1677620090184 +REQUEST Update User 1677620090188 1677620090190 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090188 1677620090191 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090188 1677620090191 OK +REQUEST Create User 1677620090188 1677620090191 OK +REQUEST Create User 1677620090188 1677620090191 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090188 1677620090191 OK +REQUEST Create User 1677620090188 1677620090191 OK +REQUEST Create User 1677620090188 1677620090191 OK +USER Users END 1677620090192 +USER Users END 1677620090192 +REQUEST Create User 1677620090189 1677620090192 OK +REQUEST Create User 1677620090189 1677620090192 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090189 1677620090193 OK +REQUEST Create User 1677620090189 1677620090193 OK +REQUEST Create User 1677620090188 1677620090193 OK +REQUEST Create User 1677620090189 1677620090193 OK +REQUEST Create User 1677620090188 1677620090193 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090188 1677620090193 KO status.find.is(200), but actually found 201 +USER Users END 1677620090194 +USER Users END 1677620090194 +REQUEST Create User 1677620090189 1677620090194 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090191 1677620090194 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090189 1677620090195 OK +REQUEST Create User 1677620090193 1677620090195 OK +USER Users END 1677620090196 +USER Users END 1677620090196 +USER Users START 1677620090197 +REQUEST Get All Users 1677620090193 1677620090197 OK +REQUEST Get All Users 1677620090191 1677620090197 OK +USER Users START 1677620090199 +REQUEST Create User 1677620090197 1677620090199 KO status.find.is(200), but actually found 201 +USER Users END 1677620090200 +REQUEST Get All Users 1677620090196 1677620090202 OK +REQUEST Get All Users 1677620090198 1677620090203 OK +REQUEST Create User 1677620090204 1677620090206 OK +REQUEST Create User 1677620090204 1677620090206 OK +REQUEST Update User 1677620090204 1677620090206 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090204 1677620090206 OK +REQUEST Get User 1677620090204 1677620090207 OK +REQUEST Get User 1677620090204 1677620090207 OK +REQUEST Get All Users 1677620090206 1677620090209 OK +USER Users START 1677620090221 +REQUEST Create User 1677620090220 1677620090222 OK +REQUEST Create User 1677620090220 1677620090222 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090220 1677620090222 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090220 1677620090224 OK +REQUEST Get User 1677620090220 1677620090224 OK +REQUEST Get User 1677620090220 1677620090224 OK +REQUEST Get All Users 1677620090223 1677620090225 OK +REQUEST Get All Users 1677620090223 1677620090225 OK +REQUEST Get All Users 1677620090221 1677620090226 OK +REQUEST Update User 1677620090235 1677620090236 OK +USER Users START 1677620090237 +REQUEST Create User 1677620090235 1677620090237 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090235 1677620090238 OK +REQUEST Get All Users 1677620090238 1677620090240 OK +REQUEST Get All Users 1677620090236 1677620090240 OK +REQUEST Delete User 1677620090250 1677620090251 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620090250 1677620090253 OK +REQUEST Get User 1677620090250 1677620090254 OK +REQUEST Get All Users 1677620090252 1677620090255 OK +USER Users START 1677620090266 +REQUEST Create User 1677620090265 1677620090267 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090265 1677620090267 KO status.find.is(200), but actually found 201 +USER Users END 1677620090268 +REQUEST Get User 1677620090265 1677620090269 OK +REQUEST Get All Users 1677620090267 1677620090270 OK +REQUEST Get All Users 1677620090266 1677620090270 OK +USER Users START 1677620090282 +REQUEST Create User 1677620090281 1677620090283 OK +REQUEST Create User 1677620090281 1677620090283 OK +REQUEST Get User 1677620090281 1677620090285 OK +REQUEST Get All Users 1677620090282 1677620090287 OK +USER Users START 1677620090298 +REQUEST Update User 1677620090297 1677620090298 OK +REQUEST Create User 1677620090297 1677620090298 OK +REQUEST Create User 1677620090297 1677620090298 OK +REQUEST Get User 1677620090297 1677620090299 OK +REQUEST Get All Users 1677620090297 1677620090302 OK +REQUEST Update User 1677620090312 1677620090313 OK +REQUEST Get User 1677620090312 1677620090314 OK +USER Users START 1677620090329 +REQUEST Delete User 1677620090328 1677620090329 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620090328 1677620090330 OK +REQUEST Get User 1677620090328 1677620090330 OK +REQUEST Get All Users 1677620090329 1677620090331 OK +REQUEST Get All Users 1677620090328 1677620090332 OK +USER Users START 1677620090345 +REQUEST Create User 1677620090344 1677620090346 OK +REQUEST Create User 1677620090344 1677620090347 OK +REQUEST Get User 1677620090344 1677620090347 OK +REQUEST Get All Users 1677620090345 1677620090349 OK +USER Users START 1677620090361 +REQUEST Create User 1677620090360 1677620090362 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090360 1677620090363 OK +REQUEST Get User 1677620090360 1677620090363 OK +REQUEST Get User 1677620090360 1677620090363 OK +REQUEST Get All Users 1677620090360 1677620090364 OK +REQUEST Get All Users 1677620090362 1677620090365 OK +USER Users START 1677620090377 +REQUEST Get User 1677620090376 1677620090378 OK +REQUEST Get User 1677620090376 1677620090378 OK +REQUEST Get All Users 1677620090377 1677620090381 OK +REQUEST Create User 1677620090391 1677620090393 OK +REQUEST Create User 1677620090391 1677620090393 OK +REQUEST Get User 1677620090391 1677620090394 OK +USER Users START 1677620090407 +REQUEST Create User 1677620090406 1677620090407 OK +REQUEST Update User 1677620090406 1677620090407 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090406 1677620090407 KO status.find.is(200), but actually found 201 +USER Users END 1677620090408 +REQUEST Get All Users 1677620090407 1677620090410 OK +REQUEST Get All Users 1677620090406 1677620090411 OK +USER Users START 1677620090422 +REQUEST Create User 1677620090421 1677620090423 OK +REQUEST Create User 1677620090421 1677620090423 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090421 1677620090423 OK +REQUEST Get User 1677620090421 1677620090424 OK +REQUEST Get All Users 1677620090421 1677620090425 OK +REQUEST Get All Users 1677620090423 1677620090425 OK +USER Users START 1677620090437 +REQUEST Update User 1677620090437 1677620090438 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090437 1677620090439 OK +REQUEST Create User 1677620090437 1677620090438 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090437 1677620090440 OK +REQUEST Get All Users 1677620090439 1677620090441 OK +REQUEST Get All Users 1677620090437 1677620090442 OK +REQUEST Get All Users 1677620090438 1677620090442 OK +REQUEST Update User 1677620090451 1677620090453 OK +REQUEST Get User 1677620090451 1677620090454 OK +USER Users START 1677620090467 +REQUEST Get User 1677620090466 1677620090470 OK +REQUEST Get All Users 1677620090467 1677620090471 OK +USER Users START 1677620090483 +REQUEST Delete User 1677620090482 1677620090484 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620090484 1677620090487 OK +REQUEST Get All Users 1677620090483 1677620090487 OK +REQUEST Update User 1677620090482 1677620090489 OK +REQUEST Create User 1677620090482 1677620090489 OK +REQUEST Create User 1677620090482 1677620090490 OK +USER Users START 1677620090499 +REQUEST Create User 1677620090498 1677620090500 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090498 1677620090501 OK +REQUEST Get User 1677620090498 1677620090501 OK +REQUEST Get User 1677620090498 1677620090502 OK +REQUEST Get All Users 1677620090501 1677620090504 OK +REQUEST Get All Users 1677620090498 1677620090504 OK +REQUEST Update User 1677620090514 1677620090515 OK +REQUEST Create User 1677620090514 1677620090516 OK +REQUEST Get User 1677620090513 1677620090517 OK +REQUEST Get User 1677620090513 1677620090517 OK +USER Users START 1677620090530 +REQUEST Create User 1677620090529 1677620090531 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090529 1677620090533 OK +REQUEST Get All Users 1677620090531 1677620090534 OK +REQUEST Get All Users 1677620090529 1677620090534 OK +USER Users START 1677620090546 +REQUEST Get User 1677620090545 1677620090548 OK +REQUEST Get User 1677620090545 1677620090548 OK +REQUEST Get All Users 1677620090545 1677620090550 OK +USER Users START 1677620090561 +REQUEST Create User 1677620090561 1677620090563 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620090561 1677620090563 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090561 1677620090563 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090560 1677620090564 OK +REQUEST Create User 1677620090561 1677620090564 OK +USER Users END 1677620090564 +REQUEST Get All Users 1677620090561 1677620090566 OK +REQUEST Get All Users 1677620090563 1677620090566 OK +REQUEST Get All Users 1677620090564 1677620090566 OK +USER Users START 1677620090577 +REQUEST Create User 1677620090576 1677620090578 OK +REQUEST Create User 1677620090576 1677620090578 KO status.find.is(200), but actually found 201 +USER Users END 1677620090579 +REQUEST Get User 1677620090576 1677620090579 OK +REQUEST Get User 1677620090576 1677620090579 OK +REQUEST Get All Users 1677620090576 1677620090580 OK +REQUEST Get User 1677620090591 1677620090593 OK +USER Users START 1677620090607 +REQUEST Update User 1677620090606 1677620090607 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620090606 1677620090608 OK +REQUEST Get User 1677620090606 1677620090609 OK +REQUEST Get All Users 1677620090607 1677620090610 OK +REQUEST Get All Users 1677620090606 1677620090610 OK +USER Users START 1677620090622 +REQUEST Update User 1677620090621 1677620090622 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090621 1677620090623 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620090621 1677620090623 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620090623 1677620090625 OK +REQUEST Get All Users 1677620090622 1677620090625 OK +REQUEST Get All Users 1677620090623 1677620090625 OK +REQUEST Get All Users 1677620090623 1677620090625 OK +USER Users START 1677620090639 +REQUEST Update User 1677620090638 1677620090640 OK +REQUEST Create User 1677620090638 1677620090640 OK +REQUEST Get User 1677620090637 1677620090640 OK +REQUEST Get User 1677620090637 1677620090641 OK +REQUEST Get User 1677620090637 1677620090641 OK +REQUEST Get All Users 1677620090638 1677620090642 OK +REQUEST Update User 1677620090653 1677620090655 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090654 1677620090655 KO status.find.is(200), but actually found 201 +USER Users END 1677620090656 +REQUEST Get User 1677620090653 1677620090656 OK +REQUEST Get All Users 1677620090655 1677620090657 OK +USER Users START 1677620090669 +REQUEST Create User 1677620090669 1677620090670 OK +REQUEST Get User 1677620090668 1677620090671 OK +REQUEST Get All Users 1677620090669 1677620090672 OK +REQUEST Delete User 1677620090684 1677620090685 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620090685 +REQUEST Update User 1677620090684 1677620090685 OK +REQUEST Create User 1677620090684 1677620090686 OK +REQUEST Get All Users 1677620090685 1677620090687 OK +REQUEST Get All Users 1677620090685 1677620090688 OK +USER Users START 1677620090701 +REQUEST Update User 1677620090700 1677620090701 OK +REQUEST Create User 1677620090700 1677620090702 OK +REQUEST Create User 1677620090700 1677620090702 OK +REQUEST Get User 1677620090700 1677620090703 OK +REQUEST Get All Users 1677620090701 1677620090705 OK +REQUEST Delete User 1677620090716 1677620090717 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620090717 +REQUEST Create User 1677620090716 1677620090718 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090716 1677620090718 OK +REQUEST Get User 1677620090716 1677620090718 OK +REQUEST Get All Users 1677620090717 1677620090719 OK +REQUEST Get All Users 1677620090716 1677620090720 OK +REQUEST Get All Users 1677620090718 1677620090720 OK +REQUEST Update User 1677620090732 1677620090733 OK +REQUEST Delete User 1677620090732 1677620090733 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620090732 1677620090735 OK +REQUEST Get All Users 1677620090733 1677620090736 OK +USER Users START 1677620090747 +REQUEST Update User 1677620090747 1677620090748 OK +REQUEST Create User 1677620090747 1677620090748 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090746 1677620090750 OK +REQUEST Get User 1677620090746 1677620090750 OK +REQUEST Get All Users 1677620090748 1677620090750 OK +REQUEST Get All Users 1677620090747 1677620090751 OK +USER Users START 1677620090763 +REQUEST Delete User 1677620090762 1677620090763 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620090763 1677620090763 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090763 1677620090763 OK +REQUEST Get All Users 1677620090764 1677620090765 OK +REQUEST Get All Users 1677620090763 1677620090765 OK +REQUEST Get All Users 1677620090763 1677620090765 OK +USER Users START 1677620090779 +REQUEST Update User 1677620090779 1677620090780 OK +REQUEST Create User 1677620090779 1677620090780 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090778 1677620090781 OK +REQUEST Get All Users 1677620090779 1677620090782 OK +REQUEST Get All Users 1677620090780 1677620090782 OK +USER Users START 1677620090794 +REQUEST Create User 1677620090794 1677620090795 OK +REQUEST Create User 1677620090794 1677620090795 OK +REQUEST Get User 1677620090794 1677620090796 OK +REQUEST Get All Users 1677620090794 1677620090796 OK +REQUEST Delete User 1677620090809 1677620090810 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620090809 1677620090811 OK +REQUEST Get User 1677620090809 1677620090811 OK +REQUEST Get All Users 1677620090810 1677620090812 OK +USER Users START 1677620090826 +REQUEST Create User 1677620090825 1677620090826 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620090825 1677620090826 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620090825 1677620090826 KO status.find.is(200), but actually found 201 +USER Users END 1677620090827 +REQUEST Get All Users 1677620090825 1677620090827 OK +REQUEST Get All Users 1677620090826 1677620090827 OK +REQUEST Get All Users 1677620090826 1677620090827 OK +USER Users START 1677620090842 +REQUEST Create User 1677620090841 1677620090842 OK +REQUEST Create User 1677620090841 1677620090842 OK +REQUEST Update User 1677620090841 1677620090842 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620090841 1677620090844 OK +REQUEST Get All Users 1677620090841 1677620090844 OK +REQUEST Get All Users 1677620090843 1677620090844 OK +USER Users START 1677620090857 +REQUEST Create User 1677620090856 1677620090858 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090856 1677620090858 OK +REQUEST Get All Users 1677620090856 1677620090859 OK +REQUEST Get All Users 1677620090858 1677620090859 OK +REQUEST Get User 1677620090872 1677620090874 OK +REQUEST Get User 1677620090872 1677620090874 OK +USER Users START 1677620090888 +REQUEST Get User 1677620090887 1677620090889 OK +REQUEST Get User 1677620090887 1677620090889 OK +REQUEST Get All Users 1677620090887 1677620090889 OK +USER Users START 1677620090903 +REQUEST Create User 1677620090903 1677620090903 OK +REQUEST Update User 1677620090903 1677620090903 OK +REQUEST Create User 1677620090903 1677620090904 OK +REQUEST Get All Users 1677620090903 1677620090905 OK +USER Users START 1677620090919 +REQUEST Create User 1677620090918 1677620090920 OK +REQUEST Get User 1677620090918 1677620090920 OK +REQUEST Get All Users 1677620090919 1677620090921 OK +USER Users START 1677620090935 +REQUEST Create User 1677620090934 1677620090936 OK +REQUEST Get User 1677620090934 1677620090936 OK +REQUEST Get All Users 1677620090935 1677620090936 OK +REQUEST Get User 1677620090950 1677620090951 OK +USER Users START 1677620090967 +REQUEST Update User 1677620090966 1677620090967 OK +REQUEST Create User 1677620090966 1677620090967 OK +REQUEST Get All Users 1677620090966 1677620090969 OK +REQUEST Get User 1677620090966 1677620090969 OK +USER Users START 1677620090982 +REQUEST Create User 1677620090981 1677620090983 OK +REQUEST Create User 1677620090981 1677620090983 OK +REQUEST Create User 1677620090981 1677620090983 OK +REQUEST Create User 1677620090981 1677620090983 KO status.find.is(200), but actually found 201 +USER Users END 1677620090983 +REQUEST Get User 1677620090981 1677620090984 OK +REQUEST Get User 1677620090981 1677620090984 OK +REQUEST Get All Users 1677620090981 1677620090984 OK +USER Users START 1677620090998 +REQUEST Delete User 1677620090997 1677620090998 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620090997 1677620090998 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620090997 1677620090998 OK +REQUEST Get User 1677620090997 1677620090999 OK +REQUEST Create User 1677620090997 1677620090999 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620090997 1677620090999 OK +REQUEST Get User 1677620090997 1677620090999 OK +REQUEST Get All Users 1677620090997 1677620090999 OK +REQUEST Get All Users 1677620090998 1677620090999 OK +REQUEST Get All Users 1677620090998 1677620091000 OK +REQUEST Get All Users 1677620090999 1677620091000 OK +REQUEST Delete User 1677620091012 1677620091013 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620091012 1677620091013 OK +REQUEST Get User 1677620091012 1677620091015 OK +REQUEST Get All Users 1677620091013 1677620091016 OK +USER Users START 1677620091029 +REQUEST Create User 1677620091028 1677620091029 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091028 1677620091030 OK +REQUEST Get User 1677620091028 1677620091030 OK +REQUEST Get All Users 1677620091029 1677620091030 OK +REQUEST Get All Users 1677620091028 1677620091030 OK +USER Users START 1677620091045 +REQUEST Update User 1677620091045 1677620091046 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091044 1677620091046 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091044 1677620091047 OK +REQUEST Get All Users 1677620091046 1677620091047 OK +REQUEST Get All Users 1677620091045 1677620091047 OK +REQUEST Get All Users 1677620091046 1677620091048 OK +USER Users START 1677620091061 +REQUEST Create User 1677620091060 1677620091061 OK +REQUEST Create User 1677620091060 1677620091061 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091060 1677620091062 OK +REQUEST Get All Users 1677620091061 1677620091062 OK +REQUEST Get All Users 1677620091060 1677620091062 OK +USER Users START 1677620091076 +REQUEST Delete User 1677620091076 1677620091077 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620091076 1677620091078 OK +REQUEST Get All Users 1677620091076 1677620091078 OK +REQUEST Get All Users 1677620091077 1677620091078 OK +REQUEST Create User 1677620091092 1677620091093 OK +REQUEST Get User 1677620091092 1677620091095 OK +REQUEST Get User 1677620091092 1677620091096 OK +USER Users START 1677620091107 +REQUEST Create User 1677620091107 1677620091108 OK +REQUEST Get User 1677620091107 1677620091109 OK +REQUEST Get User 1677620091107 1677620091109 OK +REQUEST Get All Users 1677620091107 1677620091110 OK +USER Users START 1677620091123 +REQUEST Get All Users 1677620091123 1677620091126 OK +USER Users START 1677620091138 +REQUEST Delete User 1677620091136 1677620091138 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091137 1677620091139 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091139 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091139 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091139 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091139 OK +REQUEST Update User 1677620091137 1677620091139 KO status.find.is(201), but actually found 200 +USER Users END 1677620091139 +USER Users END 1677620091140 +REQUEST Create User 1677620091137 1677620091139 OK +USER Users END 1677620091140 +USER Users END 1677620091140 +REQUEST Create User 1677620091137 1677620091140 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091140 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091140 KO status.find.is(200), but actually found 201 +USER Users END 1677620091140 +REQUEST Create User 1677620091137 1677620091140 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091137 1677620091140 KO status.find.is(200), but actually found 201 +USER Users END 1677620091140 +USER Users END 1677620091140 +USER Users END 1677620091141 +REQUEST Get User 1677620091137 1677620091142 OK +REQUEST Get User 1677620091137 1677620091142 OK +REQUEST Get User 1677620091136 1677620091143 OK +REQUEST Get User 1677620091136 1677620091143 OK +REQUEST Get User 1677620091137 1677620091144 OK +REQUEST Get User 1677620091137 1677620091144 OK +REQUEST Get User 1677620091136 1677620091144 OK +REQUEST Get User 1677620091136 1677620091145 OK +REQUEST Get User 1677620091137 1677620091145 OK +REQUEST Get User 1677620091137 1677620091145 OK +REQUEST Get User 1677620091137 1677620091145 OK +REQUEST Get All Users 1677620091138 1677620091146 OK +REQUEST Get User 1677620091137 1677620091146 OK +REQUEST Get All Users 1677620091139 1677620091146 OK +REQUEST Get All Users 1677620091137 1677620091147 OK +REQUEST Get All Users 1677620091140 1677620091147 OK +REQUEST Get User 1677620091152 1677620091154 OK +REQUEST Get User 1677620091152 1677620091154 OK +USER Users START 1677620091169 +REQUEST Create User 1677620091168 1677620091170 OK +REQUEST Create User 1677620091168 1677620091170 OK +REQUEST Create User 1677620091168 1677620091170 KO status.find.is(200), but actually found 201 +USER Users END 1677620091170 +REQUEST Get User 1677620091168 1677620091171 OK +REQUEST Get User 1677620091168 1677620091171 OK +REQUEST Get User 1677620091168 1677620091171 OK +REQUEST Get User 1677620091168 1677620091171 OK +REQUEST Get User 1677620091168 1677620091172 OK +REQUEST Get User 1677620091168 1677620091172 OK +REQUEST Get All Users 1677620091168 1677620091173 OK +USER Users START 1677620091185 +REQUEST Update User 1677620091183 1677620091185 OK +REQUEST Update User 1677620091183 1677620091185 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091183 1677620091185 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091183 1677620091186 KO status.find.is(200), but actually found 201 +USER Users END 1677620091187 +REQUEST Create User 1677620091183 1677620091186 OK +USER Users END 1677620091187 +USER Users END 1677620091187 +REQUEST Get User 1677620091184 1677620091188 OK +REQUEST Get All Users 1677620091184 1677620091189 OK +USER Users START 1677620091200 +REQUEST Update User 1677620091200 1677620091202 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091200 1677620091202 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Create User 1677620091200 1677620091202 OK +USER Users END 1677620091202 +REQUEST Update User 1677620091200 1677620091202 OK +REQUEST Update User 1677620091200 1677620091202 KO status.find.is(201), but actually found 200 +USER Users END 1677620091203 +REQUEST Update User 1677620091200 1677620091203 OK +USER Users END 1677620091203 +REQUEST Update User 1677620091200 1677620091203 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620091200 1677620091204 OK +REQUEST Get User 1677620091200 1677620091204 OK +USER Users END 1677620091204 +REQUEST Get All Users 1677620091200 1677620091205 OK +USER Users START 1677620091215 +REQUEST Update User 1677620091214 1677620091216 OK +REQUEST Update User 1677620091214 1677620091216 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091215 1677620091216 KO status.find.is(201), but actually found 200 +USER Users END 1677620091216 +REQUEST Create User 1677620091214 1677620091216 OK +USER Users END 1677620091216 +REQUEST Create User 1677620091215 1677620091216 KO status.find.is(200), but actually found 201 +USER Users END 1677620091218 +REQUEST Get User 1677620091214 1677620091219 OK +REQUEST Get User 1677620091214 1677620091219 OK +REQUEST Get User 1677620091214 1677620091220 OK +REQUEST Get All Users 1677620091215 1677620091221 OK +REQUEST Update User 1677620091230 1677620091231 OK +REQUEST Create User 1677620091230 1677620091231 OK +REQUEST Create User 1677620091230 1677620091231 OK +REQUEST Create User 1677620091230 1677620091231 OK +REQUEST Get User 1677620091230 1677620091232 OK +REQUEST Get User 1677620091230 1677620091232 OK +REQUEST Get User 1677620091230 1677620091232 OK +USER Users START 1677620091246 +REQUEST Delete User 1677620091246 1677620091247 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620091246 1677620091247 OK +REQUEST Create User 1677620091246 1677620091247 OK +REQUEST Get User 1677620091246 1677620091248 OK +REQUEST Get All Users 1677620091247 1677620091248 OK +REQUEST Get All Users 1677620091246 1677620091248 OK +USER Users START 1677620091262 +REQUEST Create User 1677620091261 1677620091262 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091261 1677620091263 KO status.find.is(200), but actually found 201 +USER Users END 1677620091263 +REQUEST Get User 1677620091261 1677620091264 OK +REQUEST Get All Users 1677620091263 1677620091264 OK +REQUEST Get All Users 1677620091262 1677620091265 OK +USER Users START 1677620091278 +REQUEST Create User 1677620091276 1677620091278 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091276 1677620091278 OK +REQUEST Get User 1677620091276 1677620091278 OK +REQUEST Get All Users 1677620091278 1677620091279 OK +REQUEST Get All Users 1677620091277 1677620091279 OK +REQUEST Update User 1677620091292 1677620091293 OK +REQUEST Update User 1677620091292 1677620091293 OK +REQUEST Create User 1677620091292 1677620091293 OK +REQUEST Get User 1677620091292 1677620091294 OK +REQUEST Delete User 1677620091307 1677620091307 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620091307 1677620091308 OK +REQUEST Update User 1677620091307 1677620091308 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091307 1677620091308 OK +USER Users START 1677620091308 +REQUEST Get All Users 1677620091308 1677620091309 OK +REQUEST Get All Users 1677620091308 1677620091309 OK +REQUEST Get User 1677620091307 1677620091309 OK +REQUEST Get All Users 1677620091308 1677620091310 OK +USER Users START 1677620091323 +REQUEST Delete User 1677620091322 1677620091323 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091322 1677620091323 OK +REQUEST Get All Users 1677620091323 1677620091325 OK +REQUEST Get All Users 1677620091323 1677620091325 OK +REQUEST Create User 1677620091338 1677620091339 OK +REQUEST Update User 1677620091338 1677620091339 KO status.find.is(201), but actually found 200 +USER Users START 1677620091340 +REQUEST Get User 1677620091338 1677620091340 OK +REQUEST Get User 1677620091338 1677620091340 OK +REQUEST Get All Users 1677620091340 1677620091341 OK +REQUEST Get All Users 1677620091339 1677620091342 OK +USER Users START 1677620091355 +REQUEST Update User 1677620091354 1677620091355 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091354 1677620091355 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091354 1677620091355 KO status.find.is(200), but actually found 201 +USER Users END 1677620091355 +USER Users END 1677620091356 +REQUEST Get User 1677620091354 1677620091356 OK +REQUEST Get All Users 1677620091355 1677620091357 OK +REQUEST Get All Users 1677620091355 1677620091357 OK +REQUEST Create User 1677620091370 1677620091371 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091370 1677620091371 OK +REQUEST Create User 1677620091370 1677620091371 KO status.find.is(200), but actually found 201 +USER Users END 1677620091372 +USER Users END 1677620091372 +REQUEST Get User 1677620091370 1677620091372 OK +REQUEST Get User 1677620091370 1677620091372 OK +USER Users START 1677620091387 +REQUEST Create User 1677620091386 1677620091387 OK +REQUEST Create User 1677620091386 1677620091387 OK +REQUEST Get User 1677620091386 1677620091389 OK +REQUEST Get All Users 1677620091386 1677620091390 OK +USER Users START 1677620091402 +REQUEST Update User 1677620091401 1677620091402 OK +REQUEST Update User 1677620091401 1677620091402 OK +REQUEST Create User 1677620091401 1677620091402 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620091403 1677620091404 OK +REQUEST Get All Users 1677620091401 1677620091404 OK +USER Users START 1677620091418 +REQUEST Update User 1677620091417 1677620091418 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620091417 1677620091419 OK +REQUEST Get User 1677620091417 1677620091419 OK +REQUEST Get All Users 1677620091417 1677620091420 OK +REQUEST Get All Users 1677620091418 1677620091420 OK +REQUEST Create User 1677620091432 1677620091433 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620091432 1677620091433 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091432 1677620091433 OK +USER Users END 1677620091433 +REQUEST Get User 1677620091432 1677620091433 OK +REQUEST Get User 1677620091432 1677620091433 OK +REQUEST Get All Users 1677620091433 1677620091434 OK +REQUEST Update User 1677620091447 1677620091448 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091447 1677620091448 KO status.find.is(200), but actually found 201 +USER Users START 1677620091448 +REQUEST Get User 1677620091447 1677620091448 OK +REQUEST Get User 1677620091447 1677620091448 OK +USER Users END 1677620091448 +REQUEST Get User 1677620091447 1677620091448 OK +REQUEST Get All Users 1677620091448 1677620091449 OK +REQUEST Get All Users 1677620091448 1677620091450 OK +REQUEST Delete User 1677620091462 1677620091463 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620091463 +REQUEST Get All Users 1677620091463 1677620091465 OK +REQUEST Get All Users 1677620091463 1677620091466 OK +REQUEST Create User 1677620091462 1677620091478 OK +USER Users START 1677620091479 +REQUEST Create User 1677620091478 1677620091478 OK +REQUEST Get User 1677620091478 1677620091480 OK +REQUEST Get All Users 1677620091478 1677620091481 OK +REQUEST Update User 1677620091494 1677620091494 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620091494 1677620091494 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620091494 1677620091495 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620091494 1677620091496 OK +REQUEST Get User 1677620091494 1677620091496 OK +REQUEST Get User 1677620091494 1677620091496 OK +REQUEST Get All Users 1677620091495 1677620091496 OK +REQUEST Get All Users 1677620091494 1677620091496 OK +USER Users START 1677620091510 +REQUEST Create User 1677620091509 1677620091510 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091509 1677620091510 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091509 1677620091510 OK +USER Users END 1677620091511 +REQUEST Get User 1677620091509 1677620091511 OK +REQUEST Get User 1677620091509 1677620091511 OK +REQUEST Get All Users 1677620091511 1677620091511 OK +REQUEST Get All Users 1677620091510 1677620091511 OK +REQUEST Delete User 1677620091526 1677620091526 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620091526 +REQUEST Update User 1677620091526 1677620091526 OK +REQUEST Create User 1677620091525 1677620091526 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091525 1677620091527 OK +REQUEST Get All Users 1677620091527 1677620091528 OK +REQUEST Get All Users 1677620091527 1677620091528 OK +REQUEST Get All Users 1677620091526 1677620091529 OK +USER Users START 1677620091541 +REQUEST Create User 1677620091540 1677620091542 OK +REQUEST Get User 1677620091540 1677620091542 OK +REQUEST Get User 1677620091540 1677620091542 OK +REQUEST Get All Users 1677620091541 1677620091543 OK +REQUEST Create User 1677620091556 1677620091557 OK +REQUEST Create User 1677620091556 1677620091557 OK +USER Users START 1677620091557 +REQUEST Get User 1677620091556 1677620091558 OK +REQUEST Get All Users 1677620091557 1677620091559 OK +REQUEST Create User 1677620091572 1677620091573 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620091572 1677620091573 OK +REQUEST Get User 1677620091572 1677620091574 OK +REQUEST Get User 1677620091572 1677620091574 OK +REQUEST Get User 1677620091572 1677620091574 OK +REQUEST Get All Users 1677620091573 1677620091574 OK +USER Users START 1677620091589 +REQUEST Update User 1677620091588 1677620091589 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091588 1677620091589 OK +REQUEST Create User 1677620091588 1677620091590 KO status.find.is(200), but actually found 201 +USER Users END 1677620091591 +REQUEST Get User 1677620091588 1677620091592 OK +REQUEST Get All Users 1677620091589 1677620091592 OK +REQUEST Get All Users 1677620091588 1677620091593 OK +USER Users START 1677620091605 +REQUEST Create User 1677620091604 1677620091605 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620091604 1677620091609 OK +REQUEST Get All Users 1677620091606 1677620091609 OK +USER Users START 1677620091620 +REQUEST Create User 1677620091620 1677620091621 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091620 1677620091621 KO status.find.is(200), but actually found 201 +USER Users END 1677620091622 +REQUEST Get User 1677620091620 1677620091623 OK +REQUEST Get User 1677620091620 1677620091623 OK +REQUEST Get All Users 1677620091621 1677620091624 OK +REQUEST Get All Users 1677620091620 1677620091624 OK +USER Users START 1677620091636 +REQUEST Get User 1677620091635 1677620091638 OK +REQUEST Get User 1677620091635 1677620091638 OK +REQUEST Get User 1677620091635 1677620091638 OK +REQUEST Get User 1677620091635 1677620091638 OK +REQUEST Get All Users 1677620091635 1677620091639 OK +REQUEST Delete User 1677620091651 1677620091652 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091651 1677620091652 OK +REQUEST Create User 1677620091651 1677620091652 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620091651 1677620091652 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091651 1677620091653 OK +USER Users END 1677620091653 +REQUEST Get All Users 1677620091652 1677620091656 OK +REQUEST Get User 1677620091651 1677620091656 OK +REQUEST Get All Users 1677620091652 1677620091656 OK +USER Users START 1677620091666 +REQUEST Create User 1677620091665 1677620091666 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091665 1677620091669 OK +REQUEST Get All Users 1677620091667 1677620091669 OK +REQUEST Get All Users 1677620091666 1677620091670 OK +USER Users START 1677620091682 +REQUEST Update User 1677620091681 1677620091682 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091681 1677620091683 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091681 1677620091685 OK +REQUEST Get All Users 1677620091684 1677620091686 OK +REQUEST Get All Users 1677620091683 1677620091686 OK +REQUEST Get All Users 1677620091681 1677620091687 OK +USER Users START 1677620091698 +REQUEST Delete User 1677620091697 1677620091698 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620091697 1677620091698 OK +REQUEST Get User 1677620091697 1677620091700 OK +REQUEST Get User 1677620091697 1677620091700 OK +REQUEST Get All Users 1677620091698 1677620091701 OK +REQUEST Get All Users 1677620091697 1677620091701 OK +REQUEST Update User 1677620091713 1677620091714 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091713 1677620091714 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620091713 1677620091714 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091713 1677620091714 KO status.find.is(200), but actually found 201 +USER Users END 1677620091715 +REQUEST Get All Users 1677620091714 1677620091716 OK +REQUEST Get User 1677620091713 1677620091716 OK +REQUEST Get All Users 1677620091714 1677620091717 OK +REQUEST Get All Users 1677620091714 1677620091718 OK +USER Users START 1677620091729 +REQUEST Create User 1677620091728 1677620091730 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091728 1677620091730 OK +REQUEST Get User 1677620091728 1677620091732 OK +REQUEST Get User 1677620091728 1677620091732 OK +REQUEST Get User 1677620091728 1677620091732 OK +REQUEST Get All Users 1677620091729 1677620091733 OK +REQUEST Get All Users 1677620091730 1677620091733 OK +USER Users START 1677620091745 +REQUEST Delete User 1677620091744 1677620091745 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091744 1677620091746 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091744 1677620091747 OK +REQUEST Get All Users 1677620091746 1677620091748 OK +REQUEST Get All Users 1677620091745 1677620091748 OK +REQUEST Get All Users 1677620091746 1677620091748 OK +USER Users START 1677620091761 +REQUEST Delete User 1677620091760 1677620091761 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091760 1677620091761 OK +REQUEST Create User 1677620091760 1677620091761 OK +REQUEST Get User 1677620091760 1677620091763 OK +REQUEST Get User 1677620091760 1677620091764 OK +REQUEST Get All Users 1677620091761 1677620091765 OK +REQUEST Get All Users 1677620091760 1677620091765 OK +USER Users START 1677620091776 +REQUEST Update User 1677620091775 1677620091777 OK +REQUEST Get User 1677620091775 1677620091779 OK +REQUEST Get User 1677620091775 1677620091779 OK +REQUEST Get User 1677620091775 1677620091779 OK +REQUEST Get All Users 1677620091776 1677620091780 OK +REQUEST Delete User 1677620091791 1677620091793 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091791 1677620091793 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091791 1677620091794 OK +REQUEST Get User 1677620091791 1677620091795 OK +REQUEST Get All Users 1677620091793 1677620091796 OK +REQUEST Get All Users 1677620091794 1677620091796 OK +USER Users START 1677620091807 +REQUEST Update User 1677620091806 1677620091807 OK +REQUEST Create User 1677620091806 1677620091807 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620091806 1677620091807 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620091806 1677620091808 OK +REQUEST Get All Users 1677620091808 1677620091809 OK +REQUEST Get All Users 1677620091807 1677620091810 OK +REQUEST Get All Users 1677620091808 1677620091810 OK +USER Users START 1677620091823 +REQUEST Create User 1677620091822 1677620091823 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091822 1677620091823 KO status.find.is(200), but actually found 201 +USER Users END 1677620091824 +REQUEST Get User 1677620091822 1677620091825 OK +REQUEST Get All Users 1677620091824 1677620091826 OK +REQUEST Get All Users 1677620091822 1677620091826 OK +USER Users START 1677620091838 +REQUEST Get User 1677620091837 1677620091839 OK +REQUEST Get User 1677620091837 1677620091840 OK +REQUEST Get User 1677620091837 1677620091840 OK +REQUEST Get All Users 1677620091837 1677620091841 OK +REQUEST Update User 1677620091853 1677620091855 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620091853 1677620091855 OK +REQUEST Create User 1677620091853 1677620091855 KO status.find.is(200), but actually found 201 +USER Users END 1677620091856 +REQUEST Get User 1677620091853 1677620091857 OK +REQUEST Get User 1677620091853 1677620091857 OK +REQUEST Get All Users 1677620091855 1677620091858 OK +USER Users START 1677620091868 +REQUEST Create User 1677620091868 1677620091869 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091868 1677620091870 OK +REQUEST Get User 1677620091868 1677620091870 OK +REQUEST Get All Users 1677620091868 1677620091872 OK +REQUEST Get All Users 1677620091870 1677620091872 OK +USER Users START 1677620091884 +REQUEST Create User 1677620091883 1677620091884 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091883 1677620091884 KO status.find.is(200), but actually found 201 +USER Users END 1677620091885 +REQUEST Get All Users 1677620091885 1677620091887 OK +REQUEST Get All Users 1677620091884 1677620091888 OK +USER Users START 1677620091900 +REQUEST Create User 1677620091899 1677620091900 OK +REQUEST Create User 1677620091899 1677620091900 KO status.find.is(200), but actually found 201 +USER Users END 1677620091901 +REQUEST Get User 1677620091899 1677620091902 OK +REQUEST Get All Users 1677620091900 1677620091903 OK +USER Users START 1677620091916 +REQUEST Delete User 1677620091915 1677620091916 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620091915 1677620091917 OK +REQUEST Update User 1677620091915 1677620091917 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620091915 1677620091917 OK +REQUEST Get All Users 1677620091917 1677620091919 OK +REQUEST Get All Users 1677620091915 1677620091919 OK +REQUEST Get All Users 1677620091917 1677620091920 OK +REQUEST Create User 1677620091930 1677620091931 OK +REQUEST Update User 1677620091930 1677620091931 OK +REQUEST Get User 1677620091930 1677620091932 OK +USER Users START 1677620091946 +REQUEST Update User 1677620091946 1677620091947 OK +REQUEST Create User 1677620091946 1677620091947 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620091946 1677620091948 OK +REQUEST Get All Users 1677620091948 1677620091949 OK +REQUEST Get All Users 1677620091946 1677620091949 OK +REQUEST Create User 1677620091962 1677620091962 OK +USER Users START 1677620091962 +REQUEST Get All Users 1677620091962 1677620091964 OK +USER Users START 1677620091978 +REQUEST Delete User 1677620091978 1677620091978 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620091978 1677620091979 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620091978 1677620091979 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620091978 1677620091979 OK +REQUEST Get All Users 1677620091979 1677620091980 OK +REQUEST Get All Users 1677620091979 1677620091980 OK +REQUEST Get All Users 1677620091978 1677620091980 OK +REQUEST Get All Users 1677620091979 1677620091980 OK +REQUEST Update User 1677620091993 1677620091993 OK +REQUEST Update User 1677620091993 1677620091993 OK +REQUEST Update User 1677620091993 1677620091993 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620091993 1677620091993 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620091993 1677620091994 OK +USER Users END 1677620091994 +REQUEST Get User 1677620091993 1677620091994 OK +USER Users START 1677620091995 +REQUEST Get All Users 1677620091994 1677620091995 OK +REQUEST Get All Users 1677620091994 1677620091996 OK +REQUEST Create User 1677620092009 1677620092010 OK +REQUEST Delete User 1677620092009 1677620092010 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092009 1677620092010 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092009 1677620092010 OK +REQUEST Get User 1677620092009 1677620092011 OK +REQUEST Get User 1677620092009 1677620092011 OK +REQUEST Get User 1677620092009 1677620092011 OK +REQUEST Get User 1677620092009 1677620092011 OK +REQUEST Get All Users 1677620092010 1677620092011 OK +REQUEST Get All Users 1677620092010 1677620092011 OK +USER Users START 1677620092024 +REQUEST Delete User 1677620092024 1677620092024 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092024 1677620092025 OK +REQUEST Get User 1677620092024 1677620092025 OK +REQUEST Get All Users 1677620092025 1677620092025 OK +REQUEST Get All Users 1677620092024 1677620092026 OK +USER Users START 1677620092040 +REQUEST Create User 1677620092040 1677620092040 OK +REQUEST Create User 1677620092040 1677620092040 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092040 1677620092041 OK +REQUEST Get User 1677620092040 1677620092041 OK +REQUEST Get All Users 1677620092040 1677620092041 OK +REQUEST Get All Users 1677620092041 1677620092041 OK +REQUEST Create User 1677620092055 1677620092055 OK +REQUEST Get User 1677620092055 1677620092056 OK +REQUEST Get User 1677620092055 1677620092056 OK +REQUEST Get User 1677620092055 1677620092056 OK +USER Users START 1677620092070 +REQUEST Create User 1677620092070 1677620092071 OK +REQUEST Update User 1677620092070 1677620092071 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620092070 1677620092071 OK +USER Users END 1677620092071 +REQUEST Get User 1677620092070 1677620092071 OK +REQUEST Get All Users 1677620092070 1677620092072 OK +USER Users START 1677620092085 +REQUEST Create User 1677620092085 1677620092086 OK +REQUEST Get User 1677620092085 1677620092087 OK +REQUEST Get User 1677620092085 1677620092087 OK +REQUEST Get All Users 1677620092085 1677620092087 OK +USER Users START 1677620092101 +REQUEST Update User 1677620092100 1677620092101 OK +REQUEST Create User 1677620092100 1677620092101 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092100 1677620092101 KO status.find.is(200), but actually found 201 +USER Users END 1677620092101 +REQUEST Get All Users 1677620092101 1677620092102 OK +REQUEST Get All Users 1677620092101 1677620092102 OK +USER Users START 1677620092117 +REQUEST Update User 1677620092116 1677620092117 OK +REQUEST Create User 1677620092116 1677620092117 OK +REQUEST Create User 1677620092116 1677620092117 OK +REQUEST Get User 1677620092117 1677620092118 OK +REQUEST Get All Users 1677620092117 1677620092118 OK +REQUEST Get User 1677620092131 1677620092133 OK +USER Users START 1677620092149 +REQUEST Update User 1677620092147 1677620092151 OK +REQUEST Create User 1677620092147 1677620092153 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092147 1677620092153 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092147 1677620092153 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092147 1677620092154 KO status.find.is(200), but actually found 201 +USER Users END 1677620092154 +REQUEST Create User 1677620092147 1677620092154 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092147 1677620092154 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092148 1677620092154 OK +USER Users END 1677620092154 +REQUEST Create User 1677620092148 1677620092154 KO status.find.is(200), but actually found 201 +USER Users END 1677620092154 +USER Users END 1677620092154 +REQUEST Create User 1677620092147 1677620092154 OK +REQUEST Create User 1677620092148 1677620092154 KO status.find.is(200), but actually found 201 +USER Users END 1677620092154 +USER Users END 1677620092154 +USER Users END 1677620092154 +REQUEST Update User 1677620092147 1677620092154 OK +REQUEST Create User 1677620092148 1677620092154 OK +USER Users END 1677620092155 +REQUEST Create User 1677620092149 1677620092155 OK +REQUEST Get User 1677620092148 1677620092155 OK +REQUEST Get User 1677620092148 1677620092155 OK +REQUEST Get User 1677620092147 1677620092156 OK +REQUEST Get User 1677620092148 1677620092156 OK +REQUEST Get All Users 1677620092148 1677620092157 OK +USER Users START 1677620092164 +REQUEST Create User 1677620092163 1677620092164 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092163 1677620092164 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620092164 1677620092165 OK +REQUEST Get All Users 1677620092164 1677620092165 OK +REQUEST Get All Users 1677620092163 1677620092166 OK +USER Users START 1677620092180 +REQUEST Update User 1677620092179 1677620092180 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092179 1677620092180 OK +REQUEST Create User 1677620092179 1677620092180 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092179 1677620092180 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620092179 1677620092180 OK +REQUEST Create User 1677620092179 1677620092180 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092179 1677620092180 OK +REQUEST Create User 1677620092179 1677620092180 KO status.find.is(200), but actually found 201 +USER Users END 1677620092180 +USER Users END 1677620092181 +USER Users END 1677620092181 +REQUEST Get User 1677620092179 1677620092181 OK +REQUEST Get All Users 1677620092180 1677620092182 OK +REQUEST Get All Users 1677620092180 1677620092182 OK +REQUEST Get All Users 1677620092180 1677620092183 OK +USER Users START 1677620092196 +REQUEST Delete User 1677620092195 1677620092196 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092197 +REQUEST Update User 1677620092195 1677620092197 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092195 1677620092197 OK +REQUEST Get User 1677620092195 1677620092198 OK +REQUEST Get All Users 1677620092195 1677620092199 OK +REQUEST Get All Users 1677620092197 1677620092200 OK +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092212 +USER Users END 1677620092212 +USER Users END 1677620092212 +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092212 +REQUEST Delete User 1677620092211 1677620092212 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092213 +REQUEST Delete User 1677620092211 1677620092213 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092213 +USER Users END 1677620092213 +REQUEST Create User 1677620092211 1677620092213 OK +REQUEST Update User 1677620092211 1677620092213 OK +REQUEST Create User 1677620092211 1677620092214 OK +REQUEST Get User 1677620092211 1677620092214 OK +USER Users START 1677620092227 +REQUEST Create User 1677620092226 1677620092227 OK +REQUEST Delete User 1677620092226 1677620092227 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620092226 1677620092227 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092226 1677620092227 OK +REQUEST Create User 1677620092226 1677620092227 OK +USER Users END 1677620092227 +REQUEST Get User 1677620092226 1677620092228 OK +REQUEST Get All Users 1677620092226 1677620092228 OK +REQUEST Get All Users 1677620092227 1677620092228 OK +USER Users START 1677620092242 +REQUEST Delete User 1677620092241 1677620092242 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620092241 1677620092242 OK +REQUEST Update User 1677620092241 1677620092242 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092241 1677620092242 OK +REQUEST Update User 1677620092241 1677620092242 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092241 1677620092242 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092241 1677620092242 OK +USER Users END 1677620092242 +USER Users END 1677620092242 +USER Users END 1677620092243 +USER Users END 1677620092243 +REQUEST Get All Users 1677620092241 1677620092244 OK +USER Users START 1677620092257 +REQUEST Update User 1677620092257 1677620092257 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092257 1677620092257 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092257 1677620092258 OK +USER Users END 1677620092258 +REQUEST Get User 1677620092257 1677620092258 OK +REQUEST Get User 1677620092257 1677620092258 OK +REQUEST Get All Users 1677620092258 1677620092259 OK +REQUEST Get All Users 1677620092257 1677620092259 OK +REQUEST Create User 1677620092272 1677620092274 OK +REQUEST Get User 1677620092272 1677620092275 OK +REQUEST Get User 1677620092272 1677620092275 OK +USER Users START 1677620092288 +REQUEST Create User 1677620092287 1677620092288 OK +REQUEST Create User 1677620092287 1677620092289 OK +REQUEST Get User 1677620092287 1677620092290 OK +REQUEST Get User 1677620092287 1677620092290 OK +REQUEST Get All Users 1677620092288 1677620092290 OK +REQUEST Delete User 1677620092303 1677620092304 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620092303 1677620092304 OK +REQUEST Create User 1677620092303 1677620092304 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620092303 1677620092304 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620092304 +USER Users END 1677620092304 +REQUEST Get All Users 1677620092304 1677620092305 OK +REQUEST Get All Users 1677620092304 1677620092305 OK +REQUEST Get All Users 1677620092304 1677620092306 OK +USER Users START 1677620092320 +REQUEST Delete User 1677620092319 1677620092320 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092319 1677620092320 OK +REQUEST Update User 1677620092319 1677620092320 OK +USER Users END 1677620092320 +REQUEST Get User 1677620092319 1677620092320 OK +REQUEST Get User 1677620092319 1677620092321 OK +REQUEST Get User 1677620092319 1677620092321 OK +REQUEST Get All Users 1677620092319 1677620092322 OK +USER Users START 1677620092336 +REQUEST Update User 1677620092335 1677620092337 OK +REQUEST Get User 1677620092335 1677620092340 OK +REQUEST Get All Users 1677620092335 1677620092340 OK +REQUEST Get User 1677620092335 1677620092341 OK +REQUEST Create User 1677620092350 1677620092351 OK +REQUEST Update User 1677620092350 1677620092351 OK +REQUEST Create User 1677620092350 1677620092351 KO status.find.is(200), but actually found 201 +USER Users END 1677620092352 +REQUEST Get User 1677620092350 1677620092354 OK +REQUEST Get User 1677620092350 1677620092354 OK +USER Users START 1677620092366 +REQUEST Create User 1677620092365 1677620092366 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092365 1677620092368 OK +REQUEST Get User 1677620092365 1677620092368 OK +REQUEST Get All Users 1677620092366 1677620092369 OK +REQUEST Get All Users 1677620092365 1677620092370 OK +USER Users START 1677620092381 +REQUEST Create User 1677620092380 1677620092381 OK +REQUEST Create User 1677620092380 1677620092381 OK +REQUEST Update User 1677620092380 1677620092381 OK +REQUEST Get All Users 1677620092381 1677620092385 OK +USER Users START 1677620092397 +REQUEST Update User 1677620092396 1677620092397 OK +REQUEST Create User 1677620092396 1677620092397 OK +REQUEST Update User 1677620092396 1677620092397 KO status.find.is(201), but actually found 200 +USER Users END 1677620092397 +REQUEST Get User 1677620092396 1677620092399 OK +REQUEST Get All Users 1677620092396 1677620092400 OK +REQUEST Delete User 1677620092412 1677620092413 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620092412 1677620092413 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092414 +REQUEST Get User 1677620092412 1677620092414 OK +REQUEST Get User 1677620092412 1677620092416 OK +REQUEST Get All Users 1677620092414 1677620092417 OK +USER Users START 1677620092427 +REQUEST Create User 1677620092426 1677620092428 OK +REQUEST Create User 1677620092426 1677620092428 OK +REQUEST Get User 1677620092426 1677620092429 OK +REQUEST Get User 1677620092426 1677620092429 OK +REQUEST Get All Users 1677620092427 1677620092429 OK +USER Users START 1677620092443 +REQUEST Update User 1677620092442 1677620092443 OK +REQUEST Create User 1677620092442 1677620092443 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092442 1677620092443 OK +REQUEST Get User 1677620092442 1677620092444 OK +REQUEST Get All Users 1677620092443 1677620092444 OK +REQUEST Get All Users 1677620092442 1677620092444 OK +USER Users START 1677620092458 +REQUEST Create User 1677620092457 1677620092459 OK +REQUEST Create User 1677620092457 1677620092459 OK +REQUEST Create User 1677620092457 1677620092459 OK +REQUEST Get User 1677620092457 1677620092459 OK +REQUEST Get User 1677620092457 1677620092460 OK +REQUEST Get All Users 1677620092458 1677620092460 OK +REQUEST Get User 1677620092473 1677620092475 OK +REQUEST Get User 1677620092473 1677620092475 OK +USER Users START 1677620092490 +REQUEST Update User 1677620092489 1677620092490 OK +REQUEST Update User 1677620092489 1677620092490 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092489 1677620092490 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620092490 1677620092492 OK +REQUEST Get User 1677620092489 1677620092493 OK +REQUEST Get All Users 1677620092490 1677620092493 OK +REQUEST Get All Users 1677620092489 1677620092493 OK +USER Users START 1677620092504 +REQUEST Create User 1677620092504 1677620092505 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092504 1677620092505 OK +USER Users END 1677620092505 +REQUEST Get User 1677620092504 1677620092507 OK +REQUEST Get User 1677620092504 1677620092507 OK +REQUEST Get User 1677620092504 1677620092507 OK +REQUEST Get All Users 1677620092504 1677620092508 OK +USER Users START 1677620092520 +REQUEST Update User 1677620092520 1677620092521 OK +REQUEST Create User 1677620092520 1677620092521 OK +REQUEST Create User 1677620092520 1677620092521 KO status.find.is(200), but actually found 201 +USER Users END 1677620092521 +REQUEST Get User 1677620092520 1677620092522 OK +REQUEST Get User 1677620092520 1677620092522 OK +REQUEST Get All Users 1677620092520 1677620092522 OK +USER Users START 1677620092536 +REQUEST Delete User 1677620092535 1677620092536 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092536 +REQUEST Update User 1677620092535 1677620092536 OK +REQUEST Get User 1677620092535 1677620092537 OK +REQUEST Get User 1677620092535 1677620092537 OK +REQUEST Get User 1677620092535 1677620092537 OK +REQUEST Get All Users 1677620092535 1677620092538 OK +REQUEST Create User 1677620092551 1677620092551 OK +REQUEST Update User 1677620092551 1677620092551 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092551 1677620092552 KO status.find.is(200), but actually found 201 +USER Users END 1677620092552 +REQUEST Get User 1677620092551 1677620092552 OK +REQUEST Get All Users 1677620092552 1677620092553 OK +USER Users START 1677620092567 +REQUEST Update User 1677620092566 1677620092567 OK +REQUEST Create User 1677620092566 1677620092567 OK +REQUEST Update User 1677620092566 1677620092567 OK +REQUEST Get User 1677620092566 1677620092568 OK +REQUEST Get All Users 1677620092566 1677620092568 OK +USER Users START 1677620092583 +REQUEST Delete User 1677620092582 1677620092583 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092582 1677620092583 OK +REQUEST Create User 1677620092582 1677620092583 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092582 1677620092583 KO status.find.is(200), but actually found 201 +USER Users END 1677620092584 +USER Users END 1677620092584 +REQUEST Get User 1677620092582 1677620092584 OK +REQUEST Get All Users 1677620092583 1677620092585 OK +REQUEST Get All Users 1677620092583 1677620092585 OK +USER Users START 1677620092599 +REQUEST Create User 1677620092598 1677620092600 OK +REQUEST Update User 1677620092598 1677620092599 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620092598 1677620092600 OK +REQUEST Get User 1677620092598 1677620092601 OK +REQUEST Get All Users 1677620092598 1677620092601 OK +REQUEST Get All Users 1677620092600 1677620092602 OK +REQUEST Get User 1677620092613 1677620092615 OK +REQUEST Get User 1677620092613 1677620092615 OK +USER Users START 1677620092629 +REQUEST Create User 1677620092628 1677620092629 OK +REQUEST Create User 1677620092628 1677620092629 KO status.find.is(200), but actually found 201 +USER Users END 1677620092629 +REQUEST Get User 1677620092628 1677620092630 OK +REQUEST Get User 1677620092628 1677620092630 OK +REQUEST Get All Users 1677620092628 1677620092631 OK +USER Users START 1677620092644 +REQUEST Create User 1677620092644 1677620092645 OK +REQUEST Create User 1677620092644 1677620092644 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092644 1677620092645 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092644 1677620092645 OK +USER Users END 1677620092645 +USER Users END 1677620092645 +REQUEST Get User 1677620092644 1677620092645 OK +REQUEST Get All Users 1677620092644 1677620092646 OK +USER Users START 1677620092660 +REQUEST Update User 1677620092659 1677620092660 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092659 1677620092660 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620092659 1677620092660 KO status.find.is(201), but actually found 200 +USER Users END 1677620092660 +REQUEST Get User 1677620092659 1677620092660 OK +REQUEST Get User 1677620092659 1677620092660 OK +REQUEST Get All Users 1677620092660 1677620092661 OK +REQUEST Get All Users 1677620092660 1677620092662 OK +REQUEST Get All Users 1677620092659 1677620092663 OK +USER Users START 1677620092676 +REQUEST Create User 1677620092675 1677620092676 KO status.find.is(200), but actually found 201 +USER Users END 1677620092677 +REQUEST Get User 1677620092675 1677620092677 OK +REQUEST Get User 1677620092675 1677620092677 OK +REQUEST Get All Users 1677620092676 1677620092678 OK +REQUEST Create User 1677620092691 1677620092692 OK +REQUEST Get User 1677620092691 1677620092692 OK +REQUEST Get User 1677620092691 1677620092692 OK +REQUEST Get User 1677620092691 1677620092693 OK +USER Users START 1677620092707 +REQUEST Delete User 1677620092706 1677620092707 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092706 1677620092707 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092706 1677620092708 OK +REQUEST Create User 1677620092706 1677620092708 KO status.find.is(200), but actually found 201 +USER Users END 1677620092708 +REQUEST Get All Users 1677620092707 1677620092709 OK +REQUEST Get User 1677620092706 1677620092709 OK +REQUEST Get All Users 1677620092707 1677620092710 OK +REQUEST Get All Users 1677620092706 1677620092710 OK +REQUEST Create User 1677620092722 1677620092723 OK +REQUEST Get User 1677620092722 1677620092724 OK +REQUEST Get User 1677620092722 1677620092724 OK +REQUEST Get User 1677620092722 1677620092724 OK +USER Users START 1677620092727 +REQUEST Get All Users 1677620092726 1677620092729 OK +REQUEST Create User 1677620092738 1677620092740 OK +REQUEST Update User 1677620092738 1677620092740 OK +REQUEST Create User 1677620092738 1677620092740 OK +REQUEST Create User 1677620092738 1677620092740 OK +REQUEST Get User 1677620092738 1677620092740 OK +REQUEST Get User 1677620092738 1677620092740 OK +USER Users START 1677620092740 +REQUEST Get All Users 1677620092740 1677620092743 OK +REQUEST Create User 1677620092754 1677620092755 OK +REQUEST Get User 1677620092754 1677620092755 OK +REQUEST Get User 1677620092754 1677620092755 OK +REQUEST Get User 1677620092754 1677620092755 OK +REQUEST Update User 1677620092769 1677620092770 OK +REQUEST Update User 1677620092769 1677620092770 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620092769 1677620092770 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092769 1677620092770 KO status.find.is(200), but actually found 201 +USER Users END 1677620092771 +USER Users START 1677620092771 +REQUEST Get User 1677620092769 1677620092771 OK +REQUEST Get User 1677620092769 1677620092771 OK +REQUEST Get All Users 1677620092770 1677620092771 OK +REQUEST Get All Users 1677620092770 1677620092772 OK +REQUEST Get All Users 1677620092770 1677620092773 OK +REQUEST Delete User 1677620092784 1677620092785 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620092785 +REQUEST Create User 1677620092784 1677620092785 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092784 1677620092786 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092784 1677620092786 OK +USER Users END 1677620092786 +REQUEST Get All Users 1677620092785 1677620092787 OK +REQUEST Get All Users 1677620092786 1677620092787 OK +REQUEST Get User 1677620092784 1677620092788 OK +REQUEST Get All Users 1677620092785 1677620092789 OK +USER Users START 1677620092800 +REQUEST Create User 1677620092800 1677620092801 OK +REQUEST Create User 1677620092800 1677620092801 OK +REQUEST Get User 1677620092800 1677620092802 OK +REQUEST Get User 1677620092800 1677620092802 OK +REQUEST Get All Users 1677620092800 1677620092803 OK +USER Users START 1677620092816 +REQUEST Delete User 1677620092815 1677620092816 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620092816 +REQUEST Create User 1677620092815 1677620092817 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092815 1677620092817 OK +REQUEST Get User 1677620092815 1677620092817 OK +REQUEST Get User 1677620092815 1677620092817 OK +REQUEST Get All Users 1677620092816 1677620092818 OK +REQUEST Get All Users 1677620092817 1677620092818 OK +REQUEST Create User 1677620092830 1677620092831 KO status.find.is(200), but actually found 201 +USER Users END 1677620092831 +REQUEST Get User 1677620092830 1677620092832 OK +REQUEST Get User 1677620092830 1677620092832 OK +USER Users START 1677620092846 +REQUEST Create User 1677620092845 1677620092846 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092845 1677620092846 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620092845 1677620092846 KO status.find.is(200), but actually found 201 +USER Users END 1677620092846 +USER Users END 1677620092847 +REQUEST Get All Users 1677620092846 1677620092847 OK +REQUEST Get User 1677620092845 1677620092847 OK +REQUEST Get All Users 1677620092845 1677620092848 OK +USER Users START 1677620092861 +REQUEST Create User 1677620092860 1677620092861 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620092860 1677620092861 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092860 1677620092861 KO status.find.is(200), but actually found 201 +USER Users END 1677620092862 +REQUEST Get All Users 1677620092861 1677620092862 OK +REQUEST Get All Users 1677620092861 1677620092862 OK +REQUEST Get User 1677620092860 1677620092863 OK +REQUEST Get All Users 1677620092861 1677620092863 OK +USER Users START 1677620092877 +REQUEST Create User 1677620092876 1677620092877 OK +REQUEST Create User 1677620092876 1677620092877 OK +REQUEST Get User 1677620092876 1677620092878 OK +REQUEST Get User 1677620092876 1677620092878 OK +REQUEST Get All Users 1677620092876 1677620092879 OK +REQUEST Get User 1677620092892 1677620092893 OK +REQUEST Get User 1677620092892 1677620092893 OK +USER Users START 1677620092908 +REQUEST Update User 1677620092908 1677620092909 OK +REQUEST Create User 1677620092908 1677620092909 OK +REQUEST Get User 1677620092908 1677620092910 OK +REQUEST Get All Users 1677620092908 1677620092910 OK +USER Users START 1677620092924 +REQUEST Delete User 1677620092924 1677620092924 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092924 1677620092925 OK +REQUEST Get User 1677620092924 1677620092925 OK +REQUEST Get All Users 1677620092924 1677620092925 OK +REQUEST Get User 1677620092924 1677620092925 OK +REQUEST Get User 1677620092924 1677620092926 OK +REQUEST Get All Users 1677620092924 1677620092926 OK +USER Users START 1677620092940 +REQUEST Delete User 1677620092939 1677620092940 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620092939 1677620092941 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620092939 1677620092941 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620092941 1677620092942 OK +REQUEST Get All Users 1677620092940 1677620092942 OK +REQUEST Get All Users 1677620092939 1677620092943 OK +REQUEST Get All Users 1677620092941 1677620092943 OK +REQUEST Delete User 1677620092955 1677620092956 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620092956 +REQUEST Create User 1677620092955 1677620092956 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092955 1677620092957 OK +REQUEST Get User 1677620092955 1677620092957 OK +REQUEST Get All Users 1677620092956 1677620092957 OK +REQUEST Get All Users 1677620092956 1677620092957 OK +REQUEST Get All Users 1677620092955 1677620092957 OK +REQUEST Update User 1677620092970 1677620092970 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620092970 1677620092971 OK +REQUEST Get All Users 1677620092970 1677620092971 OK +USER Users START 1677620092986 +REQUEST Create User 1677620092986 1677620092986 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620092986 1677620092987 OK +REQUEST Get User 1677620092986 1677620092987 OK +REQUEST Get User 1677620092986 1677620092987 OK +REQUEST Get User 1677620092986 1677620092987 OK +REQUEST Get All Users 1677620092987 1677620092988 OK +REQUEST Get All Users 1677620092986 1677620092988 OK +USER Users START 1677620093003 +REQUEST Delete User 1677620093002 1677620093003 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093002 1677620093003 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620093002 1677620093003 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620093003 +USER Users END 1677620093003 +USER Users END 1677620093004 +REQUEST Create User 1677620093002 1677620093004 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093002 1677620093004 OK +REQUEST Get User 1677620093002 1677620093004 OK +REQUEST Get All Users 1677620093002 1677620093005 OK +REQUEST Get All Users 1677620093004 1677620093005 OK +USER Users START 1677620093018 +REQUEST Update User 1677620093018 1677620093018 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093018 1677620093018 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093018 1677620093018 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093018 1677620093019 OK +REQUEST Create User 1677620093018 1677620093019 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093018 1677620093019 KO status.find.is(200), but actually found 201 +USER Users END 1677620093019 +USER Users END 1677620093019 +USER Users END 1677620093019 +USER Users END 1677620093019 +REQUEST Get User 1677620093018 1677620093020 OK +REQUEST Get All Users 1677620093019 1677620093020 OK +REQUEST Get User 1677620093018 1677620093020 OK +REQUEST Get All Users 1677620093018 1677620093020 OK +REQUEST Update User 1677620093033 1677620093034 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093033 1677620093034 KO status.find.is(200), but actually found 201 +USER Users END 1677620093035 +REQUEST Get User 1677620093033 1677620093035 OK +REQUEST Get User 1677620093033 1677620093035 OK +REQUEST Get All Users 1677620093034 1677620093035 OK +USER Users START 1677620093049 +REQUEST Create User 1677620093049 1677620093049 OK +REQUEST Update User 1677620093049 1677620093049 OK +REQUEST Create User 1677620093049 1677620093049 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093049 1677620093050 OK +REQUEST Get User 1677620093049 1677620093050 OK +REQUEST Get All Users 1677620093050 1677620093051 OK +REQUEST Get All Users 1677620093049 1677620093051 OK +USER Users START 1677620093066 +REQUEST Create User 1677620093065 1677620093066 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093065 1677620093066 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093065 1677620093066 OK +REQUEST Update User 1677620093065 1677620093066 KO status.find.is(201), but actually found 200 +USER Users END 1677620093066 +USER Users END 1677620093066 +REQUEST Get All Users 1677620093066 1677620093067 OK +REQUEST Get All Users 1677620093065 1677620093068 OK +USER Users START 1677620093081 +REQUEST Update User 1677620093080 1677620093081 OK +REQUEST Create User 1677620093080 1677620093081 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093080 1677620093081 KO status.find.is(200), but actually found 201 +USER Users END 1677620093081 +REQUEST Get User 1677620093080 1677620093082 OK +REQUEST Get All Users 1677620093080 1677620093082 OK +REQUEST Get All Users 1677620093081 1677620093082 OK +REQUEST Create User 1677620093095 1677620093096 OK +REQUEST Create User 1677620093095 1677620093096 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093095 1677620093096 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620093096 1677620093097 OK +REQUEST Get User 1677620093095 1677620093097 OK +REQUEST Get All Users 1677620093096 1677620093097 OK +USER Users START 1677620093112 +REQUEST Delete User 1677620093111 1677620093112 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620093111 1677620093113 OK +REQUEST Get User 1677620093111 1677620093113 OK +REQUEST Get All Users 1677620093112 1677620093114 OK +REQUEST Get All Users 1677620093112 1677620093114 OK +USER Users START 1677620093128 +REQUEST Delete User 1677620093127 1677620093128 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093127 1677620093128 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093127 1677620093128 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093127 1677620093128 KO status.find.is(200), but actually found 201 +USER Users END 1677620093128 +REQUEST Get All Users 1677620093128 1677620093129 OK +REQUEST Get User 1677620093127 1677620093129 OK +REQUEST Get All Users 1677620093128 1677620093130 OK +REQUEST Get All Users 1677620093128 1677620093130 OK +REQUEST Get All Users 1677620093127 1677620093130 OK +USER Users START 1677620093143 +REQUEST Create User 1677620093142 1677620093144 OK +REQUEST Get All Users 1677620093142 1677620093146 OK +USER Users START 1677620093157 +REQUEST Delete User 1677620093157 1677620093157 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620093157 1677620093157 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093157 1677620093157 OK +REQUEST Update User 1677620093157 1677620093158 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093157 1677620093158 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093157 1677620093158 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093157 1677620093158 KO status.find.is(201), but actually found 200 +USER Users END 1677620093158 +USER Users END 1677620093158 +REQUEST Create User 1677620093157 1677620093158 OK +USER Users END 1677620093158 +USER Users END 1677620093158 +REQUEST Get All Users 1677620093157 1677620093159 OK +REQUEST Get All Users 1677620093157 1677620093161 OK +REQUEST Get User 1677620093158 1677620093161 OK +REQUEST Get All Users 1677620093158 1677620093162 OK +REQUEST Create User 1677620093172 1677620093173 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093172 1677620093173 OK +USER Users END 1677620093174 +REQUEST Get User 1677620093172 1677620093174 OK +REQUEST Get User 1677620093172 1677620093174 OK +REQUEST Get User 1677620093172 1677620093174 OK +USER Users START 1677620093189 +REQUEST Delete User 1677620093188 1677620093189 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093188 1677620093190 OK +REQUEST Update User 1677620093188 1677620093189 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093188 1677620093190 KO status.find.is(201), but actually found 200 +USER Users END 1677620093190 +USER Users END 1677620093190 +USER Users END 1677620093190 +REQUEST Get User 1677620093188 1677620093191 OK +REQUEST Get User 1677620093188 1677620093192 OK +REQUEST Get User 1677620093188 1677620093192 OK +REQUEST Get All Users 1677620093188 1677620093194 OK +USER Users START 1677620093204 +REQUEST Create User 1677620093203 1677620093204 OK +REQUEST Update User 1677620093203 1677620093204 OK +REQUEST Get User 1677620093203 1677620093206 OK +REQUEST Get User 1677620093203 1677620093207 OK +REQUEST Get All Users 1677620093203 1677620093208 OK +REQUEST Delete User 1677620093219 1677620093220 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620093220 +REQUEST Update User 1677620093219 1677620093220 OK +REQUEST Create User 1677620093219 1677620093220 OK +REQUEST Update User 1677620093219 1677620093220 KO status.find.is(201), but actually found 200 +USER Users END 1677620093220 +REQUEST Get All Users 1677620093220 1677620093222 OK +REQUEST Get All Users 1677620093219 1677620093223 OK +USER Users START 1677620093236 +REQUEST Update User 1677620093235 1677620093236 OK +REQUEST Update User 1677620093235 1677620093236 OK +REQUEST Update User 1677620093235 1677620093236 OK +REQUEST Create User 1677620093235 1677620093236 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620093235 1677620093237 OK +REQUEST Get User 1677620093235 1677620093237 OK +REQUEST Get User 1677620093235 1677620093238 OK +REQUEST Get All Users 1677620093236 1677620093239 OK +REQUEST Delete User 1677620093251 1677620093251 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093251 1677620093251 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093251 1677620093252 KO status.find.is(201), but actually found 200 +USER Users END 1677620093252 +REQUEST Get All Users 1677620093252 1677620093253 OK +REQUEST Get User 1677620093251 1677620093254 OK +REQUEST Get All Users 1677620093252 1677620093254 OK +USER Users START 1677620093267 +REQUEST Create User 1677620093267 1677620093268 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093267 1677620093267 OK +REQUEST Create User 1677620093267 1677620093268 KO status.find.is(200), but actually found 201 +USER Users END 1677620093268 +REQUEST Get User 1677620093267 1677620093268 OK +REQUEST Get User 1677620093267 1677620093268 OK +REQUEST Get All Users 1677620093267 1677620093269 OK +REQUEST Get All Users 1677620093268 1677620093269 OK +USER Users START 1677620093283 +REQUEST Create User 1677620093282 1677620093283 OK +REQUEST Create User 1677620093282 1677620093283 OK +REQUEST Update User 1677620093282 1677620093284 OK +REQUEST Get All Users 1677620093283 1677620093285 OK +REQUEST Update User 1677620093299 1677620093299 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093299 1677620093299 OK +USER Users START 1677620093299 +REQUEST Create User 1677620093299 1677620093299 OK +REQUEST Create User 1677620093299 1677620093299 OK +REQUEST Get User 1677620093299 1677620093300 OK +REQUEST Get All Users 1677620093299 1677620093301 OK +REQUEST Get All Users 1677620093299 1677620093301 OK +USER Users START 1677620093314 +REQUEST Delete User 1677620093314 1677620093315 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620093316 +REQUEST Get User 1677620093314 1677620093316 OK +REQUEST Get User 1677620093314 1677620093316 OK +REQUEST Get User 1677620093314 1677620093317 OK +REQUEST Get All Users 1677620093314 1677620093317 OK +REQUEST Delete User 1677620093329 1677620093330 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093329 1677620093330 OK +REQUEST Create User 1677620093329 1677620093330 OK +REQUEST Create User 1677620093329 1677620093330 OK +REQUEST Create User 1677620093329 1677620093331 KO status.find.is(200), but actually found 201 +USER Users END 1677620093331 +REQUEST Get User 1677620093329 1677620093332 OK +REQUEST Get All Users 1677620093330 1677620093332 OK +USER Users START 1677620093345 +REQUEST Delete User 1677620093345 1677620093345 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093345 1677620093345 OK +REQUEST Create User 1677620093345 1677620093345 KO status.find.is(200), but actually found 201 +USER Users END 1677620093346 +REQUEST Get User 1677620093345 1677620093347 OK +REQUEST Get All Users 1677620093345 1677620093347 OK +REQUEST Get All Users 1677620093346 1677620093347 OK +USER Users START 1677620093361 +REQUEST Delete User 1677620093361 1677620093361 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093361 1677620093361 OK +REQUEST Create User 1677620093361 1677620093362 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093361 1677620093362 KO status.find.is(201), but actually found 200 +USER Users END 1677620093362 +REQUEST Get All Users 1677620093361 1677620093363 OK +REQUEST Get All Users 1677620093361 1677620093363 OK +REQUEST Get All Users 1677620093362 1677620093363 OK +USER Users START 1677620093377 +REQUEST Create User 1677620093376 1677620093377 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093376 1677620093377 OK +REQUEST Get User 1677620093376 1677620093378 OK +REQUEST Get User 1677620093376 1677620093378 OK +REQUEST Get All Users 1677620093376 1677620093379 OK +REQUEST Get All Users 1677620093378 1677620093379 OK +REQUEST Delete User 1677620093392 1677620093393 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093392 1677620093392 OK +REQUEST Update User 1677620093392 1677620093393 KO status.find.is(201), but actually found 200 +USER Users END 1677620093394 +REQUEST Get User 1677620093392 1677620093395 OK +REQUEST Get All Users 1677620093393 1677620093395 OK +USER Users START 1677620093408 +REQUEST Delete User 1677620093407 1677620093408 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093407 1677620093408 OK +REQUEST Create User 1677620093407 1677620093408 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093407 1677620093409 OK +REQUEST Get All Users 1677620093408 1677620093409 OK +REQUEST Get All Users 1677620093408 1677620093409 OK +REQUEST Get All Users 1677620093407 1677620093409 OK +REQUEST Create User 1677620093423 1677620093423 OK +USER Users START 1677620093423 +REQUEST Create User 1677620093423 1677620093423 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093423 1677620093424 OK +REQUEST Get All Users 1677620093423 1677620093424 OK +REQUEST Get All Users 1677620093423 1677620093425 OK +USER Users START 1677620093439 +REQUEST Update User 1677620093438 1677620093439 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093438 1677620093439 OK +REQUEST Create User 1677620093438 1677620093440 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093438 1677620093440 OK +USER Users END 1677620093440 +REQUEST Get User 1677620093438 1677620093441 OK +REQUEST Get All Users 1677620093440 1677620093441 OK +REQUEST Get All Users 1677620093439 1677620093442 OK +REQUEST Delete User 1677620093454 1677620093455 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093454 1677620093455 OK +REQUEST Create User 1677620093454 1677620093455 KO status.find.is(200), but actually found 201 +USER Users END 1677620093455 +USER Users END 1677620093455 +REQUEST Get User 1677620093454 1677620093456 OK +REQUEST Get User 1677620093454 1677620093456 OK +USER Users START 1677620093470 +REQUEST Create User 1677620093469 1677620093470 OK +REQUEST Update User 1677620093469 1677620093470 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093469 1677620093470 OK +REQUEST Update User 1677620093469 1677620093470 OK +USER Users END 1677620093470 +REQUEST Get All Users 1677620093469 1677620093472 OK +REQUEST Get User 1677620093469 1677620093484 OK +USER Users START 1677620093485 +REQUEST Create User 1677620093484 1677620093485 OK +REQUEST Create User 1677620093484 1677620093485 OK +REQUEST Get All Users 1677620093485 1677620093486 OK +REQUEST Create User 1677620093469 1677620093498 OK +REQUEST Delete User 1677620093499 1677620093500 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093499 1677620093501 KO status.find.is(200), but actually found 201 +USER Users START 1677620093501 +REQUEST Get User 1677620093499 1677620093502 OK +REQUEST Get User 1677620093499 1677620093502 OK +REQUEST Get User 1677620093499 1677620093502 OK +REQUEST Get All Users 1677620093501 1677620093503 OK +REQUEST Get All Users 1677620093501 1677620093503 OK +REQUEST Get All Users 1677620093500 1677620093503 OK +USER Users START 1677620093516 +REQUEST Create User 1677620093515 1677620093516 OK +REQUEST Update User 1677620093515 1677620093516 OK +REQUEST Create User 1677620093515 1677620093516 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093515 1677620093516 KO status.find.is(200), but actually found 201 +USER Users END 1677620093517 +USER Users END 1677620093517 +REQUEST Get User 1677620093515 1677620093518 OK +REQUEST Get All Users 1677620093516 1677620093519 OK +REQUEST Create User 1677620093531 1677620093531 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620093531 1677620093531 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093531 1677620093532 OK +USER Users END 1677620093532 +USER Users END 1677620093532 +REQUEST Update User 1677620093531 1677620093532 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620093531 1677620093533 OK +REQUEST Get All Users 1677620093532 1677620093534 OK +USER Users START 1677620093547 +REQUEST Delete User 1677620093546 1677620093547 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093546 1677620093548 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093546 1677620093548 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093546 1677620093548 OK +USER Users END 1677620093548 +USER Users END 1677620093548 +REQUEST Get All Users 1677620093548 1677620093550 OK +REQUEST Get User 1677620093546 1677620093550 OK +REQUEST Get All Users 1677620093547 1677620093551 OK +USER Users START 1677620093563 +REQUEST Create User 1677620093562 1677620093564 OK +REQUEST Update User 1677620093562 1677620093564 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620093562 1677620093566 OK +REQUEST Get All Users 1677620093563 1677620093567 OK +REQUEST Get All Users 1677620093564 1677620093567 OK +USER Users START 1677620093579 +REQUEST Delete User 1677620093578 1677620093579 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620093578 1677620093579 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093578 1677620093580 KO status.find.is(201), but actually found 200 +USER Users END 1677620093580 +USER Users END 1677620093580 +REQUEST Create User 1677620093578 1677620093580 OK +REQUEST Get User 1677620093578 1677620093581 OK +REQUEST Get All Users 1677620093578 1677620093581 OK +REQUEST Get All Users 1677620093580 1677620093582 OK +USER Users START 1677620093594 +REQUEST Update User 1677620093594 1677620093595 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093594 1677620093595 OK +REQUEST Get User 1677620093594 1677620093596 OK +REQUEST Get User 1677620093594 1677620093596 OK +REQUEST Get All Users 1677620093595 1677620093597 OK +REQUEST Get All Users 1677620093594 1677620093597 OK +REQUEST Update User 1677620093609 1677620093610 OK +REQUEST Create User 1677620093609 1677620093610 OK +REQUEST Create User 1677620093609 1677620093611 KO status.find.is(200), but actually found 201 +USER Users END 1677620093611 +REQUEST Get User 1677620093609 1677620093611 OK +REQUEST Get User 1677620093609 1677620093611 OK +USER Users START 1677620093625 +REQUEST Create User 1677620093625 1677620093626 OK +REQUEST Create User 1677620093625 1677620093626 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620093625 1677620093627 OK +REQUEST Get All Users 1677620093626 1677620093627 OK +REQUEST Create User 1677620093640 1677620093641 OK +REQUEST Update User 1677620093640 1677620093641 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093640 1677620093641 KO status.find.is(200), but actually found 201 +USER Users START 1677620093641 +USER Users END 1677620093641 +REQUEST Get User 1677620093640 1677620093641 OK +REQUEST Get All Users 1677620093641 1677620093642 OK +REQUEST Get All Users 1677620093640 1677620093642 OK +USER Users START 1677620093656 +REQUEST Create User 1677620093655 1677620093656 OK +REQUEST Update User 1677620093655 1677620093656 OK +REQUEST Update User 1677620093655 1677620093656 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620093655 1677620093657 OK +REQUEST Get All Users 1677620093656 1677620093657 OK +REQUEST Get All Users 1677620093656 1677620093658 OK +REQUEST Create User 1677620093670 1677620093671 OK +REQUEST Create User 1677620093670 1677620093672 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093670 1677620093672 OK +USER Users END 1677620093672 +REQUEST Get User 1677620093670 1677620093672 OK +REQUEST Get User 1677620093670 1677620093672 OK +USER Users START 1677620093687 +REQUEST Create User 1677620093686 1677620093687 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093686 1677620093687 KO status.find.is(200), but actually found 201 +USER Users END 1677620093688 +REQUEST Get User 1677620093686 1677620093688 OK +REQUEST Get All Users 1677620093687 1677620093688 OK +REQUEST Get All Users 1677620093687 1677620093689 OK +USER Users START 1677620093703 +REQUEST Update User 1677620093702 1677620093703 OK +REQUEST Create User 1677620093702 1677620093703 OK +REQUEST Create User 1677620093702 1677620093703 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093702 1677620093703 KO status.find.is(200), but actually found 201 +USER Users END 1677620093704 +REQUEST Get All Users 1677620093703 1677620093705 OK +REQUEST Get All Users 1677620093703 1677620093705 OK +USER Users START 1677620093719 +REQUEST Create User 1677620093718 1677620093719 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093718 1677620093719 OK +USER Users END 1677620093720 +REQUEST Get User 1677620093718 1677620093720 OK +REQUEST Get User 1677620093718 1677620093721 OK +REQUEST Get User 1677620093718 1677620093721 OK +REQUEST Get All Users 1677620093718 1677620093721 OK +REQUEST Update User 1677620093733 1677620093734 OK +REQUEST Create User 1677620093733 1677620093734 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093733 1677620093734 OK +REQUEST Create User 1677620093733 1677620093734 KO status.find.is(200), but actually found 201 +USER Users END 1677620093735 +USER Users END 1677620093735 +REQUEST Get User 1677620093733 1677620093735 OK +USER Users START 1677620093749 +REQUEST Delete User 1677620093748 1677620093749 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093748 1677620093749 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093748 1677620093749 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620093748 1677620093749 OK +REQUEST Create User 1677620093748 1677620093750 OK +USER Users END 1677620093750 +REQUEST Create User 1677620093748 1677620093750 OK +USER Users END 1677620093750 +USER Users END 1677620093750 +REQUEST Get User 1677620093748 1677620093751 OK +REQUEST Get All Users 1677620093749 1677620093752 OK +USER Users START 1677620093765 +REQUEST Create User 1677620093764 1677620093765 OK +REQUEST Create User 1677620093764 1677620093765 OK +REQUEST Update User 1677620093764 1677620093765 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093764 1677620093765 KO status.find.is(200), but actually found 201 +USER Users END 1677620093765 +USER Users END 1677620093765 +REQUEST Get All Users 1677620093765 1677620093768 OK +USER Users START 1677620093780 +REQUEST Delete User 1677620093780 1677620093781 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620093780 1677620093781 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093780 1677620093781 OK +USER Users END 1677620093781 +REQUEST Get User 1677620093780 1677620093782 OK +REQUEST Get User 1677620093780 1677620093783 OK +REQUEST Get All Users 1677620093781 1677620093783 OK +REQUEST Get User 1677620093780 1677620093783 OK +REQUEST Get All Users 1677620093780 1677620093783 OK +USER Users START 1677620093797 +REQUEST Update User 1677620093796 1677620093798 OK +REQUEST Create User 1677620093796 1677620093798 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093796 1677620093798 OK +REQUEST Get User 1677620093796 1677620093798 OK +REQUEST Get User 1677620093796 1677620093799 OK +REQUEST Get All Users 1677620093796 1677620093799 OK +REQUEST Get All Users 1677620093798 1677620093800 OK +REQUEST Update User 1677620093812 1677620093812 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093812 1677620093813 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093812 1677620093813 OK +USER Users END 1677620093813 +REQUEST Create User 1677620093812 1677620093813 KO status.find.is(200), but actually found 201 +USER Users END 1677620093813 +REQUEST Get All Users 1677620093813 1677620093814 OK +REQUEST Get User 1677620093812 1677620093814 OK +USER Users START 1677620093828 +REQUEST Create User 1677620093827 1677620093828 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093827 1677620093828 OK +REQUEST Create User 1677620093827 1677620093828 OK +REQUEST Get User 1677620093827 1677620093829 OK +REQUEST Get User 1677620093827 1677620093829 OK +REQUEST Get All Users 1677620093828 1677620093829 OK +REQUEST Get All Users 1677620093827 1677620093829 OK +USER Users START 1677620093844 +REQUEST Create User 1677620093843 1677620093844 OK +REQUEST Create User 1677620093843 1677620093844 OK +REQUEST Get All Users 1677620093843 1677620093846 OK +USER Users START 1677620093858 +REQUEST Create User 1677620093858 1677620093859 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093858 1677620093859 OK +REQUEST Get User 1677620093858 1677620093860 OK +REQUEST Get All Users 1677620093859 1677620093860 OK +REQUEST Get All Users 1677620093858 1677620093860 OK +REQUEST Create User 1677620093873 1677620093874 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620093873 1677620093874 OK +USER Users END 1677620093874 +REQUEST Get User 1677620093873 1677620093874 OK +REQUEST Get User 1677620093873 1677620093874 OK +USER Users START 1677620093889 +REQUEST Update User 1677620093889 1677620093890 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093889 1677620093890 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620093889 1677620093890 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093889 1677620093890 KO status.find.is(200), but actually found 201 +USER Users END 1677620093890 +USER Users END 1677620093890 +REQUEST Get All Users 1677620093890 1677620093891 OK +REQUEST Get All Users 1677620093890 1677620093891 OK +REQUEST Get User 1677620093889 1677620093892 OK +REQUEST Get All Users 1677620093889 1677620093892 OK +USER Users START 1677620093906 +REQUEST Create User 1677620093905 1677620093906 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093905 1677620093906 OK +USER Users END 1677620093907 +REQUEST Get All Users 1677620093905 1677620093908 OK +USER Users START 1677620093921 +REQUEST Delete User 1677620093920 1677620093921 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620093920 1677620093921 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093920 1677620093921 OK +REQUEST Get User 1677620093920 1677620093922 OK +REQUEST Get All Users 1677620093921 1677620093922 OK +REQUEST Get All Users 1677620093921 1677620093923 OK +REQUEST Get All Users 1677620093920 1677620093923 OK +USER Users START 1677620093937 +REQUEST Update User 1677620093936 1677620093937 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620093936 1677620093937 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093936 1677620093937 OK +REQUEST Create User 1677620093936 1677620093937 OK +REQUEST Get User 1677620093936 1677620093938 OK +REQUEST Get User 1677620093936 1677620093938 OK +REQUEST Get All Users 1677620093937 1677620093938 OK +REQUEST Get All Users 1677620093937 1677620093939 OK +REQUEST Get All Users 1677620093936 1677620093939 OK +REQUEST Get User 1677620093951 1677620093953 OK +REQUEST Get User 1677620093951 1677620093953 OK +REQUEST Get User 1677620093951 1677620093953 OK +REQUEST Get User 1677620093951 1677620093953 OK +USER Users START 1677620093967 +REQUEST Create User 1677620093966 1677620093968 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093966 1677620093968 OK +REQUEST Get User 1677620093966 1677620093969 OK +REQUEST Get User 1677620093966 1677620093969 OK +REQUEST Get User 1677620093966 1677620093969 OK +REQUEST Get All Users 1677620093967 1677620093971 OK +REQUEST Get All Users 1677620093968 1677620093971 OK +USER Users START 1677620093983 +REQUEST Create User 1677620093982 1677620093983 OK +REQUEST Get User 1677620093982 1677620093984 OK +REQUEST Get All Users 1677620093982 1677620093985 OK +USER Users START 1677620093998 +REQUEST Create User 1677620093997 1677620093998 OK +REQUEST Create User 1677620093997 1677620093998 OK +REQUEST Create User 1677620093997 1677620093998 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620093997 1677620093999 KO status.find.is(200), but actually found 201 +USER Users END 1677620093999 +REQUEST Get User 1677620093997 1677620093999 OK +REQUEST Get User 1677620093997 1677620093999 OK +REQUEST Get All Users 1677620093998 1677620094000 OK +REQUEST Get All Users 1677620093999 1677620094000 OK +REQUEST Create User 1677620094013 1677620094014 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094013 1677620094015 KO status.find.is(200), but actually found 201 +USER Users END 1677620094015 +REQUEST Get User 1677620094013 1677620094015 OK +REQUEST Get User 1677620094013 1677620094015 OK +REQUEST Get All Users 1677620094015 1677620094016 OK +USER Users START 1677620094030 +REQUEST Update User 1677620094029 1677620094031 OK +REQUEST Create User 1677620094029 1677620094031 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094029 1677620094031 KO status.find.is(200), but actually found 201 +USER Users END 1677620094031 +USER Users END 1677620094031 +REQUEST Get User 1677620094029 1677620094031 OK +REQUEST Get User 1677620094029 1677620094031 OK +REQUEST Get All Users 1677620094030 1677620094032 OK +USER Users START 1677620094046 +REQUEST Create User 1677620094045 1677620094046 OK +REQUEST Create User 1677620094045 1677620094046 OK +REQUEST Get User 1677620094045 1677620094047 OK +REQUEST Get All Users 1677620094045 1677620094047 OK +USER Users START 1677620094062 +REQUEST Delete User 1677620094061 1677620094062 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094061 1677620094062 KO status.find.is(200), but actually found 201 +USER Users END 1677620094062 +REQUEST Create User 1677620094061 1677620094062 KO status.find.is(200), but actually found 201 +USER Users END 1677620094062 +REQUEST Update User 1677620094061 1677620094062 OK +REQUEST Get User 1677620094061 1677620094063 OK +REQUEST Get User 1677620094061 1677620094063 OK +REQUEST Get All Users 1677620094061 1677620094063 OK +REQUEST Get All Users 1677620094062 1677620094063 OK +USER Users START 1677620094078 +REQUEST Update User 1677620094077 1677620094078 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620094077 1677620094079 OK +REQUEST Get User 1677620094077 1677620094079 OK +USER Users END 1677620094079 +REQUEST Get All Users 1677620094077 1677620094079 OK +REQUEST Delete User 1677620094092 1677620094093 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094092 1677620094093 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094092 1677620094094 OK +REQUEST Get User 1677620094092 1677620094094 OK +REQUEST Get All Users 1677620094093 1677620094095 OK +REQUEST Get All Users 1677620094094 1677620094095 OK +USER Users START 1677620094108 +REQUEST Update User 1677620094108 1677620094109 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094108 1677620094109 OK +USER Users END 1677620094109 +REQUEST Get User 1677620094108 1677620094109 OK +REQUEST Get User 1677620094108 1677620094109 OK +REQUEST Get All Users 1677620094108 1677620094110 OK +USER Users START 1677620094123 +REQUEST Create User 1677620094123 1677620094123 OK +REQUEST Create User 1677620094123 1677620094123 KO status.find.is(200), but actually found 201 +USER Users END 1677620094124 +REQUEST Get User 1677620094123 1677620094125 OK +REQUEST Get All Users 1677620094123 1677620094125 OK +REQUEST Get User 1677620094123 1677620094125 OK +USER Users START 1677620094139 +REQUEST Create User 1677620094139 1677620094140 OK +REQUEST Get User 1677620094139 1677620094140 OK +REQUEST Get User 1677620094139 1677620094140 OK +REQUEST Get User 1677620094139 1677620094140 OK +REQUEST Get User 1677620094139 1677620094141 OK +REQUEST Get All Users 1677620094139 1677620094141 OK +USER Users START 1677620094155 +REQUEST Update User 1677620094155 1677620094156 OK +REQUEST Get User 1677620094155 1677620094157 OK +REQUEST Get All Users 1677620094155 1677620094157 OK +REQUEST Update User 1677620094171 1677620094171 OK +REQUEST Delete User 1677620094171 1677620094172 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620094171 1677620094172 OK +REQUEST Get User 1677620094171 1677620094172 OK +REQUEST Get User 1677620094171 1677620094172 OK +USER Users END 1677620094172 +REQUEST Create User 1677620094172 1677620094172 OK +USER Users START 1677620094187 +REQUEST Create User 1677620094187 1677620094187 OK +REQUEST Update User 1677620094187 1677620094187 OK +REQUEST Create User 1677620094187 1677620094187 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094187 1677620094187 KO status.find.is(200), but actually found 201 +USER Users END 1677620094188 +REQUEST Get All Users 1677620094187 1677620094189 OK +REQUEST Get All Users 1677620094187 1677620094189 OK +USER Users START 1677620094203 +REQUEST Create User 1677620094202 1677620094203 OK +REQUEST Create User 1677620094202 1677620094203 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094202 1677620094203 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094202 1677620094203 KO status.find.is(200), but actually found 201 +USER Users END 1677620094203 +USER Users END 1677620094203 +REQUEST Get User 1677620094202 1677620094204 OK +REQUEST Get All Users 1677620094202 1677620094204 OK +REQUEST Get All Users 1677620094203 1677620094205 OK +USER Users START 1677620094218 +REQUEST Update User 1677620094218 1677620094219 OK +REQUEST Delete User 1677620094218 1677620094219 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620094219 +REQUEST Create User 1677620094218 1677620094220 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094218 1677620094220 KO status.find.is(200), but actually found 201 +USER Users END 1677620094220 +REQUEST Get All Users 1677620094218 1677620094220 OK +REQUEST Get User 1677620094218 1677620094222 OK +REQUEST Get All Users 1677620094220 1677620094223 OK +REQUEST Delete User 1677620094233 1677620094234 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620094234 +REQUEST Update User 1677620094233 1677620094234 OK +REQUEST Get User 1677620094233 1677620094235 OK +REQUEST Get User 1677620094233 1677620094235 OK +USER Users START 1677620094249 +REQUEST Delete User 1677620094248 1677620094249 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620094248 1677620094249 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620094248 1677620094249 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620094250 +REQUEST Create User 1677620094248 1677620094250 OK +REQUEST Create User 1677620094248 1677620094250 OK +REQUEST Get User 1677620094248 1677620094251 OK +REQUEST Get User 1677620094248 1677620094251 OK +REQUEST Get All Users 1677620094249 1677620094251 OK +REQUEST Get All Users 1677620094249 1677620094251 OK +REQUEST Get All Users 1677620094249 1677620094251 OK +USER Users START 1677620094265 +REQUEST Create User 1677620094264 1677620094265 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094264 1677620094265 OK +REQUEST Get User 1677620094264 1677620094266 OK +REQUEST Get All Users 1677620094264 1677620094266 OK +REQUEST Get All Users 1677620094265 1677620094266 OK +REQUEST Delete User 1677620094279 1677620094280 KO status.find.in([200, 209], 304), found 405 +USER Users START 1677620094280 +REQUEST Create User 1677620094279 1677620094280 OK +REQUEST Create User 1677620094279 1677620094280 KO status.find.is(200), but actually found 201 +USER Users END 1677620094281 +REQUEST Get User 1677620094279 1677620094282 OK +REQUEST Get User 1677620094279 1677620094282 OK +REQUEST Get All Users 1677620094280 1677620094282 OK +REQUEST Get All Users 1677620094280 1677620094283 OK +USER Users START 1677620094295 +REQUEST Delete User 1677620094295 1677620094295 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094295 1677620094296 OK +USER Users END 1677620094296 +REQUEST Update User 1677620094295 1677620094296 KO status.find.is(201), but actually found 200 +USER Users END 1677620094297 +REQUEST Get User 1677620094295 1677620094297 OK +REQUEST Get All Users 1677620094295 1677620094297 OK +REQUEST Delete User 1677620094311 1677620094311 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094311 1677620094312 OK +REQUEST Update User 1677620094311 1677620094312 OK +USER Users END 1677620094312 +REQUEST Create User 1677620094311 1677620094312 OK +REQUEST Get User 1677620094311 1677620094312 OK +REQUEST Get User 1677620094311 1677620094313 OK +USER Users START 1677620094327 +REQUEST Create User 1677620094326 1677620094327 OK +REQUEST Create User 1677620094326 1677620094327 OK +REQUEST Create User 1677620094326 1677620094327 KO status.find.is(200), but actually found 201 +USER Users END 1677620094327 +REQUEST Get User 1677620094326 1677620094328 OK +REQUEST Get All Users 1677620094326 1677620094329 OK +USER Users START 1677620094342 +REQUEST Delete User 1677620094342 1677620094343 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094342 1677620094343 OK +REQUEST Update User 1677620094342 1677620094343 OK +REQUEST Update User 1677620094342 1677620094343 OK +REQUEST Get All Users 1677620094343 1677620094345 OK +REQUEST Get User 1677620094343 1677620094345 OK +REQUEST Get All Users 1677620094342 1677620094345 OK +USER Users START 1677620094358 +REQUEST Update User 1677620094358 1677620094358 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094358 1677620094359 OK +REQUEST Get User 1677620094358 1677620094359 OK +REQUEST Get User 1677620094358 1677620094360 OK +REQUEST Get All Users 1677620094358 1677620094360 OK +REQUEST Get All Users 1677620094358 1677620094360 OK +REQUEST Update User 1677620094373 1677620094374 OK +REQUEST Get User 1677620094373 1677620094375 OK +REQUEST Get User 1677620094373 1677620094375 OK +REQUEST Get User 1677620094373 1677620094375 OK +USER Users START 1677620094389 +REQUEST Create User 1677620094389 1677620094390 OK +REQUEST Update User 1677620094389 1677620094390 OK +REQUEST Create User 1677620094389 1677620094391 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094389 1677620094391 OK +REQUEST Get User 1677620094389 1677620094391 OK +USER Users END 1677620094392 +REQUEST Get All Users 1677620094389 1677620094393 OK +USER Users START 1677620094405 +REQUEST Delete User 1677620094404 1677620094405 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094404 1677620094406 OK +REQUEST Get User 1677620094404 1677620094407 OK +REQUEST Get All Users 1677620094405 1677620094408 OK +REQUEST Get All Users 1677620094404 1677620094409 OK +USER Users START 1677620094421 +REQUEST Delete User 1677620094420 1677620094422 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094420 1677620094422 OK +REQUEST Get User 1677620094420 1677620094426 OK +REQUEST Get User 1677620094420 1677620094426 OK +REQUEST Get User 1677620094420 1677620094427 OK +REQUEST Get All Users 1677620094423 1677620094428 OK +REQUEST Get All Users 1677620094421 1677620094428 OK +USER Users START 1677620094437 +REQUEST Update User 1677620094436 1677620094438 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094436 1677620094438 KO status.find.is(200), but actually found 201 +USER Users END 1677620094439 +USER Users END 1677620094440 +REQUEST Get User 1677620094436 1677620094441 OK +REQUEST Get All Users 1677620094436 1677620094443 OK +REQUEST Get User 1677620094436 1677620094444 OK +REQUEST Delete User 1677620094451 1677620094452 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094451 1677620094453 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094451 1677620094454 KO status.find.is(200), but actually found 201 +USER Users END 1677620094455 +REQUEST Get User 1677620094451 1677620094456 OK +REQUEST Get All Users 1677620094453 1677620094457 OK +REQUEST Get User 1677620094451 1677620094458 OK +REQUEST Get All Users 1677620094454 1677620094459 OK +USER Users START 1677620094467 +REQUEST Delete User 1677620094466 1677620094467 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620094468 +REQUEST Create User 1677620094466 1677620094468 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094466 1677620094468 OK +USER Users END 1677620094469 +REQUEST Get All Users 1677620094466 1677620094471 OK +USER Users START 1677620094482 +REQUEST Delete User 1677620094481 1677620094482 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620094481 1677620094483 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620094483 +REQUEST Update User 1677620094481 1677620094484 KO status.find.is(201), but actually found 200 +USER Users END 1677620094485 +REQUEST Get All Users 1677620094483 1677620094486 OK +REQUEST Get All Users 1677620094481 1677620094486 OK +REQUEST Get User 1677620094481 1677620094486 OK +USER Users START 1677620094497 +REQUEST Update User 1677620094496 1677620094497 OK +REQUEST Create User 1677620094496 1677620094497 OK +REQUEST Update User 1677620094496 1677620094497 OK +REQUEST Get User 1677620094496 1677620094499 OK +REQUEST Get All Users 1677620094497 1677620094500 OK +REQUEST Update User 1677620094512 1677620094513 OK +REQUEST Create User 1677620094512 1677620094513 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094512 1677620094513 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094512 1677620094513 OK +USER Users END 1677620094514 +REQUEST Get User 1677620094512 1677620094514 OK +REQUEST Get User 1677620094512 1677620094515 OK +REQUEST Get All Users 1677620094513 1677620094515 OK +REQUEST Get User 1677620094512 1677620094515 OK +USER Users START 1677620094529 +REQUEST Create User 1677620094527 1677620094529 OK +REQUEST Delete User 1677620094527 1677620094529 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094527 1677620094530 KO status.find.is(201), but actually found 200 +USER Users END 1677620094531 +REQUEST Get User 1677620094527 1677620094533 OK +REQUEST Get All Users 1677620094528 1677620094533 OK +REQUEST Get All Users 1677620094530 1677620094534 OK +USER Users START 1677620094543 +REQUEST Create User 1677620094542 1677620094543 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094542 1677620094543 OK +REQUEST Get User 1677620094542 1677620094544 OK +REQUEST Get All Users 1677620094543 1677620094545 OK +REQUEST Get All Users 1677620094543 1677620094545 OK +USER Users START 1677620094559 +REQUEST Update User 1677620094558 1677620094559 OK +REQUEST Create User 1677620094558 1677620094559 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094558 1677620094560 OK +REQUEST Get User 1677620094558 1677620094561 OK +REQUEST Get All Users 1677620094558 1677620094562 OK +REQUEST Get All Users 1677620094560 1677620094562 OK +REQUEST Update User 1677620094573 1677620094575 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094573 1677620094575 KO status.find.is(200), but actually found 201 +USER Users END 1677620094576 +REQUEST Get User 1677620094573 1677620094576 OK +REQUEST Get User 1677620094573 1677620094577 OK +REQUEST Get All Users 1677620094575 1677620094578 OK +USER Users START 1677620094589 +REQUEST Create User 1677620094588 1677620094589 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094588 1677620094589 OK +REQUEST Get User 1677620094588 1677620094592 OK +REQUEST Get User 1677620094588 1677620094592 OK +REQUEST Get All Users 1677620094590 1677620094592 OK +REQUEST Get All Users 1677620094588 1677620094593 OK +USER Users START 1677620094604 +REQUEST Create User 1677620094603 1677620094605 OK +REQUEST Create User 1677620094603 1677620094605 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094603 1677620094605 KO status.find.is(201), but actually found 200 +USER Users END 1677620094606 +REQUEST Get User 1677620094603 1677620094607 OK +REQUEST Get All Users 1677620094605 1677620094608 OK +REQUEST Get User 1677620094603 1677620094608 OK +REQUEST Get All Users 1677620094604 1677620094609 OK +USER Users START 1677620094620 +REQUEST Create User 1677620094619 1677620094621 OK +REQUEST Create User 1677620094619 1677620094621 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620094619 1677620094621 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094619 1677620094621 OK +REQUEST Get All Users 1677620094621 1677620094624 OK +REQUEST Get All Users 1677620094621 1677620094624 OK +REQUEST Get All Users 1677620094620 1677620094624 OK +USER Users START 1677620094636 +REQUEST Update User 1677620094635 1677620094637 OK +REQUEST Get User 1677620094635 1677620094637 OK +REQUEST Get User 1677620094635 1677620094638 OK +REQUEST Get All Users 1677620094635 1677620094639 OK +REQUEST Create User 1677620094651 1677620094652 OK +REQUEST Update User 1677620094651 1677620094652 OK +REQUEST Get User 1677620094651 1677620094653 OK +REQUEST Get User 1677620094651 1677620094653 OK +USER Users START 1677620094667 +REQUEST Delete User 1677620094666 1677620094667 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094666 1677620094667 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094666 1677620094667 KO status.find.is(200), but actually found 201 +USER Users END 1677620094667 +REQUEST Get User 1677620094666 1677620094668 OK +REQUEST Get User 1677620094666 1677620094668 OK +REQUEST Get All Users 1677620094667 1677620094669 OK +REQUEST Get All Users 1677620094667 1677620094670 OK +REQUEST Get All Users 1677620094666 1677620094670 OK +USER Users START 1677620094682 +REQUEST Create User 1677620094682 1677620094682 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094682 1677620094682 OK +REQUEST Create User 1677620094682 1677620094683 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094682 1677620094683 KO status.find.is(201), but actually found 200 +USER Users END 1677620094683 +USER Users END 1677620094683 +USER Users END 1677620094683 +REQUEST Get All Users 1677620094682 1677620094685 OK +USER Users START 1677620094697 +REQUEST Create User 1677620094696 1677620094697 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094696 1677620094699 OK +REQUEST Get User 1677620094696 1677620094699 OK +REQUEST Get All Users 1677620094698 1677620094700 OK +REQUEST Get All Users 1677620094697 1677620094700 OK +REQUEST Delete User 1677620094712 1677620094713 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094712 1677620094714 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620094712 1677620094714 OK +USER Users END 1677620094714 +REQUEST Get User 1677620094712 1677620094715 OK +REQUEST Get All Users 1677620094713 1677620094716 OK +USER Users START 1677620094728 +REQUEST Create User 1677620094728 1677620094729 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094728 1677620094729 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094728 1677620094729 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094728 1677620094729 OK +USER Users END 1677620094729 +REQUEST Get User 1677620094728 1677620094730 OK +REQUEST Get All Users 1677620094729 1677620094731 OK +REQUEST Get All Users 1677620094729 1677620094731 OK +REQUEST Get All Users 1677620094728 1677620094732 OK +USER Users START 1677620094743 +REQUEST Delete User 1677620094743 1677620094744 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094743 1677620094744 OK +REQUEST Create User 1677620094743 1677620094744 OK +REQUEST Get All Users 1677620094744 1677620094746 OK +REQUEST Get All Users 1677620094743 1677620094747 OK +USER Users START 1677620094759 +REQUEST Delete User 1677620094758 1677620094759 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620094758 1677620094759 OK +REQUEST Create User 1677620094758 1677620094760 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094758 1677620094760 OK +REQUEST Get All Users 1677620094759 1677620094761 OK +REQUEST Get User 1677620094758 1677620094761 OK +REQUEST Get All Users 1677620094758 1677620094762 OK +REQUEST Get All Users 1677620094760 1677620094762 OK +REQUEST Update User 1677620094774 1677620094775 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620094774 1677620094775 KO status.find.is(201), but actually found 200 +USER Users END 1677620094775 +REQUEST Get User 1677620094774 1677620094776 OK +REQUEST Get All Users 1677620094775 1677620094776 OK +USER Users START 1677620094790 +REQUEST Update User 1677620094789 1677620094791 OK +REQUEST Create User 1677620094789 1677620094791 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094789 1677620094791 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094789 1677620094791 KO status.find.is(200), but actually found 201 +USER Users END 1677620094792 +USER Users END 1677620094792 +REQUEST Get User 1677620094789 1677620094792 OK +REQUEST Get User 1677620094789 1677620094793 OK +REQUEST Get All Users 1677620094792 1677620094794 OK +REQUEST Get All Users 1677620094790 1677620094794 OK +USER Users START 1677620094806 +REQUEST Delete User 1677620094805 1677620094806 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094805 1677620094806 OK +USER Users END 1677620094806 +REQUEST Create User 1677620094805 1677620094807 OK +REQUEST Create User 1677620094805 1677620094807 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094805 1677620094807 OK +REQUEST Get User 1677620094805 1677620094808 OK +REQUEST Get All Users 1677620094805 1677620094809 OK +REQUEST Get All Users 1677620094807 1677620094810 OK +USER Users START 1677620094821 +REQUEST Delete User 1677620094820 1677620094822 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620094820 1677620094822 OK +USER Users END 1677620094822 +REQUEST Get User 1677620094820 1677620094823 OK +REQUEST Get All Users 1677620094821 1677620094824 OK +USER Users START 1677620094837 +REQUEST Update User 1677620094836 1677620094837 OK +REQUEST Update User 1677620094836 1677620094837 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094836 1677620094837 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094836 1677620094837 KO status.find.is(200), but actually found 201 +USER Users END 1677620094837 +USER Users END 1677620094837 +REQUEST Get User 1677620094836 1677620094838 OK +REQUEST Get User 1677620094836 1677620094839 OK +REQUEST Get All Users 1677620094837 1677620094839 OK +REQUEST Get All Users 1677620094836 1677620094840 OK +REQUEST Update User 1677620094852 1677620094853 OK +REQUEST Update User 1677620094852 1677620094853 OK +REQUEST Get User 1677620094852 1677620094854 OK +USER Users START 1677620094867 +REQUEST Create User 1677620094866 1677620094867 OK +REQUEST Create User 1677620094866 1677620094868 OK +REQUEST Get User 1677620094866 1677620094868 OK +REQUEST Get User 1677620094866 1677620094868 OK +REQUEST Get All Users 1677620094867 1677620094869 OK +USER Users START 1677620094882 +REQUEST Create User 1677620094881 1677620094882 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094881 1677620094882 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094881 1677620094882 OK +USER Users END 1677620094882 +REQUEST Get All Users 1677620094881 1677620094884 OK +REQUEST Get All Users 1677620094882 1677620094884 OK +USER Users START 1677620094898 +REQUEST Create User 1677620094897 1677620094898 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094897 1677620094899 OK +REQUEST Get User 1677620094897 1677620094899 OK +REQUEST Get User 1677620094897 1677620094900 OK +REQUEST Get All Users 1677620094897 1677620094900 OK +REQUEST Get All Users 1677620094899 1677620094900 OK +REQUEST Update User 1677620094913 1677620094914 OK +REQUEST Get User 1677620094913 1677620094916 OK +USER Users START 1677620094929 +REQUEST Update User 1677620094928 1677620094929 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094928 1677620094929 OK +REQUEST Get User 1677620094928 1677620094931 OK +REQUEST Get All Users 1677620094930 1677620094931 OK +REQUEST Get User 1677620094928 1677620094931 OK +REQUEST Get User 1677620094928 1677620094931 OK +REQUEST Get All Users 1677620094929 1677620094932 OK +USER Users START 1677620094947 +REQUEST Update User 1677620094946 1677620094947 OK +REQUEST Create User 1677620094946 1677620094948 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094946 1677620094948 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094946 1677620094948 OK +USER Users END 1677620094949 +REQUEST Get User 1677620094946 1677620094950 OK +REQUEST Get User 1677620094946 1677620094950 OK +REQUEST Get User 1677620094946 1677620094950 OK +REQUEST Get All Users 1677620094948 1677620094950 OK +REQUEST Get All Users 1677620094946 1677620094951 OK +USER Users START 1677620094960 +REQUEST Create User 1677620094959 1677620094961 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094959 1677620094961 OK +REQUEST Create User 1677620094959 1677620094961 OK +REQUEST Create User 1677620094959 1677620094961 KO status.find.is(200), but actually found 201 +USER Users END 1677620094962 +REQUEST Get All Users 1677620094959 1677620094963 OK +REQUEST Get All Users 1677620094961 1677620094963 OK +USER Users START 1677620094975 +REQUEST Create User 1677620094974 1677620094976 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620094974 1677620094976 OK +REQUEST Create User 1677620094974 1677620094976 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620094974 1677620094976 KO status.find.is(201), but actually found 200 +USER Users END 1677620094977 +USER Users END 1677620094977 +USER Users END 1677620094977 +REQUEST Get User 1677620094974 1677620094978 OK +REQUEST Get User 1677620094974 1677620094978 OK +REQUEST Get All Users 1677620094974 1677620094979 OK +REQUEST Update User 1677620094989 1677620094990 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620094989 1677620094991 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620094989 1677620094991 OK +USER Users END 1677620094991 +REQUEST Get All Users 1677620094990 1677620094992 OK +USER Users START 1677620095005 +REQUEST Update User 1677620095004 1677620095005 OK +REQUEST Update User 1677620095004 1677620095006 OK +REQUEST Create User 1677620095004 1677620095006 OK +REQUEST Create User 1677620095004 1677620095006 KO status.find.is(200), but actually found 201 +USER Users END 1677620095006 +REQUEST Get User 1677620095004 1677620095007 OK +REQUEST Get User 1677620095004 1677620095007 OK +REQUEST Get All Users 1677620095005 1677620095008 OK +USER Users START 1677620095021 +REQUEST Create User 1677620095020 1677620095021 OK +REQUEST Create User 1677620095020 1677620095021 OK +REQUEST Get User 1677620095020 1677620095023 OK +REQUEST Get All Users 1677620095020 1677620095023 OK +USER Users START 1677620095037 +REQUEST Delete User 1677620095036 1677620095036 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095036 1677620095037 OK +USER Users END 1677620095037 +REQUEST Create User 1677620095036 1677620095037 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095036 1677620095039 OK +REQUEST Get All Users 1677620095036 1677620095040 OK +REQUEST Get All Users 1677620095037 1677620095040 OK +REQUEST Update User 1677620095051 1677620095052 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620095051 1677620095053 OK +REQUEST Create User 1677620095051 1677620095053 OK +REQUEST Get User 1677620095051 1677620095054 OK +REQUEST Get All Users 1677620095053 1677620095055 OK +USER Users START 1677620095067 +REQUEST Delete User 1677620095066 1677620095067 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620095067 +REQUEST Create User 1677620095066 1677620095067 OK +REQUEST Create User 1677620095066 1677620095068 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095066 1677620095068 OK +REQUEST Get User 1677620095066 1677620095069 OK +REQUEST Get All Users 1677620095066 1677620095069 OK +REQUEST Get All Users 1677620095068 1677620095071 OK +USER Users START 1677620095083 +REQUEST Create User 1677620095082 1677620095083 OK +REQUEST Create User 1677620095082 1677620095083 KO status.find.is(200), but actually found 201 +USER Users END 1677620095084 +REQUEST Get User 1677620095082 1677620095084 OK +REQUEST Get All Users 1677620095082 1677620095085 OK +REQUEST Create User 1677620095098 1677620095098 OK +REQUEST Create User 1677620095098 1677620095098 KO status.find.is(200), but actually found 201 +USER Users END 1677620095099 +REQUEST Get User 1677620095098 1677620095099 OK +REQUEST Get User 1677620095098 1677620095100 OK +REQUEST Update User 1677620095112 1677620095114 OK +REQUEST Create User 1677620095112 1677620095114 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095112 1677620095114 KO status.find.is(200), but actually found 201 +USER Users END 1677620095115 +USER Users END 1677620095115 +REQUEST Get User 1677620095112 1677620095116 OK +REQUEST Create User 1677620095128 1677620095129 OK +REQUEST Update User 1677620095128 1677620095129 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095128 1677620095129 KO status.find.is(200), but actually found 201 +USER Users END 1677620095130 +REQUEST Get User 1677620095128 1677620095131 OK +REQUEST Get All Users 1677620095129 1677620095132 OK +REQUEST Create User 1677620095144 1677620095145 OK +REQUEST Update User 1677620095144 1677620095145 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095144 1677620095145 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095144 1677620095145 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095144 1677620095145 OK +USER Users END 1677620095145 +REQUEST Get User 1677620095144 1677620095146 OK +REQUEST Get All Users 1677620095145 1677620095147 OK +REQUEST Get All Users 1677620095145 1677620095147 OK +REQUEST Delete User 1677620095159 1677620095160 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095159 1677620095160 OK +REQUEST Get User 1677620095159 1677620095161 OK +REQUEST Get All Users 1677620095160 1677620095162 OK +REQUEST Create User 1677620095174 1677620095175 OK +REQUEST Delete User 1677620095174 1677620095175 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095174 1677620095175 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620095174 1677620095175 OK +REQUEST Create User 1677620095174 1677620095175 OK +USER Users END 1677620095176 +USER Users END 1677620095176 +REQUEST Delete User 1677620095190 1677620095191 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620095190 1677620095191 KO status.find.is(201), but actually found 200 +USER Users END 1677620095192 +USER Users END 1677620095192 +REQUEST Get User 1677620095190 1677620095193 OK +REQUEST Get User 1677620095190 1677620095193 OK +REQUEST Update User 1677620095206 1677620095207 OK +REQUEST Create User 1677620095206 1677620095207 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095206 1677620095208 OK +REQUEST Get User 1677620095206 1677620095208 OK +REQUEST Get All Users 1677620095207 1677620095209 OK +REQUEST Delete User 1677620095222 1677620095223 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620095222 1677620095224 OK +REQUEST Get All Users 1677620095223 1677620095225 OK +REQUEST Delete User 1677620095237 1677620095238 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095237 1677620095238 OK +REQUEST Create User 1677620095237 1677620095238 OK +REQUEST Create User 1677620095238 1677620095239 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095237 1677620095240 OK +REQUEST Get All Users 1677620095238 1677620095240 OK +REQUEST Get All Users 1677620095239 1677620095241 OK +REQUEST Create User 1677620095252 1677620095253 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620095252 1677620095253 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095252 1677620095253 OK +REQUEST Update User 1677620095252 1677620095254 OK +REQUEST Get User 1677620095252 1677620095254 OK +REQUEST Get User 1677620095252 1677620095255 OK +REQUEST Get User 1677620095252 1677620095255 OK +REQUEST Get All Users 1677620095253 1677620095256 OK +REQUEST Get All Users 1677620095253 1677620095256 OK +REQUEST Create User 1677620095268 1677620095270 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095268 1677620095270 OK +USER Users END 1677620095270 +REQUEST Get User 1677620095268 1677620095270 OK +REQUEST Get User 1677620095268 1677620095271 OK +REQUEST Update User 1677620095284 1677620095285 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095284 1677620095285 OK +REQUEST Create User 1677620095284 1677620095285 KO status.find.is(200), but actually found 201 +USER Users END 1677620095286 +REQUEST Get User 1677620095284 1677620095286 OK +REQUEST Get User 1677620095284 1677620095286 OK +REQUEST Get All Users 1677620095285 1677620095287 OK +REQUEST Delete User 1677620095299 1677620095300 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095299 1677620095300 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095299 1677620095301 OK +REQUEST Get All Users 1677620095300 1677620095302 OK +REQUEST Get All Users 1677620095300 1677620095302 OK +REQUEST Delete User 1677620095315 1677620095316 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620095315 1677620095316 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620095316 +REQUEST Update User 1677620095315 1677620095317 OK +REQUEST Create User 1677620095315 1677620095317 OK +REQUEST Create User 1677620095315 1677620095317 KO status.find.is(200), but actually found 201 +USER Users END 1677620095317 +REQUEST Get All Users 1677620095316 1677620095318 OK +REQUEST Update User 1677620095331 1677620095332 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620095331 1677620095332 OK +REQUEST Create User 1677620095331 1677620095332 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620095332 1677620095333 OK +REQUEST Get User 1677620095331 1677620095333 OK +REQUEST Get All Users 1677620095332 1677620095334 OK +REQUEST Update User 1677620095347 1677620095348 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620095347 1677620095348 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095347 1677620095348 OK +REQUEST Delete User 1677620095347 1677620095348 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620095349 +REQUEST Get All Users 1677620095348 1677620095350 OK +REQUEST Get User 1677620095347 1677620095351 OK +REQUEST Get All Users 1677620095348 1677620095351 OK +REQUEST Get User 1677620095347 1677620095351 OK +REQUEST Create User 1677620095362 1677620095363 OK +REQUEST Update User 1677620095362 1677620095363 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095362 1677620095363 KO status.find.is(200), but actually found 201 +USER Users END 1677620095363 +REQUEST Get User 1677620095362 1677620095364 OK +REQUEST Get User 1677620095362 1677620095364 OK +REQUEST Get All Users 1677620095363 1677620095364 OK +REQUEST Delete User 1677620095378 1677620095379 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095378 1677620095379 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095378 1677620095379 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095378 1677620095379 KO status.find.is(200), but actually found 201 +USER Users END 1677620095380 +USER Users END 1677620095380 +REQUEST Get All Users 1677620095379 1677620095381 OK +REQUEST Get All Users 1677620095379 1677620095381 OK +REQUEST Delete User 1677620095394 1677620095395 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620095394 1677620095395 OK +USER Users END 1677620095395 +REQUEST Create User 1677620095394 1677620095395 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095394 1677620095395 KO status.find.is(200), but actually found 201 +USER Users END 1677620095396 +REQUEST Get User 1677620095394 1677620095396 OK +REQUEST Get All Users 1677620095395 1677620095398 OK +REQUEST Update User 1677620095409 1677620095410 OK +REQUEST Create User 1677620095409 1677620095410 KO status.find.is(200), but actually found 201 +USER Users END 1677620095411 +REQUEST Get User 1677620095409 1677620095411 OK +REQUEST Update User 1677620095424 1677620095425 OK +REQUEST Get User 1677620095424 1677620095427 OK +REQUEST Create User 1677620095440 1677620095441 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095440 1677620095441 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095440 1677620095442 KO status.find.is(200), but actually found 201 +USER Users END 1677620095442 +USER Users END 1677620095442 +REQUEST Get User 1677620095440 1677620095443 OK +REQUEST Get User 1677620095440 1677620095443 OK +REQUEST Get All Users 1677620095442 1677620095444 OK +REQUEST Create User 1677620095455 1677620095456 OK +REQUEST Create User 1677620095455 1677620095456 OK +REQUEST Get User 1677620095455 1677620095457 OK +REQUEST Update User 1677620095471 1677620095472 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095471 1677620095472 OK +REQUEST Get User 1677620095471 1677620095473 OK +REQUEST Get User 1677620095471 1677620095473 OK +REQUEST Get All Users 1677620095472 1677620095474 OK +REQUEST Get User 1677620095486 1677620095489 OK +REQUEST Create User 1677620095471 1677620095493 OK +REQUEST Delete User 1677620095502 1677620095503 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095502 1677620095503 KO status.find.is(200), but actually found 201 +USER Users END 1677620095503 +REQUEST Delete User 1677620095502 1677620095503 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620095502 1677620095504 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095502 1677620095504 OK +REQUEST Get User 1677620095502 1677620095504 OK +REQUEST Get User 1677620095502 1677620095505 OK +REQUEST Get All Users 1677620095503 1677620095506 OK +REQUEST Get User 1677620095502 1677620095506 OK +REQUEST Get All Users 1677620095503 1677620095506 OK +REQUEST Get All Users 1677620095504 1677620095507 OK +REQUEST Delete User 1677620095517 1677620095518 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095517 1677620095518 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095517 1677620095519 OK +REQUEST Update User 1677620095517 1677620095519 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095517 1677620095519 OK +USER Users END 1677620095519 +REQUEST Get All Users 1677620095518 1677620095520 OK +REQUEST Get User 1677620095517 1677620095521 OK +REQUEST Get All Users 1677620095518 1677620095521 OK +REQUEST Update User 1677620095533 1677620095534 OK +REQUEST Delete User 1677620095548 1677620095549 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095548 1677620095550 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095548 1677620095550 OK +REQUEST Get User 1677620095548 1677620095551 OK +REQUEST Get User 1677620095548 1677620095552 OK +REQUEST Get User 1677620095548 1677620095552 OK +REQUEST Get User 1677620095548 1677620095552 OK +REQUEST Get All Users 1677620095549 1677620095553 OK +REQUEST Get All Users 1677620095550 1677620095553 OK +REQUEST Create User 1677620095563 1677620095565 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620095563 1677620095565 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095563 1677620095565 OK +USER Users END 1677620095565 +USER Users END 1677620095565 +REQUEST Get User 1677620095563 1677620095566 OK +REQUEST Get User 1677620095563 1677620095567 OK +REQUEST Create User 1677620095579 1677620095581 OK +REQUEST Create User 1677620095579 1677620095581 KO status.find.is(200), but actually found 201 +USER Users END 1677620095582 +REQUEST Get User 1677620095579 1677620095582 OK +REQUEST Delete User 1677620095595 1677620095596 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095595 1677620095596 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095595 1677620095596 OK +REQUEST Get User 1677620095595 1677620095597 OK +REQUEST Get User 1677620095595 1677620095597 OK +REQUEST Get All Users 1677620095596 1677620095598 OK +REQUEST Get All Users 1677620095596 1677620095598 OK +REQUEST Create User 1677620095611 1677620095612 OK +REQUEST Create User 1677620095611 1677620095612 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620095611 1677620095612 KO status.find.is(201), but actually found 200 +USER Users END 1677620095613 +REQUEST Get User 1677620095611 1677620095613 OK +REQUEST Get User 1677620095611 1677620095613 OK +REQUEST Get All Users 1677620095612 1677620095615 OK +REQUEST Delete User 1677620095626 1677620095627 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620095626 1677620095627 OK +REQUEST Get User 1677620095626 1677620095629 OK +REQUEST Get User 1677620095626 1677620095629 OK +REQUEST Get All Users 1677620095627 1677620095629 OK +REQUEST Get User 1677620095626 1677620095629 OK +REQUEST Delete User 1677620095642 1677620095643 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095642 1677620095643 OK +REQUEST Create User 1677620095642 1677620095643 OK +USER Users END 1677620095643 +REQUEST Get User 1677620095642 1677620095644 OK +REQUEST Delete User 1677620095657 1677620095658 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095657 1677620095658 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095657 1677620095658 OK +REQUEST Update User 1677620095657 1677620095658 OK +USER Users END 1677620095658 +REQUEST Get All Users 1677620095658 1677620095659 OK +REQUEST Create User 1677620095672 1677620095673 OK +REQUEST Create User 1677620095672 1677620095673 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095672 1677620095674 OK +REQUEST Get User 1677620095672 1677620095674 OK +REQUEST Get User 1677620095672 1677620095674 OK +REQUEST Get All Users 1677620095673 1677620095675 OK +REQUEST Update User 1677620095688 1677620095688 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620095688 1677620095689 OK +REQUEST Get All Users 1677620095689 1677620095690 OK +REQUEST Create User 1677620095703 1677620095704 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095703 1677620095704 KO status.find.is(200), but actually found 201 +USER Users END 1677620095704 +REQUEST Get User 1677620095703 1677620095705 OK +REQUEST Get User 1677620095703 1677620095706 OK +REQUEST Get All Users 1677620095704 1677620095706 OK +REQUEST Create User 1677620095719 1677620095719 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095719 1677620095719 OK +USER Users END 1677620095720 +REQUEST Get User 1677620095719 1677620095720 OK +REQUEST Create User 1677620095735 1677620095736 OK +REQUEST Update User 1677620095735 1677620095736 OK +REQUEST Get User 1677620095735 1677620095736 OK +REQUEST Get User 1677620095735 1677620095736 OK +REQUEST Get User 1677620095735 1677620095736 OK +REQUEST Update User 1677620095750 1677620095751 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620095751 1677620095752 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620095750 1677620095753 OK +USER Users END 1677620095753 +REQUEST Get User 1677620095750 1677620095753 OK +REQUEST Get All Users 1677620095751 1677620095753 OK +REQUEST Delete User 1677620095766 1677620095767 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620095765 1677620095767 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620095768 +REQUEST Create User 1677620095766 1677620095768 OK +REQUEST Get User 1677620095766 1677620095769 OK +REQUEST Get User 1677620095765 1677620095769 OK +REQUEST Get User 1677620095765 1677620095770 OK +REQUEST Get All Users 1677620095767 1677620095770 OK +REQUEST Create User 1677620095781 1677620095782 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095781 1677620095783 OK +REQUEST Get All Users 1677620095782 1677620095784 OK +REQUEST Delete User 1677620095796 1677620095797 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095796 1677620095797 OK +REQUEST Create User 1677620095796 1677620095798 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095796 1677620095798 OK +REQUEST Get User 1677620095796 1677620095798 OK +USER Users END 1677620095798 +USER Users END 1677620095799 +REQUEST Create User 1677620095812 1677620095814 OK +REQUEST Update User 1677620095812 1677620095814 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620095812 1677620095814 OK +REQUEST Create User 1677620095812 1677620095814 OK +REQUEST Get User 1677620095812 1677620095815 OK +REQUEST Get User 1677620095812 1677620095815 OK +USER Users END 1677620095815 +REQUEST Create User 1677620095828 1677620095829 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620095828 1677620095829 KO status.find.is(201), but actually found 200 +USER Users END 1677620095830 +REQUEST Get User 1677620095828 1677620095832 OK +REQUEST Get All Users 1677620095829 1677620095832 OK +REQUEST Delete User 1677620095843 1677620095845 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095843 1677620095845 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095843 1677620095845 KO status.find.is(200), but actually found 201 +USER Users END 1677620095846 +USER Users END 1677620095846 +REQUEST Get User 1677620095843 1677620095847 OK +REQUEST Get User 1677620095843 1677620095847 OK +REQUEST Get All Users 1677620095845 1677620095848 OK +REQUEST Delete User 1677620095858 1677620095859 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620095858 1677620095859 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095858 1677620095859 KO status.find.is(200), but actually found 201 +USER Users END 1677620095860 +REQUEST Get All Users 1677620095859 1677620095861 OK +REQUEST Get All Users 1677620095860 1677620095861 OK +REQUEST Update User 1677620095874 1677620095875 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095874 1677620095875 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620095874 1677620095875 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095874 1677620095875 OK +USER Users END 1677620095875 +USER Users END 1677620095875 +REQUEST Get User 1677620095874 1677620095876 OK +REQUEST Get All Users 1677620095875 1677620095876 OK +REQUEST Update User 1677620095889 1677620095890 KO status.find.is(201), but actually found 200 +USER Users END 1677620095891 +REQUEST Get User 1677620095889 1677620095892 OK +REQUEST Get User 1677620095889 1677620095892 OK +REQUEST Create User 1677620095905 1677620095908 OK +REQUEST Create User 1677620095905 1677620095908 OK +REQUEST Create User 1677620095905 1677620095908 OK +REQUEST Get User 1677620095905 1677620095909 OK +REQUEST Get User 1677620095905 1677620095909 OK +REQUEST Delete User 1677620095920 1677620095921 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620095920 1677620095921 OK +REQUEST Get All Users 1677620095921 1677620095924 OK +REQUEST Update User 1677620095935 1677620095936 OK +REQUEST Create User 1677620095935 1677620095936 OK +REQUEST Create User 1677620095935 1677620095936 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620095935 1677620095936 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095935 1677620095937 OK +REQUEST Get User 1677620095935 1677620095937 OK +USER Users END 1677620095937 +REQUEST Get All Users 1677620095936 1677620095938 OK +REQUEST Delete User 1677620095951 1677620095952 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620095951 1677620095952 OK +REQUEST Create User 1677620095951 1677620095952 KO status.find.is(200), but actually found 201 +USER Users END 1677620095952 +USER Users END 1677620095952 +REQUEST Create User 1677620095951 1677620095952 KO status.find.is(200), but actually found 201 +USER Users END 1677620095952 +REQUEST Update User 1677620095966 1677620095967 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620095966 1677620095967 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620095966 1677620095968 OK +USER Users END 1677620095968 +USER Users END 1677620095968 +REQUEST Get User 1677620095966 1677620095969 OK +REQUEST Get User 1677620095966 1677620095969 OK +REQUEST Get User 1677620095966 1677620095969 OK +REQUEST Get User 1677620095966 1677620095969 OK +REQUEST Update User 1677620095982 1677620095982 OK +REQUEST Create User 1677620095982 1677620095982 OK +REQUEST Create User 1677620095982 1677620095983 KO status.find.is(200), but actually found 201 +USER Users END 1677620095983 +REQUEST Get User 1677620095982 1677620095983 OK +REQUEST Create User 1677620095998 1677620095999 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620095998 1677620096000 OK +REQUEST Get All Users 1677620095999 1677620096000 OK +REQUEST Delete User 1677620096014 1677620096014 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620096014 1677620096014 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096014 1677620096015 OK +USER Users END 1677620096015 +USER Users END 1677620096015 +REQUEST Create User 1677620096014 1677620096015 KO status.find.is(200), but actually found 201 +USER Users END 1677620096015 +REQUEST Create User 1677620096014 1677620096015 OK +REQUEST Get User 1677620096014 1677620096016 OK +REQUEST Update User 1677620096029 1677620096030 OK +REQUEST Create User 1677620096029 1677620096030 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096029 1677620096030 OK +USER Users END 1677620096030 +REQUEST Get User 1677620096029 1677620096031 OK +REQUEST Update User 1677620096045 1677620096046 OK +REQUEST Create User 1677620096045 1677620096046 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096045 1677620096047 OK +REQUEST Get User 1677620096045 1677620096047 OK +REQUEST Get All Users 1677620096046 1677620096048 OK +REQUEST Delete User 1677620096060 1677620096060 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096060 1677620096060 OK +REQUEST Create User 1677620096060 1677620096061 KO status.find.is(200), but actually found 201 +USER Users END 1677620096061 +REQUEST Get User 1677620096060 1677620096062 OK +REQUEST Get All Users 1677620096061 1677620096062 OK +REQUEST Update User 1677620096075 1677620096076 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096075 1677620096076 OK +REQUEST Create User 1677620096075 1677620096076 OK +USER Users END 1677620096077 +REQUEST Get User 1677620096075 1677620096077 OK +REQUEST Get User 1677620096075 1677620096077 OK +REQUEST Update User 1677620096091 1677620096091 OK +REQUEST Create User 1677620096091 1677620096092 OK +REQUEST Get User 1677620096091 1677620096093 OK +REQUEST Update User 1677620096107 1677620096108 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096107 1677620096108 OK +REQUEST Create User 1677620096107 1677620096108 KO status.find.is(200), but actually found 201 +USER Users END 1677620096108 +REQUEST Get All Users 1677620096108 1677620096109 OK +REQUEST Delete User 1677620096122 1677620096123 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096122 1677620096123 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620096123 1677620096124 OK +REQUEST Get All Users 1677620096123 1677620096124 OK +REQUEST Create User 1677620096138 1677620096139 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096138 1677620096139 OK +REQUEST Get User 1677620096138 1677620096140 OK +REQUEST Get All Users 1677620096139 1677620096140 OK +REQUEST Update User 1677620096153 1677620096154 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620096153 1677620096154 OK +REQUEST Create User 1677620096153 1677620096154 KO status.find.is(200), but actually found 201 +USER Users END 1677620096155 +REQUEST Get User 1677620096153 1677620096156 OK +REQUEST Get All Users 1677620096154 1677620096157 OK +REQUEST Get User 1677620096153 1677620096157 OK +REQUEST Update User 1677620096168 1677620096170 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096168 1677620096170 OK +REQUEST Get User 1677620096168 1677620096171 OK +REQUEST Get All Users 1677620096170 1677620096171 OK +REQUEST Delete User 1677620096184 1677620096185 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096184 1677620096186 OK +REQUEST Update User 1677620096184 1677620096186 KO status.find.is(201), but actually found 200 +USER Users END 1677620096187 +REQUEST Get All Users 1677620096186 1677620096188 OK +REQUEST Create User 1677620096199 1677620096200 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096199 1677620096200 KO status.find.is(200), but actually found 201 +USER Users END 1677620096201 +REQUEST Get All Users 1677620096201 1677620096202 OK +REQUEST Delete User 1677620096214 1677620096215 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096214 1677620096215 OK +REQUEST Create User 1677620096214 1677620096215 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096214 1677620096217 OK +REQUEST Get All Users 1677620096215 1677620096217 OK +REQUEST Get All Users 1677620096215 1677620096218 OK +REQUEST Create User 1677620096229 1677620096231 OK +REQUEST Get User 1677620096229 1677620096232 OK +REQUEST Update User 1677620096245 1677620096246 OK +REQUEST Update User 1677620096245 1677620096246 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096245 1677620096246 OK +USER Users END 1677620096246 +REQUEST Get User 1677620096245 1677620096247 OK +REQUEST Get User 1677620096245 1677620096247 OK +REQUEST Delete User 1677620096260 1677620096260 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620096261 +REQUEST Create User 1677620096260 1677620096261 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096260 1677620096261 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096260 1677620096261 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096260 1677620096261 KO status.find.is(200), but actually found 201 +USER Users END 1677620096261 +USER Users END 1677620096261 +USER Users END 1677620096261 +REQUEST Get User 1677620096260 1677620096261 OK +REQUEST Get User 1677620096260 1677620096262 OK +REQUEST Get All Users 1677620096261 1677620096262 OK +REQUEST Update User 1677620096275 1677620096276 OK +REQUEST Create User 1677620096275 1677620096276 OK +REQUEST Create User 1677620096275 1677620096276 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620096276 1677620096277 OK +REQUEST Create User 1677620096290 1677620096291 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096290 1677620096291 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096290 1677620096291 KO status.find.is(201), but actually found 200 +USER Users END 1677620096291 +REQUEST Get User 1677620096290 1677620096292 OK +REQUEST Get All Users 1677620096291 1677620096292 OK +REQUEST Get All Users 1677620096291 1677620096292 OK +REQUEST Create User 1677620096306 1677620096307 OK +REQUEST Get User 1677620096306 1677620096308 OK +REQUEST Get User 1677620096306 1677620096308 OK +REQUEST Delete User 1677620096322 1677620096323 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096322 1677620096323 OK +REQUEST Get User 1677620096322 1677620096324 OK +REQUEST Get All Users 1677620096323 1677620096324 OK +REQUEST Delete User 1677620096337 1677620096338 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620096339 +REQUEST Create User 1677620096337 1677620096339 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096337 1677620096339 OK +REQUEST Get User 1677620096337 1677620096340 OK +REQUEST Get All Users 1677620096339 1677620096341 OK +REQUEST Update User 1677620096352 1677620096354 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096352 1677620096354 KO status.find.is(200), but actually found 201 +USER Users END 1677620096354 +REQUEST Create User 1677620096352 1677620096354 KO status.find.is(200), but actually found 201 +USER Users END 1677620096355 +REQUEST Get User 1677620096352 1677620096355 OK +REQUEST Get User 1677620096352 1677620096356 OK +REQUEST Get All Users 1677620096354 1677620096357 OK +REQUEST Update User 1677620096368 1677620096370 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096368 1677620096370 OK +REQUEST Create User 1677620096368 1677620096370 KO status.find.is(200), but actually found 201 +USER Users END 1677620096371 +REQUEST Get User 1677620096368 1677620096371 OK +REQUEST Get All Users 1677620096370 1677620096373 OK +REQUEST Get User 1677620096383 1677620096386 OK +REQUEST Get User 1677620096383 1677620096386 OK +REQUEST Delete User 1677620096398 1677620096399 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096398 1677620096400 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096398 1677620096402 OK +REQUEST Get All Users 1677620096400 1677620096402 OK +REQUEST Get All Users 1677620096400 1677620096403 OK +REQUEST Delete User 1677620096414 1677620096415 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096414 1677620096415 OK +REQUEST Get All Users 1677620096415 1677620096418 OK +REQUEST Delete User 1677620096430 1677620096430 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096430 1677620096431 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620096431 1677620096433 OK +REQUEST Get All Users 1677620096431 1677620096434 OK +REQUEST Create User 1677620096444 1677620096445 OK +REQUEST Create User 1677620096444 1677620096445 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096444 1677620096446 OK +REQUEST Get All Users 1677620096445 1677620096446 OK +REQUEST Update User 1677620096460 1677620096461 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620096460 1677620096461 OK +REQUEST Create User 1677620096460 1677620096461 OK +USER Users END 1677620096461 +REQUEST Update User 1677620096475 1677620096476 OK +REQUEST Create User 1677620096475 1677620096476 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096475 1677620096476 KO status.find.is(200), but actually found 201 +USER Users END 1677620096476 +USER Users END 1677620096476 +REQUEST Get User 1677620096475 1677620096477 OK +REQUEST Create User 1677620096491 1677620096492 OK +REQUEST Update User 1677620096507 1677620096508 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620096507 1677620096508 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096507 1677620096508 OK +USER Users END 1677620096508 +REQUEST Create User 1677620096507 1677620096508 OK +REQUEST Get User 1677620096507 1677620096509 OK +REQUEST Get All Users 1677620096508 1677620096510 OK +REQUEST Create User 1677620096522 1677620096523 OK +REQUEST Update User 1677620096522 1677620096523 OK +REQUEST Create User 1677620096522 1677620096523 OK +REQUEST Update User 1677620096522 1677620096523 OK +REQUEST Get User 1677620096522 1677620096525 OK +REQUEST Get User 1677620096522 1677620096526 OK +REQUEST Get User 1677620096522 1677620096526 OK +REQUEST Get User 1677620096522 1677620096526 OK +REQUEST Delete User 1677620096537 1677620096539 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620096539 1677620096540 OK +REQUEST Update User 1677620096553 1677620096553 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096553 1677620096553 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096553 1677620096553 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096553 1677620096554 KO status.find.is(200), but actually found 201 +USER Users END 1677620096554 +USER Users END 1677620096554 +USER Users END 1677620096554 +REQUEST Get All Users 1677620096554 1677620096555 OK +REQUEST Create User 1677620096568 1677620096569 OK +REQUEST Create User 1677620096568 1677620096569 OK +REQUEST Update User 1677620096568 1677620096569 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096568 1677620096569 KO status.find.is(200), but actually found 201 +USER Users END 1677620096569 +REQUEST Get User 1677620096568 1677620096570 OK +REQUEST Get User 1677620096568 1677620096570 OK +REQUEST Get All Users 1677620096569 1677620096570 OK +REQUEST Update User 1677620096584 1677620096585 OK +REQUEST Create User 1677620096584 1677620096585 OK +REQUEST Create User 1677620096600 1677620096601 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096600 1677620096601 OK +REQUEST Create User 1677620096600 1677620096601 KO status.find.is(200), but actually found 201 +USER Users END 1677620096601 +REQUEST Get User 1677620096600 1677620096602 OK +REQUEST Get User 1677620096600 1677620096602 OK +REQUEST Get All Users 1677620096601 1677620096602 OK +REQUEST Create User 1677620096615 1677620096616 OK +REQUEST Update User 1677620096615 1677620096616 OK +REQUEST Create User 1677620096615 1677620096616 OK +REQUEST Get User 1677620096615 1677620096617 OK +REQUEST Delete User 1677620096631 1677620096632 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620096632 +REQUEST Create User 1677620096631 1677620096632 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096631 1677620096633 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096631 1677620096633 KO status.find.is(200), but actually found 201 +USER Users END 1677620096633 +USER Users END 1677620096633 +REQUEST Get User 1677620096631 1677620096634 OK +REQUEST Get All Users 1677620096633 1677620096634 OK +REQUEST Update User 1677620096647 1677620096649 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620096647 1677620096649 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096647 1677620096649 OK +USER Users END 1677620096649 +REQUEST Get All Users 1677620096649 1677620096650 OK +REQUEST Update User 1677620096663 1677620096664 OK +REQUEST Delete User 1677620096663 1677620096664 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620096663 1677620096665 OK +REQUEST Get All Users 1677620096664 1677620096666 OK +REQUEST Update User 1677620096679 1677620096680 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096679 1677620096680 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096679 1677620096680 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096679 1677620096680 KO status.find.is(200), but actually found 201 +USER Users END 1677620096680 +USER Users END 1677620096680 +USER Users END 1677620096680 +REQUEST Get User 1677620096679 1677620096681 OK +REQUEST Get All Users 1677620096680 1677620096682 OK +REQUEST Create User 1677620096695 1677620096696 OK +REQUEST Get User 1677620096695 1677620096697 OK +REQUEST Create User 1677620096710 1677620096711 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096710 1677620096711 KO status.find.is(200), but actually found 201 +USER Users END 1677620096711 +REQUEST Get User 1677620096710 1677620096712 OK +REQUEST Get All Users 1677620096711 1677620096712 OK +REQUEST Update User 1677620096726 1677620096727 OK +REQUEST Create User 1677620096726 1677620096727 KO status.find.is(200), but actually found 201 +USER Users END 1677620096727 +REQUEST Create User 1677620096742 1677620096742 OK +REQUEST Create User 1677620096742 1677620096742 OK +REQUEST Delete User 1677620096742 1677620096743 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096742 1677620096743 KO status.find.is(201), but actually found 200 +USER Users END 1677620096743 +REQUEST Create User 1677620096742 1677620096743 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620096743 1677620096744 OK +REQUEST Get All Users 1677620096743 1677620096745 OK +REQUEST Create User 1677620096757 1677620096759 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096757 1677620096759 OK +USER Users END 1677620096760 +REQUEST Get User 1677620096759 1677620096761 OK +REQUEST Create User 1677620096772 1677620096773 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096772 1677620096773 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096772 1677620096773 OK +REQUEST Create User 1677620096772 1677620096773 OK +USER Users END 1677620096774 +REQUEST Get All Users 1677620096773 1677620096774 OK +REQUEST Get User 1677620096772 1677620096774 OK +REQUEST Create User 1677620096788 1677620096789 KO status.find.is(200), but actually found 201 +USER Users END 1677620096789 +REQUEST Get User 1677620096788 1677620096789 OK +REQUEST Create User 1677620096803 1677620096803 OK +REQUEST Create User 1677620096803 1677620096803 OK +REQUEST Update User 1677620096803 1677620096803 OK +REQUEST Delete User 1677620096818 1677620096818 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620096818 1677620096818 KO status.find.is(201), but actually found 200 +USER Users END 1677620096819 +REQUEST Create User 1677620096818 1677620096819 KO status.find.is(200), but actually found 201 +USER Users END 1677620096819 +REQUEST Create User 1677620096818 1677620096819 KO status.find.is(200), but actually found 201 +USER Users END 1677620096819 +REQUEST Update User 1677620096818 1677620096819 OK +REQUEST Get All Users 1677620096819 1677620096820 OK +REQUEST Create User 1677620096833 1677620096834 OK +REQUEST Get User 1677620096833 1677620096835 OK +REQUEST Create User 1677620096849 1677620096850 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096849 1677620096850 OK +REQUEST Get User 1677620096849 1677620096851 OK +REQUEST Get All Users 1677620096850 1677620096851 OK +REQUEST Get User 1677620096864 1677620096865 OK +REQUEST Get User 1677620096864 1677620096865 OK +REQUEST Update User 1677620096880 1677620096880 OK +REQUEST Create User 1677620096880 1677620096880 KO status.find.is(200), but actually found 201 +REQUEST Get User 1677620096880 1677620096881 OK +REQUEST Get All Users 1677620096881 1677620096881 OK +REQUEST Create User 1677620096895 1677620096896 OK +REQUEST Create User 1677620096895 1677620096896 KO status.find.is(200), but actually found 201 +USER Users END 1677620096896 +REQUEST Create User 1677620096911 1677620096912 OK +REQUEST Update User 1677620096911 1677620096912 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096911 1677620096913 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620096911 1677620096913 OK +REQUEST Update User 1677620096911 1677620096913 OK +REQUEST Get All Users 1677620096913 1677620096915 OK +REQUEST Get All Users 1677620096913 1677620096915 OK +REQUEST Update User 1677620096927 1677620096928 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620096927 1677620096929 OK +REQUEST Get All Users 1677620096928 1677620096929 OK +REQUEST Update User 1677620096943 1677620096944 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096943 1677620096944 OK +REQUEST Delete User 1677620096943 1677620096944 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620096944 +REQUEST Create User 1677620096943 1677620096944 OK +REQUEST Get User 1677620096943 1677620096945 OK +REQUEST Get All Users 1677620096944 1677620096945 OK +REQUEST Delete User 1677620096959 1677620096961 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620096961 +REQUEST Create User 1677620096974 1677620096975 OK +REQUEST Create User 1677620096974 1677620096975 OK +REQUEST Update User 1677620096974 1677620096975 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620096974 1677620096975 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620096974 1677620096975 KO status.find.is(200), but actually found 201 +USER Users END 1677620096976 +REQUEST Get All Users 1677620096975 1677620096977 OK +REQUEST Get All Users 1677620096975 1677620096977 OK +REQUEST Delete User 1677620096989 1677620096990 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620096989 1677620096990 OK +REQUEST Update User 1677620096989 1677620096990 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620096990 1677620096992 OK +REQUEST Get All Users 1677620096990 1677620096992 OK +REQUEST Create User 1677620097004 1677620097005 OK +REQUEST Get User 1677620097004 1677620097005 OK +REQUEST Delete User 1677620097019 1677620097020 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097019 1677620097020 OK +REQUEST Create User 1677620097019 1677620097020 KO status.find.is(200), but actually found 201 +REQUEST Get All Users 1677620097020 1677620097021 OK +REQUEST Get All Users 1677620097020 1677620097021 OK +REQUEST Delete User 1677620097035 1677620097036 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620097035 1677620097036 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620097036 +REQUEST Create User 1677620097035 1677620097036 OK +REQUEST Get All Users 1677620097036 1677620097038 OK +REQUEST Delete User 1677620097051 1677620097052 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097051 1677620097052 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620097051 1677620097052 KO status.find.is(200), but actually found 201 +USER Users END 1677620097053 +USER Users END 1677620097053 +REQUEST Get User 1677620097051 1677620097053 OK +REQUEST Get All Users 1677620097052 1677620097054 OK +REQUEST Delete User 1677620097066 1677620097066 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097066 1677620097067 KO status.find.is(200), but actually found 201 +USER Users END 1677620097067 +USER Users END 1677620097067 +REQUEST Get User 1677620097066 1677620097068 OK +REQUEST Update User 1677620097081 1677620097082 OK +REQUEST Create User 1677620097081 1677620097082 OK +REQUEST Update User 1677620097081 1677620097082 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097081 1677620097082 KO status.find.is(200), but actually found 201 +USER Users END 1677620097082 +REQUEST Get All Users 1677620097082 1677620097083 OK +REQUEST Delete User 1677620097096 1677620097097 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097096 1677620097097 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620097096 1677620097097 OK +REQUEST Get All Users 1677620097097 1677620097098 OK +REQUEST Get All Users 1677620097097 1677620097098 OK +REQUEST Update User 1677620097111 1677620097112 OK +REQUEST Get User 1677620097111 1677620097113 OK +REQUEST Get User 1677620097126 1677620097129 OK +REQUEST Get User 1677620097126 1677620097129 OK +REQUEST Delete User 1677620097141 1677620097143 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097141 1677620097144 OK +REQUEST Get User 1677620097141 1677620097144 OK +REQUEST Get All Users 1677620097143 1677620097145 OK +REQUEST Delete User 1677620097156 1677620097157 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620097157 +REQUEST Create User 1677620097170 1677620097172 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620097170 1677620097172 OK +REQUEST Update User 1677620097170 1677620097172 KO status.find.is(201), but actually found 200 +USER Users END 1677620097172 +REQUEST Get User 1677620097170 1677620097173 OK +REQUEST Get All Users 1677620097172 1677620097174 OK +REQUEST Create User 1677620097186 1677620097187 KO status.find.is(200), but actually found 201 +USER Users END 1677620097188 +REQUEST Get User 1677620097186 1677620097188 OK +REQUEST Delete User 1677620097202 1677620097204 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620097203 1677620097205 OK +REQUEST Get User 1677620097202 1677620097205 OK +REQUEST Get All Users 1677620097204 1677620097205 OK +REQUEST Create User 1677620097218 1677620097219 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620097218 1677620097220 OK +USER Users END 1677620097220 +REQUEST Get User 1677620097218 1677620097220 OK +REQUEST Update User 1677620097234 1677620097234 OK +REQUEST Create User 1677620097234 1677620097235 OK +REQUEST Get User 1677620097233 1677620097235 OK +REQUEST Delete User 1677620097249 1677620097249 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097249 1677620097249 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097249 1677620097249 OK +REQUEST Create User 1677620097249 1677620097249 OK +USER Users END 1677620097250 +REQUEST Get All Users 1677620097249 1677620097251 OK +REQUEST Create User 1677620097264 1677620097266 OK +REQUEST Create User 1677620097264 1677620097266 KO status.find.is(200), but actually found 201 +USER Users END 1677620097266 +REQUEST Get User 1677620097264 1677620097267 OK +REQUEST Update User 1677620097280 1677620097281 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620097280 1677620097281 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620097281 +USER Users END 1677620097281 +REQUEST Get User 1677620097280 1677620097282 OK +REQUEST Create User 1677620097295 1677620097296 OK +REQUEST Get User 1677620097295 1677620097296 OK +REQUEST Get User 1677620097295 1677620097296 OK +REQUEST Create User 1677620097310 1677620097311 OK +REQUEST Create User 1677620097310 1677620097311 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620097310 1677620097311 OK +USER Users END 1677620097312 +REQUEST Delete User 1677620097325 1677620097326 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097325 1677620097326 KO status.find.is(200), but actually found 201 +USER Users END 1677620097326 +REQUEST Get User 1677620097325 1677620097327 OK +REQUEST Get All Users 1677620097326 1677620097327 OK +REQUEST Create User 1677620097341 1677620097343 OK +REQUEST Create User 1677620097341 1677620097343 KO status.find.is(200), but actually found 201 +USER Users END 1677620097343 +REQUEST Create User 1677620097356 1677620097357 OK +REQUEST Get User 1677620097356 1677620097358 OK +REQUEST Update User 1677620097372 1677620097373 OK +REQUEST Create User 1677620097372 1677620097373 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620097372 1677620097373 OK +USER Users END 1677620097373 +REQUEST Get User 1677620097372 1677620097374 OK +REQUEST Create User 1677620097388 1677620097389 OK +REQUEST Create User 1677620097388 1677620097389 OK +REQUEST Get User 1677620097388 1677620097390 OK +REQUEST Create User 1677620097404 1677620097405 OK +REQUEST Get User 1677620097404 1677620097406 OK +REQUEST Get User 1677620097404 1677620097406 OK +REQUEST Update User 1677620097419 1677620097420 OK +REQUEST Get User 1677620097419 1677620097420 OK +REQUEST Get User 1677620097435 1677620097436 OK +REQUEST Get User 1677620097435 1677620097436 OK +REQUEST Update User 1677620097450 1677620097451 OK +REQUEST Create User 1677620097450 1677620097451 KO status.find.is(200), but actually found 201 +USER Users END 1677620097451 +REQUEST Get User 1677620097450 1677620097452 OK +REQUEST Delete User 1677620097466 1677620097466 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097466 1677620097466 OK +REQUEST Get All Users 1677620097467 1677620097468 OK +REQUEST Create User 1677620097481 1677620097482 OK +REQUEST Delete User 1677620097481 1677620097491 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620097492 1677620097493 OK +REQUEST Update User 1677620097497 1677620097497 OK +REQUEST Update User 1677620097513 1677620097514 OK +REQUEST Update User 1677620097513 1677620097514 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097513 1677620097514 KO status.find.is(200), but actually found 201 +USER Users END 1677620097514 +REQUEST Get User 1677620097513 1677620097514 OK +REQUEST Get All Users 1677620097514 1677620097515 OK +REQUEST Delete User 1677620097528 1677620097529 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620097528 1677620097529 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097528 1677620097529 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097528 1677620097530 OK +REQUEST Update User 1677620097528 1677620097530 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097528 1677620097530 KO status.find.is(200), but actually found 201 +USER Users END 1677620097530 +USER Users END 1677620097530 +REQUEST Create User 1677620097528 1677620097530 OK +USER Users END 1677620097530 +USER Users END 1677620097530 +REQUEST Create User 1677620097528 1677620097530 OK +REQUEST Get All Users 1677620097530 1677620097531 OK +REQUEST Get User 1677620097544 1677620097546 OK +REQUEST Get User 1677620097560 1677620097561 OK +REQUEST Update User 1677620097575 1677620097575 OK +REQUEST Create User 1677620097575 1677620097575 OK +REQUEST Create User 1677620097575 1677620097575 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620097575 1677620097575 KO status.find.is(201), but actually found 200 +USER Users END 1677620097576 +REQUEST Get User 1677620097575 1677620097576 OK +REQUEST Get All Users 1677620097575 1677620097577 OK +REQUEST Delete User 1677620097589 1677620097590 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097589 1677620097590 KO status.find.is(201), but actually found 200 +USER Users END 1677620097590 +REQUEST Get All Users 1677620097590 1677620097591 OK +REQUEST Delete User 1677620097605 1677620097607 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097605 1677620097607 OK +REQUEST Create User 1677620097605 1677620097607 OK +USER Users END 1677620097607 +REQUEST Get User 1677620097605 1677620097608 OK +REQUEST Update User 1677620097621 1677620097622 OK +REQUEST Delete User 1677620097621 1677620097622 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097621 1677620097622 KO status.find.is(201), but actually found 200 +USER Users END 1677620097622 +REQUEST Create User 1677620097621 1677620097622 KO status.find.is(200), but actually found 201 +USER Users END 1677620097622 +REQUEST Get All Users 1677620097622 1677620097624 OK +REQUEST Create User 1677620097637 1677620097638 KO status.find.is(200), but actually found 201 +USER Users END 1677620097638 +REQUEST Get User 1677620097637 1677620097639 OK +REQUEST Update User 1677620097653 1677620097653 OK +REQUEST Get User 1677620097653 1677620097654 OK +REQUEST Delete User 1677620097668 1677620097669 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097668 1677620097670 OK +REQUEST Get User 1677620097668 1677620097670 OK +REQUEST Get All Users 1677620097669 1677620097670 OK +REQUEST Create User 1677620097684 1677620097685 KO status.find.is(200), but actually found 201 +USER Users END 1677620097685 +REQUEST Get User 1677620097684 1677620097686 OK +REQUEST Update User 1677620097700 1677620097700 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097700 1677620097700 KO status.find.is(200), but actually found 201 +USER Users END 1677620097700 +REQUEST Get All Users 1677620097700 1677620097701 OK +REQUEST Create User 1677620097716 1677620097716 OK +REQUEST Get User 1677620097715 1677620097717 OK +REQUEST Delete User 1677620097730 1677620097732 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620097732 1677620097733 OK +REQUEST Update User 1677620097746 1677620097746 OK +REQUEST Update User 1677620097746 1677620097746 KO status.find.is(201), but actually found 200 +USER Users END 1677620097747 +REQUEST Get User 1677620097746 1677620097747 OK +REQUEST Get User 1677620097746 1677620097747 OK +REQUEST Create User 1677620097762 1677620097762 OK +REQUEST Update User 1677620097762 1677620097762 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620097762 1677620097764 OK +REQUEST Update User 1677620097777 1677620097777 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620097777 1677620097777 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097777 1677620097778 OK +USER Users END 1677620097778 +REQUEST Get User 1677620097777 1677620097778 OK +REQUEST Get All Users 1677620097778 1677620097778 OK +REQUEST Create User 1677620097793 1677620097794 OK +REQUEST Update User 1677620097809 1677620097810 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620097809 1677620097810 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097809 1677620097810 OK +USER Users END 1677620097810 +REQUEST Get All Users 1677620097810 1677620097811 OK +REQUEST Delete User 1677620097824 1677620097825 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620097824 1677620097826 OK +REQUEST Get All Users 1677620097825 1677620097826 OK +REQUEST Create User 1677620097840 1677620097841 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620097840 1677620097841 KO status.find.is(201), but actually found 200 +USER Users END 1677620097841 +REQUEST Get All Users 1677620097841 1677620097842 OK +REQUEST Update User 1677620097855 1677620097857 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097855 1677620097857 KO status.find.is(200), but actually found 201 +USER Users END 1677620097857 +USER Users END 1677620097857 +REQUEST Get User 1677620097855 1677620097857 OK +REQUEST Create User 1677620097871 1677620097872 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620097871 1677620097872 KO status.find.is(200), but actually found 201 +USER Users END 1677620097872 +USER Users END 1677620097872 +REQUEST Delete User 1677620097887 1677620097888 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620097887 1677620097888 KO status.find.is(200), but actually found 201 +USER Users END 1677620097888 +REQUEST Get User 1677620097887 1677620097889 OK +REQUEST Get All Users 1677620097888 1677620097889 OK +REQUEST Update User 1677620097902 1677620097903 OK +REQUEST Delete User 1677620097917 1677620097918 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620097917 1677620097918 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620097917 1677620097918 OK +USER Users END 1677620097918 +USER Users END 1677620097918 +REQUEST Get User 1677620097917 1677620097919 OK +REQUEST Get User 1677620097917 1677620097919 OK +REQUEST Create User 1677620097933 1677620097934 OK +REQUEST Get User 1677620097933 1677620097934 OK +REQUEST Update User 1677620097948 1677620097949 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620097948 1677620097949 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620097948 1677620097949 KO status.find.is(200), but actually found 201 +USER Users END 1677620097949 +USER Users END 1677620097949 +REQUEST Get User 1677620097948 1677620097949 OK +REQUEST Get All Users 1677620097949 1677620097950 OK +REQUEST Update User 1677620097979 1677620097980 OK +REQUEST Update User 1677620097979 1677620097980 KO status.find.is(201), but actually found 200 +USER Users END 1677620097981 +REQUEST Get User 1677620097979 1677620097981 OK +REQUEST Get User 1677620097979 1677620097981 OK +REQUEST Update User 1677620097995 1677620097995 KO status.find.is(201), but actually found 200 +REQUEST Get All Users 1677620097995 1677620097996 OK +REQUEST Get User 1677620097995 1677620097996 OK +REQUEST Get User 1677620097995 1677620097996 OK +REQUEST Update User 1677620098010 1677620098011 OK +REQUEST Create User 1677620098010 1677620098011 OK +REQUEST Delete User 1677620098026 1677620098027 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620098026 1677620098027 OK +REQUEST Get User 1677620098026 1677620098028 OK +REQUEST Get All Users 1677620098027 1677620098028 OK +REQUEST Update User 1677620098042 1677620098042 KO status.find.is(201), but actually found 200 +REQUEST Get User 1677620098042 1677620098044 OK +REQUEST Get All Users 1677620098042 1677620098044 OK +REQUEST Create User 1677620098057 1677620098058 KO status.find.is(200), but actually found 201 +USER Users END 1677620098058 +REQUEST Get User 1677620098057 1677620098059 OK +REQUEST Create User 1677620098073 1677620098074 KO status.find.is(200), but actually found 201 +USER Users END 1677620098074 +REQUEST Update User 1677620098089 1677620098089 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620098089 1677620098089 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098090 +REQUEST Get User 1677620098089 1677620098091 OK +REQUEST Get All Users 1677620098090 1677620098091 OK +REQUEST Delete User 1677620098105 1677620098105 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620098105 1677620098106 OK +REQUEST Get User 1677620098105 1677620098106 OK +REQUEST Get All Users 1677620098106 1677620098107 OK +REQUEST Delete User 1677620098120 1677620098121 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098120 1677620098121 OK +USER Users END 1677620098121 +REQUEST Create User 1677620098136 1677620098137 OK +REQUEST Create User 1677620098136 1677620098137 OK +REQUEST Create User 1677620098151 1677620098152 KO status.find.is(200), but actually found 201 +USER Users END 1677620098152 +REQUEST Update User 1677620098151 1677620098153 OK +REQUEST Get User 1677620098151 1677620098155 OK +REQUEST Update User 1677620098181 1677620098183 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620098181 1677620098183 KO status.find.is(200), but actually found 201 +USER Users END 1677620098183 +USER Users END 1677620098183 +REQUEST Get User 1677620098181 1677620098184 OK +REQUEST Create User 1677620098197 1677620098198 OK +REQUEST Create User 1677620098213 1677620098214 OK +REQUEST Create User 1677620098213 1677620098214 KO status.find.is(200), but actually found 201 +USER Users END 1677620098214 +REQUEST Get User 1677620098213 1677620098215 OK +REQUEST Delete User 1677620098229 1677620098230 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098230 +REQUEST Create User 1677620098229 1677620098231 OK +REQUEST Delete User 1677620098244 1677620098244 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620098244 1677620098245 OK +REQUEST Create User 1677620098244 1677620098245 KO status.find.is(200), but actually found 201 +USER Users END 1677620098246 +REQUEST Get All Users 1677620098245 1677620098247 OK +REQUEST Update User 1677620098259 1677620098260 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620098259 1677620098261 OK +USER Users END 1677620098261 +REQUEST Get User 1677620098259 1677620098262 OK +REQUEST Create User 1677620098275 1677620098276 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620098275 1677620098276 KO status.find.is(201), but actually found 200 +USER Users END 1677620098277 +USER Users END 1677620098277 +REQUEST Create User 1677620098290 1677620098291 KO status.find.is(200), but actually found 201 +USER Users END 1677620098292 +REQUEST Create User 1677620098305 1677620098306 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620098305 1677620098306 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620098305 1677620098306 KO status.find.is(201), but actually found 200 +USER Users END 1677620098307 +USER Users END 1677620098307 +USER Users END 1677620098307 +REQUEST Update User 1677620098320 1677620098322 OK +REQUEST Delete User 1677620098320 1677620098322 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620098322 1677620098324 OK +REQUEST Create User 1677620098336 1677620098336 KO status.find.is(200), but actually found 201 +USER Users END 1677620098337 +REQUEST Get User 1677620098336 1677620098337 OK +REQUEST Update User 1677620098352 1677620098352 OK +REQUEST Update User 1677620098366 1677620098367 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620098366 1677620098367 OK +USER Users END 1677620098367 +REQUEST Delete User 1677620098382 1677620098383 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620098382 1677620098384 KO status.find.is(201), but actually found 200 +USER Users END 1677620098385 +REQUEST Create User 1677620098382 1677620098386 KO status.find.is(200), but actually found 201 +USER Users END 1677620098387 +REQUEST Get All Users 1677620098383 1677620098387 OK +REQUEST Update User 1677620098397 1677620098398 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620098397 1677620098398 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620098397 1677620098399 OK +USER Users END 1677620098399 +USER Users END 1677620098399 +REQUEST Create User 1677620098413 1677620098414 OK +REQUEST Update User 1677620098413 1677620098414 OK +REQUEST Create User 1677620098413 1677620098414 OK +REQUEST Delete User 1677620098429 1677620098430 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098429 1677620098430 OK +USER Users END 1677620098430 +REQUEST Create User 1677620098443 1677620098444 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620098443 1677620098444 KO status.find.is(200), but actually found 201 +USER Users END 1677620098446 +USER Users END 1677620098446 +REQUEST Delete User 1677620098458 1677620098460 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098458 1677620098460 KO status.find.is(200), but actually found 201 +USER Users END 1677620098460 +USER Users END 1677620098461 +REQUEST Delete User 1677620098474 1677620098475 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620098474 1677620098476 OK +REQUEST Get All Users 1677620098475 1677620098476 OK +REQUEST Update User 1677620098490 1677620098491 OK +REQUEST Delete User 1677620098505 1677620098505 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620098505 1677620098506 OK +REQUEST Get All Users 1677620098505 1677620098506 OK +REQUEST Delete User 1677620098519 1677620098520 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098519 1677620098520 KO status.find.is(200), but actually found 201 +USER Users END 1677620098521 +USER Users END 1677620098521 +REQUEST Get User 1677620098519 1677620098522 OK +REQUEST Update User 1677620098535 1677620098536 OK +REQUEST Update User 1677620098535 1677620098536 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620098535 1677620098536 KO status.find.is(201), but actually found 200 +USER Users END 1677620098537 +USER Users END 1677620098537 +REQUEST Get User 1677620098535 1677620098538 OK +REQUEST Create User 1677620098551 1677620098552 KO status.find.is(200), but actually found 201 +USER Users END 1677620098552 +REQUEST Create User 1677620098566 1677620098567 KO status.find.is(200), but actually found 201 +USER Users END 1677620098568 +REQUEST Create User 1677620098582 1677620098582 KO status.find.is(200), but actually found 201 +REQUEST Delete User 1677620098582 1677620098583 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098583 +REQUEST Update User 1677620098583 1677620098584 KO status.find.is(201), but actually found 200 +USER Users END 1677620098584 +REQUEST Get User 1677620098582 1677620098584 OK +REQUEST Get All Users 1677620098583 1677620098585 OK +REQUEST Get User 1677620098597 1677620098599 OK +REQUEST Update User 1677620098612 1677620098612 OK +REQUEST Create User 1677620098612 1677620098612 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620098612 1677620098613 OK +USER Users END 1677620098613 +REQUEST Delete User 1677620098627 1677620098628 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098628 +REQUEST Get User 1677620098627 1677620098629 OK +REQUEST Create User 1677620098642 1677620098643 OK +REQUEST Delete User 1677620098658 1677620098659 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098658 1677620098659 OK +REQUEST Get All Users 1677620098659 1677620098660 OK +REQUEST Create User 1677620098673 1677620098674 KO status.find.is(200), but actually found 201 +REQUEST Update User 1677620098673 1677620098674 KO status.find.is(201), but actually found 200 +USER Users END 1677620098674 +USER Users END 1677620098674 +REQUEST Get User 1677620098673 1677620098675 OK +REQUEST Create User 1677620098689 1677620098690 KO status.find.is(200), but actually found 201 +USER Users END 1677620098690 +REQUEST Get User 1677620098705 1677620098707 OK +REQUEST Update User 1677620098721 1677620098721 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620098721 1677620098722 KO status.find.is(200), but actually found 201 +USER Users END 1677620098722 +USER Users END 1677620098722 +REQUEST Get User 1677620098737 1677620098739 OK +REQUEST Delete User 1677620098752 1677620098753 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098753 +REQUEST Create User 1677620098753 1677620098753 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620098753 1677620098753 KO status.find.is(200), but actually found 201 +USER Users END 1677620098753 +USER Users END 1677620098753 +REQUEST Update User 1677620098768 1677620098769 KO status.find.is(201), but actually found 200 +USER Users END 1677620098769 +REQUEST Get User 1677620098768 1677620098770 OK +REQUEST Create User 1677620098783 1677620098784 KO status.find.is(200), but actually found 201 +USER Users END 1677620098784 +REQUEST Update User 1677620098783 1677620098784 KO status.find.is(201), but actually found 200 +USER Users END 1677620098784 +REQUEST Get User 1677620098783 1677620098785 OK +REQUEST Update User 1677620098799 1677620098800 OK +REQUEST Delete User 1677620098815 1677620098816 KO status.find.in([200, 209], 304), found 405 +REQUEST Get User 1677620098815 1677620098817 OK +REQUEST Get All Users 1677620098816 1677620098817 OK +REQUEST Create User 1677620098831 1677620098832 KO status.find.is(200), but actually found 201 +USER Users END 1677620098833 +REQUEST Get User 1677620098831 1677620098833 OK +REQUEST Get User 1677620098847 1677620098849 OK +REQUEST Create User 1677620098862 1677620098864 KO status.find.is(200), but actually found 201 +USER Users END 1677620098864 +REQUEST Create User 1677620098894 1677620098895 OK +REQUEST Get User 1677620098894 1677620098896 OK +REQUEST Delete User 1677620098910 1677620098910 KO status.find.in([200, 209], 304), found 405 +REQUEST Get All Users 1677620098911 1677620098913 OK +REQUEST Delete User 1677620098925 1677620098926 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620098926 +REQUEST Create User 1677620098925 1677620098927 OK +REQUEST Create User 1677620098925 1677620098927 KO status.find.is(200), but actually found 201 +USER Users END 1677620098927 +REQUEST Update User 1677620098941 1677620098942 OK +REQUEST Create User 1677620098941 1677620098942 OK +REQUEST Create User 1677620098956 1677620098957 KO status.find.is(200), but actually found 201 +USER Users END 1677620098957 +REQUEST Get User 1677620098956 1677620098957 OK +REQUEST Delete User 1677620098987 1677620098988 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620098987 1677620098988 OK +REQUEST Create User 1677620098987 1677620098988 KO status.find.is(200), but actually found 201 +USER Users END 1677620098988 +REQUEST Get All Users 1677620098988 1677620098989 OK +REQUEST Create User 1677620099003 1677620099004 OK +REQUEST Create User 1677620099003 1677620099004 OK +REQUEST Get User 1677620099003 1677620099004 OK +REQUEST Delete User 1677620099019 1677620099020 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620099019 1677620099020 OK +USER Users END 1677620099020 +REQUEST Create User 1677620099035 1677620099036 KO status.find.is(200), but actually found 201 +REQUEST Create User 1677620099035 1677620099036 OK +USER Users END 1677620099036 +REQUEST Get User 1677620099035 1677620099037 OK +REQUEST Create User 1677620099051 1677620099051 KO status.find.is(200), but actually found 201 +USER Users END 1677620099052 +REQUEST Get User 1677620099051 1677620099052 OK +REQUEST Create User 1677620099066 1677620099067 KO status.find.is(200), but actually found 201 +USER Users END 1677620099067 +REQUEST Create User 1677620099096 1677620099097 OK +REQUEST Get User 1677620099096 1677620099097 OK +REQUEST Create User 1677620099112 1677620099113 OK +REQUEST Create User 1677620099112 1677620099113 OK +REQUEST Get User 1677620099112 1677620099114 OK +REQUEST Update User 1677620099128 1677620099129 KO status.find.is(201), but actually found 200 +USER Users END 1677620099129 +REQUEST Update User 1677620099144 1677620099145 OK +REQUEST Update User 1677620099144 1677620099145 OK +REQUEST Delete User 1677620099160 1677620099160 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099161 +REQUEST Create User 1677620099160 1677620099161 OK +REQUEST Create User 1677620099191 1677620099191 KO status.find.is(200), but actually found 201 +USER Users END 1677620099192 +REQUEST Update User 1677620099207 1677620099207 OK +REQUEST Update User 1677620099223 1677620099223 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620099223 1677620099223 KO status.find.is(200), but actually found 201 +USER Users END 1677620099224 +USER Users END 1677620099224 +REQUEST Update User 1677620099239 1677620099239 KO status.find.is(201), but actually found 200 +USER Users END 1677620099239 +REQUEST Delete User 1677620099254 1677620099255 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099256 +REQUEST Get User 1677620099254 1677620099257 OK +REQUEST Delete User 1677620099270 1677620099271 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620099270 1677620099271 KO status.find.is(200), but actually found 201 +USER Users END 1677620099271 +USER Users END 1677620099271 +REQUEST Delete User 1677620099331 1677620099332 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099332 +REQUEST Get User 1677620099331 1677620099333 OK +REQUEST Create User 1677620099347 1677620099348 KO status.find.is(200), but actually found 201 +USER Users END 1677620099348 +REQUEST Delete User 1677620099362 1677620099363 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099364 +REQUEST Update User 1677620099378 1677620099379 OK +REQUEST Get User 1677620099393 1677620099395 OK +REQUEST Update User 1677620099409 1677620099410 OK +REQUEST Delete User 1677620099424 1677620099425 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620099424 1677620099425 OK +REQUEST Update User 1677620099424 1677620099425 KO status.find.is(201), but actually found 200 +USER Users END 1677620099426 +USER Users END 1677620099426 +REQUEST Update User 1677620099440 1677620099441 KO status.find.is(201), but actually found 200 +USER Users END 1677620099441 +REQUEST Get User 1677620099486 1677620099498 OK +REQUEST Delete User 1677620099502 1677620099503 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099503 +REQUEST Create User 1677620099486 1677620099514 KO status.find.is(200), but actually found 201 +USER Users END 1677620099514 +REQUEST Create User 1677620099518 1677620099519 KO status.find.is(200), but actually found 201 +USER Users END 1677620099519 +REQUEST Get User 1677620099518 1677620099520 OK +REQUEST Create User 1677620099534 1677620099535 KO status.find.is(200), but actually found 201 +USER Users END 1677620099535 +REQUEST Delete User 1677620099549 1677620099550 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099551 +REQUEST Create User 1677620099549 1677620099551 OK +REQUEST Create User 1677620099597 1677620099597 KO status.find.is(200), but actually found 201 +USER Users END 1677620099598 +REQUEST Get User 1677620099597 1677620099598 OK +REQUEST Create User 1677620099612 1677620099612 KO status.find.is(200), but actually found 201 +USER Users END 1677620099613 +REQUEST Delete User 1677620099628 1677620099628 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620099628 1677620099628 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099628 +USER Users END 1677620099628 +REQUEST Create User 1677620099643 1677620099643 OK +REQUEST Update User 1677620099659 1677620099659 KO status.find.is(201), but actually found 200 +USER Users END 1677620099660 +REQUEST Update User 1677620099674 1677620099674 KO status.find.is(201), but actually found 200 +USER Users END 1677620099674 +REQUEST Get User 1677620099674 1677620099675 OK +REQUEST Create User 1677620099690 1677620099690 KO status.find.is(200), but actually found 201 +USER Users END 1677620099691 +REQUEST Create User 1677620099721 1677620099721 OK +REQUEST Create User 1677620099752 1677620099753 KO status.find.is(200), but actually found 201 +USER Users END 1677620099753 +REQUEST Create User 1677620099783 1677620099784 OK +REQUEST Create User 1677620099800 1677620099801 OK +REQUEST Delete User 1677620099814 1677620099815 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620099815 +REQUEST Create User 1677620099830 1677620099831 KO status.find.is(200), but actually found 201 +USER Users END 1677620099831 +REQUEST Get User 1677620099830 1677620099831 OK +REQUEST Create User 1677620099845 1677620099846 OK +REQUEST Create User 1677620099860 1677620099861 OK +REQUEST Update User 1677620099908 1677620099909 OK +REQUEST Create User 1677620099908 1677620099909 KO status.find.is(200), but actually found 201 +USER Users END 1677620099909 +REQUEST Get User 1677620099924 1677620099926 OK +REQUEST Update User 1677620099940 1677620099940 OK +REQUEST Delete User 1677620099956 1677620099956 KO status.find.in([200, 209], 304), found 405 +REQUEST Update User 1677620099956 1677620099956 KO status.find.is(201), but actually found 200 +USER Users END 1677620099956 +USER Users END 1677620099956 +REQUEST Create User 1677620099972 1677620099972 OK +REQUEST Update User 1677620100003 1677620100004 OK +REQUEST Get User 1677620100003 1677620100005 OK +REQUEST Update User 1677620100019 1677620100020 OK +REQUEST Update User 1677620100019 1677620100020 OK +REQUEST Create User 1677620100019 1677620100020 OK +REQUEST Delete User 1677620100034 1677620100035 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100035 +REQUEST Update User 1677620100051 1677620100051 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620100051 1677620100052 KO status.find.is(200), but actually found 201 +USER Users END 1677620100052 +USER Users END 1677620100052 +REQUEST Create User 1677620100066 1677620100066 OK +REQUEST Update User 1677620100112 1677620100114 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620100112 1677620100114 KO status.find.is(200), but actually found 201 +USER Users END 1677620100114 +USER Users END 1677620100114 +REQUEST Update User 1677620100128 1677620100129 KO status.find.is(201), but actually found 200 +REQUEST Update User 1677620100128 1677620100129 KO status.find.is(201), but actually found 200 +REQUEST Create User 1677620100128 1677620100129 OK +USER Users END 1677620100129 +USER Users END 1677620100129 +REQUEST Delete User 1677620100159 1677620100160 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620100159 1677620100160 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100160 +USER Users END 1677620100160 +REQUEST Update User 1677620100175 1677620100176 OK +REQUEST Delete User 1677620100222 1677620100223 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100223 +REQUEST Create User 1677620100268 1677620100269 KO status.find.is(200), but actually found 201 +USER Users END 1677620100269 +REQUEST Create User 1677620100345 1677620100346 OK +REQUEST Delete User 1677620100392 1677620100393 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100394 +REQUEST Create User 1677620100408 1677620100409 OK +REQUEST Delete User 1677620100423 1677620100424 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100425 +REQUEST Delete User 1677620100439 1677620100440 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100441 +REQUEST Create User 1677620100500 1677620100501 OK +REQUEST Create User 1677620100532 1677620100533 OK +REQUEST Update User 1677620100562 1677620100563 KO status.find.is(201), but actually found 200 +USER Users END 1677620100564 +REQUEST Create User 1677620100609 1677620100610 KO status.find.is(200), but actually found 201 +USER Users END 1677620100610 +REQUEST Update User 1677620100656 1677620100656 OK +REQUEST Create User 1677620100687 1677620100688 OK +REQUEST Update User 1677620100735 1677620100736 OK +REQUEST Update User 1677620100797 1677620100798 OK +REQUEST Update User 1677620100812 1677620100813 KO status.find.is(201), but actually found 200 +USER Users END 1677620100813 +REQUEST Create User 1677620100844 1677620100845 KO status.find.is(200), but actually found 201 +USER Users END 1677620100845 +REQUEST Update User 1677620100859 1677620100860 KO status.find.is(201), but actually found 200 +USER Users END 1677620100860 +REQUEST Update User 1677620100875 1677620100875 KO status.find.is(201), but actually found 200 +USER Users END 1677620100876 +REQUEST Delete User 1677620100920 1677620100921 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100922 +REQUEST Create User 1677620100936 1677620100937 OK +REQUEST Delete User 1677620100952 1677620100953 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620100954 +REQUEST Update User 1677620100983 1677620100984 KO status.find.is(201), but actually found 200 +USER Users END 1677620100985 +REQUEST Delete User 1677620101014 1677620101015 KO status.find.in([200, 209], 304), found 405 +REQUEST Create User 1677620101014 1677620101015 OK +USER Users END 1677620101015 +REQUEST Update User 1677620101030 1677620101031 KO status.find.is(201), but actually found 200 +REQUEST Delete User 1677620101030 1677620101031 KO status.find.in([200, 209], 304), found 405 +REQUEST Delete User 1677620101030 1677620101031 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620101031 +USER Users END 1677620101031 +USER Users END 1677620101031 +REQUEST Update User 1677620101077 1677620101078 OK +REQUEST Update User 1677620101138 1677620101139 OK +REQUEST Delete User 1677620101184 1677620101185 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620101185 +REQUEST Update User 1677620101356 1677620101357 OK +REQUEST Update User 1677620101420 1677620101421 KO status.find.is(201), but actually found 200 +USER Users END 1677620101421 +REQUEST Update User 1677620101513 1677620101519 KO status.find.is(201), but actually found 200 +USER Users END 1677620101519 +REQUEST Update User 1677620101544 1677620101545 OK +REQUEST Delete User 1677620101670 1677620101671 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620101671 +REQUEST Update User 1677620101700 1677620101701 OK +REQUEST Delete User 1677620101747 1677620101748 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620101748 +REQUEST Delete User 1677620101810 1677620101811 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620101811 +REQUEST Update User 1677620101951 1677620101951 KO status.find.is(201), but actually found 200 +USER Users END 1677620101952 +REQUEST Update User 1677620102027 1677620102028 KO status.find.is(201), but actually found 200 +USER Users END 1677620102029 +REQUEST Delete User 1677620102090 1677620102091 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620102091 +REQUEST Delete User 1677620102152 1677620102153 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620102153 +REQUEST Delete User 1677620102369 1677620102371 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620102371 +REQUEST Delete User 1677620102557 1677620102558 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620102558 +REQUEST Delete User 1677620102715 1677620102715 KO status.find.in([200, 209], 304), found 405 +USER Users END 1677620102716 diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down.png b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down.png new file mode 100644 index 0000000..3efdbc8 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down_black.png b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down_black.png new file mode 100644 index 0000000..3bae685 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_down_black.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right.png b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right.png new file mode 100644 index 0000000..a609f80 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right_black.png b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right_black.png new file mode 100644 index 0000000..651bd5d Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/arrow_right_black.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/bootstrap.min.css b/Sources/API/gatling/results/Quarkus-Simulation/style/bootstrap.min.css new file mode 100644 index 0000000..76a2b9b --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/style/bootstrap.min.css @@ -0,0 +1,27 @@ +.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} +.clearfix:after{clear:both;} +.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} +.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-3px;} +.tooltip.right{margin-left:3px;} +.tooltip.bottom{margin-top:3px;} +.tooltip.left{margin-left:-3px;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} +.popover.right{margin-left:10px;} +.popover.bottom{margin-top:10px;} +.popover.left{margin-left:-10px;} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} +.popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} +.popover .arrow:after{content:"";z-index:-1;} +.popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} +.popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} +.popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} +.popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/favicon.ico b/Sources/API/gatling/results/Quarkus-Simulation/style/favicon.ico new file mode 100644 index 0000000..d2d20e1 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/favicon.ico differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/little_arrow_right.png b/Sources/API/gatling/results/Quarkus-Simulation/style/little_arrow_right.png new file mode 100644 index 0000000..252abe6 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/little_arrow_right.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/logo-enterprise.svg b/Sources/API/gatling/results/Quarkus-Simulation/style/logo-enterprise.svg new file mode 100644 index 0000000..4a6e1de --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/style/logo-enterprise.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/logo.svg b/Sources/API/gatling/results/Quarkus-Simulation/style/logo.svg new file mode 100644 index 0000000..f519eef --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/style/logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/sortable.png b/Sources/API/gatling/results/Quarkus-Simulation/style/sortable.png new file mode 100644 index 0000000..a8bb54f Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/sortable.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-down.png b/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-down.png new file mode 100644 index 0000000..5100cc8 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-down.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-up.png b/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-up.png new file mode 100644 index 0000000..340a5f0 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/sorted-up.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/stat-fleche-bas.png b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-fleche-bas.png new file mode 100644 index 0000000..8e0b501 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-fleche-bas.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-roue.png b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-roue.png new file mode 100644 index 0000000..c9a3aae Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-roue.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-temps.png b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-temps.png new file mode 100644 index 0000000..1ce2680 Binary files /dev/null and b/Sources/API/gatling/results/Quarkus-Simulation/style/stat-l-temps.png differ diff --git a/Sources/API/gatling/results/Quarkus-Simulation/style/style.css b/Sources/API/gatling/results/Quarkus-Simulation/style/style.css new file mode 100644 index 0000000..7f50e1b --- /dev/null +++ b/Sources/API/gatling/results/Quarkus-Simulation/style/style.css @@ -0,0 +1,988 @@ +/* + * Copyright 2011-2022 GatlingCorp (https://gatling.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --gatling-background-color: #f2f2f2; + --gatling-background-light-color: #f7f7f7; + --gatling-border-color: #dddddd; + --gatling-blue-color: #4a9fe5; + --gatling-dark-blue-color: #24275e; + --gatling-danger-color: #f15b4f; + --gatling-danger-light-color: #f5d1ce; + --gatling-enterprise-color: #6161d6; + --gatling-enterprise-light-color: #c4c4ed; + --gatling-gray-medium-color: #bbb; + --gatling-hover-color: #e6e6e6; + --gatling-light-color: #ffffff; + --gatling-orange-color: #f78557; + --gatling-success-color: #68b65c; + --gatling-text-color: #1f2024; + --gatling-total-color: #ffa900; + + --gatling-border-radius: 2px; + --gatling-spacing-small: 5px; + --gatling-spacing: 10px; + --gatling-spacing-layout: 20px; + + --gatling-font-weight-normal: 400; + --gatling-font-weight-medium: 500; + --gatling-font-weight-bold: 700; + --gatling-font-size-secondary: 12px; + --gatling-font-size-default: 14px; + --gatling-font-size-heading: 16px; + --gatling-font-size-section: 22px; + --gatling-font-size-header: 34px; + + --gatling-media-desktop-large: 1920px; +} + +* { + min-height: 0; + min-width: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + color: var(--gatling-text-color); + font-family: arial; + font-size: var(--gatling-font-size-secondary); + margin: 0; +} + +.app-container { + display: flex; + flex-direction: column; + + height: 100%; + width: 100%; +} + +.head { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + + flex: 1; + + background-color: var(--gatling-light-color); + border-bottom: 1px solid var(--gatling-border-color); + min-height: 69px; + padding: 0 var(--gatling-spacing-layout); +} + +.gatling-open-source { + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: row; + gap: var(--gatling-spacing-layout); +} + +.gatling-documentation { + display: flex; + align-items: center; + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-orange-color); + border: 1px solid var(--gatling-orange-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 23px; +} + +.gatling-documentation:hover { + background-color: var(--gatling-orange-color); + color: var(--gatling-light-color); +} + +.gatling-logo { + height: 35px; +} + +.gatling-logo img { + height: 100%; +} + +.container { + display: flex; + align-items: stretch; + height: 100%; +} + +.nav { + min-width: 210px; + width: 210px; + max-height: calc(100vh - var(--gatling-spacing-layout) - var(--gatling-spacing-layout)); + background: var(--gatling-light-color); + border-right: 1px solid var(--gatling-border-color); + overflow-y: auto; +} + +@media print { + .nav { + display: none; + } +} + +@media screen and (min-width: 1920px) { + .nav { + min-width: 310px; + width: 310px; + } +} + +.nav ul { + display: flex; + flex-direction: column; + + padding: 0; + margin: 0; +} + +.nav li { + display: flex; + list-style: none; + width: 100%; + padding: 0; +} + +.nav .item { + display: inline-flex; + align-items: center; + margin: 0 auto; + white-space: nowrap; + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + margin: 0; + width: 100%; +} + +.nav .item .nav-label { + padding: var(--gatling-spacing) var(--gatling-spacing-layout); +} + +.nav .item:hover { + background-color: var(--gatling-hover-color); +} + +.nav .on .item { + background-color: var(--gatling-orange-color); +} + +.nav .on .item span { + color: var(--gatling-light-color); +} + +.cadre { + width: 100%; + height: 100%; + overflow-y: scroll; + scroll-behavior: smooth; +} + +@media print { + .cadre { + overflow-y: unset; + } +} + +.frise { + position: absolute; + top: 60px; + z-index: -1; + + background-color: var(--gatling-background-color); + height: 530px; +} + +.global { + height: 650px +} + +a { + text-decoration: none; +} + +a:hover { + color: var(--gatling-hover-color); +} + +img { + border: 0; +} + +h1 { + color: var(--gatling-dark-blue-color); + font-size: var(--gatling-font-size-section); + font-weight: var(--gatling-font-weight-medium); + text-align: center; + margin: 0; +} + +h1 span { + color: var(--gatling-hover-color); +} + +.enterprise { + display: flex; + align-items: center; + justify-content: center; + gap: var(--gatling-spacing-small); + + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-enterprise-color); + color: var(--gatling-enterprise-color); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); + height: 25px; +} + +.enterprise:hover { + background-color: var(--gatling-enterprise-light-color); + color: var(--gatling-enterprise-color); +} + +.enterprise img { + display: block; + width: 160px; +} + +.simulation-card { + display: flex; + flex-direction: column; + align-self: stretch; + flex: 1; + gap: var(--gatling-spacing-layout); + max-height: 375px; +} + +#simulation-information { + flex: 1; +} + +.simulation-version-information { + display: flex; + flex-direction: column; + + gap: var(--gatling-spacing); + font-size: var(--gatling-font-size-default); + + background-color: var(--gatling-background-color); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing); +} + +.simulation-information-container { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing); +} + +.withTooltip .popover-title { + display: none; +} + +.popover-content p { + margin: 0; +} + +.ellipsed-name { + display: block; + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.simulation-information-item { + display: flex; + flex-direction: row; + align-items: flex-start; + gap: var(--gatling-spacing-small); +} + +.simulation-information-item.description { + flex-direction: column; +} + +.simulation-information-label { + display: inline-block; + font-weight: var(--gatling-font-weight-bold); + min-width: fit-content; +} + +.simulation-information-title { + display: block; + text-align: center; + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + width: 100%; +} + +.simulation-tooltip span { + display: inline-block; + word-wrap: break-word; + overflow: hidden; + text-overflow: ellipsis; +} + +.content { + display: flex; + flex-direction: column; +} + +.content-in { + width: 100%; + height: 100%; + + overflow-x: scroll; +} + +@media print { + .content-in { + overflow-x: unset; + } +} + +.container-article { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + min-width: 1050px; + width: 1050px; + margin: 0 auto; + padding: var(--gatling-spacing-layout); + box-sizing: border-box; +} + +@media screen and (min-width: 1920px) { + .container-article { + min-width: 1350px; + width: 1350px; + } + + #responses * .highcharts-tracker { + transform: translate(400px, 70px); + } +} + +.content-header { + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); + + background-color: var(--gatling-background-light-color); + border-bottom: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-layout) var(--gatling-spacing-layout) 0; +} + +.onglet { + font-size: var(--gatling-font-size-header); + font-weight: var(--gatling-font-weight-medium); + text-align: center; +} + +.sous-menu { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.sous-menu-spacer { + display: flex; + align-items: center; + flex-direction: row; +} + +.sous-menu .item { + margin-bottom: -1px; +} + +.sous-menu a { + display: block; + + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-normal); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border-bottom: 2px solid transparent; + color: var(--gatling-text-color); + text-align: center; + width: 100px; +} + +.sous-menu a:hover { + border-bottom-color: var(--gatling-text-color); +} + +.sous-menu .ouvert a { + border-bottom-color: var(--gatling-orange-color); + font-weight: var(--gatling-font-weight-bold); +} + +.article { + position: relative; + + display: flex; + flex-direction: column; + gap: var(--gatling-spacing-layout); +} + +.infos { + width: 340px; + color: var(--gatling-light-color); +} + +.infos-title { + background-color: var(--gatling-background-light-color); + border: 1px solid var(--gatling-border-color); + border-bottom: 0; + border-top-left-radius: var(--gatling-border-radius); + border-top-right-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.info { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + height: 100%; + margin: 0; +} + +.info table { + margin: auto; + padding-right: 15px; +} + +.alert-danger { + background-color: var(--gatling-danger-light-color); + border: 1px solid var(--gatling-danger-color); + border-radius: var(--gatling-border-radius); + color: var(--gatling-text-color); + padding: var(--gatling-spacing-layout); + font-weight: var(--gatling-font-weight-bold); +} + +.repli { + position: absolute; + bottom: 0; + right: 0; + + background: url('stat-fleche-bas.png') no-repeat top left; + height: 25px; + width: 22px; +} + +.infos h2 { + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + height: 19px; + margin: 0; + padding: 3.5px 0 0 35px; +} + +.infos .first { + background: url('stat-l-roue.png') no-repeat 15px 5px; +} + +.infos .second { + background: url('stat-l-temps.png') no-repeat 15px 3px; + border-top: 1px solid var(--gatling-border-color); +} + +.infos th { + text-align: center; +} + +.infos td { + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing-small); + -webkit-border-radius: var(--gatling-border-radius); + -moz-border-radius: var(--gatling-border-radius); + -ms-border-radius: var(--gatling-border-radius); + -o-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + text-align: right; + width: 50px; +} + +.infos .title { + width: 120px; +} + +.infos .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); +} + +.infos .total { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); +} + +.infos .ko { + background-color: var(--gatling-danger-color); + -webkit-border-radius: var(--gatling-border-radius); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); +} + +.schema-container { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gatling-spacing-layout); +} + +.schema { + background: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); +} + +.ranges { + height: 375px; + width: 500px; +} + +.ranges-large { + height: 375px; + width: 530px; +} + +.geant { + height: 362px; +} + +.extensible-geant { + width: 100%; +} + +.polar { + height: 375px; + width: 230px; +} + +.chart_title { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); + font-size: var(--gatling-font-size-heading); + padding: 2px var(--gatling-spacing); +} + +.statistics { + display: flex; + flex-direction: column; + + background-color: var(--gatling-background-light-color); + border-radius: var(--gatling-border-radius); + border-collapse: collapse; + color: var(--gatling-text-color); + max-height: 100%; +} + +.statistics .title { + display: flex; + text-align: center; + justify-content: space-between; + + min-height: 49.5px; + box-sizing: border-box; + + border: 1px solid var(--gatling-border-color); + color: var(--gatling-text-color); + font-size: var(--gatling-font-size-heading); + font-weight: var(--gatling-font-weight-bold); + padding: var(--gatling-spacing); +} + +.title_base { + display: flex; + align-items: center; + text-align: left; + user-select: none; +} + +.title_base_stats { + color: var(--gatling-text-color); + margin-right: 20px; +} + +.toggle-table { + position: relative; + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: 25px; + width: 40px; + height: 20px; + margin: 0 var(--gatling-spacing-small); +} + +.toggle-table::before { + position: absolute; + top: calc(50% - 9px); + left: 1px; + content: ""; + width: 50%; + height: 18px; + border-radius: 50%; + background-color: var(--gatling-text-color); +} + +.toggle-table.off::before { + left: unset; + right: 1px; +} + +.title_expanded { + cursor: pointer; + color: var(--gatling-text-color); +} + +.expand-table, +.collapse-table { + font-size: var(--gatling-font-size-secondary); + font-weight: var(--gatling-font-weight-normal); +} + +.title_expanded span.expand-table { + color: var(--gatling-gray-medium-color); +} + +.title_collapsed { + cursor: pointer; + color: var(--gatling-text-color); +} + +.title_collapsed span.collapse-table { + color: var(--gatling-gray-medium-color); +} + +#container_statistics_head { + position: sticky; + top: -1px; + + background: var(--gatling-background-light-color); + margin-top: -1px; + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); +} + +#container_statistics_body { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + margin-top: -1px; + padding: 0px var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small); +} + +#container_errors { + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) 0px var(--gatling-spacing-small); + margin-top: -1px; +} + +#container_assertions { + background-color: var(--gatling-background-light-color); + border-bottom-left-radius: var(--gatling-border-radius); + border-bottom-right-radius: var(--gatling-border-radius); + padding: var(--gatling-spacing-small); + margin-top: -1px; +} + +.statistics-in { + border-spacing: var(--gatling-spacing-small); + border-collapse: collapse; + margin: 0; +} + +.statistics .scrollable { + max-height: 100%; + overflow-y: auto; +} + +#statistics_table_container .statistics .scrollable { + max-height: 785px; +} + +.statistics-in a { + color: var(--gatling-text-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .header { + border-radius: var(--gatling-border-radius); + border: 1px solid var(--gatling-border-color); + font-size: var(--gatling-font-size-default); + font-weight: var(--gatling-font-weight-bold); + text-align: center; + padding: var(--gatling-spacing-small); +} + +.sortable { + cursor: pointer; +} + +.sortable span { + background: url('sortable.png') no-repeat right 3px; + padding-right: 10px; +} + +.sorted-up span { + background-image: url('sorted-up.png'); +} + +.sorted-down span { + background-image: url('sorted-down.png'); +} + +.executions { + background: url('stat-l-roue.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.response-time { + background: url('stat-l-temps.png') no-repeat var(--gatling-spacing-small) var(--gatling-spacing-small); + padding: var(--gatling-spacing-small) var(--gatling-spacing-small) var(--gatling-spacing-small) 25px; +} + +.statistics-in td { + background-color: var(--gatling-light-color); + border: 1px solid var(--gatling-border-color); + padding: var(--gatling-spacing-small); + min-width: 50px; +} + +.statistics-in .col-1 { + width: 175px; + max-width: 175px; +} +@media screen and (min-width: 1200px) { + .statistics-in .col-1 { + width: 50%; + } +} + +.expandable-container { + display: flex; + flex-direction: row; + box-sizing: border-box; + max-width: 100%; +} + +.statistics-in .value { + text-align: right; + width: 50px; +} + +.statistics-in .total { + color: var(--gatling-text-color); +} + +.statistics-in .col-2 { + background-color: var(--gatling-total-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .error-col-1 { + background-color: var(--gatling-light-color); + color: var(--gatling-text-color); +} + +.statistics-in .error-col-2 { + text-align: center; +} + +.statistics-in .ok { + background-color: var(--gatling-success-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .ko { + background-color: var(--gatling-danger-color); + color: var(--gatling-light-color); + font-weight: var(--gatling-font-weight-bold); +} + +.statistics-in .expand-button { + padding-left: var(--gatling-spacing); + cursor: pointer; +} + +.expand-button.hidden { + background: none; + cursor: default; +} + +.statistics-button { + background-color: var(--gatling-light-color); + padding: var(--gatling-spacing-small) var(--gatling-spacing); + border: 1px solid var(--gatling-border-color); + border-radius: var(--gatling-border-radius); +} + +.statistics-button:hover:not(:disabled) { + cursor: pointer; + background-color: var(--gatling-hover-color); +} + +.statistics-in .expand-button.expand { + background: url('little_arrow_right.png') no-repeat 3px 3px; +} + +.statistics-in .expand-button.collapse { + background: url('sorted-down.png') no-repeat 3px 3px; +} + +.nav .expand-button { + padding: var(--gatling-spacing-small) var(--gatling-spacing); +} + +.nav .expand-button.expand { + background: url('arrow_right_black.png') no-repeat 5px 10px; + cursor: pointer; +} + +.nav .expand-button.collapse { + background: url('arrow_down_black.png') no-repeat 3px 12px; + cursor: pointer; +} + +.nav .on .expand-button.expand { + background-image: url('arrow_right_black.png'); +} + +.nav .on .expand-button.collapse { + background-image: url('arrow_down_black.png'); +} + +.right { + display: flex; + align-items: center; + gap: var(--gatling-spacing); + float: right; + font-size: var(--gatling-font-size-default); +} + +.withTooltip { + outline: none; +} + +.withTooltip:hover { + text-decoration: none; +} + +.withTooltip .tooltipContent { + position: absolute; + z-index: 10; + display: none; + + background: var(--gatling-orange-color); + -webkit-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + -moz-box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + box-shadow: 1px 2px 4px 0px rgba(47, 47, 47, 0.2); + border-radius: var(--gatling-border-radius); + color: var(--gatling-light-color); + margin-top: -5px; + padding: var(--gatling-spacing-small); +} + +.withTooltip:hover .tooltipContent { + display: inline; +} + +.statistics-table-modal { + height: calc(100% - 60px); + width: calc(100% - 60px); + border-radius: var(--gatling-border-radius); +} + +.statistics-table-modal::backdrop { + position: fixed; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + + background-color: rgba(100, 100, 100, 0.9); +} + +.statistics-table-modal-container { + display: flex; + flex-direction: column; + + width: 100%; + height: calc(100% - 35px); + overflow-x: auto; +} + +.button-modal { + cursor: pointer; + + height: 25px; + width: 25px; + + border: 1px solid var(--gatling-border-color); + background-color: var(--gatling-light-color); + border-radius: var(--gatling-border-radius); +} + +.button-modal:hover { + background-color: var(--gatling-background-color); +} + +.statistics-table-modal-header { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-bottom: var(--gatling-spacing); +} + +.statistics-table-modal-content { + flex: 1; + overflow-y: auto; + min-width: 1050px; +} + +.statistics-table-modal-footer { + display: flex; + align-items: flex-end; + justify-content: flex-end; + + padding-top: var(--gatling-spacing); +} diff --git a/Sources/API/gatling/target/inc_compile.zip b/Sources/API/gatling/target/inc_compile.zip new file mode 100644 index 0000000..f2810b5 Binary files /dev/null and b/Sources/API/gatling/target/inc_compile.zip differ diff --git a/Sources/API/gatling/target/test-classes/benchmark/UserSimulation.class b/Sources/API/gatling/target/test-classes/benchmark/UserSimulation.class new file mode 100644 index 0000000..058f3da Binary files /dev/null and b/Sources/API/gatling/target/test-classes/benchmark/UserSimulation.class differ diff --git a/Sources/API/gatling/user-files/lib/.keep b/Sources/API/gatling/user-files/lib/.keep new file mode 100644 index 0000000..e69de29 diff --git a/Sources/API/gatling/user-files/resources/search.csv b/Sources/API/gatling/user-files/resources/search.csv new file mode 100644 index 0000000..fdeab9e --- /dev/null +++ b/Sources/API/gatling/user-files/resources/search.csv @@ -0,0 +1,3 @@ +searchCriterion,searchComputerName +Macbook,MacBook Pro +eee,ASUS Eee PC 1005PE \ No newline at end of file diff --git a/Sources/API/gatling/user-files/simulations/benchmark/UserSimulation.java b/Sources/API/gatling/user-files/simulations/benchmark/UserSimulation.java new file mode 100644 index 0000000..9481069 --- /dev/null +++ b/Sources/API/gatling/user-files/simulations/benchmark/UserSimulation.java @@ -0,0 +1,48 @@ +package benchmark; + +import static io.gatling.javaapi.core.CoreDsl.*; +import static io.gatling.javaapi.http.HttpDsl.*; + +import io.gatling.javaapi.core.*; +import io.gatling.javaapi.http.*; + +import java.util.concurrent.ThreadLocalRandom; + +public class UserSimulation extends Simulation{ + HttpProtocolBuilder httpProtocol = http.baseUrl("http://localhost:8080"); + ChainBuilder crud = + tryMax(2) + .on( + exec(http("Get All Users").get("/users")) + .pause(1) + .exec(http("Get User").get("/users/1")) + .pause(1) + .exec(http("Create User").post("/users") + .header("Content-Type", "application/json") + .body(StringBody("{\"name\":\"John Doe\",\"password\":\"POST PASS\"}")) + .check( + status().is( + session -> 200 + ThreadLocalRandom.current().nextInt(2) + ) + )) + .pause(1) + .exec(http("Update User").put("/users/2") + .header("Content-Type", "application/json") + .body(StringBody("{\"name\":\"John Doe\",\"password\":\"POST UPDATE\"}")) + .check( + status().is( + session -> 200 + ThreadLocalRandom.current().nextInt(2) + ) + )) + .pause(1) + .exec(http("Delete User").delete("/users/3")) + ) + .exitHereIfFailed(); + ScenarioBuilder users = scenario("Users").exec(crud); + + { + setUp(users.injectOpen(rampUsers(500).during(10))).protocols(httpProtocol); + } + + +}