func escape(s string) string {
	var count int
	for i := 0; i < len(s); i++ {
		if (escaped[s[i]>>6]>>(s[i]&0x3f))&1 == 1 {
			count++
		}
	}
	if count == 0 {
		return s
	}
	buf := make([]byte, len(s)+2*count)
	j := 0
	for i := 0; i < len(s); i++ {
		if (escaped[s[i]>>6]>>(s[i]&0x3f))&1 == 1 {
			buf[j] = '%'
			buf[j+1] = "0123456789ABCDEF"[s[i]>>4]
			buf[j+2] = "0123456789ABCDEF"[s[i]&0xf]
			j += 3
			continue
		}
		buf[j] = s[i]
		j++
	}
	return string(buf)
}
// escape percent encodes s as defined in
// http://tools.ietf.org/html/rfc5849#section-3.6.
//
// Note: this is slightly different from the output of url.QueryEscape.


this is slightly different from the output of url.QueryEscape.
// escape percent encodes s as defined in // http : // tools . ietf . org / html / rfc5849#section - 3 . 6 . // // Note : this is slightly different from the output of url . QueryEscape .
func escape(s string) string {
	var count int
	for i := 0; i < len(s); i++ {
		if (escaped[s[i]>>6]>>(s[i]&0x3f))&1 == 1 {
			count++
		}
	}
	if count == 0 {
		return s
	}
	buf := make([]byte, len(s)+2*count)
	j := 0
	for i := 0; i < len(s); i++ {
		if (escaped[s[i]>>6]>>(s[i]&0x3f))&1 == 1 {
			buf[j] = '%'
			buf[j+1] = "0123456789ABCDEF"[s[i]>>4]
			buf[j+2] = "0123456789ABCDEF"[s[i]&0xf]
			j += 3
			continue
		}
		buf[j] = s[i]
		j++
	}
	return string(buf)
}
func escape ( s string ) string { var count int for i := 0 ; i < len ( s ) ; i ++ { if ( escaped [ s [ i ] >> 6 ] >> ( s [ i ] & 0x3f ) ) & 1 == 1 { count ++ } } if count == 0 { return s } buf := make ( [ ] byte , len ( s ) + 2 * count ) j := 0 for i := 0 ; i < len ( s ) ; i ++ { if ( escaped [ s [ i ] >> 6 ] >> ( s [ i ] & 0x3f ) ) & 1 == 1 { buf [ j ] = '%' buf [ j + 1 ] = " " [ s [ i ] >> 4 ] buf [ j + 2 ] = " " [ s [ i ] & 0xf ] j += 3 continue } buf [ j ] = s [ i ] j ++ } return string ( buf ) }