tokyomessenger 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/COPYING +504 -0
  2. data/README.rdoc +224 -0
  3. data/Rakefile +72 -0
  4. data/benchmarks/balancer.rb +101 -0
  5. data/benchmarks/bulk_db.rb +92 -0
  6. data/benchmarks/bulk_table.rb +104 -0
  7. data/benchmarks/db.rb +131 -0
  8. data/benchmarks/table.rb +186 -0
  9. data/ext/a.h +496 -0
  10. data/ext/extconf.rb +27 -0
  11. data/ext/md5.c +381 -0
  12. data/ext/md5.h +101 -0
  13. data/ext/tc_myconf.c +493 -0
  14. data/ext/tc_myconf.h +543 -0
  15. data/ext/tcadb.c +4339 -0
  16. data/ext/tcadb.h +533 -0
  17. data/ext/tcbdb.c +4180 -0
  18. data/ext/tcbdb.h +1086 -0
  19. data/ext/tcfdb.c +2746 -0
  20. data/ext/tcfdb.h +842 -0
  21. data/ext/tchdb.c +5153 -0
  22. data/ext/tchdb.h +856 -0
  23. data/ext/tcrdb.c +2637 -0
  24. data/ext/tcrdb.h +785 -0
  25. data/ext/tctdb.c +6199 -0
  26. data/ext/tctdb.h +1070 -0
  27. data/ext/tcutil.c +10528 -0
  28. data/ext/tcutil.h +4166 -0
  29. data/ext/tokyo_messenger.c +147 -0
  30. data/ext/tokyo_messenger.h +49 -0
  31. data/ext/tokyo_messenger_db.c +227 -0
  32. data/ext/tokyo_messenger_db.h +8 -0
  33. data/ext/tokyo_messenger_module.c +453 -0
  34. data/ext/tokyo_messenger_module.h +10 -0
  35. data/ext/tokyo_messenger_query.c +226 -0
  36. data/ext/tokyo_messenger_query.h +9 -0
  37. data/ext/tokyo_messenger_table.c +319 -0
  38. data/ext/tokyo_messenger_table.h +8 -0
  39. data/ext/tt_myconf.c +169 -0
  40. data/ext/tt_myconf.h +408 -0
  41. data/ext/ttutil.c +1509 -0
  42. data/ext/ttutil.h +480 -0
  43. data/lib/tokyo_messenger/balancer.rb +188 -0
  44. data/spec/ext.lua +4 -0
  45. data/spec/plu_db.rb +538 -0
  46. data/spec/spec.rb +1 -0
  47. data/spec/spec_base.rb +17 -0
  48. data/spec/start_tyrants.sh +36 -0
  49. data/spec/stop_tyrants.sh +9 -0
  50. data/spec/tokyo_tyrant_balancer_db_spec.rb +160 -0
  51. data/spec/tokyo_tyrant_balancer_table_spec.rb +177 -0
  52. data/spec/tokyo_tyrant_query_spec.rb +159 -0
  53. data/spec/tokyo_tyrant_spec.rb +254 -0
  54. data/spec/tokyo_tyrant_table_spec.rb +301 -0
  55. metadata +117 -0
