@xsolla/payment-client-core 0.2.7 → 0.2.8
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/esm2020/lib/core/agreementsGroup.const.mjs +14 -0
- package/esm2020/lib/core/extended-window.interface.mjs +1 -1
- package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +2 -2
- package/esm2020/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +3 -3
- package/esm2020/lib/core/payment/field-names.enum.mjs +2 -1
- package/esm2020/lib/core/payment/form-response.interface.mjs +2 -0
- package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
- package/esm2020/lib/core/payment/payment.service.mjs +56 -2
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +2 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +2 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +2 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +6 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +265 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +2 -0
- package/esm2020/lib/core/user-agent/browserInfo.interface.mjs +2 -0
- package/esm2020/lib/core/user-agent/browsers.mjs +44 -0
- package/esm2020/lib/core/user-agent/device.enum.mjs +6 -0
- package/esm2020/lib/core/user-agent/os.mjs +255 -0
- package/esm2020/lib/core/user-agent/user-agent-data.interface.mjs +2 -0
- package/esm2020/lib/core/user-agent/user-agent.service.mjs +200 -0
- package/esm2020/lib/core-library.service.mjs +11 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/xsolla-payment-client-core.mjs +849 -4
- package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
- package/fesm2020/xsolla-payment-client-core.mjs +842 -4
- package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/agreementsGroup.const.d.ts +2 -0
- package/lib/core/extended-window.interface.d.ts +11 -0
- package/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.d.ts +1 -1
- package/lib/core/payment/field-names.enum.d.ts +2 -1
- package/lib/core/payment/form-response.interface.d.ts +8 -0
- package/lib/core/payment/payment.interface.d.ts +1 -0
- package/lib/core/payment/payment.service.d.ts +9 -1
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.d.ts +1 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.d.ts +4 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.d.ts +1 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.d.ts +4 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.d.ts +46 -0
- package/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.d.ts +9 -0
- package/lib/core/user-agent/browserInfo.interface.d.ts +13 -0
- package/lib/core/user-agent/browsers.d.ts +9 -0
- package/lib/core/user-agent/device.enum.d.ts +4 -0
- package/lib/core/user-agent/os.d.ts +7 -0
- package/lib/core/user-agent/user-agent-data.interface.d.ts +10 -0
- package/lib/core/user-agent/user-agent.service.d.ts +36 -0
- package/lib/core-library.service.d.ts +5 -0
- package/package.json +4 -2
- package/public-api.d.ts +2 -0
- package/xsolla-payment-client-core-0.2.8.tgz +0 -0
- package/xsolla-payment-client-core-0.2.7.tgz +0 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { applePayVersion } from './apple-pay.const';
|
|
4
|
+
import { agreementsGroup } from '../../agreementsGroup.const';
|
|
5
|
+
import { windowToken } from '../../window.token';
|
|
6
|
+
import { FieldNames } from '../../payment/field-names.enum';
|
|
7
|
+
import { ApplePayErrors } from './apple-pay.errors.enum';
|
|
8
|
+
import { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';
|
|
9
|
+
import { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../../user-agent/user-agent.service";
|
|
12
|
+
import * as i2 from "../../payment/finance-details/summary/summary-finance-details-adapter.service";
|
|
13
|
+
export class ApplePayService {
|
|
14
|
+
get paymentParameters() {
|
|
15
|
+
return this.applePayParams;
|
|
16
|
+
}
|
|
17
|
+
get payment$() {
|
|
18
|
+
return this.payment.asObservable();
|
|
19
|
+
}
|
|
20
|
+
get error$() {
|
|
21
|
+
return this.error.asObservable();
|
|
22
|
+
}
|
|
23
|
+
get integrationType$() {
|
|
24
|
+
return this.integrationType.asObservable();
|
|
25
|
+
}
|
|
26
|
+
constructor(window, userAgentService, summaryFinanceDetailsAdapterService) {
|
|
27
|
+
this.window = window;
|
|
28
|
+
this.userAgentService = userAgentService;
|
|
29
|
+
this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
|
|
30
|
+
this.agreementFieldsNames = agreementsGroup;
|
|
31
|
+
this.payment = new Subject();
|
|
32
|
+
this.error = new Subject();
|
|
33
|
+
this.integrationType = new Subject();
|
|
34
|
+
this.paymentClient = null;
|
|
35
|
+
this.applePayParams = null;
|
|
36
|
+
this.order = null;
|
|
37
|
+
this.api = this.loadBraintree();
|
|
38
|
+
}
|
|
39
|
+
setApplePayParams(data) {
|
|
40
|
+
const formFields = data?.paymentForm?.fields;
|
|
41
|
+
const summary = data?.paymentForm?.summary;
|
|
42
|
+
if (!formFields || !summary) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const fields = formFields.reduce((acc, field) => {
|
|
46
|
+
if (this.agreementFieldsNames.includes(field.name) &&
|
|
47
|
+
field.isVisible === '1') {
|
|
48
|
+
acc[field.name] = field.title;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
acc[field.name] = field.value;
|
|
52
|
+
}
|
|
53
|
+
return acc;
|
|
54
|
+
}, {});
|
|
55
|
+
const agreements = this.agreementFieldsNames
|
|
56
|
+
.map((fieldName) => fields[fieldName])
|
|
57
|
+
.filter(Boolean);
|
|
58
|
+
this.applePayParams = {
|
|
59
|
+
tokenKey: this.getAppleToken(formFields),
|
|
60
|
+
totalLabel: fields['label_applePay'] ?? '',
|
|
61
|
+
totalAmount: this.getTotalAmount(summary),
|
|
62
|
+
currencyCode: this.getTotalCurrency(summary),
|
|
63
|
+
countryCode: fields['countryCode'] ?? '',
|
|
64
|
+
merchantCapabilities: this.getJsonValueFromField(fields, 'merchantCapabilities'),
|
|
65
|
+
supportedNetworks: this.getJsonValueFromField(fields, 'supportedNetworks'),
|
|
66
|
+
agreements: agreements,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async initLibrary(tokenKey) {
|
|
70
|
+
try {
|
|
71
|
+
const api = await this.api;
|
|
72
|
+
const clientInstance = await api.client.create({
|
|
73
|
+
authorization: tokenKey,
|
|
74
|
+
});
|
|
75
|
+
this.paymentClient = await api.applePay.create({
|
|
76
|
+
client: clientInstance,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('apple pay: initialize failed', error);
|
|
81
|
+
}
|
|
82
|
+
this.emitIntegrationType();
|
|
83
|
+
if (!this.paymentClient ||
|
|
84
|
+
(!this.isDeviceCapable() && !this.userAgentService.isSafari)) {
|
|
85
|
+
this.emitError(ApplePayErrors.deviceIsNotCapableError);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
redirectToPaymentPage(parameters, token) {
|
|
89
|
+
const route = pagesRoutes.get(applePayId);
|
|
90
|
+
if (!route) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const query = new URLSearchParams({
|
|
94
|
+
...parameters,
|
|
95
|
+
merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),
|
|
96
|
+
supportedNetworks: JSON.stringify(parameters.supportedNetworks),
|
|
97
|
+
token,
|
|
98
|
+
agreements: JSON.stringify(parameters.agreements),
|
|
99
|
+
});
|
|
100
|
+
if (this.order) {
|
|
101
|
+
query.append('order', this.order);
|
|
102
|
+
}
|
|
103
|
+
const url = `${route}?${query.toString()}`;
|
|
104
|
+
return url;
|
|
105
|
+
}
|
|
106
|
+
setOrder(data) {
|
|
107
|
+
const summary = data?.paymentForm?.summary;
|
|
108
|
+
if (!summary) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const financeDetails = this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);
|
|
112
|
+
if (financeDetails?.purchase && financeDetails?.finance) {
|
|
113
|
+
const cartItems = financeDetails.cartItems;
|
|
114
|
+
this.order = cartItems?.reduce((curr, item) => {
|
|
115
|
+
if (curr) {
|
|
116
|
+
return curr + `; ${item.title}`;
|
|
117
|
+
}
|
|
118
|
+
return curr + item.title;
|
|
119
|
+
}, '');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
proceedCheckout(parameters) {
|
|
123
|
+
if (!parameters) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!this.paymentClient || !this.isDeviceCapable()) {
|
|
127
|
+
console.warn('apple pay: device is not capable', this.paymentClient);
|
|
128
|
+
this.emitError(ApplePayErrors.deviceIsNotCapableError);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const paymentRequest = this.paymentClient.createPaymentRequest({
|
|
133
|
+
total: {
|
|
134
|
+
label: parameters.totalLabel,
|
|
135
|
+
amount: parameters.totalAmount,
|
|
136
|
+
},
|
|
137
|
+
currencyCode: parameters.currencyCode,
|
|
138
|
+
countryCode: parameters.countryCode,
|
|
139
|
+
merchantCapabilities: parameters.merchantCapabilities,
|
|
140
|
+
supportedNetworks: parameters.supportedNetworks,
|
|
141
|
+
});
|
|
142
|
+
const session = new this.window.ApplePaySession(applePayVersion, paymentRequest);
|
|
143
|
+
session.onvalidatemerchant = (event) => {
|
|
144
|
+
console.info('apple pay: merchant validation', event);
|
|
145
|
+
this.paymentClient
|
|
146
|
+
?.performValidation({
|
|
147
|
+
validationURL: event.validationURL,
|
|
148
|
+
displayName: parameters?.totalLabel,
|
|
149
|
+
})
|
|
150
|
+
.then((merchantSession) => {
|
|
151
|
+
session.completeMerchantValidation(merchantSession);
|
|
152
|
+
})
|
|
153
|
+
.catch((error) => {
|
|
154
|
+
console.error('apple pay: merchant validation error', error);
|
|
155
|
+
session.abort();
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
session.onpaymentauthorized = (event) => {
|
|
159
|
+
console.info('apple pay: payment authorization', event);
|
|
160
|
+
this.paymentClient
|
|
161
|
+
?.tokenize({
|
|
162
|
+
token: event.payment.token,
|
|
163
|
+
})
|
|
164
|
+
.then((authorizationResponse) => {
|
|
165
|
+
this.payment.next(authorizationResponse?.nonce ?? '');
|
|
166
|
+
session.completePayment(this.window.ApplePaySession.STATUS_SUCCESS);
|
|
167
|
+
})
|
|
168
|
+
.catch((error) => {
|
|
169
|
+
console.error('apple pay: payment authorization error', error);
|
|
170
|
+
session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
session.oncancel = (event) => {
|
|
174
|
+
this.emitError(ApplePayErrors.paymentError);
|
|
175
|
+
console.error('apple pay: user cancel payment', event);
|
|
176
|
+
};
|
|
177
|
+
session.begin();
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error('apple pay: checkout error', error);
|
|
181
|
+
this.emitError(ApplePayErrors.paymentError);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
isDeviceCapable() {
|
|
185
|
+
try {
|
|
186
|
+
return Boolean(this.window.ApplePaySession?.supportsVersion(applePayVersion) &&
|
|
187
|
+
this.window.ApplePaySession?.canMakePayments());
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
getTokenNonceFieldData(tokenNonce) {
|
|
194
|
+
const name = FieldNames.tokenApplePay;
|
|
195
|
+
const value = btoa(tokenNonce);
|
|
196
|
+
return { name, value };
|
|
197
|
+
}
|
|
198
|
+
updateApplePayParams(data) {
|
|
199
|
+
const summary = data?.summary;
|
|
200
|
+
if (!this.applePayParams || !summary) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
this.applePayParams.totalAmount = this.getTotalAmount(summary);
|
|
204
|
+
this.applePayParams.currencyCode = this.getTotalCurrency(summary);
|
|
205
|
+
}
|
|
206
|
+
async loadBraintree() {
|
|
207
|
+
const api = await import('braintree-web');
|
|
208
|
+
return api;
|
|
209
|
+
}
|
|
210
|
+
getAppleToken(formFields) {
|
|
211
|
+
const appleTokenField = formFields.find((field) => {
|
|
212
|
+
return field.name === 'token_key';
|
|
213
|
+
});
|
|
214
|
+
if (!appleTokenField) {
|
|
215
|
+
return '';
|
|
216
|
+
}
|
|
217
|
+
return appleTokenField.value;
|
|
218
|
+
}
|
|
219
|
+
getTotalAmount(summary) {
|
|
220
|
+
const finance = summary?.finance;
|
|
221
|
+
const total = finance?.grand_total?.amount ?? finance?.total.amount;
|
|
222
|
+
return total?.toString() ?? '';
|
|
223
|
+
}
|
|
224
|
+
getTotalCurrency(summary) {
|
|
225
|
+
const finance = summary?.finance;
|
|
226
|
+
return finance?.grand_total?.currency ?? finance?.total?.currency ?? '';
|
|
227
|
+
}
|
|
228
|
+
getJsonValueFromField(fields, fieldName) {
|
|
229
|
+
const field = fields[fieldName];
|
|
230
|
+
try {
|
|
231
|
+
return field ? JSON.parse(field) : undefined;
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
emitError(error) {
|
|
238
|
+
this.error.next(error);
|
|
239
|
+
}
|
|
240
|
+
emitIntegrationType() {
|
|
241
|
+
let integrationType;
|
|
242
|
+
if (this.paymentClient && this.isDeviceCapable()) {
|
|
243
|
+
integrationType = 'sdk';
|
|
244
|
+
}
|
|
245
|
+
else if (this.userAgentService.isSafari) {
|
|
246
|
+
integrationType = 'redirect';
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
integrationType = 'none';
|
|
250
|
+
}
|
|
251
|
+
this.integrationType.next(integrationType);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
ApplePayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: i1.UserAgentService }, { token: i2.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
255
|
+
ApplePayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, providedIn: 'root' });
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, decorators: [{
|
|
257
|
+
type: Injectable,
|
|
258
|
+
args: [{
|
|
259
|
+
providedIn: 'root',
|
|
260
|
+
}]
|
|
261
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
262
|
+
type: Inject,
|
|
263
|
+
args: [windowToken]
|
|
264
|
+
}] }, { type: i1.UserAgentService }, { type: i2.SummaryFinanceDetailsAdapterService }]; } });
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7OztBQU9yRyxNQUFNLE9BQU8sZUFBZTtJQWUxQixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENB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QUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NEdBNVRVLGVBQWUsa0JBK0JoQixXQUFXO2dIQS9CVixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0NJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxlUGF5LCBhcHBsZVBheSwgY2xpZW50IH0gZnJvbSAnYnJhaW50cmVlLXdlYic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGxlUGF5VmVyc2lvbiB9IGZyb20gJy4vYXBwbGUtcGF5LmNvbnN0JztcbmltcG9ydCB7IGFncmVlbWVudHNHcm91cCB9IGZyb20gJy4uLy4uL2FncmVlbWVudHNHcm91cC5jb25zdCc7XG5pbXBvcnQgeyBBcHBsZVBheVBhcmFtcyB9IGZyb20gJy4vYXBwbGUtcGF5LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgWHBzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L3hwcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBBcHBsZVBheUVycm9ycyB9IGZyb20gJy4vYXBwbGUtcGF5LmVycm9ycy5lbnVtJztcbmltcG9ydCB7IFVzZXJBZ2VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWFnZW50L3VzZXItYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsZVBheUludGVncmF0aW9uIH0gZnJvbSAnLi9hcHBsZS1wYXktaW50ZWdyYXRpb24udHlwZSc7XG5pbXBvcnQgeyBwYWdlc1JvdXRlcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcm91dGVzLmNvbnN0JztcbmltcG9ydCB7IGFwcGxlUGF5SWQgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcHM0LXBhZ2VzL3BhZ2VzLXBheW1lbnQtbWV0aG9kcy1pZC5jb25zdCc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL3N1bW1hcnkvc3VtbWFyeS1maW5hbmNlLWRldGFpbHMtYWRhcHRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdyZWVtZW50RmllbGRzTmFtZXM6IHN0cmluZ1tdID0gYWdyZWVtZW50c0dyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3I6IFN1YmplY3Q8QXBwbGVQYXlFcnJvcnM+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvblR5cGU6IFN1YmplY3Q8QXBwbGVQYXlJbnRlZ3JhdGlvbj4gPVxuICAgIG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBwYXltZW50Q2xpZW50OiBBcHBsZVBheSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpOiBQcm9taXNlPHtcbiAgICBhcHBsZVBheTogdHlwZW9mIGFwcGxlUGF5O1xuICAgIGNsaWVudDogdHlwZW9mIGNsaWVudDtcbiAgfT47XG4gIHByaXZhdGUgYXBwbGVQYXlQYXJhbXM6IEFwcGxlUGF5UGFyYW1zIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb3JkZXI/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGdldCBwYXltZW50UGFyYW1ldGVycygpOiBBcHBsZVBheVBhcmFtcyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFwcGxlUGF5UGFyYW1zO1xuICB9XG4gIHB1YmxpYyBnZXQgcGF5bWVudCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvciQoKTogT2JzZXJ2YWJsZTxBcHBsZVBheUVycm9ycz4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlZ3JhdGlvblR5cGUkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlJbnRlZ3JhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmludGVncmF0aW9uVHlwZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQWdlbnRTZXJ2aWNlOiBVc2VyQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBpID0gdGhpcy5sb2FkQnJhaW50cmVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uZmllbGRzO1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcblxuICAgIGlmICghZm9ybUZpZWxkcyB8fCAhc3VtbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBmb3JtRmllbGRzLnJlZHVjZShcbiAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmXG4gICAgICAgICAgZmllbGQuaXNWaXNpYmxlID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IGFncmVlbWVudHMgPSB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzXG4gICAgICAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkc1tmaWVsZE5hbWUgYXMga2V5b2YgdHlwZW9mIGZpZWxkc10gYXMgc3RyaW5nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHRoaXMuYXBwbGVQYXlQYXJhbXMgPSB7XG4gICAgICB0b2tlbktleTogdGhpcy5nZXRBcHBsZVRva2VuKGZvcm1GaWVsZHMpLFxuICAgICAgdG90YWxMYWJlbDogZmllbGRzWydsYWJlbF9hcHBsZVBheSddID8/ICcnLFxuICAgICAgdG90YWxBbW91bnQ6IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSksXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KSxcbiAgICAgIGNvdW50cnlDb2RlOiBmaWVsZHNbJ2NvdW50cnlDb2RlJ10gPz8gJycsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ21lcmNoYW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiB0aGlzLmdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICAgICAgZmllbGRzLFxuICAgICAgICAnc3VwcG9ydGVkTmV0d29ya3MnXG4gICAgICApLFxuICAgICAgYWdyZWVtZW50czogYWdyZWVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRMaWJyYXJ5KHRva2VuS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5hcGk7XG4gICAgICBjb25zdCBjbGllbnRJbnN0YW5jZSA9IGF3YWl0IGFwaS5jbGllbnQuY3JlYXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogdG9rZW5LZXksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXltZW50Q2xpZW50ID0gYXdhaXQgYXBpLmFwcGxlUGF5LmNyZWF0ZSh7XG4gICAgICAgIGNsaWVudDogY2xpZW50SW5zdGFuY2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBpbml0aWFsaXplIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbnRlZ3JhdGlvblR5cGUoKTtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLnBheW1lbnRDbGllbnQgfHxcbiAgICAgICghdGhpcy5pc0RldmljZUNhcGFibGUoKSAmJiAhdGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKVxuICAgICkge1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMuZGV2aWNlSXNOb3RDYXBhYmxlRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWRpcmVjdFRvUGF5bWVudFBhZ2UoXG4gICAgcGFyYW1ldGVyczogQXBwbGVQYXlQYXJhbXMsXG4gICAgdG9rZW46IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJvdXRlID0gcGFnZXNSb3V0ZXMuZ2V0KGFwcGxlUGF5SWQpO1xuICAgIGlmICghcm91dGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLnN1cHBvcnRlZE5ldHdvcmtzKSxcbiAgICAgIHRva2VuLFxuICAgICAgYWdyZWVtZW50czogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5hZ3JlZW1lbnRzKSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9yZGVyKSB7XG4gICAgICBxdWVyeS5hcHBlbmQoJ29yZGVyJywgdGhpcy5vcmRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gYCR7cm91dGV9PyR7cXVlcnkudG9TdHJpbmcoKX1gO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwdWJsaWMgc2V0T3JkZXIoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcbiAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmluYW5jZURldGFpbHMgPVxuICAgICAgdGhpcy5zdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZS5nZXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5KTtcblxuICAgIGlmIChmaW5hbmNlRGV0YWlscz8ucHVyY2hhc2UgJiYgZmluYW5jZURldGFpbHM/LmZpbmFuY2UpIHtcbiAgICAgIGNvbnN0IGNhcnRJdGVtcyA9IGZpbmFuY2VEZXRhaWxzLmNhcnRJdGVtcztcbiAgICAgIHRoaXMub3JkZXIgPSBjYXJ0SXRlbXM/LnJlZHVjZSgoY3VyciwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoY3Vycikge1xuICAgICAgICAgIHJldHVybiBjdXJyICsgYDsgJHtpdGVtLnRpdGxlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VyciArIGl0ZW0udGl0bGU7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2NlZWRDaGVja291dChwYXJhbWV0ZXJzPzogQXBwbGVQYXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudENsaWVudCB8fCAhdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdhcHBsZSBwYXk6IGRldmljZSBpcyBub3QgY2FwYWJsZScsIHRoaXMucGF5bWVudENsaWVudCk7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0ID0gdGhpcy5wYXltZW50Q2xpZW50LmNyZWF0ZVBheW1lbnRSZXF1ZXN0KHtcbiAgICAgICAgdG90YWw6IHtcbiAgICAgICAgICBsYWJlbDogcGFyYW1ldGVycy50b3RhbExhYmVsLFxuICAgICAgICAgIGFtb3VudDogcGFyYW1ldGVycy50b3RhbEFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY3lDb2RlOiBwYXJhbWV0ZXJzLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgY291bnRyeUNvZGU6IHBhcmFtZXRlcnMuY291bnRyeUNvZGUsXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzLFxuICAgICAgICBzdXBwb3J0ZWROZXR3b3JrczogcGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gbmV3IHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbihcbiAgICAgICAgYXBwbGVQYXlWZXJzaW9uLFxuICAgICAgICBwYXltZW50UmVxdWVzdFxuICAgICAgKTtcblxuICAgICAgc2Vzc2lvbi5vbnZhbGlkYXRlbWVyY2hhbnQgPSAoZXZlbnQ6IHsgdmFsaWRhdGlvblVSTDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IG1lcmNoYW50IHZhbGlkYXRpb24nLCBldmVudCk7XG4gICAgICAgIHRoaXMucGF5bWVudENsaWVudFxuICAgICAgICAgID8ucGVyZm9ybVZhbGlkYXRpb24oe1xuICAgICAgICAgICAgdmFsaWRhdGlvblVSTDogZXZlbnQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbWV0ZXJzPy50b3RhbExhYmVsLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKG1lcmNoYW50U2Vzc2lvbikgPT4ge1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihtZXJjaGFudFNlc3Npb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5vbnBheW1lbnRhdXRob3JpemVkID0gKGV2ZW50OiB7IHBheW1lbnQ6IHsgdG9rZW46IHN0cmluZyB9IH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IHBheW1lbnQgYXV0aG9yaXphdGlvbicsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYXltZW50Q2xpZW50XG4gICAgICAgICAgPy50b2tlbml6ZSh7XG4gICAgICAgICAgICB0b2tlbjogZXZlbnQucGF5bWVudC50b2tlbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChhdXRob3JpemF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudC5uZXh0KGF1dGhvcml6YXRpb25SZXNwb25zZT8ubm9uY2UgPz8gJycpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogcGF5bWVudCBhdXRob3JpemF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25jYW5jZWwgPSAoZXZlbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiB1c2VyIGNhbmNlbCBwYXltZW50JywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5iZWdpbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IGNoZWNrb3V0IGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEZXZpY2VDYXBhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5zdXBwb3J0c1ZlcnNpb24oYXBwbGVQYXlWZXJzaW9uKSAmJlxuICAgICAgICAgIHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbj8uY2FuTWFrZVBheW1lbnRzKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5Ob25jZUZpZWxkRGF0YSh0b2tlbk5vbmNlOiBzdHJpbmcpOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IG5hbWUgPSBGaWVsZE5hbWVzLnRva2VuQXBwbGVQYXk7XG4gICAgY29uc3QgdmFsdWUgPSBidG9hKHRva2VuTm9uY2UpO1xuICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBYcHNSZXNwb25zZSk/LnN1bW1hcnk7XG4gICAgaWYgKCF0aGlzLmFwcGxlUGF5UGFyYW1zIHx8ICFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy50b3RhbEFtb3VudCA9IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSk7XG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFpbnRyZWUoKTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCBpbXBvcnQoJ2JyYWludHJlZS13ZWInKTtcblxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcGxlVG9rZW4oZm9ybUZpZWxkczogRmllbGRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwbGVUb2tlbkZpZWxkID0gZm9ybUZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09ICd0b2tlbl9rZXknO1xuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBsZVRva2VuRmllbGQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbGVUb2tlbkZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEFtb3VudChzdW1tYXJ5OiBYcHNSZXNwb25zZVsnc3VtbWFyeSddKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5hbmNlID0gc3VtbWFyeT8uZmluYW5jZTtcbiAgICBjb25zdCB0b3RhbCA9IGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWwuYW1vdW50O1xuXG4gICAgcmV0dXJuIHRvdGFsPy50b1N0cmluZygpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEN1cnJlbmN5KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIHJldHVybiBmaW5hbmNlPy5ncmFuZF90b3RhbD8uY3VycmVuY3kgPz8gZmluYW5jZT8udG90YWw/LmN1cnJlbmN5ID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgZmllbGRzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZmllbGQgPyAoSlNPTi5wYXJzZShmaWVsZCkgYXMgc3RyaW5nW10pIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEVycm9yKGVycm9yOiBBcHBsZVBheUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlZ3JhdGlvblR5cGUoKTogdm9pZCB7XG4gICAgbGV0IGludGVncmF0aW9uVHlwZTogQXBwbGVQYXlJbnRlZ3JhdGlvbjtcbiAgICBpZiAodGhpcy5wYXltZW50Q2xpZW50ICYmIHRoaXMuaXNEZXZpY2VDYXBhYmxlKCkpIHtcbiAgICAgIGludGVncmF0aW9uVHlwZSA9ICdzZGsnO1xuICAgIH0gZWxzZSBpZiAodGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAncmVkaXJlY3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlLm5leHQoaW50ZWdyYXRpb25UeXBlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcGFyYW1zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3Nkay1wYXltZW50LXN5c3RlbXMvYXBwbGUtcGF5L2NoZWNrb3V0LXBhcmFtcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXBwbGVQYXlDaGVja291dFBhcmFtcyB7XG4gIHRvdGFsTGFiZWw6IHN0cmluZztcbiAgdG90YWxBbW91bnQ6IHN0cmluZztcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgc3VwcG9ydGVkTmV0d29ya3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBhZ3JlZW1lbnRzOiBzdHJpbmdbXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlckluZm8uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvdXNlci1hZ2VudC9icm93c2VySW5mby5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERldmljZSB9IGZyb20gJy4vZGV2aWNlLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICB1aV92ZXJzaW9uOiBEZXZpY2U7XG4gIG9zOiBzdHJpbmcgfCBudWxsO1xuICBtb2JpbGU/OiBib29sZWFuO1xuICB0YWJsZXQ/OiBib29sZWFuO1xuICBpcGhvbmU/OiBib29sZWFuO1xuICBpcGFkPzogYm9vbGVhbjtcbiAgaXBvZD86IGJvb2xlYW47XG4gIGFuZHJvaWQ/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const unknownValue = 'unknown';
|
|
2
|
+
export const browsers = [
|
|
3
|
+
{
|
|
4
|
+
sentName: 'Mozilla Firefox',
|
|
5
|
+
shortName: 'Firefox',
|
|
6
|
+
regexpBrowserNameWithVersion: '(Firefox)\\/(.+)',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
sentName: 'Samsung Internet',
|
|
10
|
+
shortName: 'SamsungBrowser',
|
|
11
|
+
regexpBrowserNameWithVersion: '(SamsungBrowser)\\/(.+)\\s',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
sentName: 'Opera',
|
|
15
|
+
shortName: 'Opera',
|
|
16
|
+
regexpBrowserNameWithVersion: '(Opera)\\/(.+)',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
sentName: 'Opera',
|
|
20
|
+
shortName: 'Opera',
|
|
21
|
+
regexpBrowserNameWithVersion: '(OPR)\\/(.+)',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
sentName: 'Microsoft Edge (Legacy)',
|
|
25
|
+
shortName: 'MSEdge-legacy',
|
|
26
|
+
regexpBrowserNameWithVersion: '(Edge)\\/(.+)',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
sentName: 'Microsoft Edge (Chromium)',
|
|
30
|
+
shortName: 'MSEdge',
|
|
31
|
+
regexpBrowserNameWithVersion: '(Edg)\\/(.+)',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
sentName: 'Google Chrome or Chromium',
|
|
35
|
+
shortName: 'Chrome',
|
|
36
|
+
regexpBrowserNameWithVersion: '(Chrome)\\/(.+)\\s',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
sentName: 'Apple Safari',
|
|
40
|
+
shortName: 'Safari',
|
|
41
|
+
regexpBrowserNameWithVersion: '(Safari)\\/(.+)',
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS91c2VyLWFnZW50L2Jyb3dzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxTQUFrQixDQUFDO0FBZ0MvQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXVCO0lBQzFDO1FBQ0UsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixTQUFTLEVBQUUsU0FBUztRQUNwQiw0QkFBNEIsRUFBRSxrQkFBa0I7S0FDakQ7SUFDRDtRQUNFLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQiw0QkFBNEIsRUFBRSw0QkFBNEI7S0FDM0Q7SUFDRDtRQUNFLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLDRCQUE0QixFQUFFLGdCQUFnQjtLQUMvQztJQUNEO1FBQ0UsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLE9BQU87UUFDbEIsNEJBQTRCLEVBQUUsY0FBYztLQUM3QztJQUNEO1FBQ0UsUUFBUSxFQUFFLHlCQUF5QjtRQUNuQyxTQUFTLEVBQUUsZUFBZTtRQUMxQiw0QkFBNEIsRUFBRSxlQUFlO0tBQzlDO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLFNBQVMsRUFBRSxRQUFRO1FBQ25CLDRCQUE0QixFQUFFLGNBQWM7S0FDN0M7SUFDRDtRQUNFLFFBQVEsRUFBRSwyQkFBMkI7UUFDckMsU0FBUyxFQUFFLFFBQVE7UUFDbkIsNEJBQTRCLEVBQUUsb0JBQW9CO0tBQ25EO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsY0FBYztRQUN4QixTQUFTLEVBQUUsUUFBUTtRQUNuQiw0QkFBNEIsRUFBRSxpQkFBaUI7S0FDaEQ7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVua25vd25WYWx1ZSA9ICd1bmtub3duJyBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQnJvd3Nlck5hbWUgPVxuICB8IHR5cGVvZiBicm93c2Vyc1tudW1iZXJdWydzZW50TmFtZSddXG4gIHwgdHlwZW9mIHVua25vd25WYWx1ZVxuICB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEJyb3dzZXJBcHAgPVxuICB8IHR5cGVvZiBicm93c2Vyc1tudW1iZXJdWydzaG9ydE5hbWUnXVxuICB8IHR5cGVvZiB1bmtub3duVmFsdWVcbiAgfCBudWxsO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbnRlcmZhY2Uge1xuICBzZW50TmFtZTpcbiAgICB8ICdNb3ppbGxhIEZpcmVmb3gnXG4gICAgfCAnU2Ftc3VuZyBJbnRlcm5ldCdcbiAgICB8ICdPcGVyYSdcbiAgICB8ICdNaWNyb3NvZnQgRWRnZSAoTGVnYWN5KSdcbiAgICB8ICdNaWNyb3NvZnQgRWRnZSAoQ2hyb21pdW0pJ1xuICAgIHwgJ0dvb2dsZSBDaHJvbWUgb3IgQ2hyb21pdW0nXG4gICAgfCAnQXBwbGUgU2FmYXJpJztcbiAgc2hvcnROYW1lOlxuICAgIHwgJ0ZpcmVmb3gnXG4gICAgfCAnU2Ftc3VuZ0Jyb3dzZXInXG4gICAgfCAnT3BlcmEnXG4gICAgfCAnTVNFZGdlLWxlZ2FjeSdcbiAgICB8ICdNU0VkZ2UnXG4gICAgfCAnQ2hyb21lJ1xuICAgIHwgJ1NhZmFyaSc7XG4gIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGJyb3dzZXJzOiBCcm93c2VySW50ZXJmYWNlW10gPSBbXG4gIHtcbiAgICBzZW50TmFtZTogJ01vemlsbGEgRmlyZWZveCcsXG4gICAgc2hvcnROYW1lOiAnRmlyZWZveCcsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhGaXJlZm94KVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ1NhbXN1bmcgSW50ZXJuZXQnLFxuICAgIHNob3J0TmFtZTogJ1NhbXN1bmdCcm93c2VyJyxcbiAgICByZWdleHBCcm93c2VyTmFtZVdpdGhWZXJzaW9uOiAnKFNhbXN1bmdCcm93c2VyKVxcXFwvKC4rKVxcXFxzJyxcbiAgfSxcbiAge1xuICAgIHNlbnROYW1lOiAnT3BlcmEnLFxuICAgIHNob3J0TmFtZTogJ09wZXJhJyxcbiAgICByZWdleHBCcm93c2VyTmFtZVdpdGhWZXJzaW9uOiAnKE9wZXJhKVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ09wZXJhJyxcbiAgICBzaG9ydE5hbWU6ICdPcGVyYScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhPUFIpXFxcXC8oLispJyxcbiAgfSxcbiAge1xuICAgIHNlbnROYW1lOiAnTWljcm9zb2Z0IEVkZ2UgKExlZ2FjeSknLFxuICAgIHNob3J0TmFtZTogJ01TRWRnZS1sZWdhY3knLFxuICAgIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246ICcoRWRnZSlcXFxcLyguKyknLFxuICB9LFxuICB7XG4gICAgc2VudE5hbWU6ICdNaWNyb3NvZnQgRWRnZSAoQ2hyb21pdW0pJyxcbiAgICBzaG9ydE5hbWU6ICdNU0VkZ2UnLFxuICAgIHJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb246ICcoRWRnKVxcXFwvKC4rKScsXG4gIH0sXG4gIHtcbiAgICBzZW50TmFtZTogJ0dvb2dsZSBDaHJvbWUgb3IgQ2hyb21pdW0nLFxuICAgIHNob3J0TmFtZTogJ0Nocm9tZScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhDaHJvbWUpXFxcXC8oLispXFxcXHMnLFxuICB9LFxuICB7XG4gICAgc2VudE5hbWU6ICdBcHBsZSBTYWZhcmknLFxuICAgIHNob3J0TmFtZTogJ1NhZmFyaScsXG4gICAgcmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbjogJyhTYWZhcmkpXFxcXC8oLispJyxcbiAgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var Device;
|
|
2
|
+
(function (Device) {
|
|
3
|
+
Device["mobile"] = "mobile";
|
|
4
|
+
Device["desktop"] = "desktop";
|
|
5
|
+
})(Device || (Device = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS91c2VyLWFnZW50L2RldmljZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLE1BR1g7QUFIRCxXQUFZLE1BQU07SUFDaEIsMkJBQWlCLENBQUE7SUFDakIsNkJBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLE1BQU0sS0FBTixNQUFNLFFBR2pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRGV2aWNlIHtcbiAgbW9iaWxlID0gJ21vYmlsZScsXG4gIGRlc2t0b3AgPSAnZGVza3RvcCcsXG59XG4iXX0=
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
export const osList = [
|
|
2
|
+
{
|
|
3
|
+
name: 'Windows XP',
|
|
4
|
+
regExp: 'Windows XP',
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
name: 'Windows XP',
|
|
8
|
+
regExp: 'Windows NT 5.1|Windows NT5.1',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'Windows Vista',
|
|
12
|
+
regExp: 'Windows NT 6.0',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'Windows 7',
|
|
16
|
+
regExp: 'Windows NT 6.1',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'Windows 8',
|
|
20
|
+
regExp: 'Windows NT 6.2',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Windows 8.1',
|
|
24
|
+
regExp: 'Windows NT 6.3',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Windows 10',
|
|
28
|
+
regExp: 'Windows NT 10.0',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'Windows CE',
|
|
32
|
+
regExp: 'Windows CE',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'iPhone',
|
|
36
|
+
regExp: 'iphone',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'iPod',
|
|
40
|
+
regExp: 'ipod',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'iPad',
|
|
44
|
+
regExp: 'ipad',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Android',
|
|
48
|
+
regExp: 'Android ([0-9]{1,2}.[0-9]{1,2}.?[0-9]{0,3})',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Android',
|
|
52
|
+
regExp: 'Android',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Android',
|
|
56
|
+
regExp: 'android',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'BlackBerry',
|
|
60
|
+
regExp: 'blackberry',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'Mobile',
|
|
64
|
+
regExp: 'webos',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'Nintendo WiiU',
|
|
68
|
+
regExp: 'Nintendo WiiU',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Xbox One S',
|
|
72
|
+
regExp: 'XBOX_ONE_ED',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Xbox One',
|
|
76
|
+
regExp: 'Xbox; Xbox One',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'PlayStation',
|
|
80
|
+
regExp: 'PlayStation',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'Windows',
|
|
84
|
+
regExp: '(win)([0-9]{1,2}\\.[0-9x]{1,2})',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'Windows',
|
|
88
|
+
regExp: '(windows)([0-9x]{2})',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'Windows',
|
|
92
|
+
regExp: '(windows)([0-9]{1,2}\\.[0-9]{1,2})',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'Windows',
|
|
96
|
+
regExp: 'win32',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Java',
|
|
100
|
+
regExp: '(java)([0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,2})',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'Solaris',
|
|
104
|
+
regExp: '(Solaris)([0-9]{1,2}\\.[0-9x]{1,2}){0,1}',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'Unix',
|
|
108
|
+
regExp: 'unix',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: 'Mac OS X',
|
|
112
|
+
regExp: 'Mac OS X',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'Mac OS',
|
|
116
|
+
regExp: '(mac|Macintosh)',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'SunOS',
|
|
120
|
+
regExp: '(sunos)([0-9]{1,2}\\.[0-9]{1,2}){0,1}',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'BeOS',
|
|
124
|
+
regExp: '(beos)([0-9]{1,2}\\.[0-9]{1,2}){0,1}',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'RISC OS',
|
|
128
|
+
regExp: '(risc os)([0-9]{1,2}\\.[0-9]{1,2})',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'FreeBSD',
|
|
132
|
+
regExp: 'freebsd',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'OpenBSD',
|
|
136
|
+
regExp: 'openbsd',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'NetBSD',
|
|
140
|
+
regExp: 'netbsd',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'IRIX',
|
|
144
|
+
regExp: 'irix',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
name: 'Plan9',
|
|
148
|
+
regExp: 'plan9',
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: 'OSF',
|
|
152
|
+
regExp: 'osf',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'AIX',
|
|
156
|
+
regExp: 'aix',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: 'GNU Hurd',
|
|
160
|
+
regExp: 'GNU Hurd',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'Linux - Fedora',
|
|
164
|
+
regExp: '(fedora)',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: 'Linux - Kubuntu',
|
|
168
|
+
regExp: '(kubuntu)',
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: 'Linux - Ubuntu',
|
|
172
|
+
regExp: '(ubuntu)',
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'Linux - Debian',
|
|
176
|
+
regExp: '(debian)',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'Linux - CentOS',
|
|
180
|
+
regExp: '(CentOS)',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'Linux - Mandriva',
|
|
184
|
+
regExp: '(Mandriva).([0-9]{1,3}(\\.[0-9]{1,3})?(\\.[0-9]{1,3})?)',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'Linux - SUSE',
|
|
188
|
+
regExp: '(SUSE).([0-9]{1,3}(\\.[0-9]{1,3})?(\\.[0-9]{1,3})?)',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: 'Linux - Slackware (Dropline GNOME)',
|
|
192
|
+
regExp: '(Dropline)',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'Linux - ASPLinux',
|
|
196
|
+
regExp: '(ASPLinux)',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'Linux - Red Hat',
|
|
200
|
+
regExp: '(Red Hat)',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: 'Linux',
|
|
204
|
+
regExp: '(linux)',
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'AmigaOS',
|
|
208
|
+
regExp: '(amigaos)([0-9]{1,2}\\.[0-9]{1,2})',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: 'AmigaOS',
|
|
212
|
+
regExp: 'amiga-aweb',
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
name: 'Amiga',
|
|
216
|
+
regExp: 'amiga',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'PalmOS',
|
|
220
|
+
regExp: 'AvantGo',
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: 'WebTV',
|
|
224
|
+
regExp: '(webtv)/([0-9]{1,2}\\.[0-9]{1,2})',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: 'Dreamcast OS',
|
|
228
|
+
regExp: 'Dreamcast',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'Windows',
|
|
232
|
+
regExp: 'wget',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: 'Unknown',
|
|
236
|
+
regExp: 'Java',
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'Windows',
|
|
240
|
+
regExp: '(msie)([0-9]{1,2}.[0-9]{1,2})',
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: 'Unix',
|
|
244
|
+
regExp: 'libwww-perl',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: 'Windows CE',
|
|
248
|
+
regExp: 'UP.Browser',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
name: 'Windows',
|
|
252
|
+
regExp: 'NetAnts',
|
|
253
|
+
},
|
|
254
|
+
];
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS91c2VyLWFnZW50L29zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBVztJQUM1QjtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLE1BQU0sRUFBRSxZQUFZO0tBQ3JCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsWUFBWTtRQUNsQixNQUFNLEVBQUUsOEJBQThCO0tBQ3ZDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsZUFBZTtRQUNyQixNQUFNLEVBQUUsZ0JBQWdCO0tBQ3pCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUUsZ0JBQWdCO0tBQ3pCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUUsZ0JBQWdCO0tBQ3pCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixNQUFNLEVBQUUsZ0JBQWdCO0tBQ3pCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsWUFBWTtRQUNsQixNQUFNLEVBQUUsaUJBQWlCO0tBQzFCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsWUFBWTtRQUNsQixNQUFNLEVBQUUsWUFBWTtLQUNyQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLDZDQUE2QztLQUN0RDtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsU0FBUztLQUNsQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFD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S0FDckI7SUFDRDtRQUNFLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsTUFBTSxFQUFFLFlBQVk7S0FDckI7SUFDRDtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsTUFBTSxFQUFFLFdBQVc7S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsTUFBTSxFQUFFLFNBQVM7S0FDbEI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLG9DQUFvQztLQUM3QztJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsWUFBWTtLQUNyQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixNQUFNLEVBQUUsT0FBTztLQUNoQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsU0FBUztLQUNsQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixNQUFNLEVBQUUsbUNBQW1DO0tBQzVDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsY0FBYztRQUNwQixNQUFNLEVBQUUsV0FBVztLQUNwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLCtCQUErQjtLQUN4QztJQUNEO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFlBQVk7UUFDbEIsTUFBTSxFQUFFLFlBQVk7S0FDckI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFNBQVM7S0FDbEI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuaW50ZXJmYWNlIE9TIHtcbiAgbmFtZTogc3RyaW5nO1xuICByZWdFeHA6IHN0cmluZztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxudHlwZSBPU0xpc3QgPSBPU1tdO1xuXG5leHBvcnQgY29uc3Qgb3NMaXN0OiBPU0xpc3QgPSBbXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cyBYUCcsXG4gICAgcmVnRXhwOiAnV2luZG93cyBYUCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cyBYUCcsXG4gICAgcmVnRXhwOiAnV2luZG93cyBOVCA1LjF8V2luZG93cyBOVDUuMScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cyBWaXN0YScsXG4gICAgcmVnRXhwOiAnV2luZG93cyBOVCA2LjAnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1dpbmRvd3MgNycsXG4gICAgcmVnRXhwOiAnV2luZG93cyBOVCA2LjEnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1dpbmRvd3MgOCcsXG4gICAgcmVnRXhwOiAnV2luZG93cyBOVCA2LjInLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1dpbmRvd3MgOC4xJyxcbiAgICByZWdFeHA6ICdXaW5kb3dzIE5UIDYuMycsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cyAxMCcsXG4gICAgcmVnRXhwOiAnV2luZG93cyBOVCAxMC4wJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdXaW5kb3dzIENFJyxcbiAgICByZWdFeHA6ICdXaW5kb3dzIENFJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdpUGhvbmUnLFxuICAgIHJlZ0V4cDogJ2lwaG9uZScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnaVBvZCcsXG4gICAgcmVnRXhwOiAnaXBvZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnaVBhZCcsXG4gICAgcmVnRXhwOiAnaXBhZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQW5kcm9pZCcsXG4gICAgcmVnRXhwOiAnQW5kcm9pZCAoWzAtOV17MSwyfS5bMC05XXsxLDJ9Lj9bMC05XXswLDN9KScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQW5kcm9pZCcsXG4gICAgcmVnRXhwOiAnQW5kcm9pZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQW5kcm9pZCcsXG4gICAgcmVnRXhwOiAnYW5kcm9pZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQmxhY2tCZXJyeScsXG4gICAgcmVnRXhwOiAnYmxhY2tiZXJyeScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTW9iaWxlJyxcbiAgICByZWdFeHA6ICd3ZWJvcycsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTmludGVuZG8gV2lpVScsXG4gICAgcmVnRXhwOiAnTmludGVuZG8gV2lpVScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnWGJveCBPbmUgUycsXG4gICAgcmVnRXhwOiAnWEJPWF9PTkVfRUQnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1hib3ggT25lJyxcbiAgICByZWdFeHA6ICdYYm94OyBYYm94IE9uZScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnUGxheVN0YXRpb24nLFxuICAgIHJlZ0V4cDogJ1BsYXlTdGF0aW9uJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdXaW5kb3dzJyxcbiAgICByZWdFeHA6ICcod2luKShbMC05XXsxLDJ9XFxcXC5bMC05eF17MSwyfSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1dpbmRvd3MnLFxuICAgIHJlZ0V4cDogJyh3aW5kb3dzKShbMC05eF17Mn0pJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdXaW5kb3dzJyxcbiAgICByZWdFeHA6ICcod2luZG93cykoWzAtOV17MSwyfVxcXFwuWzAtOV17MSwyfSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1dpbmRvd3MnLFxuICAgIHJlZ0V4cDogJ3dpbjMyJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdKYXZhJyxcbiAgICByZWdFeHA6ICcoamF2YSkoWzAtOV17MSwyfVxcXFwuWzAtOV17MSwyfVxcXFwuWzAtOV17MSwyfSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1NvbGFyaXMnLFxuICAgIHJlZ0V4cDogJyhTb2xhcmlzKShbMC05XXsxLDJ9XFxcXC5bMC05eF17MSwyfSl7MCwxfScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnVW5peCcsXG4gICAgcmVnRXhwOiAndW5peCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTWFjIE9TIFgnLFxuICAgIHJlZ0V4cDogJ01hYyBPUyBYJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdNYWMgT1MnLFxuICAgIHJlZ0V4cDogJyhtYWN8TWFjaW50b3NoKScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnU3VuT1MnLFxuICAgIHJlZ0V4cDogJyhzdW5vcykoWzAtOV17MSwyfVxcXFwuWzAtOV17MSwyfSl7MCwxfScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQmVPUycsXG4gICAgcmVnRXhwOiAnKGJlb3MpKFswLTldezEsMn1cXFxcLlswLTldezEsMn0pezAsMX0nLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1JJU0MgT1MnLFxuICAgIHJlZ0V4cDogJyhyaXNjIG9zKShbMC05XXsxLDJ9XFxcXC5bMC05XXsxLDJ9KScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnRnJlZUJTRCcsXG4gICAgcmVnRXhwOiAnZnJlZWJzZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnT3BlbkJTRCcsXG4gICAgcmVnRXhwOiAnb3BlbmJzZCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTmV0QlNEJyxcbiAgICByZWdFeHA6ICduZXRic2QnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0lSSVgnLFxuICAgIHJlZ0V4cDogJ2lyaXgnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1BsYW45JyxcbiAgICByZWdFeHA6ICdwbGFuOScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnT1NGJyxcbiAgICByZWdFeHA6ICdvc2YnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0FJWCcsXG4gICAgcmVnRXhwOiAnYWl4JyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdHTlUgSHVyZCcsXG4gICAgcmVnRXhwOiAnR05VIEh1cmQnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gRmVkb3JhJyxcbiAgICByZWdFeHA6ICcoZmVkb3JhKScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTGludXggLSBLdWJ1bnR1JyxcbiAgICByZWdFeHA6ICcoa3VidW50dSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gVWJ1bnR1JyxcbiAgICByZWdFeHA6ICcodWJ1bnR1KScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnTGludXggLSBEZWJpYW4nLFxuICAgIHJlZ0V4cDogJyhkZWJpYW4pJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdMaW51eCAtIENlbnRPUycsXG4gICAgcmVnRXhwOiAnKENlbnRPUyknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gTWFuZHJpdmEnLFxuICAgIHJlZ0V4cDogJyhNYW5kcml2YSkuKFswLTldezEsM30oXFxcXC5bMC05XXsxLDN9KT8oXFxcXC5bMC05XXsxLDN9KT8pJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdMaW51eCAtIFNVU0UnLFxuICAgIHJlZ0V4cDogJyhTVVNFKS4oWzAtOV17MSwzfShcXFxcLlswLTldezEsM30pPyhcXFxcLlswLTldezEsM30pPyknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gU2xhY2t3YXJlIChEcm9wbGluZSBHTk9NRSknLFxuICAgIHJlZ0V4cDogJyhEcm9wbGluZSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gQVNQTGludXgnLFxuICAgIHJlZ0V4cDogJyhBU1BMaW51eCknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0xpbnV4IC0gUmVkIEhhdCcsXG4gICAgcmVnRXhwOiAnKFJlZCBIYXQpJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdMaW51eCcsXG4gICAgcmVnRXhwOiAnKGxpbnV4KScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQW1pZ2FPUycsXG4gICAgcmVnRXhwOiAnKGFtaWdhb3MpKFswLTldezEsMn1cXFxcLlswLTldezEsMn0pJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdBbWlnYU9TJyxcbiAgICByZWdFeHA6ICdhbWlnYS1hd2ViJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdBbWlnYScsXG4gICAgcmVnRXhwOiAnYW1pZ2EnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1BhbG1PUycsXG4gICAgcmVnRXhwOiAnQXZhbnRHbycsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2ViVFYnLFxuICAgIHJlZ0V4cDogJyh3ZWJ0dikvKFswLTldezEsMn1cXFxcLlswLTldezEsMn0pJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdEcmVhbWNhc3QgT1MnLFxuICAgIHJlZ0V4cDogJ0RyZWFtY2FzdCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cycsXG4gICAgcmVnRXhwOiAnd2dldCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnVW5rbm93bicsXG4gICAgcmVnRXhwOiAnSmF2YScsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnV2luZG93cycsXG4gICAgcmVnRXhwOiAnKG1zaWUpKFswLTldezEsMn0uWzAtOV17MSwyfSknLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1VuaXgnLFxuICAgIHJlZ0V4cDogJ2xpYnd3dy1wZXJsJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdXaW5kb3dzIENFJyxcbiAgICByZWdFeHA6ICdVUC5Ccm93c2VyJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdXaW5kb3dzJyxcbiAgICByZWdFeHA6ICdOZXRBbnRzJyxcbiAgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hZ2VudC1kYXRhLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3VzZXItYWdlbnQvdXNlci1hZ2VudC1kYXRhLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIEJyYW5kIHtcbiAgYnJhbmQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJBZ2VudERhdGEge1xuICBicmFuZHM6IEJyYW5kW107XG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgcGxhdGZvcm06IHN0cmluZztcbn1cbiJdfQ==
|