deps/encoding/encoding.js
function EUCJPDecoder(options) {
  var fatal = options.fatal;
  var /** @type {number} */ eucjp_first = 0x00,
      /** @type {number} */ eucjp_second = 0x00;
  /**
   * @param {ByteInputStream} byte_pointer The byte stream to decode.
   * @return {?number} The next code point decoded, or null if not enough
   *     data exists in the input stream to decode a complete code point.
   */
  this.decode = function(byte_pointer) {
    var bite = byte_pointer.get();
    if (bite === EOF_byte) {
      if (eucjp_first === 0x00 && eucjp_second === 0x00) {
        return EOF_code_point;
      }
      eucjp_first = 0x00;
      eucjp_second = 0x00;
      return decoderError(fatal);
    }
    byte_pointer.offset(1);

    var lead, code_point;
    if (eucjp_second !== 0x00) {
      lead = eucjp_second;
      eucjp_second = 0x00;
      code_point = null;
      if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
        code_point = indexCodePointFor((lead - 0xA1) * 94 + bite - 0xA1,
                                       indexes['jis0212']);
      }
      if (!inRange(bite, 0xA1, 0xFE)) {
        byte_pointer.offset(-1);
      }
      if (code_point === null) {
        return decoderError(fatal);
      }
      return code_point;
    }
    if (eucjp_first === 0x8E && inRange(bite, 0xA1, 0xDF)) {
      eucjp_first = 0x00;
      return 0xFF61 + bite - 0xA1;
    }
    if (eucjp_first === 0x8F && inRange(bite, 0xA1, 0xFE)) {
      eucjp_first = 0x00;
      eucjp_second = bite;
      return null;
    }
    if (eucjp_first !== 0x00) {
      lead = eucjp_first;
      eucjp_first = 0x00;
      code_point = null;
      if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
        code_point = indexCodePointFor((lead - 0xA1) * 94 + bite - 0xA1,
                                       indexes['jis0208']);
      }
      if (!inRange(bite, 0xA1, 0xFE)) {
        byte_pointer.offset(-1);
      }
      if (code_point === null) {
        return decoderError(fatal);
      }
      return code_point;
    }
    if (inRange(bite, 0x00, 0x7F)) {
      return bite;
    }
    if (bite === 0x8E || bite === 0x8F || (inRange(bite, 0xA1, 0xFE))) {
      eucjp_first = bite;
      return null;
    }
    return decoderError(fatal);
  };
}
function EUCJPDecoder(options) {
  var fatal = options.fatal;
  var /** @type {number} */ eucjp_first = 0x00,
      /** @type {number} */ eucjp_second = 0x00;
  /**
   * @param {ByteInputStream} byte_pointer The byte stream to decode.
   * @return {?number} The next code point decoded, or null if not enough
   *     data exists in the input stream to decode a complete code point.
   */
  this.decode = function(byte_pointer) {
    var bite = byte_pointer.get();
    if (bite === EOF_byte) {
      if (eucjp_first === 0x00 && eucjp_second === 0x00) {
        return EOF_code_point;
      }
      eucjp_first = 0x00;
      eucjp_second = 0x00;
      return decoderError(fatal);
    }
    byte_pointer.offset(1);

    var lead, code_point;
    if (eucjp_second !== 0x00) {
      lead = eucjp_second;
      eucjp_second = 0x00;
      code_point = null;
      if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
        code_point = indexCodePointFor((lead - 0xA1) * 94 + bite - 0xA1,
                                       indexes['jis0212']);
      }
      if (!inRange(bite, 0xA1, 0xFE)) {
        byte_pointer.offset(-1);
      }
      if (code_point === null) {
        return decoderError(fatal);
      }
      return code_point;
    }
    if (eucjp_first === 0x8E && inRange(bite, 0xA1, 0xDF)) {
      eucjp_first = 0x00;
      return 0xFF61 + bite - 0xA1;
    }
    if (eucjp_first === 0x8F && inRange(bite, 0xA1, 0xFE)) {
      eucjp_first = 0x00;
      eucjp_second = bite;
      return null;
    }
    if (eucjp_first !== 0x00) {
      lead = eucjp_first;
      eucjp_first = 0x00;
      code_point = null;
      if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
        code_point = indexCodePointFor((lead - 0xA1) * 94 + bite - 0xA1,
                                       indexes['jis0208']);
      }
      if (!inRange(bite, 0xA1, 0xFE)) {
        byte_pointer.offset(-1);
      }
      if (code_point === null) {
        return decoderError(fatal);
      }
      return code_point;
    }
    if (inRange(bite, 0x00, 0x7F)) {
      return bite;
    }
    if (bite === 0x8E || bite === 0x8F || (inRange(bite, 0xA1, 0xFE))) {
      eucjp_first = bite;
      return null;
    }
    return decoderError(fatal);
  };
}
function EUCJPDecoder ( options ) { var fatal = options . fatal ; var /** @type {number} */ eucjp_first = 0x00 , /** @type {number} */ eucjp_second = 0x00 ; /**
   * @param {ByteInputStream} byte_pointer The byte stream to decode.
   * @return {?number} The next code point decoded, or null if not enough
   *     data exists in the input stream to decode a complete code point.
   */ this . decode = function ( byte_pointer ) { var bite = byte_pointer . get ( ) ; if ( bite === EOF_byte ) { if ( eucjp_first === 0x00 && eucjp_second === 0x00 ) { return EOF_code_point ; } eucjp_first = 0x00 ; eucjp_second = 0x00 ; return decoderError ( fatal ) ; } byte_pointer . offset ( 1 ) ; var lead , code_point ; if ( eucjp_second !== 0x00 ) { lead = eucjp_second ; eucjp_second = 0x00 ; code_point = null ; if ( inRange ( lead , 0xA1 , 0xFE ) && inRange ( bite , 0xA1 , 0xFE ) ) { code_point = indexCodePointFor ( ( lead - 0xA1 ) * 94 + bite - 0xA1 , indexes [ 'jis0212' ] ) ; } if ( ! inRange ( bite , 0xA1 , 0xFE ) ) { byte_pointer . offset ( - 1 ) ; } if ( code_point === null ) { return decoderError ( fatal ) ; } return code_point ; } if ( eucjp_first === 0x8E && inRange ( bite , 0xA1 , 0xDF ) ) { eucjp_first = 0x00 ; return 0xFF61 + bite - 0xA1 ; } if ( eucjp_first === 0x8F && inRange ( bite , 0xA1 , 0xFE ) ) { eucjp_first = 0x00 ; eucjp_second = bite ; return null ; } if ( eucjp_first !== 0x00 ) { lead = eucjp_first ; eucjp_first = 0x00 ; code_point = null ; if ( inRange ( lead , 0xA1 , 0xFE ) && inRange ( bite , 0xA1 , 0xFE ) ) { code_point = indexCodePointFor ( ( lead - 0xA1 ) * 94 + bite - 0xA1 , indexes [ 'jis0208' ] ) ; } if ( ! inRange ( bite , 0xA1 , 0xFE ) ) { byte_pointer . offset ( - 1 ) ; } if ( code_point === null ) { return decoderError ( fatal ) ; } return code_point ; } if ( inRange ( bite , 0x00 , 0x7F ) ) { return bite ; } if ( bite === 0x8E || bite === 0x8F || ( inRange ( bite , 0xA1 , 0xFE ) ) ) { eucjp_first = bite ; return null ; } return decoderError ( fatal ) ; } ; }
12.1 euc.jp 
@constructor
@param {{fatal: boolean}} options
12 . 1 euc . jp