_ctrlMsgFromServer(receivedCtrlMsg) {
    if (receivedCtrlMsg === null) {
      receivedCtrlMsg = {};
    } else if (typeof receivedCtrlMsg !== "object") {
      const msg = {};
      msg["uibuilderCtrl:" + this._ioChannels.control] = receivedCtrlMsg;
      receivedCtrlMsg = msg;
    }
    this._checkTimestamp(receivedCtrlMsg);
    this.set("ctrlMsg", receivedCtrlMsg);
    this.set("msgsCtrlReceived", ++this.msgsCtrlReceived);
    log("trace", "Uib:ioSetup:_ctrlMsgFromServer", "Channel '".concat(this._ioChannels.control, "'. Received control msg #").concat(this.msgsCtrlReceived), receivedCtrlMsg)();
    switch (receivedCtrlMsg.uibuilderCtrl) {
      // Node-RED is shutting down
      case "shutdown": {
        log("info", "Uib:ioSetup:".concat(this._ioChannels.control), '\u274C Received "shutdown" from server')();
        this.set("serverShutdown", void 0);
        break;
      }
      /** We are connected to the server - 1st msg from server */
      case "client connect": {
        log("trace", "Uib:ioSetup:".concat(this._ioChannels.control), 'Received "client connect" from server', receivedCtrlMsg)();
        log("info", "Uib:ioSetup:".concat(this._ioChannels.control), "\u2705 Server connected. Version: ".concat(receivedCtrlMsg.version, "\nServer time: ").concat(receivedCtrlMsg.serverTimestamp, ", Sever time offset: ").concat(this.serverTimeOffset, " hours. Max msg size: ").concat(receivedCtrlMsg.maxHttpBufferSize))();
        if (!_a2._meta.version.startsWith(receivedCtrlMsg.version.split("-")[0])) {
          log("warn", "Uib:ioSetup:".concat(this._ioChannels.control), "Server version (".concat(receivedCtrlMsg.version, ") not the same as the client version (").concat(_a2._meta.version, ")"))();
        }
        if (this.autoSendReady === true) {
          log("trace", "Uib:ioSetup:".concat(this._ioChannels.control, "/client connect"), "Auto-sending ready-for-content/replay msg to server");
        }
        this.maxHttpBufferSize = receivedCtrlMsg.maxHttpBufferSize;
        break;
      }
      // We requested this page's metadata from the server using getPageMeta() - this handles the response
      case "get page meta": {
        this.set("pageMeta", receivedCtrlMsg.payload);
        break;
      }
      default: {
        log("trace", "uibuilder:ioSetup:".concat(this._ioChannels.control), "Received ".concat(receivedCtrlMsg.uibuilderCtrl, " from server"));
      }
    }
  }
Handles original control msgs (not to be confused with "new" msg._uib controls)
@param {*} receivedCtrlMsg The msg received on the socket.io control channel
@private