@gigzen/populace 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -10
- package/action.yml +145 -0
- package/adapters/buzzbuzz.mjs +1 -1
- package/adapters/template-rest.mjs +16 -0
- package/examples/buzzbuzz/populace-report.html +69 -60
- package/examples/buzzbuzz/populace-report.json +97 -79
- package/examples/buzzbuzz/populace.config.mjs +3 -3
- package/examples/buzzbuzz/run-test.ps1 +1 -1
- package/examples/rest-api/README.md +2 -2
- package/examples/rest-api/adapter.mjs +5 -2
- package/examples/rest-api/populace-report.html +245 -0
- package/examples/rest-api/populace-report.json +280 -0
- package/examples/rest-api/server.mjs +4 -4
- package/package.json +3 -2
- package/src/ai.mjs +158 -0
- package/src/cli.mjs +139 -2
- package/src/engine/personas.mjs +654 -11
- package/src/engine/world.mjs +3 -3
- package/src/explain.mjs +247 -0
- package/src/github-summary.mjs +152 -0
- package/src/openapi.mjs +322 -0
- package/src/report.mjs +37 -0
- package/src/selftest.mjs +251 -0
- package/src/update.mjs +141 -0
package/src/engine/personas.mjs
CHANGED
|
@@ -10,11 +10,81 @@
|
|
|
10
10
|
// `personas` in populace.config.mjs if your users are something else.
|
|
11
11
|
|
|
12
12
|
export const CITIES = {
|
|
13
|
-
manila: { name: "Manila", lat: 14.5995, lng: 120.9842, currency: "PHP", rate: 10 },
|
|
14
|
-
mumbai: { name: "Mumbai", lat: 19.076, lng: 72.8777, currency: "INR", rate: 10 },
|
|
15
|
-
delhi: { name: "Delhi", lat: 28.6139, lng: 77.209, currency: "INR", rate: 10 },
|
|
16
|
-
jakarta: { name: "Jakarta", lat: -6.2088, lng: 106.8456, currency: "IDR", rate: 3000 },
|
|
17
|
-
bangkok: { name: "Bangkok", lat: 13.7563, lng: 100.5018, currency: "THB", rate: 6 },
|
|
13
|
+
manila: { name: "Manila", lat: 14.5995, lng: 120.9842, country: "Philippines", currency: "PHP", rate: 10 },
|
|
14
|
+
mumbai: { name: "Mumbai", lat: 19.076, lng: 72.8777, country: "India", currency: "INR", rate: 10 },
|
|
15
|
+
delhi: { name: "Delhi", lat: 28.6139, lng: 77.209, country: "India", currency: "INR", rate: 10 },
|
|
16
|
+
jakarta: { name: "Jakarta", lat: -6.2088, lng: 106.8456, country: "Indonesia", currency: "IDR", rate: 3000 },
|
|
17
|
+
bangkok: { name: "Bangkok", lat: 13.7563, lng: 100.5018, country: "Thailand", currency: "THB", rate: 6 },
|
|
18
|
+
// Rates are per-kilometre in the local currency, scaled the way the first
|
|
19
|
+
// five are: roughly what a courier is paid, not an exchange-rate conversion.
|
|
20
|
+
hcmc: { name: "Ho Chi Minh City", lat: 10.8231, lng: 106.6297, country: "Vietnam", currency: "VND", rate: 5000 },
|
|
21
|
+
dhaka: { name: "Dhaka", lat: 23.8103, lng: 90.4125, country: "Bangladesh", currency: "BDT", rate: 22 },
|
|
22
|
+
karachi: { name: "Karachi", lat: 24.8607, lng: 67.0011, country: "Pakistan", currency: "PKR", rate: 55 },
|
|
23
|
+
kualalumpur: { name: "Kuala Lumpur", lat: 3.139, lng: 101.6869, country: "Malaysia", currency: "MYR", rate: 2 },
|
|
24
|
+
bengaluru: { name: "Bengaluru", lat: 12.9716, lng: 77.5946, country: "India", currency: "INR", rate: 10 },
|
|
25
|
+
lahore: { name: "Lahore", lat: 31.5204, lng: 74.3587, country: "Pakistan", currency: "PKR", rate: 55 },
|
|
26
|
+
chennai: { name: "Chennai", lat: 13.0827, lng: 80.2707, country: "India", currency: "INR", rate: 10 },
|
|
27
|
+
hyderabad: { name: "Hyderabad", lat: 17.385, lng: 78.4867, country: "India", currency: "INR", rate: 10 },
|
|
28
|
+
kolkata: { name: "Kolkata", lat: 22.5726, lng: 88.3639, country: "India", currency: "INR", rate: 10 },
|
|
29
|
+
hanoi: { name: "Hanoi", lat: 21.0278, lng: 105.8342, country: "Vietnam", currency: "VND", rate: 5000 },
|
|
30
|
+
surabaya: { name: "Surabaya", lat: -7.2575, lng: 112.7521, country: "Indonesia", currency: "IDR", rate: 3000 },
|
|
31
|
+
cebu: { name: "Cebu", lat: 10.3157, lng: 123.8854, country: "Philippines", currency: "PHP", rate: 10 },
|
|
32
|
+
colombo: { name: "Colombo", lat: 6.9271, lng: 79.8612, country: "Sri Lanka", currency: "LKR", rate: 90 },
|
|
33
|
+
kathmandu: { name: "Kathmandu", lat: 27.7172, lng: 85.324, country: "Nepal", currency: "NPR", rate: 35 },
|
|
34
|
+
phnompenh: { name: "Phnom Penh", lat: 11.5564, lng: 104.9282, country: "Cambodia", currency: "KHR", rate: 800 },
|
|
35
|
+
ahmedabad: { name: "Ahmedabad", lat: 23.0225, lng: 72.5714, country: "India", currency: "INR", rate: 10 },
|
|
36
|
+
pune: { name: "Pune", lat: 18.5204, lng: 73.8567, country: "India", currency: "INR", rate: 10 },
|
|
37
|
+
jaipur: { name: "Jaipur", lat: 26.9124, lng: 75.7873, country: "India", currency: "INR", rate: 10 },
|
|
38
|
+
islamabad: { name: "Islamabad", lat: 33.6844, lng: 73.0479, country: "Pakistan", currency: "PKR", rate: 55 },
|
|
39
|
+
chittagong: { name: "Chittagong", lat: 22.3569, lng: 91.7832, country: "Bangladesh", currency: "BDT", rate: 22 },
|
|
40
|
+
danang: { name: "Da Nang", lat: 16.0544, lng: 108.2022, country: "Vietnam", currency: "VND", rate: 5000 },
|
|
41
|
+
bandung: { name: "Bandung", lat: -6.9175, lng: 107.6191, country: "Indonesia", currency: "IDR", rate: 3000 },
|
|
42
|
+
davao: { name: "Davao", lat: 7.1907, lng: 125.4553, country: "Philippines", currency: "PHP", rate: 10 },
|
|
43
|
+
chiangmai: { name: "Chiang Mai", lat: 18.7883, lng: 98.9853, country: "Thailand", currency: "THB", rate: 6 },
|
|
44
|
+
yangon: { name: "Yangon", lat: 16.8409, lng: 96.1735, country: "Myanmar", currency: "MMK", rate: 900 },
|
|
45
|
+
|
|
46
|
+
// Beyond the original South and Southeast Asian market: one city per country,
|
|
47
|
+
// taking the pack to forty countries. Rates stay per-kilometre in local money.
|
|
48
|
+
saopaulo: { name: "São Paulo", lat: -23.5505, lng: -46.6333, country: "Brazil", currency: "BRL", rate: 5 },
|
|
49
|
+
mexicocity: { name: "Mexico City", lat: 19.4326, lng: -99.1332, country: "Mexico", currency: "MXN", rate: 12 },
|
|
50
|
+
bogota: { name: "Bogotá", lat: 4.711, lng: -74.0721, country: "Colombia", currency: "COP", rate: 2500 },
|
|
51
|
+
buenosaires: { name: "Buenos Aires", lat: -34.6037, lng: -58.3816, country: "Argentina", currency: "ARS", rate: 800 },
|
|
52
|
+
lima: { name: "Lima", lat: -12.0464, lng: -77.0428, country: "Peru", currency: "PEN", rate: 3 },
|
|
53
|
+
santiago: { name: "Santiago", lat: -33.4489, lng: -70.6693, country: "Chile", currency: "CLP", rate: 600 },
|
|
54
|
+
lagos: { name: "Lagos", lat: 6.5244, lng: 3.3792, country: "Nigeria", currency: "NGN", rate: 700 },
|
|
55
|
+
nairobi: { name: "Nairobi", lat: -1.2921, lng: 36.8219, country: "Kenya", currency: "KES", rate: 60 },
|
|
56
|
+
accra: { name: "Accra", lat: 5.6037, lng: -0.187, country: "Ghana", currency: "GHS", rate: 7 },
|
|
57
|
+
cairo: { name: "Cairo", lat: 30.0444, lng: 31.2357, country: "Egypt", currency: "EGP", rate: 25 },
|
|
58
|
+
johannesburg: { name: "Johannesburg", lat: -26.2041, lng: 28.0473, country: "South Africa", currency: "ZAR", rate: 10 },
|
|
59
|
+
addisababa: { name: "Addis Ababa", lat: 9.032, lng: 38.7469, country: "Ethiopia", currency: "ETB", rate: 40 },
|
|
60
|
+
daressalaam: { name: "Dar es Salaam", lat: -6.7924, lng: 39.2083, country: "Tanzania", currency: "TZS", rate: 1200 },
|
|
61
|
+
kampala: { name: "Kampala", lat: 0.3476, lng: 32.5825, country: "Uganda", currency: "UGX", rate: 1800 },
|
|
62
|
+
casablanca: { name: "Casablanca", lat: 33.5731, lng: -7.5898, country: "Morocco", currency: "MAD", rate: 5 },
|
|
63
|
+
istanbul: { name: "Istanbul", lat: 41.0082, lng: 28.9784, country: "Turkey", currency: "TRY", rate: 15 },
|
|
64
|
+
dubai: { name: "Dubai", lat: 25.2048, lng: 55.2708, country: "United Arab Emirates", currency: "AED", rate: 2 },
|
|
65
|
+
riyadh: { name: "Riyadh", lat: 24.7136, lng: 46.6753, country: "Saudi Arabia", currency: "SAR", rate: 2 },
|
|
66
|
+
baghdad: { name: "Baghdad", lat: 33.3152, lng: 44.3661, country: "Iraq", currency: "IQD", rate: 700 },
|
|
67
|
+
amman: { name: "Amman", lat: 31.9454, lng: 35.9284, country: "Jordan", currency: "JOD", rate: 1 },
|
|
68
|
+
moscow: { name: "Moscow", lat: 55.7558, lng: 37.6173, country: "Russia", currency: "RUB", rate: 40 },
|
|
69
|
+
kyiv: { name: "Kyiv", lat: 50.4501, lng: 30.5234, country: "Ukraine", currency: "UAH", rate: 20 },
|
|
70
|
+
warsaw: { name: "Warsaw", lat: 52.2297, lng: 21.0122, country: "Poland", currency: "PLN", rate: 3 },
|
|
71
|
+
bucharest: { name: "Bucharest", lat: 44.4268, lng: 26.1025, country: "Romania", currency: "RON", rate: 3 },
|
|
72
|
+
madrid: { name: "Madrid", lat: 40.4168, lng: -3.7038, country: "Spain", currency: "EUR", rate: 1 },
|
|
73
|
+
almaty: { name: "Almaty", lat: 43.222, lng: 76.8512, country: "Kazakhstan", currency: "KZT", rate: 250 },
|
|
74
|
+
tashkent: { name: "Tashkent", lat: 41.2995, lng: 69.2401, country: "Uzbekistan", currency: "UZS", rate: 6000 },
|
|
75
|
+
baku: { name: "Baku", lat: 40.4093, lng: 49.8671, country: "Azerbaijan", currency: "AZN", rate: 1 },
|
|
76
|
+
|
|
77
|
+
// Nine more, chosen for their scripts as much as their markets: Japanese,
|
|
78
|
+
// Korean, Georgian and Serbian Cyrillic are new to the corpus.
|
|
79
|
+
singapore: { name: "Singapore", lat: 1.3521, lng: 103.8198, country: "Singapore", currency: "SGD", rate: 1 },
|
|
80
|
+
tokyo: { name: "Tokyo", lat: 35.6762, lng: 139.6503, country: "Japan", currency: "JPY", rate: 250 },
|
|
81
|
+
seoul: { name: "Seoul", lat: 37.5665, lng: 126.978, country: "South Korea", currency: "KRW", rate: 1500 },
|
|
82
|
+
tbilisi: { name: "Tbilisi", lat: 41.7151, lng: 44.8271, country: "Georgia", currency: "GEL", rate: 2 },
|
|
83
|
+
belgrade: { name: "Belgrade", lat: 44.7866, lng: 20.4489, country: "Serbia", currency: "RSD", rate: 90 },
|
|
84
|
+
lisbon: { name: "Lisbon", lat: 38.7223, lng: -9.1393, country: "Portugal", currency: "EUR", rate: 1 },
|
|
85
|
+
milan: { name: "Milan", lat: 45.4642, lng: 9.19, country: "Italy", currency: "EUR", rate: 1 },
|
|
86
|
+
dakar: { name: "Dakar", lat: 14.7167, lng: -17.4677, country: "Senegal", currency: "XOF", rate: 400 },
|
|
87
|
+
quito: { name: "Quito", lat: -0.1807, lng: -78.4678, country: "Ecuador", currency: "USD", rate: 1 },
|
|
18
88
|
};
|
|
19
89
|
|
|
20
90
|
// Chatter is per-city so a feed reads like the right place.
|
|
@@ -54,6 +124,440 @@ const CHATTER = {
|
|
|
54
124
|
"ใครอยู่แถวอโศกบ้าง งานเยอะมาก",
|
|
55
125
|
"พักก่อน วิ่งมา 6 ชั่วโมงแล้ว",
|
|
56
126
|
],
|
|
127
|
+
hcmc: [
|
|
128
|
+
"Kẹt xe dữ lắm ở Điện Biên Phủ, đi đường khác đi",
|
|
129
|
+
"Đang có thưởng khu Quận 1, chạy đi anh em",
|
|
130
|
+
"Cẩn thận ngập nước ở Thảo Điền nha",
|
|
131
|
+
"Ai đang ở Phú Nhuận không? Đơn nhiều lắm",
|
|
132
|
+
"Nghỉ chút đã, chạy 7 tiếng rồi",
|
|
133
|
+
],
|
|
134
|
+
dhaka: [
|
|
135
|
+
"গুলশানে অনেক জ্যাম, বিকল্প রাস্তা নিন",
|
|
136
|
+
"মতিঝিলে এখন সার্জ চলছে",
|
|
137
|
+
"ধানমন্ডিতে পানি জমেছে, সাবধানে",
|
|
138
|
+
"বনানীতে কেউ আছেন? অনেক অর্ডার আসছে",
|
|
139
|
+
"একটু বিশ্রাম নিচ্ছি, ৮ ঘণ্টা হয়ে গেল",
|
|
140
|
+
],
|
|
141
|
+
karachi: [
|
|
142
|
+
"شاہراہِ فیصل پر بہت رش ہے، دوسرا راستہ لیں",
|
|
143
|
+
"کلفٹن میں ابھی سرج چل رہا ہے",
|
|
144
|
+
"ڈیفنس میں پانی کھڑا ہے، احتیاط کریں",
|
|
145
|
+
"کوئی گلشن اقبال میں ہے؟ آرڈر بہت آ رہے ہیں",
|
|
146
|
+
"تھوڑا آرام کر لوں، سات گھنٹے ہو گئے",
|
|
147
|
+
],
|
|
148
|
+
kualalumpur: [
|
|
149
|
+
"Jam teruk kat Jalan Tun Razak, ambil jalan lain",
|
|
150
|
+
"Ada surge kat KLCC sekarang",
|
|
151
|
+
"Hati-hati banjir kilat kat Bangsar",
|
|
152
|
+
"Sesiapa kat Cheras? Banyak order masuk",
|
|
153
|
+
"Rehat kejap, dah 7 jam bawa motor",
|
|
154
|
+
],
|
|
155
|
+
bengaluru: [
|
|
156
|
+
"Silk Board nalli traffic jaasti ide, bere route togolli",
|
|
157
|
+
"Koramangala kade surge idhe eega",
|
|
158
|
+
"Outer Ring Road nalli neeru nintide, hushar",
|
|
159
|
+
"Yaaru Whitefield nalli iddira? Orders tumba bartaide",
|
|
160
|
+
"Swalpa rest, belagininda 90 km aagide",
|
|
161
|
+
],
|
|
162
|
+
lahore: [
|
|
163
|
+
"فیروزپور روڈ پر بہت ٹریفک ہے، دوسرا راستہ لیں",
|
|
164
|
+
"گلبرگ میں ابھی سرج لگا ہوا ہے",
|
|
165
|
+
"ڈی ایچ اے میں پانی کھڑا ہے، دھیان سے",
|
|
166
|
+
"کوئی جوہر ٹاؤن میں ہے؟ آرڈر بہت ہیں",
|
|
167
|
+
"چائے کا وقفہ، صبح سے ستر کلومیٹر ہو گئے",
|
|
168
|
+
],
|
|
169
|
+
chennai: [
|
|
170
|
+
"Anna Salai la romba traffic, vera route la ponga",
|
|
171
|
+
"T Nagar pakkam ippo surge irukku",
|
|
172
|
+
"Velachery la thanni thengi irukku, jaakirathai",
|
|
173
|
+
"Yaaru OMR la irukkeenga? Orders niraya varuthu",
|
|
174
|
+
"Konjam rest, kaalaila irunthu 80 km aachu",
|
|
175
|
+
],
|
|
176
|
+
hyderabad: [
|
|
177
|
+
"Hitech City daggara traffic ekkuva undi, vere route veldam",
|
|
178
|
+
"Banjara Hills lo ippudu surge nadustondi",
|
|
179
|
+
"Kukatpally lo neellu nilichayi, jagratha",
|
|
180
|
+
"Evaraina Gachibowli lo unnara? Orders baaga vastunnayi",
|
|
181
|
+
"Konchem rest, udayam nunchi 85 km ayindi",
|
|
182
|
+
],
|
|
183
|
+
kolkata: [
|
|
184
|
+
"ই এম বাইপাসে প্রচুর জ্যাম, অন্য রাস্তা ধরুন",
|
|
185
|
+
"পার্ক স্ট্রিটে এখন সার্জ চলছে",
|
|
186
|
+
"সল্টলেকে জল জমেছে, সাবধানে চালান",
|
|
187
|
+
"কেউ কি হাওড়ায় আছেন? অর্ডার প্রচুর আসছে",
|
|
188
|
+
"একটু চা খেয়ে নিই, সকাল থেকে ৭৫ কিলোমিটার",
|
|
189
|
+
],
|
|
190
|
+
hanoi: [
|
|
191
|
+
"Tắc đường kinh khủng ở Trường Chinh, đi lối khác nhé",
|
|
192
|
+
"Đang có thưởng khu Hoàn Kiếm, tranh thủ đi",
|
|
193
|
+
"Cẩn thận ngập ở Thái Hà nhé anh em",
|
|
194
|
+
"Ai đang ở Cầu Giấy không? Đơn về nhiều lắm",
|
|
195
|
+
"Nghỉ tí đã, chạy từ sáng được 80 cây rồi",
|
|
196
|
+
],
|
|
197
|
+
surabaya: [
|
|
198
|
+
"Macet parah di Ahmad Yani, lewat jalan lain aja",
|
|
199
|
+
"Lagi surge di Tunjungan, lumayan nih",
|
|
200
|
+
"Hati-hati genangan di Rungkut",
|
|
201
|
+
"Ada yang di Gubeng? Orderan rame banget",
|
|
202
|
+
"Istirahat dulu, udah 8 jam narik",
|
|
203
|
+
],
|
|
204
|
+
cebu: [
|
|
205
|
+
"Grabe ang traffic sa Colon, lain dalan na lang",
|
|
206
|
+
"Naay surge karon sa IT Park, sulit",
|
|
207
|
+
"Bantay sa baha sa Mandaue, hinay-hinay",
|
|
208
|
+
"Kinsa naa sa Lahug? Daghan kaayo booking",
|
|
209
|
+
"Pahulay sa, 7 oras na ko nagdrive",
|
|
210
|
+
],
|
|
211
|
+
colombo: [
|
|
212
|
+
"ගාලු පාරේ විශාල රථවාහන තදබදයක්, වෙන පාරකින් යන්න",
|
|
213
|
+
"දැන් කොල්ලුපිටියේ සර්ජ් එකක් තියෙනවා",
|
|
214
|
+
"දෙහිවලේ වතුර පිරිලා, පරිස්සමෙන්",
|
|
215
|
+
"නුගේගොඩ ඉන්නේ කවුද? ඕඩර් ගොඩක් එනවා",
|
|
216
|
+
"පොඩි විවේකයක්, උදේ ඉඳන් කිලෝමීටර් 70යි",
|
|
217
|
+
],
|
|
218
|
+
kathmandu: [
|
|
219
|
+
"कोटेश्वरमा धेरै जाम छ, अर्को बाटो जानुहोस्",
|
|
220
|
+
"अहिले ठमेलमा सर्ज चलिरहेको छ",
|
|
221
|
+
"बल्खुमा पानी जमेको छ, ध्यान दिनुहोस्",
|
|
222
|
+
"कोही ललितपुरमा हुनुहुन्छ? अर्डर धेरै आइरहेको छ",
|
|
223
|
+
"अलिकति आराम, बिहानदेखि ६० किलोमिटर भयो",
|
|
224
|
+
],
|
|
225
|
+
phnompenh: [
|
|
226
|
+
"ស្ទះចរាចរណ៍ខ្លាំងនៅមហាវិថីមុនីវង្ស សូមប្រើផ្លូវផ្សេង",
|
|
227
|
+
"ឥឡូវមានតម្លៃឡើងនៅបឹងកេងកង",
|
|
228
|
+
"ប្រយ័ត្នទឹកជន់នៅទួលគោក",
|
|
229
|
+
"អ្នកណានៅចំការមនទេ? ការកម្ម៉ង់ច្រើនណាស់",
|
|
230
|
+
"សម្រាកបន្តិច បើកបានប្រាំពីរម៉ោងហើយ",
|
|
231
|
+
],
|
|
232
|
+
ahmedabad: [
|
|
233
|
+
"એસ જી હાઈવે પર બહુ ટ્રાફિક છે, બીજો રસ્તો લો",
|
|
234
|
+
"અત્યારે સી જી રોડ પર સર્જ ચાલે છે",
|
|
235
|
+
"મણિનગરમાં પાણી ભરાયું છે, સાચવીને",
|
|
236
|
+
"કોઈ વસ્ત્રાપુરમાં છે? ઓર્ડર બહુ આવે છે",
|
|
237
|
+
"થોડો આરામ, સવારથી ૭૫ કિલોમીટર થયા",
|
|
238
|
+
],
|
|
239
|
+
pune: [
|
|
240
|
+
"हिंजवडीला खूप ट्रॅफिक आहे, दुसऱ्या रस्त्याने जा",
|
|
241
|
+
"कोरेगाव पार्कला आत्ता सर्ज चालू आहे",
|
|
242
|
+
"कात्रजला पाणी साचलंय, जपून चला",
|
|
243
|
+
"कोणी विमाननगरला आहे का? ऑर्डर खूप येतायत",
|
|
244
|
+
"जरा आराम, सकाळपासून ८० किलोमीटर झाले",
|
|
245
|
+
],
|
|
246
|
+
jaipur: [
|
|
247
|
+
"टोंक रोड पर बहुत जाम है, दूसरा रास्ता लो",
|
|
248
|
+
"एम आई रोड पर अभी सर्ज चल रहा है",
|
|
249
|
+
"मानसरोवर में पानी भर गया, संभल के",
|
|
250
|
+
"कोई वैशाली नगर में है? ऑर्डर बहुत आ रहे",
|
|
251
|
+
"थोड़ा आराम, सुबह से ७० किलोमीटर हो गए",
|
|
252
|
+
],
|
|
253
|
+
islamabad: [
|
|
254
|
+
"سری نگر ہائی وے پر رش ہے، دوسرا راستہ لیں",
|
|
255
|
+
"بلیو ایریا میں ابھی سرج ہے",
|
|
256
|
+
"جی الیون میں پانی کھڑا ہے، احتیاط",
|
|
257
|
+
"کوئی ایف سیون میں ہے؟ آرڈر بہت ہیں",
|
|
258
|
+
"تھوڑا آرام، صبح سے پینسٹھ کلومیٹر",
|
|
259
|
+
],
|
|
260
|
+
chittagong: [
|
|
261
|
+
"আগ্রাবাদে অনেক জ্যাম, অন্য রাস্তা ধরুন",
|
|
262
|
+
"জিইসি মোড়ে এখন সার্জ চলছে",
|
|
263
|
+
"চকবাজারে পানি জমেছে, সাবধানে",
|
|
264
|
+
"কেউ কি খুলশীতে আছেন? অর্ডার অনেক",
|
|
265
|
+
"একটু বিশ্রাম, সকাল থেকে ৭০ কিলোমিটার",
|
|
266
|
+
],
|
|
267
|
+
danang: [
|
|
268
|
+
"Kẹt xe ở cầu Rồng, đi đường khác nhé",
|
|
269
|
+
"Đang có thưởng khu Hải Châu",
|
|
270
|
+
"Cẩn thận ngập ở Thanh Khê nha",
|
|
271
|
+
"Ai đang ở Sơn Trà không? Đơn nhiều lắm",
|
|
272
|
+
"Nghỉ chút, chạy từ sáng được 65 cây",
|
|
273
|
+
],
|
|
274
|
+
bandung: [
|
|
275
|
+
"Macet di Pasteur, lewat jalan lain aja",
|
|
276
|
+
"Lagi surge di Dago, lumayan",
|
|
277
|
+
"Hati-hati genangan di Kiaracondong",
|
|
278
|
+
"Ada yang di Buah Batu? Orderan rame",
|
|
279
|
+
"Istirahat dulu, udah 7 jam narik",
|
|
280
|
+
],
|
|
281
|
+
davao: [
|
|
282
|
+
"Grabe ang traffic sa Quimpo, lain dalan na lang",
|
|
283
|
+
"Naay surge karon sa Lanang",
|
|
284
|
+
"Bantay sa baha sa Matina, hinay lang",
|
|
285
|
+
"Kinsa naa sa Buhangin? Daghan booking",
|
|
286
|
+
"Pahulay sa, 7 oras na ko nagdrive",
|
|
287
|
+
],
|
|
288
|
+
chiangmai: [
|
|
289
|
+
"รถติดแถวช้างเผือก ใช้ทางอื่นดีกว่า",
|
|
290
|
+
"ตอนนี้ราคาขึ้นแถวนิมมาน",
|
|
291
|
+
"ระวังน้ำท่วมแถวสันทราย",
|
|
292
|
+
"ใครอยู่แถวสันกำแพงบ้าง งานเยอะ",
|
|
293
|
+
"พักก่อน วิ่งมา 6 ชั่วโมงแล้ว",
|
|
294
|
+
],
|
|
295
|
+
yangon: [
|
|
296
|
+
"ပြည်လမ်းမှာ ကားပိတ်နေတယ်၊ တခြားလမ်းသွားပါ",
|
|
297
|
+
"အခု ဗိုလ်ချုပ်လမ်းမှာ ဈေးတက်နေတယ်",
|
|
298
|
+
"လှိုင်မှာ ရေဝပ်နေတယ်၊ သတိထားပါ",
|
|
299
|
+
"ကမာရွတ်မှာ ဘယ်သူရှိလဲ။ အော်ဒါတွေများတယ်",
|
|
300
|
+
"ခဏနားလိုက်ဦးမယ်၊ မနက်ကတည်းက ၆၀ ကီလို",
|
|
301
|
+
],
|
|
302
|
+
saopaulo: [
|
|
303
|
+
"Trânsito parado na Marginal, pega outro caminho",
|
|
304
|
+
"Tá com dinâmica alta na Paulista agora",
|
|
305
|
+
"Cuidado com o alagamento na Radial Leste",
|
|
306
|
+
"Alguém na Vila Olímpia? Tá chovendo pedido",
|
|
307
|
+
"Vou parar pra um café, 80 km desde cedo",
|
|
308
|
+
],
|
|
309
|
+
mexicocity: [
|
|
310
|
+
"Tráfico pesado en Periférico, agarren otra ruta",
|
|
311
|
+
"Hay tarifa dinámica en Polanco ahorita",
|
|
312
|
+
"Aguas con el encharcamiento en Viaducto",
|
|
313
|
+
"¿Alguien por Condesa? Están cayendo muchos pedidos",
|
|
314
|
+
"Me paro tantito, llevo 7 horas rodando",
|
|
315
|
+
],
|
|
316
|
+
bogota: [
|
|
317
|
+
"Trancón bravo en la Boyacá, cojan otra vía",
|
|
318
|
+
"Está en dinámica la zona T ahora",
|
|
319
|
+
"Ojo con el encharcamiento en la 68",
|
|
320
|
+
"¿Alguien por Chapinero? Entran hartos domicilios",
|
|
321
|
+
"Paro un rato, llevo 75 km desde la mañana",
|
|
322
|
+
],
|
|
323
|
+
buenosaires: [
|
|
324
|
+
"Está imposible el tránsito en General Paz, tomen otra",
|
|
325
|
+
"Hay tarifa alta en Palermo ahora",
|
|
326
|
+
"Ojo que se inunda en Constitución",
|
|
327
|
+
"¿Alguien por Belgrano? Entran un montón de pedidos",
|
|
328
|
+
"Corto un rato, ya hice 80 km",
|
|
329
|
+
],
|
|
330
|
+
lima: [
|
|
331
|
+
"Tráfico pesado en la Javier Prado, agarren otra ruta",
|
|
332
|
+
"Está con tarifa alta Miraflores ahorita",
|
|
333
|
+
"Cuidado con el hueco en la Panamericana",
|
|
334
|
+
"¿Alguien por San Isidro? Caen hartos pedidos",
|
|
335
|
+
"Paro un rato, 7 horas manejando",
|
|
336
|
+
],
|
|
337
|
+
santiago: [
|
|
338
|
+
"Taco terrible en la Kennedy, tomen otra ruta",
|
|
339
|
+
"Está con tarifa alta Providencia ahora",
|
|
340
|
+
"Ojo con la anegación en Vicuña Mackenna",
|
|
341
|
+
"¿Alguien por Ñuñoa? Están cayendo hartos pedidos",
|
|
342
|
+
"Paro un rato, llevo 70 km",
|
|
343
|
+
],
|
|
344
|
+
lagos: [
|
|
345
|
+
"Traffic don hold for Third Mainland, use another road",
|
|
346
|
+
"Surge dey for Lekki now o",
|
|
347
|
+
"Water don gather for Ojota, waka softly",
|
|
348
|
+
"Anybody dey Ikeja? Orders plenty well well",
|
|
349
|
+
"Make I rest small, I don do 6 hours",
|
|
350
|
+
],
|
|
351
|
+
nairobi: [
|
|
352
|
+
"Traffic imesimama Mombasa Road, tumia njia nyingine",
|
|
353
|
+
"Kuna surge Westlands sasa hivi",
|
|
354
|
+
"Angalia maji yamejaa Ngong Road",
|
|
355
|
+
"Kuna mtu Kilimani? Orders ni nyingi sana",
|
|
356
|
+
"Nipumzike kidogo, nimefanya masaa saba",
|
|
357
|
+
],
|
|
358
|
+
accra: [
|
|
359
|
+
"Traffic is heavy on Spintex, take another route",
|
|
360
|
+
"There's surge in Osu right now",
|
|
361
|
+
"Careful, water has gathered at Kwame Nkrumah Circle",
|
|
362
|
+
"Anyone around East Legon? Orders are plenty",
|
|
363
|
+
"Let me rest small, I've done 6 hours",
|
|
364
|
+
],
|
|
365
|
+
cairo: [
|
|
366
|
+
"زحمة شديدة في صلاح سالم، خدوا طريق تاني",
|
|
367
|
+
"في تسعيرة عالية في المهندسين دلوقتي",
|
|
368
|
+
"خلي بالك من المياه في شبرا",
|
|
369
|
+
"حد في مدينة نصر؟ الطلبات كتير",
|
|
370
|
+
"هريح شوية، بقالي سبع ساعات",
|
|
371
|
+
],
|
|
372
|
+
johannesburg: [
|
|
373
|
+
"Traffic is bad on the M1, take another route",
|
|
374
|
+
"There's surge in Sandton right now",
|
|
375
|
+
"Watch out for flooding in Braamfontein",
|
|
376
|
+
"Anyone in Rosebank? Orders are coming in fast",
|
|
377
|
+
"Let me take a break, seven hours already",
|
|
378
|
+
],
|
|
379
|
+
addisababa: [
|
|
380
|
+
"ቦሌ አካባቢ መንገዱ ተጨናንቋል፣ ሌላ መንገድ ይያዙ",
|
|
381
|
+
"አሁን መርካቶ አካባቢ ዋጋ ጨምሯል",
|
|
382
|
+
"ካዛንቺስ ውሃ ቆሟል፣ ተጠንቀቁ",
|
|
383
|
+
"ፒያሳ ያለ አለ? ትዕዛዝ በጣም ብዙ ነው",
|
|
384
|
+
"ትንሽ ላረፍ፣ ሰባት ሰዓት ሆኖኛል",
|
|
385
|
+
],
|
|
386
|
+
daressalaam: [
|
|
387
|
+
"Msongamano mkubwa Morogoro Road, tumia njia nyingine",
|
|
388
|
+
"Kuna bei juu Masaki sasa hivi",
|
|
389
|
+
"Angalia maji Kariakoo, endesha polepole",
|
|
390
|
+
"Kuna mtu Mikocheni? Oda ni nyingi",
|
|
391
|
+
"Nipumzike kidogo, masaa saba tayari",
|
|
392
|
+
],
|
|
393
|
+
kampala: [
|
|
394
|
+
"Traffic is heavy on Entebbe Road, use another route",
|
|
395
|
+
"There's surge in Kololo right now",
|
|
396
|
+
"Careful with the water at Clock Tower",
|
|
397
|
+
"Anyone in Ntinda? Orders are plenty",
|
|
398
|
+
"Let me rest a bit, seven hours already",
|
|
399
|
+
],
|
|
400
|
+
casablanca: [
|
|
401
|
+
"السير خانق فبولفار زرقطوني، دوزو من طريق أخرى",
|
|
402
|
+
"كاين تسعيرة عالية فعين الذياب دابا",
|
|
403
|
+
"عندكم الما تجمع فسيدي البرنوصي",
|
|
404
|
+
"شي واحد فالمعاريف؟ الطلبات بزاف",
|
|
405
|
+
"غادي نرتاح شوية، دزت سبع سوايع",
|
|
406
|
+
],
|
|
407
|
+
istanbul: [
|
|
408
|
+
"E-5'te trafik çok yoğun, başka yoldan gidin",
|
|
409
|
+
"Şu an Kadıköy'de fiyat yüksek",
|
|
410
|
+
"Mecidiyeköy'de su birikmiş, dikkat edin",
|
|
411
|
+
"Beşiktaş'ta olan var mı? Sipariş çok geliyor",
|
|
412
|
+
"Biraz mola vereyim, yedi saat oldu",
|
|
413
|
+
],
|
|
414
|
+
dubai: [
|
|
415
|
+
"ازدحام شديد على شارع الشيخ زايد، خذوا طريق آخر",
|
|
416
|
+
"في تسعيرة مرتفعة في المارينا الآن",
|
|
417
|
+
"انتبهوا للمياه في ديرة",
|
|
418
|
+
"حد في الخليج التجاري؟ الطلبات كثيرة",
|
|
419
|
+
"بأخذ استراحة، صار لي سبع ساعات",
|
|
420
|
+
],
|
|
421
|
+
riyadh: [
|
|
422
|
+
"زحمة على طريق الملك فهد، خذوا طريق ثاني",
|
|
423
|
+
"فيه تسعيرة مرتفعة في العليا الحين",
|
|
424
|
+
"انتبهوا للمياه في السويدي",
|
|
425
|
+
"أحد في الملز؟ الطلبات كثيرة",
|
|
426
|
+
"بارتاح شوي، صار لي سبع ساعات",
|
|
427
|
+
],
|
|
428
|
+
baghdad: [
|
|
429
|
+
"زحمة قوية بشارع فلسطين، خذوا طريق ثاني",
|
|
430
|
+
"أكو تسعيرة عالية بالكرادة هسه",
|
|
431
|
+
"انتبهوا للماي بالدورة",
|
|
432
|
+
"أكو أحد بالمنصور؟ الطلبات هواي",
|
|
433
|
+
"راح أرتاح شوية، صارلي سبع ساعات",
|
|
434
|
+
],
|
|
435
|
+
amman: [
|
|
436
|
+
"زحمة كتير عالمدينة الرياضية، خذوا طريق تاني",
|
|
437
|
+
"في تسعيرة عالية بعبدون هلق",
|
|
438
|
+
"انتبهوا للمي بوسط البلد",
|
|
439
|
+
"في حدا بالصويفية؟ الطلبات كتير",
|
|
440
|
+
"بدي أرتاح شوي، صارلي سبع ساعات",
|
|
441
|
+
],
|
|
442
|
+
moscow: [
|
|
443
|
+
"Пробка на ТТК, поезжайте другой дорогой",
|
|
444
|
+
"Сейчас повышенный тариф в Москва-Сити",
|
|
445
|
+
"Осторожно, вода на Ленинградке",
|
|
446
|
+
"Кто-нибудь на Тверской? Заказов очень много",
|
|
447
|
+
"Передохну немного, семь часов за рулём",
|
|
448
|
+
],
|
|
449
|
+
kyiv: [
|
|
450
|
+
"Затор на Броварському, їдьте іншою дорогою",
|
|
451
|
+
"Зараз підвищений тариф на Печерську",
|
|
452
|
+
"Обережно, вода на Оболоні",
|
|
453
|
+
"Хтось на Позняках? Замовлень дуже багато",
|
|
454
|
+
"Трохи відпочину, сім годин за кермом",
|
|
455
|
+
],
|
|
456
|
+
warsaw: [
|
|
457
|
+
"Korek na Wisłostradzie, jedźcie inną trasą",
|
|
458
|
+
"Teraz jest wyższa stawka na Mokotowie",
|
|
459
|
+
"Uwaga, woda na Marszałkowskiej",
|
|
460
|
+
"Ktoś na Woli? Zamówień jest dużo",
|
|
461
|
+
"Zrobię sobie przerwę, siedem godzin już",
|
|
462
|
+
],
|
|
463
|
+
bucharest: [
|
|
464
|
+
"Trafic infernal pe Centura, luați altă rută",
|
|
465
|
+
"Acum e tarif mărit în Pipera",
|
|
466
|
+
"Atenție la apa de pe Berceni",
|
|
467
|
+
"E cineva prin Dorobanți? Vin multe comenzi",
|
|
468
|
+
"Iau o pauză, sunt de șapte ore pe drum",
|
|
469
|
+
],
|
|
470
|
+
madrid: [
|
|
471
|
+
"Atasco tremendo en la M-30, coged otra ruta",
|
|
472
|
+
"Ahora hay tarifa alta en Chamberí",
|
|
473
|
+
"Cuidado con el agua en Atocha",
|
|
474
|
+
"¿Alguien por Malasaña? Están entrando muchos pedidos",
|
|
475
|
+
"Voy a descansar un rato, llevo siete horas",
|
|
476
|
+
],
|
|
477
|
+
almaty: [
|
|
478
|
+
"Пробка на Аль-Фараби, езжайте другой дорогой",
|
|
479
|
+
"Сейчас повышенный тариф в центре",
|
|
480
|
+
"Осторожно, вода на Райымбека",
|
|
481
|
+
"Кто-нибудь на Достык? Заказов очень много",
|
|
482
|
+
"Отдохну немного, семь часов уже",
|
|
483
|
+
],
|
|
484
|
+
tashkent: [
|
|
485
|
+
"Chilonzorda tirbandlik katta, boshqa yo'ldan boring",
|
|
486
|
+
"Hozir markazda narx oshgan",
|
|
487
|
+
"Yunusobodda suv yig'ilgan, ehtiyot bo'ling",
|
|
488
|
+
"Sergelida kim bor? Buyurtma juda ko'p",
|
|
489
|
+
"Biroz dam olay, yetti soat bo'ldi",
|
|
490
|
+
],
|
|
491
|
+
baku: [
|
|
492
|
+
"Tıxac var Heydər Əliyev prospektində, başqa yolla gedin",
|
|
493
|
+
"İndi Nərimanovda qiymət yüksəkdir",
|
|
494
|
+
"Diqqətli olun, Xətaidə su yığılıb",
|
|
495
|
+
"Yasamalda kim var? Sifariş çox gəlir",
|
|
496
|
+
"Bir az dincələcəm, yeddi saatdır sürürəm",
|
|
497
|
+
],
|
|
498
|
+
singapore: [
|
|
499
|
+
"Jam quite bad along PIE, take CTE instead",
|
|
500
|
+
"Surge at Orchard now, worth queueing",
|
|
501
|
+
"Careful, flash flood at Bukit Timah",
|
|
502
|
+
"Anyone at Tampines? Orders coming in fast",
|
|
503
|
+
"Taking a break lah, 7 hours already",
|
|
504
|
+
],
|
|
505
|
+
tokyo: [
|
|
506
|
+
"環七が渋滞してます、別ルートで",
|
|
507
|
+
"今、渋谷エリアは料金アップ中です",
|
|
508
|
+
"品川あたり冠水注意してください",
|
|
509
|
+
"新宿にいる人いますか?注文が多いです",
|
|
510
|
+
"少し休憩します、7時間走りました",
|
|
511
|
+
],
|
|
512
|
+
seoul: [
|
|
513
|
+
"강변북로 정체 심해요, 다른 길로 가세요",
|
|
514
|
+
"지금 강남 할증 붙었습니다",
|
|
515
|
+
"여의도 물 고였어요, 조심하세요",
|
|
516
|
+
"홍대 근처 계신 분? 콜 엄청 많아요",
|
|
517
|
+
"잠깐 쉬겠습니다, 7시간 됐네요",
|
|
518
|
+
],
|
|
519
|
+
tbilisi: [
|
|
520
|
+
"დიდი საცობია რუსთაველზე, სხვა გზით წადით",
|
|
521
|
+
"ახლა ვაკეში ფასი აწეულია",
|
|
522
|
+
"საბურთალოზე წყალი დგას, ფრთხილად",
|
|
523
|
+
"ვინმე ვარკეთილში ხართ? შეკვეთები ბევრია",
|
|
524
|
+
"ცოტა დავისვენებ, შვიდი საათია",
|
|
525
|
+
],
|
|
526
|
+
belgrade: [
|
|
527
|
+
"Велика гужва на Аутокоманди, идите другим путем",
|
|
528
|
+
"Сада је виша цена на Врачару",
|
|
529
|
+
"Пажљиво, вода на Новом Београду",
|
|
530
|
+
"Има ли неко на Дорћолу? Много поруџбина",
|
|
531
|
+
"Одмарам мало, седам сати већ",
|
|
532
|
+
],
|
|
533
|
+
lisbon: [
|
|
534
|
+
"Trânsito parado na Segunda Circular, vão por outro lado",
|
|
535
|
+
"Está com tarifa alta no Chiado agora",
|
|
536
|
+
"Cuidado com a água em Alcântara",
|
|
537
|
+
"Alguém em Benfica? Estão a entrar muitos pedidos",
|
|
538
|
+
"Vou parar um bocado, sete horas já",
|
|
539
|
+
],
|
|
540
|
+
milan: [
|
|
541
|
+
"Traffico bloccato sulla Tangenziale, prendete un'altra strada",
|
|
542
|
+
"Adesso c'è tariffa alta in Porta Nuova",
|
|
543
|
+
"Attenzione all'acqua in Navigli",
|
|
544
|
+
"C'è qualcuno a Lambrate? Arrivano tanti ordini",
|
|
545
|
+
"Faccio una pausa, sono sette ore",
|
|
546
|
+
],
|
|
547
|
+
dakar: [
|
|
548
|
+
"Gros embouteillage sur la VDN, prenez une autre route",
|
|
549
|
+
"Il y a une majoration aux Almadies maintenant",
|
|
550
|
+
"Attention à l'eau à Pikine",
|
|
551
|
+
"Quelqu'un à Ouakam ? Les commandes arrivent beaucoup",
|
|
552
|
+
"Je fais une pause, ça fait sept heures",
|
|
553
|
+
],
|
|
554
|
+
quito: [
|
|
555
|
+
"Tráfico pesado en la Simón Bolívar, cojan otra ruta",
|
|
556
|
+
"Está con tarifa alta La Carolina ahorita",
|
|
557
|
+
"Ojo con el agua en el Centro Histórico",
|
|
558
|
+
"¿Alguien por Cumbayá? Están entrando hartos pedidos",
|
|
559
|
+
"Paro un rato, llevo siete horas",
|
|
560
|
+
],
|
|
57
561
|
};
|
|
58
562
|
|
|
59
563
|
const REPLIES = [
|
|
@@ -71,6 +575,68 @@ const NAMES = {
|
|
|
71
575
|
delhi: ["Vikas Yadav", "Neha Gupta", "Rahul Verma", "Pooja Singh", "Manoj Kumar"],
|
|
72
576
|
jakarta: ["Budi Santoso", "Siti Rahayu", "Agus Wijaya", "Dewi Lestari", "Eko Prasetyo"],
|
|
73
577
|
bangkok: ["Somchai Prasert", "Ratana Wong", "Niran Suk", "Malee Chai", "Kittipong S."],
|
|
578
|
+
hcmc: ["Nguyen Van Hung", "Tran Thi Mai", "Le Minh Tuan", "Pham Thu Ha", "Vo Quoc Bao"],
|
|
579
|
+
dhaka: ["Rafiqul Islam", "Nasrin Akter", "Shahin Alam", "Taslima Begum", "Jamal Uddin"],
|
|
580
|
+
karachi: ["Asif Mehmood", "Ayesha Khan", "Bilal Ahmed", "Farah Siddiqui", "Usman Raza"],
|
|
581
|
+
kualalumpur: ["Ahmad Faizal", "Nurul Aina", "Tan Wei Ming", "Siti Zubaidah", "Ravi Kumar"],
|
|
582
|
+
bengaluru: ["Manjunath Rao", "Deepa Shetty", "Kiran Gowda", "Lakshmi Prasad", "Suresh Babu"],
|
|
583
|
+
lahore: ["Tariq Javed", "Sadia Malik", "Imran Butt", "Rabia Nawaz", "Zeeshan Iqbal"],
|
|
584
|
+
chennai: ["Murugan Selvam", "Kavitha Raman", "Arun Prakash", "Divya Krishnan", "Senthil Kumar"],
|
|
585
|
+
hyderabad: ["Venkatesh Reddy", "Swathi Rao", "Naveen Chandra", "Padma Latha", "Srinivas Goud"],
|
|
586
|
+
kolkata: ["Subhas Ghosh", "Ananya Das", "Bikash Mondal", "Rituparna Sen", "Debasish Roy"],
|
|
587
|
+
hanoi: ["Do Van Long", "Bui Thi Lan", "Hoang Minh Duc", "Ngo Thu Trang", "Dang Quoc Anh"],
|
|
588
|
+
surabaya: ["Slamet Wibowo", "Rina Kusuma", "Bambang Setiawan", "Endah Puspita", "Joko Susilo"],
|
|
589
|
+
cebu: ["Junjun Abella", "Rosalie Yap", "Boyet Villar", "Marites Go", "Dodong Lim"],
|
|
590
|
+
colombo: ["Nuwan Perera", "Chamari Silva", "Kasun Fernando", "Dilani Jayasuriya", "Sampath Ranasinghe"],
|
|
591
|
+
kathmandu: ["Bikash Thapa", "Sunita Shrestha", "Ramesh Adhikari", "Anjali Gurung", "Prakash Tamang"],
|
|
592
|
+
phnompenh: ["Sokha Chan", "Sreymom Kim", "Vuthy Sok", "Bopha Meas", "Dara Heng"],
|
|
593
|
+
ahmedabad: ["Jignesh Patel", "Hetal Shah", "Kalpesh Desai", "Bhavna Mehta", "Nilesh Trivedi"],
|
|
594
|
+
pune: ["Sachin Deshmukh", "Snehal Joshi", "Amol Kulkarni", "Manasi Pawar", "Nitin Jadhav"],
|
|
595
|
+
jaipur: ["Mahendra Meena", "Sunita Choudhary", "Dinesh Saini", "Rekha Sharma", "Vijay Rathore"],
|
|
596
|
+
islamabad: ["Kamran Abbasi", "Hina Shah", "Waqar Khattak", "Sana Gul", "Adnan Qureshi"],
|
|
597
|
+
chittagong: ["Mizanur Rahman", "Shirin Sultana", "Anwar Hossain", "Rumana Khatun", "Faisal Chowdhury"],
|
|
598
|
+
danang: ["Truong Van Nam", "Le Thi Hoa", "Phan Minh Khoa", "Nguyen Thuy Linh", "Huynh Tan Phat"],
|
|
599
|
+
bandung: ["Asep Suryadi", "Nining Herlina", "Dadang Hermawan", "Euis Rohaeti", "Yusuf Maulana"],
|
|
600
|
+
davao: ["Nonoy Bautista", "Cherry Lou Diaz", "Toto Mendoza", "Baby Jane Ong", "Jomar Alcantara"],
|
|
601
|
+
chiangmai: ["Anucha Pongsri", "Wilai Boonmee", "Somsak Inta", "Praewa Chaiyo", "Thanet Kaewta"],
|
|
602
|
+
yangon: ["Aung Ko Min", "Thida Win", "Zaw Lin Htet", "Nilar Aye", "Kyaw Soe Moe"],
|
|
603
|
+
saopaulo: ["Carlos Silva", "Ana Oliveira", "Rafael Souza", "Juliana Costa", "Bruno Santos"],
|
|
604
|
+
mexicocity: ["Juan Hernández", "María López", "Luis García", "Guadalupe Ramírez", "Jorge Martínez"],
|
|
605
|
+
bogota: ["Andrés Rodríguez", "Catalina Gómez", "Julián Moreno", "Paola Vargas", "Camilo Ruiz"],
|
|
606
|
+
buenosaires: ["Matías Fernández", "Sofía Romero", "Nicolás Álvarez", "Lucía Benítez", "Diego Sosa"],
|
|
607
|
+
lima: ["José Quispe", "Rosa Huamán", "Carlos Mamani", "Elena Flores", "Miguel Castillo"],
|
|
608
|
+
santiago: ["Sebastián Muñoz", "Camila Rojas", "Felipe Contreras", "Valentina Soto", "Rodrigo Díaz"],
|
|
609
|
+
lagos: ["Chinedu Okafor", "Aisha Bello", "Tunde Adeyemi", "Ngozi Eze", "Musa Ibrahim"],
|
|
610
|
+
nairobi: ["Peter Kamau", "Grace Wanjiru", "Brian Otieno", "Mercy Achieng", "Samuel Mwangi"],
|
|
611
|
+
accra: ["Kwame Mensah", "Akosua Boateng", "Yaw Owusu", "Abena Asante", "Kofi Darko"],
|
|
612
|
+
cairo: ["Ahmed Hassan", "Fatma Ali", "Mohamed Saad", "Nour Ibrahim", "Mostafa Zaki"],
|
|
613
|
+
johannesburg: ["Sipho Nkosi", "Thandi Dlamini", "Bongani Mokoena", "Lerato Molefe", "Jabu Sithole"],
|
|
614
|
+
addisababa: ["Abebe Tadesse", "Selam Girma", "Dawit Bekele", "Hanan Ahmed", "Yonas Haile"],
|
|
615
|
+
daressalaam: ["Juma Mwakyusa", "Neema Kimaro", "Hamisi Said", "Zawadi Mushi", "Baraka Massawe"],
|
|
616
|
+
kampala: ["Moses Okello", "Sarah Nakato", "David Ssempa", "Grace Namuli", "Joseph Mugisha"],
|
|
617
|
+
casablanca: ["Youssef El Amrani", "Fatima Zahra", "Karim Benali", "Salma Idrissi", "Rachid Ouali"],
|
|
618
|
+
istanbul: ["Mehmet Yılmaz", "Ayşe Demir", "Mustafa Kaya", "Zeynep Şahin", "Emre Çelik"],
|
|
619
|
+
dubai: ["Rashid Al Maktoum", "Layla Hassan", "Omar Farooq", "Mariam Saeed", "Bilal Ahmed"],
|
|
620
|
+
riyadh: ["Abdullah Al Qahtani", "Noura Al Saud", "Fahad Al Otaibi", "Reem Al Harbi", "Saud Al Dosari"],
|
|
621
|
+
baghdad: ["Ali Al Jubouri", "Zainab Hussein", "Omar Al Ani", "Hala Kadhim", "Mustafa Salim"],
|
|
622
|
+
amman: ["Khaled Al Masri", "Rania Haddad", "Samer Odeh", "Dina Qasem", "Tareq Nasser"],
|
|
623
|
+
moscow: ["Ivan Petrov", "Olga Smirnova", "Dmitry Kuznetsov", "Elena Popova", "Sergey Volkov"],
|
|
624
|
+
kyiv: ["Oleksandr Kovalenko", "Iryna Bondarenko", "Andriy Tkachenko", "Nataliya Shevchenko", "Vitaliy Melnyk"],
|
|
625
|
+
warsaw: ["Piotr Nowak", "Anna Kowalska", "Marek Wójcik", "Katarzyna Lewandowska", "Tomasz Zieliński"],
|
|
626
|
+
bucharest: ["Andrei Popescu", "Elena Ionescu", "Mihai Radu", "Ioana Dumitru", "Cristian Stan"],
|
|
627
|
+
madrid: ["Javier García", "Lucía Fernández", "Sergio Martín", "Carmen Ruiz", "Álvaro Jiménez"],
|
|
628
|
+
almaty: ["Nurlan Abenov", "Aigul Serikova", "Yerlan Kassymov", "Dana Nurpeisova", "Timur Zhaksybek"],
|
|
629
|
+
tashkent: ["Aziz Karimov", "Nilufar Rashidova", "Bekzod Tursunov", "Malika Yusupova", "Sardor Ergashev"],
|
|
630
|
+
baku: ["Elvin Mammadov", "Leyla Aliyeva", "Rashad Huseynov", "Nigar Guliyeva", "Orkhan Ismayilov"],
|
|
631
|
+
singapore: ["Tan Wei Jie", "Siti Nurhaliza", "Ravi Subramaniam", "Lim Mei Ling", "Muhammad Faizal"],
|
|
632
|
+
tokyo: ["Hiroshi Tanaka", "Yuki Sato", "Kenji Suzuki", "Aiko Watanabe", "Takeshi Yamamoto"],
|
|
633
|
+
seoul: ["Kim Min-jun", "Lee Ji-woo", "Park Seo-yun", "Choi Dong-hyun", "Jung Ha-eun"],
|
|
634
|
+
tbilisi: ["Giorgi Beridze", "Nino Kapanadze", "Levan Gogoladze", "Tamar Chkheidze", "Davit Maisuradze"],
|
|
635
|
+
belgrade: ["Marko Petrović", "Jelena Nikolić", "Stefan Jovanović", "Ana Đorđević", "Nikola Ilić"],
|
|
636
|
+
lisbon: ["João Silva", "Maria Santos", "Pedro Ferreira", "Ana Costa", "Tiago Oliveira"],
|
|
637
|
+
milan: ["Marco Rossi", "Giulia Bianchi", "Luca Ferrari", "Sofia Romano", "Alessandro Conti"],
|
|
638
|
+
dakar: ["Moussa Diop", "Aminata Ndiaye", "Cheikh Fall", "Fatou Sarr", "Ibrahima Sow"],
|
|
639
|
+
quito: ["Carlos Andrade", "María Guerrero", "Luis Paredes", "Gabriela Vaca", "Diego Chávez"],
|
|
74
640
|
};
|
|
75
641
|
|
|
76
642
|
const PLATFORMS = {
|
|
@@ -79,14 +645,90 @@ const PLATFORMS = {
|
|
|
79
645
|
delhi: ["uber", "ola", "blinkit", "zepto", "amazon"],
|
|
80
646
|
jakarta: ["gojek", "grab", "shopeefood", "maxim", "indrive"],
|
|
81
647
|
bangkok: ["grab", "foodpanda", "lalamove", "shopeefood", "bolt"],
|
|
648
|
+
hcmc: ["grab", "be", "gojek", "shopeefood", "ahamove"],
|
|
649
|
+
dhaka: ["pathao", "uber", "foodpanda", "shohoz", "chaldal"],
|
|
650
|
+
karachi: ["careem", "bykea", "indrive", "foodpanda", "yango"],
|
|
651
|
+
kualalumpur: ["grab", "foodpanda", "lalamove", "shopeefood", "maxim"],
|
|
652
|
+
bengaluru: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
653
|
+
lahore: ["careem", "bykea", "indrive", "foodpanda", "yango"],
|
|
654
|
+
chennai: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
655
|
+
hyderabad: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
656
|
+
kolkata: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
657
|
+
hanoi: ["grab", "be", "gojek", "shopeefood", "ahamove"],
|
|
658
|
+
surabaya: ["gojek", "grab", "shopeefood", "maxim", "indrive"],
|
|
659
|
+
cebu: ["grab", "angkas", "joyride", "foodpanda", "lalamove"],
|
|
660
|
+
colombo: ["pickme", "uber", "ubereats", "kangaroo", "darazfood"],
|
|
661
|
+
kathmandu: ["pathao", "indrive", "foodmandu", "tootle", "bhojdeals"],
|
|
662
|
+
phnompenh: ["grab", "passapp", "nham24", "foodpanda", "wownow"],
|
|
663
|
+
ahmedabad: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
664
|
+
pune: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
665
|
+
jaipur: ["uber", "ola", "swiggy", "zomato", "rapido"],
|
|
666
|
+
islamabad: ["careem", "bykea", "indrive", "foodpanda", "yango"],
|
|
667
|
+
chittagong: ["pathao", "uber", "foodpanda", "shohoz", "chaldal"],
|
|
668
|
+
danang: ["grab", "be", "gojek", "shopeefood", "ahamove"],
|
|
669
|
+
bandung: ["gojek", "grab", "shopeefood", "maxim", "indrive"],
|
|
670
|
+
davao: ["grab", "angkas", "joyride", "foodpanda", "lalamove"],
|
|
671
|
+
chiangmai: ["grab", "foodpanda", "lalamove", "shopeefood", "bolt"],
|
|
672
|
+
yangon: ["grab", "oway", "foodpanda", "yangonD2D", "hlaw"],
|
|
673
|
+
saopaulo: ["99", "ifood", "uber", "rappi", "loggi"],
|
|
674
|
+
mexicocity: ["uber", "didi", "rappi", "beat", "cornershop"],
|
|
675
|
+
bogota: ["rappi", "uber", "didi", "picap", "cabify"],
|
|
676
|
+
buenosaires: ["rappi", "pedidosya", "uber", "cabify", "didi"],
|
|
677
|
+
lima: ["rappi", "pedidosya", "uber", "didi", "cabify"],
|
|
678
|
+
santiago: ["uber", "rappi", "pedidosya", "cabify", "didi"],
|
|
679
|
+
lagos: ["bolt", "uber", "gokada", "chowdeck", "glovo"],
|
|
680
|
+
nairobi: ["bolt", "uber", "glovo", "little", "faras"],
|
|
681
|
+
accra: ["bolt", "uber", "glovo", "yango", "jumiafood"],
|
|
682
|
+
cairo: ["uber", "careem", "talabat", "breadfast", "elmenus"],
|
|
683
|
+
johannesburg: ["bolt", "uber", "mrd", "sixty60", "takealot"],
|
|
684
|
+
addisababa: ["ride", "feres", "zayride", "deliveraddis", "beu"],
|
|
685
|
+
daressalaam: ["bolt", "uber", "littlecab", "piki", "jumiafood"],
|
|
686
|
+
kampala: ["safeboda", "bolt", "uber", "jumiafood", "glovo"],
|
|
687
|
+
casablanca: ["careem", "indrive", "glovo", "yassir", "kaalix"],
|
|
688
|
+
istanbul: ["bitaksi", "getir", "yemeksepeti", "trendyolgo", "marti"],
|
|
689
|
+
dubai: ["careem", "uber", "talabat", "deliveroo", "noon"],
|
|
690
|
+
riyadh: ["careem", "uber", "hungerstation", "jahez", "mrsool"],
|
|
691
|
+
baghdad: ["careem", "baly", "talabat", "lezzoo", "alsaree3"],
|
|
692
|
+
amman: ["careem", "uber", "talabat", "tawseela", "jeeny"],
|
|
693
|
+
moscow: ["yandexgo", "delivery", "samokat", "sbermarket", "ozon"],
|
|
694
|
+
kyiv: ["bolt", "uklon", "glovo", "rocket", "zakaz"],
|
|
695
|
+
warsaw: ["bolt", "uber", "glovo", "wolt", "pyszne"],
|
|
696
|
+
bucharest: ["bolt", "uber", "glovo", "tazz", "freenow"],
|
|
697
|
+
madrid: ["glovo", "ubereats", "cabify", "bolt", "justeat"],
|
|
698
|
+
almaty: ["yandexgo", "indrive", "wolt", "glovo", "chocofood"],
|
|
699
|
+
tashkent: ["yandexgo", "mytaxi", "express24", "uzum", "wolt"],
|
|
700
|
+
baku: ["bolt", "uber", "wolt", "yango", "aznaxis"],
|
|
701
|
+
singapore: ["grab", "gojek", "foodpanda", "deliveroo", "ryde"],
|
|
702
|
+
tokyo: ["ubereats", "demaecan", "wolt", "menu", "gotaxi"],
|
|
703
|
+
seoul: ["baemin", "coupangeats", "kakaot", "yogiyo", "tada"],
|
|
704
|
+
tbilisi: ["bolt", "yandexgo", "wolt", "glovo", "maxim"],
|
|
705
|
+
belgrade: ["wolt", "glovo", "cargo", "yandexgo", "donesi"],
|
|
706
|
+
lisbon: ["uber", "bolt", "glovo", "ubereats", "freenow"],
|
|
707
|
+
milan: ["glovo", "deliveroo", "justeat", "ubereats", "freenow"],
|
|
708
|
+
dakar: ["yango", "heetch", "yassir", "jumiafood", "kai"],
|
|
709
|
+
quito: ["uber", "cabify", "rappi", "pedidosya", "indrive"],
|
|
82
710
|
};
|
|
83
711
|
|
|
84
712
|
const pick = (arr, i) => arr[i % arr.length];
|
|
85
713
|
|
|
86
|
-
/**
|
|
87
|
-
|
|
714
|
+
/**
|
|
715
|
+
* Build `count` personas spread across the given cities.
|
|
716
|
+
*
|
|
717
|
+
* `engagement` multiplies how often someone posts, chats and likes. 1 is the
|
|
718
|
+
* default population; 5 is a crowd that barely stops typing. It is deliberately
|
|
719
|
+
* NOT applied to breakiness — making people take five times as many breaks
|
|
720
|
+
* would quieten the run, which is the opposite of what the dial is for.
|
|
721
|
+
*
|
|
722
|
+
* Weights are probabilities per tick, so they are clamped below 1. The clamp
|
|
723
|
+
* sits at 0.95 rather than 1 so that even at extreme multipliers the population
|
|
724
|
+
* keeps a little variance instead of collapsing into every agent doing every
|
|
725
|
+
* action on every tick — identical bots find identical bugs.
|
|
726
|
+
*/
|
|
727
|
+
export function buildPersonas(count, cityKeys = Object.keys(CITIES), engagement = 1) {
|
|
88
728
|
const keys = cityKeys.filter((c) => CITIES[c]);
|
|
89
729
|
if (!keys.length) throw new Error(`Unknown cities. Available: ${Object.keys(CITIES).join(", ")}`);
|
|
730
|
+
const e = Number.isFinite(engagement) && engagement > 0 ? engagement : 1;
|
|
731
|
+
const scale = (w) => Math.min(0.95, w * e);
|
|
90
732
|
|
|
91
733
|
const personas = [];
|
|
92
734
|
for (let i = 0; i < count; i++) {
|
|
@@ -101,10 +743,11 @@ export function buildPersonas(count, cityKeys = Object.keys(CITIES)) {
|
|
|
101
743
|
platform: pick(PLATFORMS[cityKey], n),
|
|
102
744
|
rate: city.rate,
|
|
103
745
|
// Behaviour weights — the reason the population feels human.
|
|
104
|
-
postiness: 0.05 + (i % 5) * 0.05, // 0.05 – 0.25 chance per tick
|
|
105
|
-
chattiness: 0.05 + (i % 4) * 0.06,
|
|
106
|
-
likeliness: 0.15 + (i % 3) * 0.2,
|
|
107
|
-
breakiness: 0.03 + (i % 6) * 0.02,
|
|
746
|
+
postiness: scale(0.05 + (i % 5) * 0.05), // 0.05 – 0.25 chance per tick
|
|
747
|
+
chattiness: scale(0.05 + (i % 4) * 0.06),
|
|
748
|
+
likeliness: scale(0.15 + (i % 3) * 0.2),
|
|
749
|
+
breakiness: 0.03 + (i % 6) * 0.02, // not scaled - see the note above
|
|
750
|
+
|
|
108
751
|
speedKmh: 18 + (i % 5) * 6, // 18–42 km/h city driving
|
|
109
752
|
});
|
|
110
753
|
}
|