{
    "i18n": true,
    "type": "tabs",
    "tabsStyle": {
        "width": "calc(100% - 100px)"
    },
    "iconPosition": "top",
    "items": {
        "_general": {
            "type": "panel",
            "label": "General settings",
            "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuNC4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPSJNNDk1LjkgMTY2LjZjMy4yIDguNyAuNSAxOC40LTYuNCAyNC42bC00My4zIDM5LjRjMS4xIDguMyAxLjcgMTYuOCAxLjcgMjUuNHMtLjYgMTcuMS0xLjcgMjUuNGw0My4zIDM5LjRjNi45IDYuMiA5LjYgMTUuOSA2LjQgMjQuNmMtNC40IDExLjktOS43IDIzLjMtMTUuOCAzNC4zbC00LjcgOC4xYy02LjYgMTEtMTQgMjEuNC0yMi4xIDMxLjJjLTUuOSA3LjItMTUuNyA5LjYtMjQuNSA2LjhsLTU1LjctMTcuN2MtMTMuNCAxMC4zLTI4LjIgMTguOS00NCAyNS40bC0xMi41IDU3LjFjLTIgOS4xLTkgMTYuMy0xOC4yIDE3LjhjLTEzLjggMi4zLTI4IDMuNS00Mi41IDMuNXMtMjguNy0xLjItNDIuNS0zLjVjLTkuMi0xLjUtMTYuMi04LjctMTguMi0xNy44bC0xMi41LTU3LjFjLTE1LjgtNi41LTMwLjYtMTUuMS00NC0yNS40TDgzLjEgNDI1LjljLTguOCAyLjgtMTguNiAuMy0yNC41LTYuOGMtOC4xLTkuOC0xNS41LTIwLjItMjIuMS0zMS4ybC00LjctOC4xYy02LjEtMTEtMTEuNC0yMi40LTE1LjgtMzQuM2MtMy4yLTguNy0uNS0xOC40IDYuNC0yNC42bDQzLjMtMzkuNEM2NC42IDI3My4xIDY0IDI2NC42IDY0IDI1NnMuNi0xNy4xIDEuNy0yNS40TDIyLjQgMTkxLjJjLTYuOS02LjItOS42LTE1LjktNi40LTI0LjZjNC40LTExLjkgOS43LTIzLjMgMTUuOC0zNC4zbDQuNy04LjFjNi42LTExIDE0LTIxLjQgMjIuMS0zMS4yYzUuOS03LjIgMTUuNy05LjYgMjQuNS02LjhsNTUuNyAxNy43YzEzLjQtMTAuMyAyOC4yLTE4LjkgNDQtMjUuNGwxMi41LTU3LjFjMi05LjEgOS0xNi4zIDE4LjItMTcuOEMyMjcuMyAxLjIgMjQxLjUgMCAyNTYgMHMyOC43IDEuMiA0Mi41IDMuNWM5LjIgMS41IDE2LjIgOC43IDE4LjIgMTcuOGwxMi41IDU3LjFjMTUuOCA2LjUgMzAuNiAxNS4xIDQ0IDI1LjRsNTUuNy0xNy43YzguOC0yLjggMTguNi0uMyAyNC41IDYuOGM4LjEgOS44IDE1LjUgMjAuMiAyMi4xIDMxLjJsNC43IDguMWM2LjEgMTEgMTEuNCAyMi40IDE1LjggMzQuM3pNMjU2IDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHoiLz48L3N2Zz4=",
            "items": {
                "host": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "host"
                },
                "port": {
                    "type": "number",
                    "min": 1,
                    "max": 65535,
                    "step": 1,
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "port"
                },
                "mqttVersion": {
                    "type": "select",
                    "options": [
                        {
                            "label": "3",
                            "value": 3
                        },
                        {
                            "label": "4",
                            "value": 4
                        },
                        {
                            "label": "5",
                            "value": 5
                        }
                    ],
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "MQTT Version"
                },
                "websocket": {
                    "newLine": true,
                    "type": "checkbox",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "Use websockets"
                },
                "ssl": {
                    "type": "checkbox",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "ssl"
                },
                "rejectUnauthorized": {
                    "hidden": "!data.ssl",
                    "type": "checkbox",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "rejectUnauthorized"
                },
                "clientId": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "Client ID"
                },
                "username": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "username"
                },
                "password": {
                    "type": "password",
                    "repeat": false,
                    "visible": true,
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "password"
                },
                "_headerCustomOptions": {
                    "newLine": true,
                    "type": "header",
                    "size": 2,
                    "xs": 12,
                    "sm": 12,
                    "md": 12,
                    "lg": 12,
                    "xl": 12,
                    "text": "Custom options"
                },
                "onConnectTopic": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "on connect topic",
                    "validator": "!data.onConnectTopic.startsWith('/')",
                    "validatorErrorText": "Topic must not start with /",
                    "validatorNoSaveOnError": true
                },
                "onConnectMessage": {
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "on connect message"
                },
                "onDisconnectTopic": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "on disconnect topic",
                    "validator": "!data.onDisconnectTopic.startsWith('/')",
                    "validatorErrorText": "Topic must not start with /",
                    "validatorNoSaveOnError": true
                },
                "onDisconnectMessage": {
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "on disconnect message"
                },
                "lastWillTopic": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "last will topic",
                    "validator": "!data.lastWillTopic.startsWith('/')",
                    "validatorErrorText": "Topic must not start with /",
                    "validatorNoSaveOnError": true
                },
                "lastWillMessage": {
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "last will message"
                },
                "inbox": {
                    "newLine": true,
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "prefix for subscribing topics",
                    "validator": "!data.inbox.endsWith('/')",
                    "validatorErrorText": "Topic must not end with /",
                    "validatorNoSaveOnError": true
                },
                "outbox": {
                    "type": "text",
                    "xs": 12,
                    "sm": 12,
                    "md": 6,
                    "lg": 4,
                    "xl": 4,
                    "label": "prefix for publishing topics",
                    "validator": "!data.outbox.endsWith('/')",
                    "validatorErrorText": "Topic must not end with /",
                    "validatorNoSaveOnError": true
                },
                "subscriptions": {
                    "type": "chips",
                    "label": "additional subscriptions",
                    "delimiter": ",",
                    "xs": 12,
                    "sm": 12,
                    "md": 12,
                    "lg": 12,
                    "xl": 12
                }
            }
        }
    }
}