@@ -0,0 +1,188 @@
1
+ require 'tokyo_messenger'
2
+ require 'fast_hash_ring'
3
+
4
+ module TokyoMessenger
5
+ module Balancer
6
+ class Base
7
+ def initialize(servers = [], weights = {})
8
+ servers.collect! do |server|
9
+ host, port = server.split(':')
10
+ klass.new(host, port.to_i)
11
+ end
12
+ @servers = servers
13
+ # @ring = HashRing.new(servers, weights)
14
+ @ring = FastHashRing.new(servers, weights)
15
+ end
16
+
17
+ def ring
18
+ @ring
19
+ end
20
+
21
+ def servers
22
+ @servers
23
+ end
24
+
25
+ def db_for_key(key)
26
+ ring.get_node(key)
27
+ end
28
+
29
+ # Delegate Methods
30
+ def get(key)
31
+ db = db_for_key(key)
32
+ db.get(key)
33
+ end
34
+ alias :[] :get
35
+
36
+ def add_int(key, i = 1)
37
+ db = db_for_key(key)
38
+ db.add_int(key, i)
39
+ end
40
+ alias :addint :add_int
41
+ alias :increment :add_int
42
+
43
+ def get_int(key)
44
+ db = db_for_key(key)
45
+ db.get_int(key)
46
+ end
47
+
48
+ def add_double(key, i = 1.0)
49
+ db = db_for_key(key)
50
+ db.add_double(key, i)
51
+ end
52
+ alias :adddouble :add_double
53
+
54
+ def get_double(key)
55
+ db = db_for_key(key)
56
+ db.get_double(key)
57
+ end
58
+
59
+ def put(key, value)
60
+ db = db_for_key(key)
61
+ db.put(key, value)
62
+ end
63
+ alias :[]= :put
64
+
65
+ def putkeep(key, value)
66
+ db = db_for_key(key)
67
+ db.putkeep(key, value)
68
+ end
69
+
70
+ def putcat(key, value)
71
+ db = db_for_key(key)
72
+ db.putcat(key, value)
73
+ end
74
+
75
+ def putshl(key, value, width)
76
+ db = db_for_key(key)
77
+ db.putshl(key, value, width)
78
+ end
79
+
80
+ def putnr(key, value)
81
+ db = db_for_key(key)
82
+ db.putnr(key, value)
83
+ end
84
+
85
+ def vsiz(key)
86
+ db = db_for_key(key)
87
+ db.vsiz(key)
88
+ end
89
+
90
+ def fetch(key, &block)
91
+ db = db_for_key(key)
92
+ db.fetch(key, &block)
93
+ end
94
+
95
+ def out(key)
96
+ db = db_for_key(key)
97
+ db.out(key)
98
+ end
99
+ alias :delete :out
100
+
101
+ # Aggregate Methods
102
+ def close
103
+ @servers.all?{ |server| server.close }
104
+ end
105
+
106
+ def rnum
107
+ @servers.collect{ |server| server.rnum }.inject(nil){ |sum,x| sum ? sum+x : x }
108
+ end
109
+ alias :count :rnum
110
+ alias :size :rnum
111
+ alias :length :rnum
112
+
113
+ def empty?
114
+ @servers.all?{ |server| server.empty? }
115
+ end
116
+
117
+ def vanish
118
+ @servers.all?{ |server| server.vanish }
119
+ end
120
+ alias :clear :vanish
121
+
122
+ def sync
123
+ @servers.each{ |server| server.sync }
124
+ end
125
+
126
+ def optimize(*args)
127
+ @servers.all?{ |server| server.optimize(*args) }
128
+ end
129
+
130
+ def check(key)
131
+ @servers.any?{ |server| server.check(key) }
132
+ end
133
+ alias :has_key? :check
134
+ alias :key? :check
135
+ alias :include? :check
136
+ alias :member? :check
137
+
138
+ def set_index(name, type)
139
+ @servers.all?{ |server| server.set_index(name, type) }
140
+ end
141
+
142
+ def fwmkeys(prefix, max = -1)
143
+ @servers.collect{ |server| server.fwmkeys(prefix, max) }.flatten
144
+ end
145
+
146
+ def delete_keys_with_prefix(prefix, max = -1)
147
+ @servers.each{ |server| server.delete_keys_with_prefix(prefix, max) }
148
+ nil
149
+ end
150
+ alias :dfwmkeys :delete_keys_with_prefix
151
+
152
+ def keys
153
+ @servers.collect{ |server| server.keys }.flatten.uniq
154
+ end
155
+
156
+ def values
157
+ @servers.collect{ |server| server.values }.flatten.uniq
158
+ end
159
+ end
160
+ end
161
+ end
162
+
163
+ module TokyoMessenger
164
+ module Balancer
165
+ class DB < Base
166
+ def klass
167
+ TokyoMessenger::DB
168
+ end
169
+ end
170
+ end
171
+ end
172
+
173
+ module TokyoMessenger
174
+ module Balancer
175
+ class Table < Base
176
+ def klass
177
+ TokyoMessenger::Table
178
+ end
179
+
180
+ def find(&block)
181
+ queries = @servers.collect{ |server|
182
+ server.prepare_query(&block)
183
+ }
184
+ TokyoMessenger::Query.parallel_search(*queries)
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,4 @@
1
+ -- echo back the key and the value
2
+ function echo(key, value)
3
+ return key .. "\t" .. value
4
+ end
@@ -0,0 +1,538 @@
1
+ $codes = {
2
+ '3000' => { :code => '3000', :type => 'Apple', :variety => 'Alkmene' },
3
+ '3001' => { :code => '3001', :type => 'Apple', :variety => 'Aurora / Southern Rose, small' },
4
+ '3002' => { :code => '3002', :type => 'Apple', :variety => 'Cantared' },
5
+ '3003' => { :code => '3003', :type => 'Apple', :variety => 'D\'Estivale' },
6
+ '3004' => { :code => '3004', :type => 'Apple', :variety => 'Discovery' },
7
+ '3005' => { :code => '3005', :type => 'Apple', :variety => 'Golden Delicious Blush' },
8
+ '3006' => { :code => '3006', :type => 'Apple', :variety => 'Ingrid Marie' },
9
+ '3007' => { :code => '3007', :type => 'Apple', :variety => 'Lochbuie' },
10
+ '3008' => { :code => '3008', :type => 'Apple', :variety => 'Rubinette' },
11
+ '3009' => { :code => '3009', :type => 'Apple', :variety => 'Russet' },
12
+ '3011' => { :code => '3011', :type => 'Apple', :variety => 'Worcester' },
13
+ '3012' => { :code => '3012', :type => 'Pear', :variety => 'Abate Fetel' },
14
+ '3013' => { :code => '3013', :type => 'Pear', :variety => 'Beurre Hardy' },
15
+ '3014' => { :code => '3014', :type => 'Pear', :variety => 'Bon Rouge' },
16
+ '3015' => { :code => '3015', :type => 'Pear', :variety => 'Clara Friis' },
17
+ '3016' => { :code => '3016', :type => 'Pear', :variety => 'Concorde' },
18
+ '3017' => { :code => '3017', :type => 'Pear', :variety => 'Conference' },
19
+ '3018' => { :code => '3018', :type => 'Pear', :variety => 'Durondeau' },
20
+ '3019' => { :code => '3019', :type => 'Pear', :variety => 'Flamingo' },
21
+ '3020' => { :code => '3020', :type => 'Pear', :variety => 'General Leclerc' },
22
+ '3021' => { :code => '3021', :type => 'Pear', :variety => 'Guyot' },
23
+ '3022' => { :code => '3022', :type => 'Pear', :variety => 'Josephine' },
24
+ '3024' => { :code => '3024', :type => 'Pear', :variety => 'Rocha' },
25
+ '3025' => { :code => '3025', :type => 'Pear', :variety => 'Rosemarie' },
26
+ '3026' => { :code => '3026', :type => 'Pear', :variety => 'Triumph de Vienne' },
27
+ '3027' => { :code => '3027', :type => 'Orange', :variety => 'Shamouti' },
28
+ '3030' => { :code => '3030', :type => 'Tangerine / Mandarin', :variety => 'Nova' },
29
+ '3031' => { :code => '3031', :type => 'Tangerine / Mandarin', :variety => 'Jamaican Tangor' },
30
+ '3037' => { :code => '3037', :type => 'Pineapple', :variety => 'Queen' },
31
+ '3038' => { :code => '3038', :type => 'Passion Fruit', :variety => 'Granadilla / Grenadilla Orange' },
32
+ '3039' => { :code => '3039', :type => 'Berries', :variety => 'Gooseberry / Ground Cherry / Physalis / Cape' },
33
+ '3041' => { :code => '3041', :type => 'Rambutan', :variety => '' },
34
+ '3042' => { :code => '3042', :type => 'Mangosteen', :variety => '' },
35
+ '3043' => { :code => '3043', :type => 'Grape', :variety => 'Italian, seeded' },
36
+ '3046' => { :code => '3046', :type => 'Date', :variety => 'Fresh / Frozen' },
37
+ '3047' => { :code => '3047', :type => 'Date', :variety => 'Medjool' },
38
+ '3048' => { :code => '3048', :type => 'Bean', :variety => 'Helda / Flat' },
39
+ '3049' => { :code => '3049', :type => 'Bean', :variety => 'Fine' },
40
+ '3050' => { :code => '3050', :type => 'Cabbage', :variety => 'Dutch White / Winter White' },
41
+ '3051' => { :code => '3051', :type => 'Cabbage', :variety => 'Spring Cabbage / Spring Greens' },
42
+ '3052' => { :code => '3052', :type => 'Garlic', :variety => 'String' },
43
+ '3053' => { :code => '3053', :type => 'Parsnip', :variety => 'Baby' },
44
+ '3059' => { :code => '3059', :type => 'Squash', :variety => 'Crown Prince' },
45
+ '3060' => { :code => '3060', :type => 'Squash', :variety => 'Vegetable Marrow' },
46
+ '3061' => { :code => '3061', :type => 'Tomato', :variety => 'Beef / Beefsteak' },
47
+ '3062' => { :code => '3062', :type => 'Herbs', :variety => 'Bay Leaves' },
48
+ '3063' => { :code => '3063', :type => 'Herbs', :variety => 'Fennel Leaves' },
49
+ '3064' => { :code => '3064', :type => 'Herbs', :variety => 'Aloe Vera Leaves' },
50
+ '3072' => { :code => '3072', :type => 'Apple', :variety => 'Lady' },
51
+ '3073' => { :code => '3073', :type => 'Apple', :variety => 'Macoun' },
52
+ '3074' => { :code => '3074', :type => 'Apple', :variety => 'Greening / Rhode Island' },
53
+ '3075' => { :code => '3075', :type => 'Apple', :variety => 'Baldwin' },
54
+ '3076' => { :code => '3076', :type => 'Apple', :variety => 'Melrose' },
55
+ '3077' => { :code => '3077', :type => 'Apple', :variety => 'Northern Spy' },
56
+ '3078' => { :code => '3078', :type => 'Apple', :variety => 'Liberty' },
57
+ '3080' => { :code => '3080', :type => 'Avocado', :variety => 'Pinkerton' },
58
+ '3081' => { :code => '3081', :type => 'Berries', :variety => 'Saskatoons' },
59
+ '3082' => { :code => '3082', :type => 'Broccoli', :variety => 'Crowns' },
60
+ '3083' => { :code => '3083', :type => 'Brussels Sprout', :variety => 'Stalk' },
61
+ '3084' => { :code => '3084', :type => 'Herbs', :variety => 'Chervil' },
62
+ '3088' => { :code => '3088', :type => 'Currant', :variety => 'Red' },
63
+ '3089' => { :code => '3089', :type => 'Eggplant', :variety => 'Chinese' },
64
+ '3090' => { :code => '3090', :type => 'Eggplant', :variety => 'Thai' },
65
+ '3091' => { :code => '3091', :type => 'Gobo Root', :variety => 'Gobo Root / Burdock Root' },
66
+ '3092' => { :code => '3092', :type => 'Grapefruit', :variety => 'Blanco / Sweetie' },
67
+ '3099' => { :code => '3099', :type => 'Lotus Root', :variety => '' },
68
+ '3100' => { :code => '3100', :type => 'Melon', :variety => 'Gold Honeydew' },
69
+ '3101' => { :code => '3101', :type => 'Melon', :variety => 'Piel de Sapo' },
70
+ '3102' => { :code => '3102', :type => 'Mushroom', :variety => 'Morel' },
71
+ '3103' => { :code => '3103', :type => 'Mushroom', :variety => 'Enoki' },
72
+ '3105' => { :code => '3105', :type => 'Nuts', :variety => 'Cashews' },
73
+ '3106' => { :code => '3106', :type => 'Nuts', :variety => 'Macadamia' },
74
+ '3109' => { :code => '3109', :type => 'Orange', :variety => 'Seville / Marmalade type' },
75
+ '3111' => { :code => '3111', :type => 'Papaya / Pawpaw', :variety => 'Red-Fleshed / Solo Sunrise' },
76
+ '3112' => { :code => '3112', :type => 'Papaya / Pawpaw', :variety => 'Meridol' },
77
+ '3113' => { :code => '3113', :type => 'Peach', :variety => 'Donut / Flat Chinese' },
78
+ '3118' => { :code => '3118', :type => 'Pear', :variety => 'Starkrimson' },
79
+ '3125' => { :code => '3125', :type => 'Pepper', :variety => 'Habanero' },
80
+ '3126' => { :code => '3126', :type => 'Plumcot', :variety => '' },
81
+ '3130' => { :code => '3130', :type => 'Pumpkin', :variety => 'Jumbo' },
82
+ '3131' => { :code => '3131', :type => 'Pumpkin', :variety => 'Decorative / Painted' },
83
+ '3132' => { :code => '3132', :type => 'Pumpkin', :variety => 'White' },
84
+ '3134' => { :code => '3134', :type => 'Pumpkin', :variety => 'Pie Pumpkin' },
85
+ '3135' => { :code => '3135', :type => 'Pumpkin', :variety => 'Ornamental' },
86
+ '3136' => { :code => '3136', :type => 'Sapote', :variety => 'Sapodillo / Nispero' },
87
+ '3139' => { :code => '3139', :type => 'Herbs', :variety => 'Savory' },
88
+ '3140' => { :code => '3140', :type => 'Squash', :variety => 'Cucuzza' },
89
+ '3141' => { :code => '3141', :type => 'Squash', :variety => 'Opo' },
90
+ '3142' => { :code => '3142', :type => 'Squash', :variety => 'Carnival' },
91
+ '3144' => { :code => '3144', :type => 'Tangerine / Mandarin', :variety => 'Fall Glo' },
92
+ '3152' => { :code => '3152', :type => 'Grapefruit', :variety => 'Melogold' },
93
+ '3160' => { :code => '3160', :type => 'Choy', :variety => 'Gai Lan / Chinese Broccoli' },
94
+ '3162' => { :code => '3162', :type => 'Choy', :variety => 'On Choy / Water Spinach' },
95
+ '3163' => { :code => '3163', :type => 'Choy', :variety => 'Bok Choy / Pak Choy / Shanghai' },
96
+ '3164' => { :code => '3164', :type => 'Choy', :variety => 'Yu Choy' },
97
+ '3165' => { :code => '3165', :type => 'Radicchio', :variety => 'Treviso' },
98
+ '3166' => { :code => '3166', :type => 'Cabbage', :variety => 'Tuscan' },
99
+ '3167' => { :code => '3167', :type => 'Endive / Chicory', :variety => 'Frisee' },
100
+ '3168' => { :code => '3168', :type => 'Radicchio', :variety => 'Castlelfranco' },
101
+ '3169' => { :code => '3169', :type => 'Lettuce', :variety => 'Catalogna' },
102
+ '3271' => { :code => '3271', :type => 'Apple', :variety => 'Virginia Gold' },
103
+ '3272' => { :code => '3272', :type => 'Apple', :variety => 'Sommerfeld' },
104
+ '3273' => { :code => '3273', :type => 'Beet', :variety => 'Golden' },
105
+ '3277' => { :code => '3277', :type => 'Broccoli', :variety => 'Baby' },
106
+ '3278' => { :code => '3278', :type => 'Plum', :variety => 'InterSpecific' },
107
+ '3279' => { :code => '3279', :type => 'Kiwi Fruit', :variety => 'Golden' },
108
+ '3283' => { :code => '3283', :type => 'Apple', :variety => 'Honeycrisp' },
109
+ '3286' => { :code => '3286', :type => 'Onion', :variety => 'Sweet, red, Italian, [flat]' },
110
+ '3287' => { :code => '3287', :type => 'Banana', :variety => 'Hawaiian Plantain' },
111
+ '3289' => { :code => '3289', :type => 'Melon', :variety => 'Sprite' },
112
+ '3291' => { :code => '3291', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, small' },
113
+ '3292' => { :code => '3292', :type => 'Apple', :variety => 'Boskoop / Belle de Boskoop, large' },
114
+ '3297' => { :code => '3297', :type => 'Apple', :variety => 'Scired / Pacific Queen' },
115
+ '3303' => { :code => '3303', :type => 'Papaya / Pawpaw', :variety => 'Babaco' },
116
+ '3304' => { :code => '3304', :type => 'Berries', :variety => 'Loganberries' },
117
+ '3305' => { :code => '3305', :type => 'Currant', :variety => 'Black' },
118
+ '3309' => { :code => '3309', :type => 'Orange', :variety => 'Lima' },
119
+ '3310' => { :code => '3310', :type => 'Orange', :variety => 'Pera' },
120
+ '3311' => { :code => '3311', :type => 'Passion Fruit', :variety => 'Curuba / Banana' },
121
+ '3312' => { :code => '3312', :type => 'Passion Fruit', :variety => 'Granadilla Yellow / Maracuya' },
122
+ '3320' => { :code => '3320', :type => 'Broccoli', :variety => 'Romanesco / Broccoflower / Caulibroc' },
123
+ '3325' => { :code => '3325', :type => 'Lettuce', :variety => 'Lollo Bionda / Coral Green' },
124
+ '3326' => { :code => '3326', :type => 'Lettuce', :variety => 'Lollo Rossa / Coral Red' },
125
+ '3327' => { :code => '3327', :type => 'Lettuce', :variety => 'Mignonette, compact red-tinged butterhead varieties' },
126
+ '3328' => { :code => '3328', :type => 'Lettuce', :variety => 'Mixed, small-leaf, salad [eg, Sucrine / Mesclun / Rocket / Arugula]' },
127
+ '3332' => { :code => '3332', :type => 'Spinach', :variety => 'Baby' },
128
+ '3336' => { :code => '3336', :type => 'Tomato', :variety => 'Cocktail / Intermediate Red / Plum / Italian / Saladette / Roma, on the vine [Truss]' },
129
+ '3337' => { :code => '3337', :type => 'Fig', :variety => 'dried' },
130
+ '3338' => { :code => '3338', :type => 'Herbs', :variety => 'Anise' },
131
+ '3339' => { :code => '3339', :type => 'Apple', :variety => 'Belchard / Chantecler' },
132
+ '3340' => { :code => '3340', :type => 'Apple', :variety => 'Bertanne / Golden Russet' },
133
+ '3341' => { :code => '3341', :type => 'Apple', :variety => 'Charles Ross' },
134
+ '3342' => { :code => '3342', :type => 'Apple', :variety => 'Delblush / Tentation' },
135
+ '3343' => { :code => '3343', :type => 'Apple', :variety => 'Dessert' },
136
+ '3346' => { :code => '3346', :type => 'Apple', :variety => 'Holstein' },
137
+ '3347' => { :code => '3347', :type => 'Apple', :variety => 'Laxtons Fortune' },
138
+ '3348' => { :code => '3348', :type => 'Apple', :variety => 'Lord Lambourne' },
139
+ '3349' => { :code => '3349', :type => 'Apple', :variety => 'Michaelmas Red' },
140
+ '3352' => { :code => '3352', :type => 'Apple', :variety => 'Reinettes and Heritage varieties' },
141
+ '3353' => { :code => '3353', :type => 'Apple', :variety => 'St. Edmunds Pippin' },
142
+ '3359' => { :code => '3359', :type => 'Grape', :variety => 'Chasselas' },
143
+ '3360' => { :code => '3360', :type => 'Grape', :variety => 'Muscat de Hambourg' },
144
+ '3363' => { :code => '3363', :type => 'Mango', :variety => 'Bowen & Kensington Pride, extra large' },
145
+ '3364' => { :code => '3364', :type => 'Mango', :variety => 'R2E2,ArtwoEetwo, extra large' },
146
+ '3366' => { :code => '3366', :type => 'Madro?a', :variety => '' },
147
+ '3368' => { :code => '3368', :type => 'Melon', :variety => 'Ogen' },
148
+ '3369' => { :code => '3369', :type => 'Nectarine', :variety => 'Nectavigne, red flesh' },
149
+ '3370' => { :code => '3370', :type => 'Orange', :variety => 'Maltaise' },
150
+ '3371' => { :code => '3371', :type => 'Orange', :variety => 'Salustiana' },
151
+ '3372' => { :code => '3372', :type => 'Orange', :variety => 'Navelate / other late Navel varieties' },
152
+ '3373' => { :code => '3373', :type => 'Orange', :variety => 'Navelina, including Newhall' },
153
+ '3375' => { :code => '3375', :type => 'Peach', :variety => 'Peche de Vigne / Sanguine, red flesh' },
154
+ '3376' => { :code => '3376', :type => 'Pear', :variety => 'Alexander Lucas' },
155
+ '3377' => { :code => '3377', :type => 'Pear', :variety => 'Louise Bonne' },
156
+ '3378' => { :code => '3378', :type => 'Pear', :variety => 'Santa Maria' },
157
+ '3379' => { :code => '3379', :type => 'Pineapple', :variety => 'Mini' },
158
+ '3380' => { :code => '3380', :type => 'Pineapple', :variety => 'Perola' },
159
+ '3381' => { :code => '3381', :type => 'Soursop', :variety => '' },
160
+ '3382' => { :code => '3382', :type => 'Apple', :variety => 'Sugar Apple' },
161
+ '3390' => { :code => '3390', :type => 'Arracach', :variety => '' },
162
+ '3391' => { :code => '3391', :type => 'Artichoke', :variety => 'Rouge Salambo, red' },
163
+ '3397' => { :code => '3397', :type => 'Cabbage', :variety => 'Summer, pointed type' },
164
+ '3398' => { :code => '3398', :type => 'Pea', :variety => 'Chick Pea / Garbanzo' },
165
+ '3401' => { :code => '3401', :type => 'Garlic', :variety => 'One-clove types' },
166
+ '3404' => { :code => '3404', :type => 'Mushroom', :variety => 'Cep' },
167
+ '3405' => { :code => '3405', :type => 'Mushroom', :variety => 'Fairy Ring Champignon' },
168
+ '3406' => { :code => '3406', :type => 'Mushroom', :variety => 'Grey Tricholoma' },
169
+ '3407' => { :code => '3407', :type => 'Mushroom', :variety => 'Grisette' },
170
+ '3408' => { :code => '3408', :type => 'Mushroom', :variety => 'Horn of Plenty / Black Trumpet' },
171
+ '3409' => { :code => '3409', :type => 'Mushroom', :variety => 'Pioppino' },
172
+ '3410' => { :code => '3410', :type => 'Mushroom', :variety => 'Saffron Milk-Cap' },
173
+ '3411' => { :code => '3411', :type => 'Mushroom', :variety => 'Sheep Polypore' },
174
+ '3413' => { :code => '3413', :type => 'Pepper', :variety => 'Tabasco' },
175
+ '3419' => { :code => '3419', :type => 'Herbs', :variety => 'Borage' },
176
+ '3421' => { :code => '3421', :type => 'Melon', :variety => 'Mini, seedless [3-7 pounds]' },
177
+ '3422' => { :code => '3422', :type => 'Apricot', :variety => 'InterSpecific' },
178
+ '3423' => { :code => '3423', :type => 'Tomato', :variety => 'Heirloom' },
179
+ '3424' => { :code => '3424', :type => 'Carrot', :variety => 'Purple / Red / Beta Sweet' },
180
+ '4033' => { :code => '4033', :type => 'LEMON', :variety => 'Lemons' },
181
+ '4034' => { :code => '4034', :type => 'MELON', :variety => 'Honeydew' },
182
+ '4035' => { :code => '4035', :type => 'CITRUS', :variety => 'Nectarines' },
183
+ '4036' => { :code => '4036', :type => 'NECTARINE', :variety => 'California Nectarines' },
184
+ '4040' => { :code => '4040', :type => 'PLUM', :variety => 'Black Plums' },
185
+ '4041' => { :code => '4041', :type => 'PLUM', :variety => 'Plums' },
186
+ '4042' => { :code => '4042', :type => 'PLUM', :variety => 'Large Plums' },
187
+ '4045' => { :code => '4045', :type => 'BERRIES', :variety => 'Cherries' },
188
+ '4048' => { :code => '4048', :type => 'MELON', :variety => 'Lime' },
189
+ '4050' => { :code => '4050', :type => 'MELON', :variety => 'Cantelope' },
190
+ '4051' => { :code => '4051', :type => 'MANGO', :variety => '' },
191
+ '4053' => { :code => '4053', :type => 'LEMON', :variety => 'lemons' },
192
+ '4054' => { :code => '4054', :type => 'Berries', :variety => 'Raspberries, red' },
193
+ '4055' => { :code => '4055', :type => 'Tangerine / Mandarin', :variety => '' },
194
+ '4060' => { :code => '4060', :type => 'BROCOLLI', :variety => 'Broccoli' },
195
+ '4061' => { :code => '4061', :type => 'LETTUCE', :variety => 'Iceberg lettuce' },
196
+ '4062' => { :code => '4062', :type => 'CUCUMBER', :variety => 'Cucumbers' },
197
+ '4064' => { :code => '4064', :type => 'TOMATO', :variety => 'Tomatoes' },
198
+ '4065' => { :code => '4065', :type => 'PEPPER', :variety => 'Green Peppers' },
199
+ '4066' => { :code => '4066', :type => 'BEAN', :variety => 'Green Beans' },
200
+ '4067' => { :code => '4067', :type => 'SQUASH', :variety => 'green squash' },
201
+ '4068' => { :code => '4068', :type => 'ONION', :variety => 'Green Scallions (bunch)' },
202
+ '4069' => { :code => '4069', :type => 'CABBAGE', :variety => 'Green Cabbage' },
203
+ '4070' => { :code => '4070', :type => 'CELERY', :variety => '' },
204
+ '4071' => { :code => '4071', :type => 'POTATO', :variety => 'Red Potatoes' },
205
+ '4072' => { :code => '4072', :type => 'POTATO', :variety => 'Russet Potatoes' },
206
+ '4075' => { :code => '4075', :type => 'LETTUCE', :variety => 'Red Leaf Lettuce' },
207
+ '4076' => { :code => '4076', :type => 'LETTUCE', :variety => 'Green Leaf Lettuce' },
208
+ '4078' => { :code => '4078', :type => 'CORN', :variety => '' },
209
+ '4079' => { :code => '4079', :type => 'Cauliflower', :variety => '' },
210
+ '4080' => { :code => '4080', :type => 'ASPARAGUS', :variety => '' },
211
+ '4081' => { :code => '4081', :type => 'EGGPLANT', :variety => '' },
212
+ '4082' => { :code => '4082', :type => 'ONION', :variety => 'Red Onions' },
213
+ '4084' => { :code => '4084', :type => 'Artichoke', :variety => 'Artichokes' },
214
+ '4086' => { :code => '4086', :type => 'Squash', :variety => 'Yellow Zucchini / Gold Bar / Yellow Courgette' },
215
+ '4087' => { :code => '4087', :type => 'TOMATO', :variety => 'Plum Tomatoes' },
216
+ '4088' => { :code => '4088', :type => 'PEPPER', :variety => 'Red peppers' },
217
+ '4089' => { :code => '4089', :type => 'RADISH', :variety => 'Radishes (bunch)' },
218
+ '4090' => { :code => '4090', :type => 'SPINICH', :variety => 'Spinach Bunch' },
219
+ '4092' => { :code => '4092', :type => 'Pea', :variety => 'Chinese Snow Pea / Pea Pod / Mange Tout' },
220
+ '4094' => { :code => '4094', :type => 'Carrot', :variety => 'Bunch' },
221
+ '4095' => { :code => '4095', :type => 'Turnip / Rutabaga / Swede', :variety => 'Yellow' },
222
+ '4098' => { :code => '4098', :type => 'Apple', :variety => 'Akane, small' },
223
+ '4099' => { :code => '4099', :type => 'Apple', :variety => 'Akane, large' },
224
+ '4101' => { :code => '4101', :type => 'Apple', :variety => 'Braeburn, small' },
225
+ '4103' => { :code => '4103', :type => 'APPLE', :variety => 'Braeburn Apples' },
226
+ '4105' => { :code => '4105', :type => 'Apple', :variety => 'Cox Orange Pippin' },
227
+ '4107' => { :code => '4107', :type => 'Apple', :variety => 'Crab' },
228
+ '4120' => { :code => '4120', :type => 'APPLE', :variety => 'Idared Apples/Fiesta' },
229
+ '4124' => { :code => '4124', :type => 'APPLE', :variety => 'Empire Apples' },
230
+ '4133' => { :code => '4133', :type => 'APPLE', :variety => 'Small Gala Apple' },
231
+ '4152' => { :code => '4152', :type => 'APPLE', :variety => 'Macintosh Apples' },
232
+ '4159' => { :code => '4159', :type => 'Onion', :variety => 'Vidalia' },
233
+ '4161' => { :code => '4161', :type => 'Onion', :variety => 'Texas Sweet' },
234
+ '4163' => { :code => '4163', :type => 'Onion', :variety => 'Walla Walla' },
235
+ '4164' => { :code => '4164', :type => 'Onion', :variety => 'Maui' },
236
+ '4165' => { :code => '4165', :type => 'Onion', :variety => 'California Sweet' },
237
+ '4166' => { :code => '4166', :type => 'Onion', :variety => 'Other Sweet' },
238
+ '4176' => { :code => '4176', :type => 'Apple', :variety => 'Southern Snap' },
239
+ '4182' => { :code => '4182', :type => 'Apple', :variety => 'Sturmer Pippin' },
240
+ '4218' => { :code => '4218', :type => 'APRICOT', :variety => 'Apricots' },
241
+ '4220' => { :code => '4220', :type => 'Atemoya', :variety => '' },
242
+ '4225' => { :code => '4225', :type => 'AVACADO', :variety => '' },
243
+ '4226' => { :code => '4226', :type => 'Avocado', :variety => 'Cocktail / Seedless' },
244
+ '4229' => { :code => '4229', :type => 'Banana', :variety => 'Burro' },
245
+ '4230' => { :code => '4230', :type => 'Banana', :variety => 'Dominique' },
246
+ '4231' => { :code => '4231', :type => 'Banana', :variety => 'Green' },
247
+ '4232' => { :code => '4232', :type => 'Banana', :variety => 'Banana Leaves' },
248
+ '4233' => { :code => '4233', :type => 'Banana', :variety => 'Manzano / Apple Banana' },
249
+ '4234' => { :code => '4234', :type => 'Banana', :variety => 'Nino' },
250
+ '4235' => { :code => '4235', :type => 'BANANA', :variety => 'Plantains/Macho' },
251
+ '4236' => { :code => '4236', :type => 'Banana', :variety => 'Red' },
252
+ '4239' => { :code => '4239', :type => 'Berries', :variety => 'Blackberries' },
253
+ '4240' => { :code => '4240', :type => 'Berries', :variety => 'Blueberries' },
254
+ '4241' => { :code => '4241', :type => 'Berries', :variety => 'Boysenberries' },
255
+ '4242' => { :code => '4242', :type => 'Berries', :variety => 'Cranberries' },
256
+ '4243' => { :code => '4243', :type => 'Berries', :variety => 'Gooseberries' },
257
+ '4244' => { :code => '4244', :type => 'Berries', :variety => 'Black Raspberries' },
258
+ '4245' => { :code => '4245', :type => 'Berries', :variety => 'Golden Raspberries' },
259
+ '4248' => { :code => '4248', :type => 'Berries', :variety => 'Quart' },
260
+ '4251' => { :code => '4251', :type => 'Berries', :variety => 'Long-stemmed' },
261
+ '4254' => { :code => '4254', :type => 'Breadfruit', :variety => '' },
262
+ '4255' => { :code => '4255', :type => 'Cactus', :variety => 'Cactus Pear / Prickly Pear' },
263
+ '4256' => { :code => '4256', :type => 'Carambola / Starfruit', :variety => '' },
264
+ '4257' => { :code => '4257', :type => 'Cherimoya', :variety => '' },
265
+ '4258' => { :code => '4258', :type => 'Cherry', :variety => 'Golden / Ranier / White' },
266
+ '4260' => { :code => '4260', :type => 'Coconut', :variety => 'In Husk / Waternut' },
267
+ '4261' => { :code => '4261', :type => 'Coconut', :variety => 'Husked' },
268
+ '4265' => { :code => '4265', :type => 'Feijoa', :variety => '' },
269
+ '4266' => { :code => '4266', :type => 'Fig', :variety => 'Black' },
270
+ '4267' => { :code => '4267', :type => 'Fig', :variety => 'Brown' },
271
+ '4268' => { :code => '4268', :type => 'Fig', :variety => 'White / Green' },
272
+ '4271' => { :code => '4271', :type => 'Grape', :variety => 'Champagne' },
273
+ '4272' => { :code => '4272', :type => 'Grape', :variety => 'Concord' },
274
+ '4299' => { :code => '4299', :type => 'Guava', :variety => '' },
275
+ '4300' => { :code => '4300', :type => 'Homli Fruit', :variety => '' },
276
+ '4302' => { :code => '4302', :type => 'Melon', :variety => 'Horned Melon / Kiwano' },
277
+ '4303' => { :code => '4303', :type => 'Kumquat', :variety => '' },
278
+ '4305' => { :code => '4305', :type => 'Lime', :variety => 'Key, including Mexican / West Indian' },
279
+ '4307' => { :code => '4307', :type => 'Longan', :variety => '' },
280
+ '4308' => { :code => '4308', :type => 'Loquat', :variety => '' },
281
+ '4309' => { :code => '4309', :type => 'Lychee', :variety => '' },
282
+ '4310' => { :code => '4310', :type => 'Mamey', :variety => '' },
283
+ '4311' => { :code => '4311', :type => 'Mango', :variety => 'Green' },
284
+ '4312' => { :code => '4312', :type => 'Mango', :variety => 'Yellow' },
285
+ '4317' => { :code => '4317', :type => 'Melon', :variety => 'Canary / Yellow Honeydew' },
286
+ '4320' => { :code => '4320', :type => 'Melon', :variety => 'Casaba' },
287
+ '4321' => { :code => '4321', :type => 'Melon', :variety => 'Cinnabar' },
288
+ '4322' => { :code => '4322', :type => 'Melon', :variety => 'Crenshaw' },
289
+ '4324' => { :code => '4324', :type => 'Melon', :variety => 'French Afternoon' },
290
+ '4325' => { :code => '4325', :type => 'Melon', :variety => 'French Breakfast' },
291
+ '4326' => { :code => '4326', :type => 'Melon', :variety => 'Galia' },
292
+ '4327' => { :code => '4327', :type => 'Melon', :variety => 'Orange Flesh / Cantaline' },
293
+ '4328' => { :code => '4328', :type => 'Limequat', :variety => '' },
294
+ '4329' => { :code => '4329', :type => 'MELON', :variety => 'Honeydew Melon' },
295
+ '4330' => { :code => '4330', :type => 'Melon', :variety => 'Mayan' },
296
+ '4331' => { :code => '4331', :type => 'Melon', :variety => 'Mickey Lee / Sugarbaby' },
297
+ '4332' => { :code => '4332', :type => 'Melon', :variety => 'Muskmelon' },
298
+ '4333' => { :code => '4333', :type => 'Melon', :variety => 'Pepino' },
299
+ '4334' => { :code => '4334', :type => 'Melon', :variety => 'Persian' },
300
+ '4335' => { :code => '4335', :type => 'Melon', :variety => 'Prince' },
301
+ '4336' => { :code => '4336', :type => 'Melon', :variety => 'Santa Claus' },
302
+ '4337' => { :code => '4337', :type => 'Melon', :variety => 'Saticoy' },
303
+ '4338' => { :code => '4338', :type => 'Melon', :variety => 'Sharlin' },
304
+ '4339' => { :code => '4339', :type => 'Melon', :variety => 'Spanish / Tendral' },
305
+ '4381' => { :code => '4381', :type => 'Orange', :variety => 'Blood' },
306
+ '4382' => { :code => '4382', :type => 'Orange', :variety => 'Juice' },
307
+ '4383' => { :code => '4383', :type => 'Orange', :variety => 'Tangelo Minneola' },
308
+ '4395' => { :code => '4395', :type => 'Papaya / Pawpaw', :variety => 'Cooking / Mexican' },
309
+ '4397' => { :code => '4397', :type => 'Passion Fruit', :variety => 'Purple' },
310
+ '4399' => { :code => '4399', :type => 'Peach', :variety => 'Indian' },
311
+ '4401' => { :code => '4401', :type => 'PEACH', :variety => 'White Peaches' },
312
+ '4402' => { :code => '4402', :type => 'PEACH', :variety => 'Peaches' },
313
+ '4409' => { :code => '4409', :type => 'PEAR', :variety => 'Bartlett Pears' },
314
+ '4410' => { :code => '4410', :type => 'Pear', :variety => 'Bartlett Red / Red Sensation' },
315
+ '4412' => { :code => '4412', :type => 'PEAR', :variety => 'Bosc Pears' },
316
+ '4415' => { :code => '4415', :type => 'Pear', :variety => 'Red' },
317
+ '4418' => { :code => '4418', :type => 'Pear', :variety => 'Forelle / Corella' },
318
+ '4419' => { :code => '4419', :type => 'Pear', :variety => 'French' },
319
+ '4420' => { :code => '4420', :type => 'Pear', :variety => 'King Royal' },
320
+ '4422' => { :code => '4422', :type => 'Pear', :variety => 'Seckel' },
321
+ '4423' => { :code => '4423', :type => 'Pear', :variety => 'Tree Ripened' },
322
+ '4424' => { :code => '4424', :type => 'Pear', :variety => 'Winter Nelis / Honey' },
323
+ '4427' => { :code => '4427', :type => 'Persimmon', :variety => 'Regular / American Persimmon' },
324
+ '4428' => { :code => '4428', :type => 'Persimmon', :variety => 'Japanese / Sharonfruit [Kaki]' },
325
+ '4436' => { :code => '4436', :type => 'Plum', :variety => 'Italian Prune / Sugar' },
326
+ '4447' => { :code => '4447', :type => 'Quince', :variety => '' },
327
+ '4448' => { :code => '4448', :type => 'Tamarindo', :variety => '' },
328
+ '4449' => { :code => '4449', :type => 'Tangerine / Mandarin', :variety => 'Sunburst' },
329
+ '4451' => { :code => '4451', :type => 'Tangerine / Mandarin', :variety => 'Dancy' },
330
+ '4452' => { :code => '4452', :type => 'Tangerine / Mandarin', :variety => 'Fairchild' },
331
+ '4454' => { :code => '4454', :type => 'Tangerine / Mandarin', :variety => 'Kinnow' },
332
+ '4455' => { :code => '4455', :type => 'Tangerine / Mandarin', :variety => 'Mandarin / Royal' },
333
+ '4470' => { :code => '4470', :type => 'Salad Bar', :variety => '' },
334
+ '4497' => { :code => '4497', :type => 'Grape', :variety => 'Sugarone / Autumn, seedless' },
335
+ '4499' => { :code => '4499', :type => 'Grape', :variety => 'Crimson / Majestic' },
336
+ '4514' => { :code => '4514', :type => 'Alfalfa Sprouts', :variety => '' },
337
+ '4515' => { :code => '4515', :type => 'ANISE', :variety => 'Fennel / Florence / Sweet Fennel / Fennel Bulb' },
338
+ '4519' => { :code => '4519', :type => 'Artichoke', :variety => 'Baby / Cocktail' },
339
+ '4524' => { :code => '4524', :type => 'Asparagus', :variety => 'Tips' },
340
+ '4527' => { :code => '4527', :type => 'Bean', :variety => 'Chinese Long / Snake' },
341
+ '4528' => { :code => '4528', :type => 'Bean', :variety => 'Fava / Broad' },
342
+ '4529' => { :code => '4529', :type => 'Bean', :variety => 'Lima' },
343
+ '4530' => { :code => '4530', :type => 'Bean', :variety => 'Pole / Runner / Stick' },
344
+ '4531' => { :code => '4531', :type => 'Bean', :variety => 'Purple Hull' },
345
+ '4532' => { :code => '4532', :type => 'Bean', :variety => 'Shell' },
346
+ '4533' => { :code => '4533', :type => 'Bean', :variety => 'Wax / Yellow' },
347
+ '4534' => { :code => '4534', :type => 'Bean', :variety => 'Winged' },
348
+ '4536' => { :code => '4536', :type => 'Bean', :variety => 'Bean Sprouts / Mung Bean Sprouts' },
349
+ '4537' => { :code => '4537', :type => 'Beet', :variety => 'Baby Golden' },
350
+ '4538' => { :code => '4538', :type => 'Beet', :variety => 'Baby Red' },
351
+ '4539' => { :code => '4539', :type => 'Beet', :variety => 'Bunch' },
352
+ '4540' => { :code => '4540', :type => 'Beet', :variety => 'Loose' },
353
+ '4542' => { :code => '4542', :type => 'Beet', :variety => 'Beet Greens' },
354
+ '4543' => { :code => '4543', :type => 'ENDIVE', :variety => 'Belgium endive' },
355
+ '4545' => { :code => '4545', :type => 'CHOY', :variety => 'Bok Choy' },
356
+ '4546' => { :code => '4546', :type => 'Potato', :variety => 'Boniato / Sweet Potato' },
357
+ '4547' => { :code => '4547', :type => 'Broccoli', :variety => 'Broccoli Rabe / Italian Rapini / Chinese Broccoli / Gai Lan' },
358
+ '4548' => { :code => '4548', :type => 'BROCOLLI', :variety => 'Broccoli Crowns' },
359
+ '4550' => { :code => '4550', :type => 'Brussels Sprout', :variety => '' },
360
+ '4552' => { :code => '4552', :type => 'Cabbage', :variety => 'Chinese / Napa / Wong Bok' },
361
+ '4553' => { :code => '4553', :type => 'Pear', :variety => 'Taylors Gold' },
362
+ '4554' => { :code => '4554', :type => 'Cabbage', :variety => 'Red' },
363
+ '4558' => { :code => '4558', :type => 'Cactus', :variety => 'Cactus Leaves / Nopales / Cactus Pads' },
364
+ '4559' => { :code => '4559', :type => 'Cardoon / Cardoni', :variety => '' },
365
+ '4560' => { :code => '4560', :type => 'Carrot', :variety => 'Baby' },
366
+ '4561' => { :code => '4561', :type => 'Carrot', :variety => 'French' },
367
+ '4562' => { :code => '4562', :type => 'Carrot', :variety => 'Loose' },
368
+ '4563' => { :code => '4563', :type => 'Carrot', :variety => 'Carrot Sticks' },
369
+ '4566' => { :code => '4566', :type => 'Cauliflower', :variety => 'Florettes' },
370
+ '4567' => { :code => '4567', :type => 'Cauliflower', :variety => 'Green' },
371
+ '4568' => { :code => '4568', :type => 'Cauliflower', :variety => 'Purple' },
372
+ '4573' => { :code => '4573', :type => 'Cauliflower', :variety => 'Baby' },
373
+ '4575' => { :code => '4575', :type => 'Celery', :variety => 'Hearts' },
374
+ '4576' => { :code => '4576', :type => 'CELERY', :variety => 'Celery Sticks' },
375
+ '4592' => { :code => '4592', :type => 'Cucumber', :variety => 'Armenian' },
376
+ '4593' => { :code => '4593', :type => 'Cucumber', :variety => 'English / Hot House / Long Seedless / Telegraph / Continental' },
377
+ '4594' => { :code => '4594', :type => 'Cucumber', :variety => 'Japanese / White' },
378
+ '4595' => { :code => '4595', :type => 'Cucumber', :variety => 'Lemon' },
379
+ '4596' => { :code => '4596', :type => 'Cucumber', :variety => 'Pickling / Gherkin' },
380
+ '4598' => { :code => '4598', :type => 'RADISH', :variety => 'Daikon / Radish' },
381
+ '4599' => { :code => '4599', :type => 'KUMQUAT', :variety => '' },
382
+ '4601' => { :code => '4601', :type => 'Eggplant', :variety => 'Japanese' },
383
+ '4602' => { :code => '4602', :type => 'Eggplant', :variety => 'White' },
384
+ '4604' => { :code => '4604', :type => 'ENDIVE', :variety => 'Endive / Chicory' },
385
+ '4606' => { :code => '4606', :type => 'Fiddlehead Ferns', :variety => '' },
386
+ '4608' => { :code => '4608', :type => 'GARLIC', :variety => 'Loose Garlic' },
387
+ '4609' => { :code => '4609', :type => 'Garlic', :variety => 'Elephant' },
388
+ '4612' => { :code => '4612', :type => 'GINGER', :variety => 'Ginger Root' },
389
+ '4614' => { :code => '4614', :type => 'Greens', :variety => 'Collards' },
390
+ '4615' => { :code => '4615', :type => 'Greens', :variety => 'Dandelion' },
391
+ '4616' => { :code => '4616', :type => 'Greens', :variety => 'Mustard' },
392
+ '4617' => { :code => '4617', :type => 'Greens', :variety => 'Polk Greens' },
393
+ '4618' => { :code => '4618', :type => 'Greens', :variety => 'Texas Mustard' },
394
+ '4619' => { :code => '4619', :type => 'Greens', :variety => 'Turnip' },
395
+ '4625' => { :code => '4625', :type => 'Horseradish Root', :variety => '' },
396
+ '4626' => { :code => '4626', :type => 'Jicama / Yam Bean', :variety => '' },
397
+ '4631' => { :code => '4631', :type => 'Lettuce', :variety => 'Bibb / Flat / Round' },
398
+ '4632' => { :code => '4632', :type => 'LETTUCE', :variety => 'Boston Lettuce' },
399
+ '4633' => { :code => '4633', :type => 'Lettuce', :variety => 'Hydroponic' },
400
+ '4636' => { :code => '4636', :type => 'GRAPES', :variety => 'Red Globe Grapes' },
401
+ '4638' => { :code => '4638', :type => 'Grape', :variety => 'Fantasy / Marroo' },
402
+ '4639' => { :code => '4639', :type => 'Lettuce', :variety => 'Mache' },
403
+ '4640' => { :code => '4640', :type => 'LETTUCE', :variety => 'Romaine Lettuce' },
404
+ '4644' => { :code => '4644', :type => 'Malanga', :variety => '' },
405
+ '4645' => { :code => '4645', :type => 'MUSHROOM', :variety => 'Mushrooms' },
406
+ '4646' => { :code => '4646', :type => 'Mushroom', :variety => 'Black Forest' },
407
+ '4647' => { :code => '4647', :type => 'Mushroom', :variety => 'Chanterelle' },
408
+ '4648' => { :code => '4648', :type => 'Mushroom', :variety => 'Cremini / Brown / Swiss Brown' },
409
+ '4649' => { :code => '4649', :type => 'Mushroom', :variety => 'Oyster' },
410
+ '4650' => { :code => '4650', :type => 'MUSHROOM', :variety => 'Portabello Mushrooms' },
411
+ '4651' => { :code => '4651', :type => 'Mushroom', :variety => 'Shiitake' },
412
+ '4652' => { :code => '4652', :type => 'Mushroom', :variety => 'Wood Ear' },
413
+ '4655' => { :code => '4655', :type => 'Okra', :variety => 'Regular, green' },
414
+ '4656' => { :code => '4656', :type => 'Okra', :variety => 'Chinese' },
415
+ '4657' => { :code => '4657', :type => 'Okra', :variety => 'Red' },
416
+ '4658' => { :code => '4658', :type => 'Onion', :variety => 'Boiling' },
417
+ '4659' => { :code => '4659', :type => 'Onion', :variety => 'Bulb' },
418
+ '4660' => { :code => '4660', :type => 'Onion', :variety => 'Pearl' },
419
+ '4661' => { :code => '4661', :type => 'Onion', :variety => 'Pickling, white' },
420
+ '4662' => { :code => '4662', :type => 'Onion', :variety => 'Shallots' },
421
+ '4663' => { :code => '4663', :type => 'ONION', :variety => 'White Onions' },
422
+ '4664' => { :code => '4664', :type => 'TOMATO', :variety => 'Tomatoes on a Vine' },
423
+ '4665' => { :code => '4665', :type => 'ONION', :variety => 'Yellow Cooking Onions' },
424
+ '4671' => { :code => '4671', :type => 'Herbs', :variety => 'Parsley Root / Hamburg Parsley' },
425
+ '4672' => { :code => '4672', :type => 'Parsnip', :variety => 'Parsnips' },
426
+ '4673' => { :code => '4673', :type => 'Pea', :variety => 'Blackeyed' },
427
+ '4674' => { :code => '4674', :type => 'Pea', :variety => 'Green' },
428
+ '4675' => { :code => '4675', :type => 'Pea', :variety => 'Sugar Snap' },
429
+ '4677' => { :code => '4677', :type => 'Pepper', :variety => 'Anaheim, green, red' },
430
+ '4678' => { :code => '4678', :type => 'Pepper', :variety => 'Banana, yellow, long' },
431
+ '4681' => { :code => '4681', :type => 'PEPPER', :variety => 'Green Peppers' },
432
+ '4687' => { :code => '4687', :type => 'PEPPER', :variety => 'Cubenelle Peppers' },
433
+ '4688' => { :code => '4688', :type => 'PEPPER', :variety => 'Red Sweet Peppers' },
434
+ '4690' => { :code => '4690', :type => 'Pepper', :variety => 'Hot / Hungarian Hot' },
435
+ '4691' => { :code => '4691', :type => 'Pepper', :variety => 'Hot Mixed' },
436
+ '4692' => { :code => '4692', :type => 'Pepper', :variety => 'Hungarian Wax' },
437
+ '4693' => { :code => '4693', :type => 'PEPPER', :variety => 'Jalapeno Peppers' },
438
+ '4695' => { :code => '4695', :type => 'Pepper', :variety => 'Japanese, red' },
439
+ '4698' => { :code => '4698', :type => 'Pepper', :variety => 'Morita Chili' },
440
+ '4699' => { :code => '4699', :type => 'Pepper', :variety => 'Negro' },
441
+ '4700' => { :code => '4700', :type => 'Pepper', :variety => 'New Mexico' },
442
+ '4704' => { :code => '4704', :type => 'Pepper', :variety => 'Pinole' },
443
+ '4705' => { :code => '4705', :type => 'Pepper', :variety => 'Poblano' },
444
+ '4706' => { :code => '4706', :type => 'Pepper', :variety => 'Red Cheese' },
445
+ '4707' => { :code => '4707', :type => 'Pepper', :variety => 'Red Finger' },
446
+ '4708' => { :code => '4708', :type => 'Pepper', :variety => 'Red Pimiento / Red, sweet, long' },
447
+ '4709' => { :code => '4709', :type => 'Pepper', :variety => 'Serrano' },
448
+ '4726' => { :code => '4726', :type => 'Potato', :variety => 'Long, white' },
449
+ '4727' => { :code => '4727', :type => 'POTATO', :variety => 'Yukon Potato' },
450
+ '4735' => { :code => '4735', :type => 'Pumpkin', :variety => 'Regular' },
451
+ '4738' => { :code => '4738', :type => 'RADICCHIO', :variety => '' },
452
+ '4739' => { :code => '4739', :type => 'Radish', :variety => 'Black' },
453
+ '4741' => { :code => '4741', :type => 'Radish', :variety => 'Italian, red' },
454
+ '4742' => { :code => '4742', :type => 'Radish', :variety => 'Red' },
455
+ '4743' => { :code => '4743', :type => 'Radish', :variety => 'White / Icicle' },
456
+ '4747' => { :code => '4747', :type => 'RUTABAGA', :variety => '' },
457
+ '4753' => { :code => '4753', :type => 'Squash', :variety => 'Australian Blue' },
458
+ '4755' => { :code => '4755', :type => 'Squash', :variety => 'Summer, green, baby' },
459
+ '4757' => { :code => '4757', :type => 'Squash', :variety => 'Banana' },
460
+ '4758' => { :code => '4758', :type => 'Squash', :variety => 'Buttercup' },
461
+ '4759' => { :code => '4759', :type => 'Squash', :variety => 'Butternut' },
462
+ '4760' => { :code => '4760', :type => 'Squash', :variety => 'Calabaza' },
463
+ '4761' => { :code => '4761', :type => 'Squash', :variety => 'Chayote / Choko' },
464
+ '4763' => { :code => '4763', :type => 'Squash', :variety => 'Delicata / Sweet Potato Squash' },
465
+ '4764' => { :code => '4764', :type => 'Squash', :variety => 'Sweet Dumpling' },
466
+ '4765' => { :code => '4765', :type => 'Squash', :variety => 'Gem' },
467
+ '4766' => { :code => '4766', :type => 'Squash', :variety => 'Golden Delicious' },
468
+ '4767' => { :code => '4767', :type => 'Squash', :variety => 'Golden Nugget' },
469
+ '4768' => { :code => '4768', :type => 'Squash', :variety => 'Hubbard' },
470
+ '4769' => { :code => '4769', :type => 'Squash', :variety => 'Kabocha' },
471
+ '4771' => { :code => '4771', :type => 'AVACADO', :variety => '' },
472
+ '4773' => { :code => '4773', :type => 'Squash', :variety => 'Patty Pan / Summer' },
473
+ '4774' => { :code => '4774', :type => 'Squash', :variety => 'Red Kuri' },
474
+ '4776' => { :code => '4776', :type => 'Squash', :variety => 'Spaghetti / Vegetable Spaghetti' },
475
+ '4777' => { :code => '4777', :type => 'Squash', :variety => 'Sunburst, yellow' },
476
+ '4779' => { :code => '4779', :type => 'Squash', :variety => 'Sweet Mama' },
477
+ '4780' => { :code => '4780', :type => 'Squash', :variety => 'Turban' },
478
+ '4781' => { :code => '4781', :type => 'Squash', :variety => 'White' },
479
+ '4782' => { :code => '4782', :type => 'PEPPER', :variety => 'Yellow Straigtneck Peppers' },
480
+ '4783' => { :code => '4783', :type => 'Squash', :variety => 'Bitter Melon / Bitter Gourd / Foo Qua' },
481
+ '4784' => { :code => '4784', :type => 'Squash', :variety => 'Yellow Crookneck' },
482
+ '4790' => { :code => '4790', :type => 'Sugar Cane', :variety => '' },
483
+ '4791' => { :code => '4791', :type => 'Artichoke', :variety => 'Sunchokes / Jerusalem Artichokes' },
484
+ '4792' => { :code => '4792', :type => 'Tamarillo', :variety => 'Golden' },
485
+ '4793' => { :code => '4793', :type => 'Tamarillo', :variety => 'Red' },
486
+ '4799' => { :code => '4799', :type => 'TOMATO', :variety => '' },
487
+ '4800' => { :code => '4800', :type => 'Tomato', :variety => 'Native / Home Grown' },
488
+ '4801' => { :code => '4801', :type => 'Tomato', :variety => 'Tomatillos / Husk Tomatoes' },
489
+ '4802' => { :code => '4802', :type => 'Tomato', :variety => 'dried' },
490
+ '4809' => { :code => '4809', :type => 'Turnip / Rutabaga / Swede', :variety => 'Baby' },
491
+ '4810' => { :code => '4810', :type => 'Turnip / Rutabaga / Swede', :variety => 'Bunch / Banded' },
492
+ '4811' => { :code => '4811', :type => 'Turnip / Rutabaga / Swede', :variety => 'Purple Top' },
493
+ '4812' => { :code => '4812', :type => 'Turnip / Rutabaga / Swede', :variety => 'White' },
494
+ '4814' => { :code => '4814', :type => 'Waterchestnuts', :variety => '' },
495
+ '4815' => { :code => '4815', :type => 'Herbs', :variety => 'Watercress' },
496
+ '4816' => { :code => '4816', :type => 'POTATO', :variety => 'Yams' },
497
+ '4819' => { :code => '4819', :type => 'Yucca Root', :variety => '' },
498
+ '4860' => { :code => '4860', :type => 'Apple', :variety => 'dried apple slices' },
499
+ '4861' => { :code => '4861', :type => 'Apricot', :variety => 'dried' },
500
+ '4862' => { :code => '4862', :type => 'Date', :variety => 'dried' },
501
+ '4864' => { :code => '4864', :type => 'Pineapple', :variety => 'dried' },
502
+ '4884' => { :code => '4884', :type => 'Greens', :variety => 'Arugula / Rocket' },
503
+ '4888' => { :code => '4888', :type => 'Herbs', :variety => 'Chives' },
504
+ '4889' => { :code => '4889', :type => 'HERBS', :variety => 'Cilantro / Coriander / Chinese Parsley' },
505
+ '4890' => { :code => '4890', :type => 'Pear', :variety => 'Chinese Yali' },
506
+ '4891' => { :code => '4891', :type => 'HERBS', :variety => 'Dill' },
507
+ '4892' => { :code => '4892', :type => 'Herbs', :variety => 'Baby Dill' },
508
+ '4893' => { :code => '4893', :type => 'Herbs', :variety => 'Pickling Dill' },
509
+ '4894' => { :code => '4894', :type => 'Herbs', :variety => 'Lemon Grass' },
510
+ '4895' => { :code => '4895', :type => 'Herbs', :variety => 'Marjoram' },
511
+ '4896' => { :code => '4896', :type => 'Herbs', :variety => 'Mint' },
512
+ '4897' => { :code => '4897', :type => 'Herbs', :variety => 'Oregano' },
513
+ '4898' => { :code => '4898', :type => 'Herbs', :variety => 'Oyster Plant / Salsify' },
514
+ '4900' => { :code => '4900', :type => 'HERBS', :variety => 'Parsley' },
515
+ '4901' => { :code => '4901', :type => 'HERBS', :variety => 'Italian Parsley' },
516
+ '4903' => { :code => '4903', :type => 'Herbs', :variety => 'Rosemary' },
517
+ '4904' => { :code => '4904', :type => 'Herbs', :variety => 'Sage' },
518
+ '4905' => { :code => '4905', :type => 'Herbs', :variety => 'Sorrel' },
519
+ '4906' => { :code => '4906', :type => 'Herbs', :variety => 'Tarragon' },
520
+ '4907' => { :code => '4907', :type => 'Herbs', :variety => 'Thyme' },
521
+ '4908' => { :code => '4908', :type => 'Herbs', :variety => 'Vanilla Bean' },
522
+ '4924' => { :code => '4924', :type => 'Nuts', :variety => 'Almonds' },
523
+ '4926' => { :code => '4926', :type => 'Nuts', :variety => 'Brazil nuts' },
524
+ '4927' => { :code => '4927', :type => 'Nuts', :variety => 'Chestnuts' },
525
+ '4928' => { :code => '4928', :type => 'Nuts', :variety => 'Filberts / Cobnut / Hazelnut' },
526
+ '4929' => { :code => '4929', :type => 'Nuts', :variety => 'Mixed' },
527
+ '4936' => { :code => '4936', :type => 'Nuts', :variety => 'Pecans' },
528
+ '4938' => { :code => '4938', :type => 'Nuts', :variety => 'Pine Nuts / Pignoli' },
529
+ '4942' => { :code => '4942', :type => 'Nuts', :variety => 'Sunflower Seeds' },
530
+ '4948' => { :code => '4948', :type => 'LIMES', :variety => '' },
531
+ '33543' => { :code => '33543', :type => 'Avocado', :variety => 'Ripe, ready-to-eat' },
532
+ '33653' => { :code => '33653', :type => 'Mango', :variety => 'Ripe, ready-to-eat' },
533
+ '33673' => { :code => '33673', :type => 'Melon', :variety => 'Glasshouse, netted varieties' },
534
+ '34173' => { :code => '34173', :type => 'Spinach', :variety => 'New Zealand' },
535
+ '42461' => { :code => '42461', :type => 'Berries', :variety => 'Pint' },
536
+ '46341' => { :code => '46341', :type => 'Lettuce', :variety => 'Iceberg' },
537
+ '47251' => { :code => '47251', :type => 'Potato', :variety => 'Russet' }
538
+ }