|  | package vendor | 
|  |  | 
|  | // union returns the union of a and b. | 
|  | func union(a, b map[string]bool) map[string]bool { | 
|  | r := make(map[string]bool) | 
|  | for k := range a { | 
|  | r[k] = true | 
|  | } | 
|  | for k := range b { | 
|  | r[k] = true | 
|  | } | 
|  | return r | 
|  | } | 
|  |  | 
|  | // intersection returns the intersection of a and b. | 
|  | func intersection(a, b map[string]bool) map[string]bool { | 
|  | r := make(map[string]bool) | 
|  | for k := range a { | 
|  | if b[k] { | 
|  | r[k] = true | 
|  | } | 
|  | } | 
|  | return r | 
|  | } | 
|  |  | 
|  | // difference returns the symetric difference of a and b. | 
|  | func difference(a, b map[string]bool) map[string]bool { | 
|  | r := make(map[string]bool) | 
|  | for k := range a { | 
|  | if !b[k] { | 
|  | r[k] = true | 
|  | } | 
|  | } | 
|  | for k := range b { | 
|  | if !a[k] { | 
|  | r[k] = true | 
|  | } | 
|  | } | 
|  | return r | 
|  | } | 
|  |  | 
|  | // contains returns true if a contains all the elements in s. | 
|  | func contains(a map[string]bool, s ...string) bool { | 
|  | var r bool | 
|  | for _, e := range s { | 
|  | if !a[e] { | 
|  | return false | 
|  | } | 
|  | r = true | 
|  | } | 
|  | return r | 
|  | } |