mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			548 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			548 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
//  Copyright (c) 2017 Couchbase, Inc.
 | 
						||
//
 | 
						||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						||
// you may not use this file except in compliance with the License.
 | 
						||
// You may obtain a copy of the License at
 | 
						||
//
 | 
						||
// 		http://www.apache.org/licenses/LICENSE-2.0
 | 
						||
//
 | 
						||
// Unless required by applicable law or agreed to in writing, software
 | 
						||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						||
// See the License for the specific language governing permissions and
 | 
						||
// limitations under the License.
 | 
						||
 | 
						||
package vellum
 | 
						||
 | 
						||
const maxCommon = 1<<6 - 1
 | 
						||
 | 
						||
func encodeCommon(in byte) byte {
 | 
						||
	val := byte((int(commonInputs[in]) + 1) % 256)
 | 
						||
	if val > maxCommon {
 | 
						||
		return 0
 | 
						||
	}
 | 
						||
	return val
 | 
						||
}
 | 
						||
 | 
						||
func decodeCommon(in byte) byte {
 | 
						||
	return commonInputsInv[in-1]
 | 
						||
}
 | 
						||
 | 
						||
var commonInputs = []byte{
 | 
						||
	84,  // '\x00'
 | 
						||
	85,  // '\x01'
 | 
						||
	86,  // '\x02'
 | 
						||
	87,  // '\x03'
 | 
						||
	88,  // '\x04'
 | 
						||
	89,  // '\x05'
 | 
						||
	90,  // '\x06'
 | 
						||
	91,  // '\x07'
 | 
						||
	92,  // '\x08'
 | 
						||
	93,  // '\t'
 | 
						||
	94,  // '\n'
 | 
						||
	95,  // '\x0b'
 | 
						||
	96,  // '\x0c'
 | 
						||
	97,  // '\r'
 | 
						||
	98,  // '\x0e'
 | 
						||
	99,  // '\x0f'
 | 
						||
	100, // '\x10'
 | 
						||
	101, // '\x11'
 | 
						||
	102, // '\x12'
 | 
						||
	103, // '\x13'
 | 
						||
	104, // '\x14'
 | 
						||
	105, // '\x15'
 | 
						||
	106, // '\x16'
 | 
						||
	107, // '\x17'
 | 
						||
	108, // '\x18'
 | 
						||
	109, // '\x19'
 | 
						||
	110, // '\x1a'
 | 
						||
	111, // '\x1b'
 | 
						||
	112, // '\x1c'
 | 
						||
	113, // '\x1d'
 | 
						||
	114, // '\x1e'
 | 
						||
	115, // '\x1f'
 | 
						||
	116, // ' '
 | 
						||
	80,  // '!'
 | 
						||
	117, // '"'
 | 
						||
	118, // '#'
 | 
						||
	79,  // '$'
 | 
						||
	39,  // '%'
 | 
						||
	30,  // '&'
 | 
						||
	81,  // "'"
 | 
						||
	75,  // '('
 | 
						||
	74,  // ')'
 | 
						||
	82,  // '*'
 | 
						||
	57,  // '+'
 | 
						||
	66,  // ','
 | 
						||
	16,  // '-'
 | 
						||
	12,  // '.'
 | 
						||
	2,   // '/'
 | 
						||
	19,  // '0'
 | 
						||
	20,  // '1'
 | 
						||
	21,  // '2'
 | 
						||
	27,  // '3'
 | 
						||
	32,  // '4'
 | 
						||
	29,  // '5'
 | 
						||
	35,  // '6'
 | 
						||
	36,  // '7'
 | 
						||
	37,  // '8'
 | 
						||
	34,  // '9'
 | 
						||
	24,  // ':'
 | 
						||
	73,  // ';'
 | 
						||
	119, // '<'
 | 
						||
	23,  // '='
 | 
						||
	120, // '>'
 | 
						||
	40,  // '?'
 | 
						||
	83,  // '@'
 | 
						||
	44,  // 'A'
 | 
						||
	48,  // 'B'
 | 
						||
	42,  // 'C'
 | 
						||
	43,  // 'D'
 | 
						||
	49,  // 'E'
 | 
						||
	46,  // 'F'
 | 
						||
	62,  // 'G'
 | 
						||
	61,  // 'H'
 | 
						||
	47,  // 'I'
 | 
						||
	69,  // 'J'
 | 
						||
	68,  // 'K'
 | 
						||
	58,  // 'L'
 | 
						||
	56,  // 'M'
 | 
						||
	55,  // 'N'
 | 
						||
	59,  // 'O'
 | 
						||
	51,  // 'P'
 | 
						||
	72,  // 'Q'
 | 
						||
	54,  // 'R'
 | 
						||
	45,  // 'S'
 | 
						||
	52,  // 'T'
 | 
						||
	64,  // 'U'
 | 
						||
	65,  // 'V'
 | 
						||
	63,  // 'W'
 | 
						||
	71,  // 'X'
 | 
						||
	67,  // 'Y'
 | 
						||
	70,  // 'Z'
 | 
						||
	77,  // '['
 | 
						||
	121, // '\\'
 | 
						||
	78,  // ']'
 | 
						||
	122, // '^'
 | 
						||
	31,  // '_'
 | 
						||
	123, // '`'
 | 
						||
	4,   // 'a'
 | 
						||
	25,  // 'b'
 | 
						||
	9,   // 'c'
 | 
						||
	17,  // 'd'
 | 
						||
	1,   // 'e'
 | 
						||
	26,  // 'f'
 | 
						||
	22,  // 'g'
 | 
						||
	13,  // 'h'
 | 
						||
	7,   // 'i'
 | 
						||
	50,  // 'j'
 | 
						||
	38,  // 'k'
 | 
						||
	14,  // 'l'
 | 
						||
	15,  // 'm'
 | 
						||
	10,  // 'n'
 | 
						||
	3,   // 'o'
 | 
						||
	8,   // 'p'
 | 
						||
	60,  // 'q'
 | 
						||
	6,   // 'r'
 | 
						||
	5,   // 's'
 | 
						||
	0,   // 't'
 | 
						||
	18,  // 'u'
 | 
						||
	33,  // 'v'
 | 
						||
	11,  // 'w'
 | 
						||
	41,  // 'x'
 | 
						||
	28,  // 'y'
 | 
						||
	53,  // 'z'
 | 
						||
	124, // '{'
 | 
						||
	125, // '|'
 | 
						||
	126, // '}'
 | 
						||
	76,  // '~'
 | 
						||
	127, // '\x7f'
 | 
						||
	128, // '\x80'
 | 
						||
	129, // '\x81'
 | 
						||
	130, // '\x82'
 | 
						||
	131, // '\x83'
 | 
						||
	132, // '\x84'
 | 
						||
	133, // '\x85'
 | 
						||
	134, // '\x86'
 | 
						||
	135, // '\x87'
 | 
						||
	136, // '\x88'
 | 
						||
	137, // '\x89'
 | 
						||
	138, // '\x8a'
 | 
						||
	139, // '\x8b'
 | 
						||
	140, // '\x8c'
 | 
						||
	141, // '\x8d'
 | 
						||
	142, // '\x8e'
 | 
						||
	143, // '\x8f'
 | 
						||
	144, // '\x90'
 | 
						||
	145, // '\x91'
 | 
						||
	146, // '\x92'
 | 
						||
	147, // '\x93'
 | 
						||
	148, // '\x94'
 | 
						||
	149, // '\x95'
 | 
						||
	150, // '\x96'
 | 
						||
	151, // '\x97'
 | 
						||
	152, // '\x98'
 | 
						||
	153, // '\x99'
 | 
						||
	154, // '\x9a'
 | 
						||
	155, // '\x9b'
 | 
						||
	156, // '\x9c'
 | 
						||
	157, // '\x9d'
 | 
						||
	158, // '\x9e'
 | 
						||
	159, // '\x9f'
 | 
						||
	160, // '\xa0'
 | 
						||
	161, // '¡'
 | 
						||
	162, // '¢'
 | 
						||
	163, // '£'
 | 
						||
	164, // '¤'
 | 
						||
	165, // '¥'
 | 
						||
	166, // '¦'
 | 
						||
	167, // '§'
 | 
						||
	168, // '¨'
 | 
						||
	169, // '©'
 | 
						||
	170, // 'ª'
 | 
						||
	171, // '«'
 | 
						||
	172, // '¬'
 | 
						||
	173, // '\xad'
 | 
						||
	174, // '®'
 | 
						||
	175, // '¯'
 | 
						||
	176, // '°'
 | 
						||
	177, // '±'
 | 
						||
	178, // '²'
 | 
						||
	179, // '³'
 | 
						||
	180, // '´'
 | 
						||
	181, // 'µ'
 | 
						||
	182, // '¶'
 | 
						||
	183, // '·'
 | 
						||
	184, // '¸'
 | 
						||
	185, // '¹'
 | 
						||
	186, // 'º'
 | 
						||
	187, // '»'
 | 
						||
	188, // '¼'
 | 
						||
	189, // '½'
 | 
						||
	190, // '¾'
 | 
						||
	191, // '¿'
 | 
						||
	192, // 'À'
 | 
						||
	193, // 'Á'
 | 
						||
	194, // 'Â'
 | 
						||
	195, // 'Ã'
 | 
						||
	196, // 'Ä'
 | 
						||
	197, // 'Å'
 | 
						||
	198, // 'Æ'
 | 
						||
	199, // 'Ç'
 | 
						||
	200, // 'È'
 | 
						||
	201, // 'É'
 | 
						||
	202, // 'Ê'
 | 
						||
	203, // 'Ë'
 | 
						||
	204, // 'Ì'
 | 
						||
	205, // 'Í'
 | 
						||
	206, // 'Î'
 | 
						||
	207, // 'Ï'
 | 
						||
	208, // 'Ð'
 | 
						||
	209, // 'Ñ'
 | 
						||
	210, // 'Ò'
 | 
						||
	211, // 'Ó'
 | 
						||
	212, // 'Ô'
 | 
						||
	213, // 'Õ'
 | 
						||
	214, // 'Ö'
 | 
						||
	215, // '×'
 | 
						||
	216, // 'Ø'
 | 
						||
	217, // 'Ù'
 | 
						||
	218, // 'Ú'
 | 
						||
	219, // 'Û'
 | 
						||
	220, // 'Ü'
 | 
						||
	221, // 'Ý'
 | 
						||
	222, // 'Þ'
 | 
						||
	223, // 'ß'
 | 
						||
	224, // 'à'
 | 
						||
	225, // 'á'
 | 
						||
	226, // 'â'
 | 
						||
	227, // 'ã'
 | 
						||
	228, // 'ä'
 | 
						||
	229, // 'å'
 | 
						||
	230, // 'æ'
 | 
						||
	231, // 'ç'
 | 
						||
	232, // 'è'
 | 
						||
	233, // 'é'
 | 
						||
	234, // 'ê'
 | 
						||
	235, // 'ë'
 | 
						||
	236, // 'ì'
 | 
						||
	237, // 'í'
 | 
						||
	238, // 'î'
 | 
						||
	239, // 'ï'
 | 
						||
	240, // 'ð'
 | 
						||
	241, // 'ñ'
 | 
						||
	242, // 'ò'
 | 
						||
	243, // 'ó'
 | 
						||
	244, // 'ô'
 | 
						||
	245, // 'õ'
 | 
						||
	246, // 'ö'
 | 
						||
	247, // '÷'
 | 
						||
	248, // 'ø'
 | 
						||
	249, // 'ù'
 | 
						||
	250, // 'ú'
 | 
						||
	251, // 'û'
 | 
						||
	252, // 'ü'
 | 
						||
	253, // 'ý'
 | 
						||
	254, // 'þ'
 | 
						||
	255, // 'ÿ'
 | 
						||
}
 | 
						||
 | 
						||
