// Path: src/main/java/org/fusesource/jansi/AnsiColors.java
// public enum AnsiColors {
// 
//     Colors16("16 colors"),
//     Colors256("256 colors"),
//     TrueColor("24-bit colors");
// 
//     private final String description;
// 
//     AnsiColors(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }
// 
// Path: src/main/java/org/fusesource/jansi/AnsiMode.java
// public enum AnsiMode {
// 
//     Strip("Strip all ansi sequences"),
//     Default("Print ansi sequences if the stream is a terminal"),
//     Force("Always print ansi sequences, even if the stream is redirected");
// 
//     private final String description;
// 
//     AnsiMode(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }
// 
// Path: src/main/java/org/fusesource/jansi/AnsiType.java
// public enum AnsiType {
// 
//     Native("Supports ansi sequences natively"),
//     Unsupported("Ansi sequences are stripped out"),
//     VirtualTerminal("Supported through windows virtual terminal"),
//     Emulation("Emulated through using windows API console commands"),
//     Redirected("The stream is redirected to a file or a pipe");
// 
//     private final String description;
// 
//     AnsiType(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }


import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import org.fusesource.jansi.AnsiColors;
import org.fusesource.jansi.AnsiMode;
import org.fusesource.jansi.AnsiType;
    }

    public int getTerminalWidth() {
        return width.getTerminalWidth();
    }

    public AnsiType getType() {
        return type;
    }

    public AnsiColors getColors() {
        return colors;
    }

    public AnsiMode getMode() {
        return mode;
    }

    public void setMode(AnsiMode mode) {
        ap = mode == AnsiMode.Strip
                ? new AnsiProcessor(out)
                : mode == AnsiMode.Force || processor == null ? new ColorsAnsiProcessor(out, colors) : processor;
        this.mode = mode;
    }

    public boolean isResetAtUninstall() {
        return resetAtUninstall;
    }

    public void setResetAtUninstall(boolean resetAtUninstall) {
// Path: src/main/java/org/fusesource/jansi/AnsiColors.java
// public enum AnsiColors {
// 
//     Colors16("16 colors"),
//     Colors256("256 colors"),
//     TrueColor("24-bit colors");
// 
//     private final String description;
// 
//     AnsiColors(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }
// 
// Path: src/main/java/org/fusesource/jansi/AnsiMode.java
// public enum AnsiMode {
// 
//     Strip("Strip all ansi sequences"),
//     Default("Print ansi sequences if the stream is a terminal"),
//     Force("Always print ansi sequences, even if the stream is redirected");
// 
//     private final String description;
// 
//     AnsiMode(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }
// 
// Path: src/main/java/org/fusesource/jansi/AnsiType.java
// public enum AnsiType {
// 
//     Native("Supports ansi sequences natively"),
//     Unsupported("Ansi sequences are stripped out"),
//     VirtualTerminal("Supported through windows virtual terminal"),
//     Emulation("Emulated through using windows API console commands"),
//     Redirected("The stream is redirected to a file or a pipe");
// 
//     private final String description;
// 
//     AnsiType(String description) {
//         this.description = description;
//     }
// 
//     String getDescription() {
//         return description;
//     }
// }


// Path: src/main/java/org/fusesource/jansi/io/AnsiOutputStream.java
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import org.fusesource.jansi.AnsiColors;
import org.fusesource.jansi.AnsiMode;
import org.fusesource.jansi.AnsiType;

    }

    public int getTerminalWidth() {
        return width.getTerminalWidth();
    }

    public AnsiType getType() {
        return type;
    }

    public AnsiColors getColors() {
        return colors;
    }

    public AnsiMode getMode() {
        return mode;
    }

    public void setMode(AnsiMode mode) {
        ap = mode == AnsiMode.Strip
                ? new AnsiProcessor(out)
                : mode == AnsiMode.Force || processor == null ? new ColorsAnsiProcessor(out, colors) : processor;
        this.mode = mode;
    }

    public boolean isResetAtUninstall() {
        return resetAtUninstall;
    }

    public void setResetAtUninstall(boolean resetAtUninstall) {
        this.resetAtUninstall = resetAtUninstall;