package common

import (
	
	
	
)

type SuffixMatcher struct {
	string
}

func ( *SuffixMatcher) ( ...rune) {
	if strings.Contains(.string, "*") || strings.Contains(string(), "*") {
		.string = "*"
		return
	}

	 := []rune(.string)
	for ,  := range  {
		if !strings.Contains(.string, string()) {
			 = append(, )
		}
	}
	sort.Sort(ByRune())
	.string = string()
}

func ( *SuffixMatcher) ( SuffixMatcher) {
	for ,  := range .string {
		.Add()
	}
}

func ( SuffixMatcher) ( string) bool {
	for ,  := range .string {
		if  == '*' || strings.HasSuffix(, string()) {
			return true
		}
	}
	return false
}

func ( SuffixMatcher) () ([]byte, error) {
	return json.Marshal(.string)
}

func ( *SuffixMatcher) ( []byte) ( error) {
	if  = json.Unmarshal(, &.string);  != nil {
		return 
	}
	return
}

type ByRune []rune

func ( ByRune) () int           { return len() }
func ( ByRune) (,  int)      { [], [] = [], [] }
func ( ByRune) (,  int) bool { return [] < [] }