// Path: BiliLiveLib/src/main/java/charlie/bililivelib/internalutil/OCRUtil.java
// public class OCRUtil {
//     public static final int SINGLE_LINE_MODE = 7;
//     private Tesseract tesseract;
// 
//     public OCRUtil() {
//         tesseract = new Tesseract();
//         tesseract.setLanguage("captcha");
//         tesseract.setPageSegMode(SINGLE_LINE_MODE);
//     }
// 
//     @Contract(pure = true)
//     public String ocrCalcCaptcha(@NotNull BufferedImage image) {
//         try {
//             return tesseract.doOCR(image);
//         } catch (TesseractException e) {
//             return null;
//         }
//     }
// }


import charlie.bililivelib.internalutil.OCRUtil;
import com.gargoylesoftware.htmlunit.Cache;
package charlie.bililivelib;


/**
 * 本单例类定义了一组在整个应用程序中的*可选*全局变量，这些变量仅用于Library内部使用且随时可能修改，请勿随意访问该类中的对象。
 *
 * @author Charlie Jiang
 * @since rv1
 */
public class OptionalGlobals {
    private static OptionalGlobals instance;

    private ThreadLocal<Cache> htmlUnitCache;
// Path: BiliLiveLib/src/main/java/charlie/bililivelib/internalutil/OCRUtil.java
// public class OCRUtil {
//     public static final int SINGLE_LINE_MODE = 7;
//     private Tesseract tesseract;
// 
//     public OCRUtil() {
//         tesseract = new Tesseract();
//         tesseract.setLanguage("captcha");
//         tesseract.setPageSegMode(SINGLE_LINE_MODE);
//     }
// 
//     @Contract(pure = true)
//     public String ocrCalcCaptcha(@NotNull BufferedImage image) {
//         try {
//             return tesseract.doOCR(image);
//         } catch (TesseractException e) {
//             return null;
//         }
//     }
// }


// Path: BiliLiveLib/src/main/java/charlie/bililivelib/OptionalGlobals.java
import charlie.bililivelib.internalutil.OCRUtil;
import com.gargoylesoftware.htmlunit.Cache;

package charlie.bililivelib;


/**
 * 本单例类定义了一组在整个应用程序中的*可选*全局变量，这些变量仅用于Library内部使用且随时可能修改，请勿随意访问该类中的对象。
 *
 * @author Charlie Jiang
 * @since rv1
 */
public class OptionalGlobals {
    private static OptionalGlobals instance;

    private ThreadLocal<Cache> htmlUnitCache;
    private OCRUtil ocrUtil;