func newTerminalPrompter() *terminalPrompter {
	p := new(terminalPrompter)
	normalMode, _ := liner.TerminalMode()
	p.State = liner.NewLiner()
	rawMode, err := liner.TerminalMode()
	if err != nil || !liner.TerminalSupported() {
		p.supported = false
	} else {
		p.supported = true
		p.normalMode = normalMode
		p.rawMode = rawMode
		applyMode(normalMode)
	}
	p.SetCtrlCAborts(true)
	p.SetTabCompletionStyle(liner.TabPrints)
	p.SetMultiLineMode(false)
	return p
}
newTerminalPrompter creates a liner based user input prompter working off the
standard input and output streams.
package cmd
import (
	"bytes"
	"encoding/json"
	"fmt"
	"os"
	"os/signal"
	"os/user"
	"strings"
	"syscall"
	"github.com/peterh/liner"
	"github.com/zarbchain/zarb-go/crypto"
	"github.com/zarbchain/zarb-go/keystore/key"
)
var ZARB = `
 ███████╗  █████╗  ██████╗  ██████╗
 ╚══███╔╝ ██╔══██╗ ██╔══██╗ ██╔══██╗
   ███╔╝  ███████║ ██████╔╝ ██████╔╝
  ███╔╝   ██╔══██║ ██╔══██╗ ██╔══██╗
 ███████╗ ██║  ██║ ██║  ██║ ██████╔╝
 ╚══════╝ ╚═╝  ╚═╝ ╚═╝  ╚═╝ ╚═════╝
`
type terminalPrompter struct {
	*liner.State
	warned     bool
	supported  bool
	normalMode liner.ModeApplier
	rawMode    liner.ModeApplier
}
var Stdin = newTerminalPrompter()