@hairy/wechat-jssdk 1.47.0 → 1.49.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/LICENSE.md +21 -21
- package/README.md +66 -66
- package/dist/index.cjs +235 -269
- package/dist/index.d.cts +117 -0
- package/dist/index.d.mts +117 -0
- package/dist/index.mjs +242 -0
- package/package.json +18 -21
- package/dist/index.d.ts +0 -114
- package/dist/index.global.js +0 -253
- package/dist/index.js +0 -250
package/dist/index.global.js
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
(() => {
|
|
3
|
-
// ../util-core/src/util/noop.ts
|
|
4
|
-
var noop = () => {
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
// src/internal/load_script.ts
|
|
8
|
-
function loadScript(source, onLoaded = noop, options = {}) {
|
|
9
|
-
const {
|
|
10
|
-
type = "text/javascript",
|
|
11
|
-
async = true,
|
|
12
|
-
crossOrigin,
|
|
13
|
-
referrerPolicy,
|
|
14
|
-
noModule,
|
|
15
|
-
defer,
|
|
16
|
-
waitForScriptLoad = true
|
|
17
|
-
} = options;
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
let shouldAppend = false;
|
|
20
|
-
let element = document.querySelector(`script[src="${source}"]`);
|
|
21
|
-
if (!element) {
|
|
22
|
-
element = document.createElement("script");
|
|
23
|
-
element.type = type;
|
|
24
|
-
element.async = async;
|
|
25
|
-
element.src = source;
|
|
26
|
-
if (defer)
|
|
27
|
-
element.defer = defer;
|
|
28
|
-
if (crossOrigin)
|
|
29
|
-
element.crossOrigin = crossOrigin;
|
|
30
|
-
if (noModule)
|
|
31
|
-
element.noModule = noModule;
|
|
32
|
-
if (referrerPolicy)
|
|
33
|
-
element.referrerPolicy = referrerPolicy;
|
|
34
|
-
shouldAppend = true;
|
|
35
|
-
} else if (Object.hasOwn(element.dataset, "loaded")) {
|
|
36
|
-
resolve(element);
|
|
37
|
-
}
|
|
38
|
-
element.addEventListener("error", (event) => reject(event));
|
|
39
|
-
element.addEventListener("abort", (event) => reject(event));
|
|
40
|
-
element.addEventListener("load", () => {
|
|
41
|
-
element.dataset.loaded = "true";
|
|
42
|
-
onLoaded(element);
|
|
43
|
-
resolve(element);
|
|
44
|
-
});
|
|
45
|
-
if (shouldAppend)
|
|
46
|
-
element = document.head.appendChild(element);
|
|
47
|
-
if (!waitForScriptLoad)
|
|
48
|
-
resolve(element);
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// src/helper.ts
|
|
53
|
-
var WechatJssdkHelper = class {
|
|
54
|
-
version;
|
|
55
|
-
isReady = false;
|
|
56
|
-
requestConfig;
|
|
57
|
-
loadPromise;
|
|
58
|
-
configPromise;
|
|
59
|
-
readyPromise;
|
|
60
|
-
loadJssdk() {
|
|
61
|
-
const scriptUrl = `https://res.wx.qq.com/open/js/jweixin-${this.version}.js`;
|
|
62
|
-
this.loadPromise = loadScript(scriptUrl).then(() => {
|
|
63
|
-
this.loadPromise = void 0;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
constructor(options) {
|
|
67
|
-
const { immediate = true, version, requestConfig } = options;
|
|
68
|
-
this.version = version || "1.3.0";
|
|
69
|
-
this.requestConfig = requestConfig;
|
|
70
|
-
this.loadJssdk();
|
|
71
|
-
if (immediate)
|
|
72
|
-
this.config();
|
|
73
|
-
}
|
|
74
|
-
async config() {
|
|
75
|
-
if (this.configPromise)
|
|
76
|
-
return this.configPromise;
|
|
77
|
-
if (this.loadPromise)
|
|
78
|
-
await this.loadPromise;
|
|
79
|
-
this.configPromise = (async () => {
|
|
80
|
-
wx.config(await this.requestConfig());
|
|
81
|
-
})();
|
|
82
|
-
return this.configPromise;
|
|
83
|
-
}
|
|
84
|
-
async ready() {
|
|
85
|
-
if (this.readyPromise)
|
|
86
|
-
return this.readyPromise;
|
|
87
|
-
if (this.loadPromise)
|
|
88
|
-
await this.loadPromise;
|
|
89
|
-
if (this.isReady)
|
|
90
|
-
return;
|
|
91
|
-
this.readyPromise = new Promise((resolve, reject) => {
|
|
92
|
-
wx.ready(() => {
|
|
93
|
-
this.isReady = true;
|
|
94
|
-
this.readyPromise = void 0;
|
|
95
|
-
resolve();
|
|
96
|
-
});
|
|
97
|
-
wx.error((error) => {
|
|
98
|
-
this.isReady = false;
|
|
99
|
-
this.readyPromise = void 0;
|
|
100
|
-
reject(error);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
return this.readyPromise;
|
|
104
|
-
}
|
|
105
|
-
async error() {
|
|
106
|
-
return this.ready().catch((error) => error);
|
|
107
|
-
}
|
|
108
|
-
async implement(key, options) {
|
|
109
|
-
if (this.configPromise)
|
|
110
|
-
await this.configPromise;
|
|
111
|
-
await this.ready();
|
|
112
|
-
wx[key](options);
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// src/index.ts
|
|
117
|
-
var WechatJssdk = class extends WechatJssdkHelper {
|
|
118
|
-
constructor(options) {
|
|
119
|
-
super(options);
|
|
120
|
-
}
|
|
121
|
-
// --- 1.4.0 API start ---
|
|
122
|
-
updateAppMessageShareData(options) {
|
|
123
|
-
return this.implement("updateAppMessageShareData", options);
|
|
124
|
-
}
|
|
125
|
-
updateTimelineShareData(options) {
|
|
126
|
-
return this.implement("updateTimelineShareData", options);
|
|
127
|
-
}
|
|
128
|
-
// --- 1.4.0 API end ---
|
|
129
|
-
addCard() {
|
|
130
|
-
return this.implement("addCard");
|
|
131
|
-
}
|
|
132
|
-
checkJsApi(options) {
|
|
133
|
-
return this.implement("checkJsApi", options);
|
|
134
|
-
}
|
|
135
|
-
chooseCard(options) {
|
|
136
|
-
return this.implement("chooseCard", options);
|
|
137
|
-
}
|
|
138
|
-
chooseImage(options) {
|
|
139
|
-
return this.implement("chooseImage", options);
|
|
140
|
-
}
|
|
141
|
-
chooseWXPay(options) {
|
|
142
|
-
return this.implement("chooseWXPay", options);
|
|
143
|
-
}
|
|
144
|
-
closeWindow() {
|
|
145
|
-
return this.implement("closeWindow");
|
|
146
|
-
}
|
|
147
|
-
consumeAndShareCard(options) {
|
|
148
|
-
return this.implement("consumeAndShareCard", options);
|
|
149
|
-
}
|
|
150
|
-
downloadImage(options) {
|
|
151
|
-
return this.implement("downloadImage", options);
|
|
152
|
-
}
|
|
153
|
-
downloadVoice(options) {
|
|
154
|
-
return this.implement("downloadVoice", options);
|
|
155
|
-
}
|
|
156
|
-
getLocalImgData(options) {
|
|
157
|
-
return this.implement("getLocalImgData", options);
|
|
158
|
-
}
|
|
159
|
-
getLocation(options) {
|
|
160
|
-
return this.implement("getLocation", options);
|
|
161
|
-
}
|
|
162
|
-
getNetworkType(options) {
|
|
163
|
-
return this.implement("getNetworkType", options);
|
|
164
|
-
}
|
|
165
|
-
hideAllNonBaseMenuItem() {
|
|
166
|
-
return this.implement("hideAllNonBaseMenuItem");
|
|
167
|
-
}
|
|
168
|
-
hideMenuItems(options) {
|
|
169
|
-
return this.implement("hideMenuItems", options);
|
|
170
|
-
}
|
|
171
|
-
hideOptionMenu() {
|
|
172
|
-
return this.implement("hideOptionMenu");
|
|
173
|
-
}
|
|
174
|
-
onMenuShareAppMessage(options) {
|
|
175
|
-
return this.implement("onMenuShareAppMessage", options);
|
|
176
|
-
}
|
|
177
|
-
onMenuShareQQ(options) {
|
|
178
|
-
return this.implement("onMenuShareQQ", options);
|
|
179
|
-
}
|
|
180
|
-
onMenuShareQZone(options) {
|
|
181
|
-
return this.implement("onMenuShareQZone", options);
|
|
182
|
-
}
|
|
183
|
-
onMenuShareTimeline(options) {
|
|
184
|
-
return this.implement("onMenuShareTimeline", options);
|
|
185
|
-
}
|
|
186
|
-
onMenuShareWeibo(options) {
|
|
187
|
-
return this.implement("onMenuShareWeibo", options);
|
|
188
|
-
}
|
|
189
|
-
onSearchBeacons(options) {
|
|
190
|
-
return this.implement("onSearchBeacons", options);
|
|
191
|
-
}
|
|
192
|
-
onVoicePlayEnd(options) {
|
|
193
|
-
return this.implement("onVoicePlayEnd", options);
|
|
194
|
-
}
|
|
195
|
-
onVoiceRecordEnd(options) {
|
|
196
|
-
return this.implement("onVoiceRecordEnd", options);
|
|
197
|
-
}
|
|
198
|
-
openCard(options) {
|
|
199
|
-
return this.implement("openCard", options);
|
|
200
|
-
}
|
|
201
|
-
openLocation(options) {
|
|
202
|
-
return this.implement("openLocation", options);
|
|
203
|
-
}
|
|
204
|
-
openProductSpecificView(options) {
|
|
205
|
-
return this.implement("openProductSpecificView", options);
|
|
206
|
-
}
|
|
207
|
-
pauseVoice(options) {
|
|
208
|
-
return this.implement("pauseVoice", options);
|
|
209
|
-
}
|
|
210
|
-
playVoice(options) {
|
|
211
|
-
return this.implement("playVoice", options);
|
|
212
|
-
}
|
|
213
|
-
previewImage(options) {
|
|
214
|
-
return this.implement("previewImage", options);
|
|
215
|
-
}
|
|
216
|
-
scanQRCode(options) {
|
|
217
|
-
return this.implement("scanQRCode", options);
|
|
218
|
-
}
|
|
219
|
-
showAllNonBaseMenuItem() {
|
|
220
|
-
return this.implement("showAllNonBaseMenuItem");
|
|
221
|
-
}
|
|
222
|
-
showMenuItems(options) {
|
|
223
|
-
return this.implement("showMenuItems", options);
|
|
224
|
-
}
|
|
225
|
-
showOptionMenu() {
|
|
226
|
-
return this.implement("showOptionMenu");
|
|
227
|
-
}
|
|
228
|
-
startRecord() {
|
|
229
|
-
return this.implement("startRecord");
|
|
230
|
-
}
|
|
231
|
-
startSearchBeacons(options) {
|
|
232
|
-
return this.implement("startSearchBeacons", options);
|
|
233
|
-
}
|
|
234
|
-
stopRecord(options) {
|
|
235
|
-
return this.implement("stopRecord", options);
|
|
236
|
-
}
|
|
237
|
-
stopSearchBeacons(options) {
|
|
238
|
-
return this.implement("stopSearchBeacons", options);
|
|
239
|
-
}
|
|
240
|
-
stopVoice(options) {
|
|
241
|
-
return this.implement("stopVoice", options);
|
|
242
|
-
}
|
|
243
|
-
translateVoice(options) {
|
|
244
|
-
return this.implement("translateVoice", options);
|
|
245
|
-
}
|
|
246
|
-
uploadImage(options) {
|
|
247
|
-
return this.implement("uploadImage", options);
|
|
248
|
-
}
|
|
249
|
-
uploadVoice(options) {
|
|
250
|
-
return this.implement("uploadVoice", options);
|
|
251
|
-
}
|
|
252
|
-
};
|
|
253
|
-
})();
|
package/dist/index.js
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
// src/internal/load_script.ts
|
|
2
|
-
import { noop } from "@hairy/utils";
|
|
3
|
-
function loadScript(source, onLoaded = noop, options = {}) {
|
|
4
|
-
const {
|
|
5
|
-
type = "text/javascript",
|
|
6
|
-
async = true,
|
|
7
|
-
crossOrigin,
|
|
8
|
-
referrerPolicy,
|
|
9
|
-
noModule,
|
|
10
|
-
defer,
|
|
11
|
-
waitForScriptLoad = true
|
|
12
|
-
} = options;
|
|
13
|
-
return new Promise((resolve, reject) => {
|
|
14
|
-
let shouldAppend = false;
|
|
15
|
-
let element = document.querySelector(`script[src="${source}"]`);
|
|
16
|
-
if (!element) {
|
|
17
|
-
element = document.createElement("script");
|
|
18
|
-
element.type = type;
|
|
19
|
-
element.async = async;
|
|
20
|
-
element.src = source;
|
|
21
|
-
if (defer)
|
|
22
|
-
element.defer = defer;
|
|
23
|
-
if (crossOrigin)
|
|
24
|
-
element.crossOrigin = crossOrigin;
|
|
25
|
-
if (noModule)
|
|
26
|
-
element.noModule = noModule;
|
|
27
|
-
if (referrerPolicy)
|
|
28
|
-
element.referrerPolicy = referrerPolicy;
|
|
29
|
-
shouldAppend = true;
|
|
30
|
-
} else if (Object.hasOwn(element.dataset, "loaded")) {
|
|
31
|
-
resolve(element);
|
|
32
|
-
}
|
|
33
|
-
element.addEventListener("error", (event) => reject(event));
|
|
34
|
-
element.addEventListener("abort", (event) => reject(event));
|
|
35
|
-
element.addEventListener("load", () => {
|
|
36
|
-
element.dataset.loaded = "true";
|
|
37
|
-
onLoaded(element);
|
|
38
|
-
resolve(element);
|
|
39
|
-
});
|
|
40
|
-
if (shouldAppend)
|
|
41
|
-
element = document.head.appendChild(element);
|
|
42
|
-
if (!waitForScriptLoad)
|
|
43
|
-
resolve(element);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// src/helper.ts
|
|
48
|
-
var WechatJssdkHelper = class {
|
|
49
|
-
version;
|
|
50
|
-
isReady = false;
|
|
51
|
-
requestConfig;
|
|
52
|
-
loadPromise;
|
|
53
|
-
configPromise;
|
|
54
|
-
readyPromise;
|
|
55
|
-
loadJssdk() {
|
|
56
|
-
const scriptUrl = `https://res.wx.qq.com/open/js/jweixin-${this.version}.js`;
|
|
57
|
-
this.loadPromise = loadScript(scriptUrl).then(() => {
|
|
58
|
-
this.loadPromise = void 0;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
constructor(options) {
|
|
62
|
-
const { immediate = true, version, requestConfig } = options;
|
|
63
|
-
this.version = version || "1.3.0";
|
|
64
|
-
this.requestConfig = requestConfig;
|
|
65
|
-
this.loadJssdk();
|
|
66
|
-
if (immediate)
|
|
67
|
-
this.config();
|
|
68
|
-
}
|
|
69
|
-
async config() {
|
|
70
|
-
if (this.configPromise)
|
|
71
|
-
return this.configPromise;
|
|
72
|
-
if (this.loadPromise)
|
|
73
|
-
await this.loadPromise;
|
|
74
|
-
this.configPromise = (async () => {
|
|
75
|
-
wx.config(await this.requestConfig());
|
|
76
|
-
})();
|
|
77
|
-
return this.configPromise;
|
|
78
|
-
}
|
|
79
|
-
async ready() {
|
|
80
|
-
if (this.readyPromise)
|
|
81
|
-
return this.readyPromise;
|
|
82
|
-
if (this.loadPromise)
|
|
83
|
-
await this.loadPromise;
|
|
84
|
-
if (this.isReady)
|
|
85
|
-
return;
|
|
86
|
-
this.readyPromise = new Promise((resolve, reject) => {
|
|
87
|
-
wx.ready(() => {
|
|
88
|
-
this.isReady = true;
|
|
89
|
-
this.readyPromise = void 0;
|
|
90
|
-
resolve();
|
|
91
|
-
});
|
|
92
|
-
wx.error((error) => {
|
|
93
|
-
this.isReady = false;
|
|
94
|
-
this.readyPromise = void 0;
|
|
95
|
-
reject(error);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
return this.readyPromise;
|
|
99
|
-
}
|
|
100
|
-
async error() {
|
|
101
|
-
return this.ready().catch((error) => error);
|
|
102
|
-
}
|
|
103
|
-
async implement(key, options) {
|
|
104
|
-
if (this.configPromise)
|
|
105
|
-
await this.configPromise;
|
|
106
|
-
await this.ready();
|
|
107
|
-
wx[key](options);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
// src/index.ts
|
|
112
|
-
var WechatJssdk = class extends WechatJssdkHelper {
|
|
113
|
-
constructor(options) {
|
|
114
|
-
super(options);
|
|
115
|
-
}
|
|
116
|
-
// --- 1.4.0 API start ---
|
|
117
|
-
updateAppMessageShareData(options) {
|
|
118
|
-
return this.implement("updateAppMessageShareData", options);
|
|
119
|
-
}
|
|
120
|
-
updateTimelineShareData(options) {
|
|
121
|
-
return this.implement("updateTimelineShareData", options);
|
|
122
|
-
}
|
|
123
|
-
// --- 1.4.0 API end ---
|
|
124
|
-
addCard() {
|
|
125
|
-
return this.implement("addCard");
|
|
126
|
-
}
|
|
127
|
-
checkJsApi(options) {
|
|
128
|
-
return this.implement("checkJsApi", options);
|
|
129
|
-
}
|
|
130
|
-
chooseCard(options) {
|
|
131
|
-
return this.implement("chooseCard", options);
|
|
132
|
-
}
|
|
133
|
-
chooseImage(options) {
|
|
134
|
-
return this.implement("chooseImage", options);
|
|
135
|
-
}
|
|
136
|
-
chooseWXPay(options) {
|
|
137
|
-
return this.implement("chooseWXPay", options);
|
|
138
|
-
}
|
|
139
|
-
closeWindow() {
|
|
140
|
-
return this.implement("closeWindow");
|
|
141
|
-
}
|
|
142
|
-
consumeAndShareCard(options) {
|
|
143
|
-
return this.implement("consumeAndShareCard", options);
|
|
144
|
-
}
|
|
145
|
-
downloadImage(options) {
|
|
146
|
-
return this.implement("downloadImage", options);
|
|
147
|
-
}
|
|
148
|
-
downloadVoice(options) {
|
|
149
|
-
return this.implement("downloadVoice", options);
|
|
150
|
-
}
|
|
151
|
-
getLocalImgData(options) {
|
|
152
|
-
return this.implement("getLocalImgData", options);
|
|
153
|
-
}
|
|
154
|
-
getLocation(options) {
|
|
155
|
-
return this.implement("getLocation", options);
|
|
156
|
-
}
|
|
157
|
-
getNetworkType(options) {
|
|
158
|
-
return this.implement("getNetworkType", options);
|
|
159
|
-
}
|
|
160
|
-
hideAllNonBaseMenuItem() {
|
|
161
|
-
return this.implement("hideAllNonBaseMenuItem");
|
|
162
|
-
}
|
|
163
|
-
hideMenuItems(options) {
|
|
164
|
-
return this.implement("hideMenuItems", options);
|
|
165
|
-
}
|
|
166
|
-
hideOptionMenu() {
|
|
167
|
-
return this.implement("hideOptionMenu");
|
|
168
|
-
}
|
|
169
|
-
onMenuShareAppMessage(options) {
|
|
170
|
-
return this.implement("onMenuShareAppMessage", options);
|
|
171
|
-
}
|
|
172
|
-
onMenuShareQQ(options) {
|
|
173
|
-
return this.implement("onMenuShareQQ", options);
|
|
174
|
-
}
|
|
175
|
-
onMenuShareQZone(options) {
|
|
176
|
-
return this.implement("onMenuShareQZone", options);
|
|
177
|
-
}
|
|
178
|
-
onMenuShareTimeline(options) {
|
|
179
|
-
return this.implement("onMenuShareTimeline", options);
|
|
180
|
-
}
|
|
181
|
-
onMenuShareWeibo(options) {
|
|
182
|
-
return this.implement("onMenuShareWeibo", options);
|
|
183
|
-
}
|
|
184
|
-
onSearchBeacons(options) {
|
|
185
|
-
return this.implement("onSearchBeacons", options);
|
|
186
|
-
}
|
|
187
|
-
onVoicePlayEnd(options) {
|
|
188
|
-
return this.implement("onVoicePlayEnd", options);
|
|
189
|
-
}
|
|
190
|
-
onVoiceRecordEnd(options) {
|
|
191
|
-
return this.implement("onVoiceRecordEnd", options);
|
|
192
|
-
}
|
|
193
|
-
openCard(options) {
|
|
194
|
-
return this.implement("openCard", options);
|
|
195
|
-
}
|
|
196
|
-
openLocation(options) {
|
|
197
|
-
return this.implement("openLocation", options);
|
|
198
|
-
}
|
|
199
|
-
openProductSpecificView(options) {
|
|
200
|
-
return this.implement("openProductSpecificView", options);
|
|
201
|
-
}
|
|
202
|
-
pauseVoice(options) {
|
|
203
|
-
return this.implement("pauseVoice", options);
|
|
204
|
-
}
|
|
205
|
-
playVoice(options) {
|
|
206
|
-
return this.implement("playVoice", options);
|
|
207
|
-
}
|
|
208
|
-
previewImage(options) {
|
|
209
|
-
return this.implement("previewImage", options);
|
|
210
|
-
}
|
|
211
|
-
scanQRCode(options) {
|
|
212
|
-
return this.implement("scanQRCode", options);
|
|
213
|
-
}
|
|
214
|
-
showAllNonBaseMenuItem() {
|
|
215
|
-
return this.implement("showAllNonBaseMenuItem");
|
|
216
|
-
}
|
|
217
|
-
showMenuItems(options) {
|
|
218
|
-
return this.implement("showMenuItems", options);
|
|
219
|
-
}
|
|
220
|
-
showOptionMenu() {
|
|
221
|
-
return this.implement("showOptionMenu");
|
|
222
|
-
}
|
|
223
|
-
startRecord() {
|
|
224
|
-
return this.implement("startRecord");
|
|
225
|
-
}
|
|
226
|
-
startSearchBeacons(options) {
|
|
227
|
-
return this.implement("startSearchBeacons", options);
|
|
228
|
-
}
|
|
229
|
-
stopRecord(options) {
|
|
230
|
-
return this.implement("stopRecord", options);
|
|
231
|
-
}
|
|
232
|
-
stopSearchBeacons(options) {
|
|
233
|
-
return this.implement("stopSearchBeacons", options);
|
|
234
|
-
}
|
|
235
|
-
stopVoice(options) {
|
|
236
|
-
return this.implement("stopVoice", options);
|
|
237
|
-
}
|
|
238
|
-
translateVoice(options) {
|
|
239
|
-
return this.implement("translateVoice", options);
|
|
240
|
-
}
|
|
241
|
-
uploadImage(options) {
|
|
242
|
-
return this.implement("uploadImage", options);
|
|
243
|
-
}
|
|
244
|
-
uploadVoice(options) {
|
|
245
|
-
return this.implement("uploadVoice", options);
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
export {
|
|
249
|
-
WechatJssdk
|
|
250
|
-
};
|