var commonInputsInv = []byte{
 | 
						||
	't',
 | 
						||
	'e',
 | 
						||
	'/',
 | 
						||
	'o',
 | 
						||
	'a',
 | 
						||
	's',
 | 
						||
	'r',
 | 
						||
	'i',
 | 
						||
	'p',
 | 
						||
	'c',
 | 
						||
	'n',
 | 
						||
	'w',
 | 
						||
	'.',
 | 
						||
	'h',
 | 
						||
	'l',
 | 
						||
	'm',
 | 
						||
	'-',
 | 
						||
	'd',
 | 
						||
	'u',
 | 
						||
	'0',
 | 
						||
	'1',
 | 
						||
	'2',
 | 
						||
	'g',
 | 
						||
	'=',
 | 
						||
	':',
 | 
						||
	'b',
 | 
						||
	'f',
 | 
						||
	'3',
 | 
						||
	'y',
 | 
						||
	'5',
 | 
						||
	'&',
 | 
						||
	'_',
 | 
						||
	'4',
 | 
						||
	'v',
 | 
						||
	'9',
 | 
						||
	'6',
 | 
						||
	'7',
 | 
						||
	'8',
 | 
						||
	'k',
 | 
						||
	'%',
 | 
						||
	'?',
 | 
						||
	'x',
 | 
						||
	'C',
 | 
						||
	'D',
 | 
						||
	'A',
 | 
						||
	'S',
 | 
						||
	'F',
 | 
						||
	'I',
 | 
						||
	'B',
 | 
						||
	'E',
 | 
						||
	'j',
 | 
						||
	'P',
 | 
						||
	'T',
 | 
						||
	'z',
 | 
						||
	'R',
 | 
						||
	'N',
 | 
						||
	'M',
 | 
						||
	'+',
 | 
						||
	'L',
 | 
						||
	'O',
 | 
						||
	'q',
 | 
						||
	'H',
 | 
						||
	'G',
 | 
						||
	'W',
 | 
						||
	'U',
 | 
						||
	'V',
 | 
						||
	',',
 | 
						||
	'Y',
 | 
						||
	'K',
 | 
						||
	'J',
 | 
						||
	'Z',
 | 
						||
	'X',
 | 
						||
	'Q',
 | 
						||
	';',
 | 
						||
	')',
 | 
						||
	'(',
 | 
						||
	'~',
 | 
						||
	'[',
 | 
						||
	']',
 | 
						||
	'$',
 | 
						||
	'!',
 | 
						||
	'\'',
 | 
						||
	'*',
 | 
						||
	'@',
 | 
						||
	'\x00',
 | 
						||
	'\x01',
 | 
						||
	'\x02',
 | 
						||
	'\x03',
 | 
						||
	'\x04',
 | 
						||
	'\x05',
 | 
						||
	'\x06',
 | 
						||
	'\x07',
 | 
						||
	'\x08',
 | 
						||
	'\t',
 | 
						||
	'\n',
 | 
						||
	'\x0b',
 | 
						||
	'\x0c',
 | 
						||
	'\r',
 | 
						||
	'\x0e',
 | 
						||
	'\x0f',
 | 
						||
	'\x10',
 | 
						||
	'\x11',
 | 
						||
	'\x12',
 | 
						||
	'\x13',
 | 
						||
	'\x14',
 | 
						||
	'\x15',
 | 
						||
	'\x16',
 | 
						||
	'\x17',
 | 
						||
	'\x18',
 | 
						||
	'\x19',
 | 
						||
	'\x1a',
 | 
						||
	'\x1b',
 | 
						||
	'\x1c',
 | 
						||
	'\x1d',
 | 
						||
	'\x1e',
 | 
						||
	'\x1f',
 | 
						||
	' ',
 | 
						||
	'"',
 | 
						||
	'#',
 | 
						||
	'<',
 | 
						||
	'>',
 | 
						||
	'\\',
 | 
						||
	'^',
 | 
						||
	'`',
 | 
						||
	'{',
 | 
						||
	'|',
 | 
						||
	'}',
 | 
						||
	'\x7f',
 | 
						||
	'\x80',
 | 
						||
	'\x81',
 | 
						||
	'\x82',
 | 
						||
	'\x83',
 | 
						||
	'\x84',
 | 
						||
	'\x85',
 | 
						||
	'\x86',
 | 
						||
	'\x87',
 | 
						||
	'\x88',
 | 
						||
	'\x89',
 | 
						||
	'\x8a',
 | 
						||
	'\x8b',
 | 
						||
	'\x8c',
 | 
						||
	'\x8d',
 | 
						||
	'\x8e',
 | 
						||
	'\x8f',
 | 
						||
	'\x90',
 | 
						||
	'\x91',
 | 
						||
	'\x92',
 | 
						||
	'\x93',
 | 
						||
	'\x94',
 | 
						||
	'\x95',
 | 
						||
	'\x96',
 | 
						||
	'\x97',
 | 
						||
	'\x98',
 | 
						||
	'\x99',
 | 
						||
	'\x9a',
 | 
						||
	'\x9b',
 | 
						||
	'\x9c',
 | 
						||
	'\x9d',
 | 
						||
	'\x9e',
 | 
						||
	'\x9f',
 | 
						||
	'\xa0',
 | 
						||
	'\xa1',
 | 
						||
	'\xa2',
 | 
						||
	'\xa3',
 | 
						||
	'\xa4',
 | 
						||
	'\xa5',
 | 
						||
	'\xa6',
 | 
						||
	'\xa7',
 | 
						||
	'\xa8',
 | 
						||
	'\xa9',
 | 
						||
	'\xaa',
 | 
						||
	'\xab',
 | 
						||
	'\xac',
 | 
						||
	'\xad',
 | 
						||
	'\xae',
 | 
						||
	'\xaf',
 | 
						||
	'\xb0',
 | 
						||
	'\xb1',
 | 
						||
	'\xb2',
 | 
						||
	'\xb3',
 | 
						||
	'\xb4',
 | 
						||
	'\xb5',
 | 
						||
	'\xb6',
 | 
						||
	'\xb7',
 | 
						||
	'\xb8',
 | 
						||
	'\xb9',
 | 
						||
	'\xba',
 | 
						||
	'\xbb',
 | 
						||
	'\xbc',
 | 
						||
	'\xbd',
 | 
						||
	'\xbe',
 | 
						||
	'\xbf',
 | 
						||
	'\xc0',
 | 
						||
	'\xc1',
 | 
						||
	'\xc2',
 | 
						||
	'\xc3',
 | 
						||
	'\xc4',
 | 
						||
	'\xc5',
 | 
						||
	'\xc6',
 | 
						||
	'\xc7',
 | 
						||
	'\xc8',
 | 
						||
	'\xc9',
 | 
						||
	'\xca',
 | 
						||
	'\xcb',
 | 
						||
	'\xcc',
 | 
						||
	'\xcd',
 | 
						||
	'\xce',
 | 
						||
	'\xcf',
 | 
						||
	'\xd0',
 | 
						||
	'\xd1',
 | 
						||
	'\xd2',
 | 
						||
	'\xd3',
 | 
						||
	'\xd4',
 | 
						||
	'\xd5',
 | 
						||
	'\xd6',
 | 
						||
	'\xd7',
 | 
						||
	'\xd8',
 | 
						||
	'\xd9',
 | 
						||
	'\xda',
 | 
						||
	'\xdb',
 | 
						||
	'\xdc',
 | 
						||
	'\xdd',
 | 
						||
	'\xde',
 | 
						||
	'\xdf',
 | 
						||
	'\xe0',
 | 
						||
	'\xe1',
 | 
						||
	'\xe2',
 | 
						||
	'\xe3',
 | 
						||
	'\xe4',
 | 
						||
	'\xe5',
 | 
						||
	'\xe6',
 | 
						||
	'\xe7',
 | 
						||
	'\xe8',
 | 
						||
	'\xe9',
 | 
						||
	'\xea',
 | 
						||
	'\xeb',
 | 
						||
	'\xec',
 | 
						||
	'\xed',
 | 
						||
	'\xee',
 | 
						||
	'\xef',
 | 
						||
	'\xf0',
 | 
						||
	'\xf1',
 | 
						||
	'\xf2',
 | 
						||
	'\xf3',
 | 
						||
	'\xf4',
 | 
						||
	'\xf5',
 | 
						||
	'\xf6',
 | 
						||
	'\xf7',
 | 
						||
	'\xf8',
 | 
						||
	'\xf9',
 | 
						||
	'\xfa',
 | 
						||
	'\xfb',
 | 
						||
	'\xfc',
 | 
						||
	'\xfd',
 | 
						||
	'\xfe',
 | 
						||
	'\xff',
 | 
						||
}
 |