@1money/react-ui 1.7.20 → 1.7.21
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/CLAUDE.md +104 -0
- package/LICENSE +21 -0
- package/README.md +429 -18
- package/README.zh-CN.md +429 -18
- package/es/components/InputAmount/InputAmount.js +2 -2
- package/lib/components/InputAmount/InputAmount.js +2 -2
- package/package.json +2 -2
package/README.zh-CN.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# @1money/react-ui
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
基于 PrimeReact 构建的综合性 React 组件库,专为金融应用程序和现代 Web 界面设计。
|
|
3
4
|
|
|
4
5
|
[](https://github.com/1Money-Co/1money-react-ui/actions/workflows/cicd-npm.yml)
|
|
5
6
|
[](https://www.npmjs.com/package/@1money/react-ui)
|
|
@@ -7,32 +8,442 @@
|
|
|
7
8
|
[](https://packagephobia.now.sh/result?p=%401money%2Freact-ui)
|
|
8
9
|
[](https://github.com/1money/tpls/blob/master/packages/react-ui/LICENSE)
|
|
9
10
|
|
|
10
|
-
[
|
|
11
|
+
📖 [在线文档 & Storybook](https://1money-co.github.io/1money-react-ui/)
|
|
11
12
|
|
|
12
13
|
[English](./README.md) | 简体中文
|
|
13
14
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
## ✨ 特性
|
|
16
|
+
|
|
17
|
+
- 🎨 **30+ 高质量组件** - 基于 PrimeReact 构建,具有增强样式
|
|
18
|
+
- 💰 **金融应用就绪** - 专为金融科技界面设计的组件
|
|
19
|
+
- 🎯 **TypeScript 支持** - 完整的 TypeScript 定义和严格类型检查
|
|
20
|
+
- 📱 **响应式设计** - 移动优先方法,集成 TailwindCSS
|
|
21
|
+
- ♿ **无障碍优先** - 符合 WCAG 标准,支持键盘导航
|
|
22
|
+
- 🌍 **国际化就绪** - 开箱即用的国际化支持
|
|
23
|
+
- 🎭 **可自定义主题** - 使用 SCSS 变量轻松自定义
|
|
24
|
+
- 📦 **Tree Shaking** - 通过单独组件导入优化包大小
|
|
25
|
+
|
|
26
|
+
## 📦 安装
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# npm
|
|
30
|
+
npm install @1money/react-ui
|
|
31
|
+
|
|
32
|
+
# yarn
|
|
19
33
|
yarn add @1money/react-ui
|
|
20
|
-
|
|
21
|
-
pnpm
|
|
34
|
+
|
|
35
|
+
# pnpm
|
|
36
|
+
pnpm add @1money/react-ui
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 同伴依赖
|
|
40
|
+
|
|
41
|
+
确保已安装所需的同伴依赖:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install react react-dom primereact primeicons tailwindcss
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 🚀 快速开始
|
|
48
|
+
|
|
49
|
+
### 基础设置
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
import '@1money/react-ui/index.css';
|
|
53
|
+
import { Button, Input, Modal } from '@1money/react-ui';
|
|
54
|
+
|
|
55
|
+
function App() {
|
|
56
|
+
return (
|
|
57
|
+
<div className="p-4">
|
|
58
|
+
<Button severity="primary">开始使用</Button>
|
|
59
|
+
</div>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 单独组件导入
|
|
65
|
+
|
|
66
|
+
为了更好的 tree shaking,可以单独导入组件:
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
import { Button } from '@1money/react-ui/Button';
|
|
70
|
+
import { Input } from '@1money/react-ui/Input';
|
|
71
|
+
import { Modal } from '@1money/react-ui/Modal';
|
|
72
|
+
import '@1money/react-ui/index.css';
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 📋 组件分类
|
|
76
|
+
|
|
77
|
+
### 🎮 表单组件
|
|
78
|
+
构建复杂表单和数据输入界面的完美选择。
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
import { Button, Input, Checkbox, Radio, Switch, Select } from '@1money/react-ui';
|
|
82
|
+
|
|
83
|
+
// 表单示例
|
|
84
|
+
<form className="space-y-4">
|
|
85
|
+
<Input
|
|
86
|
+
type="text"
|
|
87
|
+
label="姓名"
|
|
88
|
+
placeholder="请输入您的姓名"
|
|
89
|
+
required
|
|
90
|
+
/>
|
|
91
|
+
|
|
92
|
+
<Input
|
|
93
|
+
type="number"
|
|
94
|
+
label="投资金额"
|
|
95
|
+
prefixEle="¥"
|
|
96
|
+
placeholder="0.00"
|
|
97
|
+
/>
|
|
98
|
+
|
|
99
|
+
<Select
|
|
100
|
+
label="账户类型"
|
|
101
|
+
options={[
|
|
102
|
+
{ label: '活期账户', value: 'checking' },
|
|
103
|
+
{ label: '储蓄账户', value: 'savings' },
|
|
104
|
+
{ label: '投资账户', value: 'investment' }
|
|
105
|
+
]}
|
|
106
|
+
/>
|
|
107
|
+
|
|
108
|
+
<div className="flex items-center gap-2">
|
|
109
|
+
<Checkbox inputId="terms" />
|
|
110
|
+
<label htmlFor="terms">我同意条款和条件</label>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<Button type="submit" severity="primary">
|
|
114
|
+
创建账户
|
|
115
|
+
</Button>
|
|
116
|
+
</form>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 💼 金融组件
|
|
120
|
+
专为金融应用程序设计的专业组件。
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
import { InputAmount, Badge, Progress, Table } from '@1money/react-ui';
|
|
124
|
+
|
|
125
|
+
// 金融仪表板示例
|
|
126
|
+
<div className="financial-dashboard">
|
|
127
|
+
<div className="balance-card">
|
|
128
|
+
<h3>账户余额</h3>
|
|
129
|
+
<InputAmount
|
|
130
|
+
value={125430.50}
|
|
131
|
+
precision={2}
|
|
132
|
+
disabled
|
|
133
|
+
prefixEle="¥"
|
|
134
|
+
/>
|
|
135
|
+
<Badge severity="success" value="↑ 12.5%" />
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<Progress
|
|
139
|
+
type="ring"
|
|
140
|
+
value={75}
|
|
141
|
+
label="投资组合增长"
|
|
142
|
+
color="var(--primary-color)"
|
|
143
|
+
/>
|
|
144
|
+
</div>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 🎨 布局和导航
|
|
148
|
+
构建复杂布局和导航系统。
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
import { Sidebar, Tab, Menu, Collapse } from '@1money/react-ui';
|
|
152
|
+
|
|
153
|
+
// 应用程序布局
|
|
154
|
+
<div className="app-layout">
|
|
155
|
+
<Sidebar
|
|
156
|
+
items={[
|
|
157
|
+
{ label: '仪表板', icon: 'dashboard', command: () => navigate('/dashboard') },
|
|
158
|
+
{ label: '账户', icon: 'account-balance', command: () => navigate('/accounts') },
|
|
159
|
+
{ label: '交易记录', icon: 'receipt', command: () => navigate('/transactions') },
|
|
160
|
+
{ label: '设置', icon: 'settings', command: () => navigate('/settings') }
|
|
161
|
+
]}
|
|
162
|
+
/>
|
|
163
|
+
|
|
164
|
+
<main className="main-content">
|
|
165
|
+
<Tab
|
|
166
|
+
items={[
|
|
167
|
+
{ label: '概览', content: <DashboardOverview /> },
|
|
168
|
+
{ label: '分析', content: <Analytics />, count: 3 },
|
|
169
|
+
{ label: '报告', content: <Reports /> }
|
|
170
|
+
]}
|
|
171
|
+
/>
|
|
172
|
+
</main>
|
|
173
|
+
</div>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 📊 数据展示
|
|
177
|
+
以表格、列表和其他格式展示数据。
|
|
178
|
+
|
|
179
|
+
```tsx
|
|
180
|
+
import { Table, Cell, Typography, Loading } from '@1money/react-ui';
|
|
181
|
+
|
|
182
|
+
// 交易记录表格
|
|
183
|
+
const transactions = [
|
|
184
|
+
{ id: 1, date: '2024-01-15', description: '咖啡店', amount: -4.50, category: '餐饮' },
|
|
185
|
+
{ id: 2, date: '2024-01-14', description: '工资入账', amount: 3500.00, category: '收入' },
|
|
186
|
+
{ id: 3, date: '2024-01-13', description: '超市购物', amount: -89.32, category: '购物' }
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
<Table
|
|
190
|
+
data={transactions}
|
|
191
|
+
selectionMode="multiple"
|
|
192
|
+
pagination
|
|
193
|
+
pageSize={10}
|
|
194
|
+
>
|
|
195
|
+
<Column field="date" header="日期" />
|
|
196
|
+
<Column field="description" header="描述" />
|
|
197
|
+
<Column
|
|
198
|
+
field="amount"
|
|
199
|
+
header="金额"
|
|
200
|
+
body={(rowData) => (
|
|
201
|
+
<Typography.Body
|
|
202
|
+
className={rowData.amount > 0 ? 'text-green-600' : 'text-red-600'}
|
|
203
|
+
>
|
|
204
|
+
¥{Math.abs(rowData.amount).toFixed(2)}
|
|
205
|
+
</Typography.Body>
|
|
206
|
+
)}
|
|
207
|
+
/>
|
|
208
|
+
<Column field="category" header="类别" />
|
|
209
|
+
</Table>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### 💬 反馈组件
|
|
213
|
+
提供用户反馈和系统状态。
|
|
214
|
+
|
|
215
|
+
```tsx
|
|
216
|
+
import { Toast, Notification, Message, Progress } from '@1money/react-ui';
|
|
217
|
+
|
|
218
|
+
// 支付处理反馈
|
|
219
|
+
const PaymentFlow = () => {
|
|
220
|
+
const [processing, setProcessing] = useState(false);
|
|
221
|
+
const toast = useRef<Toast>(null);
|
|
222
|
+
|
|
223
|
+
const processPayment = async () => {
|
|
224
|
+
setProcessing(true);
|
|
225
|
+
|
|
226
|
+
try {
|
|
227
|
+
await paymentAPI.process();
|
|
228
|
+
toast.current?.show({
|
|
229
|
+
severity: 'success',
|
|
230
|
+
summary: '支付成功',
|
|
231
|
+
detail: '您的支付已成功处理'
|
|
232
|
+
});
|
|
233
|
+
} catch (error) {
|
|
234
|
+
toast.current?.show({
|
|
235
|
+
severity: 'error',
|
|
236
|
+
summary: '支付失败',
|
|
237
|
+
detail: error.message
|
|
238
|
+
});
|
|
239
|
+
} finally {
|
|
240
|
+
setProcessing(false);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
return (
|
|
245
|
+
<div>
|
|
246
|
+
<Button
|
|
247
|
+
onClick={processPayment}
|
|
248
|
+
loading={processing}
|
|
249
|
+
disabled={processing}
|
|
250
|
+
>
|
|
251
|
+
处理支付
|
|
252
|
+
</Button>
|
|
253
|
+
|
|
254
|
+
{processing && (
|
|
255
|
+
<Progress
|
|
256
|
+
type="bar"
|
|
257
|
+
mode="indeterminate"
|
|
258
|
+
className="mt-4"
|
|
259
|
+
/>
|
|
260
|
+
)}
|
|
261
|
+
|
|
262
|
+
<Toast ref={toast} />
|
|
263
|
+
</div>
|
|
264
|
+
);
|
|
265
|
+
};
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 🎭 交互组件
|
|
269
|
+
模态框、弹窗和其他交互元素。
|
|
270
|
+
|
|
271
|
+
```tsx
|
|
272
|
+
import { Modal, Popup, Tooltip, ConfirmPopup } from '@1money/react-ui';
|
|
273
|
+
|
|
274
|
+
// 账户删除确认
|
|
275
|
+
const AccountSettings = () => {
|
|
276
|
+
const [deleteModalVisible, setDeleteModalVisible] = useState(false);
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<div className="account-settings">
|
|
280
|
+
<Tooltip target=".delete-btn" content="此操作无法撤消">
|
|
281
|
+
<Button
|
|
282
|
+
className="delete-btn"
|
|
283
|
+
severity="danger"
|
|
284
|
+
outlined
|
|
285
|
+
onClick={() => setDeleteModalVisible(true)}
|
|
286
|
+
>
|
|
287
|
+
删除账户
|
|
288
|
+
</Button>
|
|
289
|
+
</Tooltip>
|
|
290
|
+
|
|
291
|
+
<Modal
|
|
292
|
+
visible={deleteModalVisible}
|
|
293
|
+
onHide={() => setDeleteModalVisible(false)}
|
|
294
|
+
header="确认删除账户"
|
|
295
|
+
footer={
|
|
296
|
+
<div className="flex gap-2">
|
|
297
|
+
<Button
|
|
298
|
+
severity="secondary"
|
|
299
|
+
onClick={() => setDeleteModalVisible(false)}
|
|
300
|
+
>
|
|
301
|
+
取消
|
|
302
|
+
</Button>
|
|
303
|
+
<Button
|
|
304
|
+
severity="danger"
|
|
305
|
+
onClick={handleAccountDeletion}
|
|
306
|
+
>
|
|
307
|
+
删除账户
|
|
308
|
+
</Button>
|
|
309
|
+
</div>
|
|
310
|
+
}
|
|
311
|
+
>
|
|
312
|
+
<Message
|
|
313
|
+
severity="warn"
|
|
314
|
+
text="这将永久删除您的账户和所有相关数据。"
|
|
315
|
+
/>
|
|
316
|
+
<Typography.Body className="mt-4">
|
|
317
|
+
您确定要继续吗?此操作无法撤消。
|
|
318
|
+
</Typography.Body>
|
|
319
|
+
</Modal>
|
|
320
|
+
</div>
|
|
321
|
+
);
|
|
322
|
+
};
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## 🎨 主题和自定义
|
|
326
|
+
|
|
327
|
+
### CSS 自定义属性
|
|
328
|
+
|
|
329
|
+
```css
|
|
330
|
+
:root {
|
|
331
|
+
--primary-color: #007bff;
|
|
332
|
+
--secondary-color: #6c757d;
|
|
333
|
+
--success-color: #28a745;
|
|
334
|
+
--warning-color: #ffc107;
|
|
335
|
+
--danger-color: #dc3545;
|
|
336
|
+
--info-color: #17a2b8;
|
|
337
|
+
|
|
338
|
+
--border-radius: 6px;
|
|
339
|
+
--font-family: 'Inter', sans-serif;
|
|
340
|
+
--transition-duration: 0.15s;
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### SCSS 变量
|
|
345
|
+
|
|
346
|
+
```scss
|
|
347
|
+
@import '@1money/react-ui/variable.scss';
|
|
348
|
+
|
|
349
|
+
// 覆盖默认变量
|
|
350
|
+
$primary-color: #007bff;
|
|
351
|
+
$secondary-color: #6c757d;
|
|
352
|
+
$border-radius: 8px;
|
|
353
|
+
$font-size-base: 14px;
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### 组件级自定义
|
|
357
|
+
|
|
358
|
+
```tsx
|
|
359
|
+
// 使用 prefixCls 进行组件级样式设置
|
|
360
|
+
<Button
|
|
361
|
+
prefixCls="custom-button"
|
|
362
|
+
className="my-custom-styles"
|
|
363
|
+
>
|
|
364
|
+
自定义按钮
|
|
365
|
+
</Button>
|
|
22
366
|
```
|
|
23
367
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
368
|
+
```css
|
|
369
|
+
.custom-button {
|
|
370
|
+
background: linear-gradient(45deg, #007bff, #0056b3);
|
|
371
|
+
border: none;
|
|
372
|
+
box-shadow: 0 4px 8px rgba(0, 123, 255, 0.3);
|
|
373
|
+
}
|
|
27
374
|
```
|
|
28
375
|
|
|
29
|
-
## 开发
|
|
30
|
-
对于调试或维护,可以将项目 clone 到本地,然后启动项目。
|
|
376
|
+
## 🛠️ 开发
|
|
31
377
|
|
|
32
|
-
|
|
33
|
-
|
|
378
|
+
### 先决条件
|
|
379
|
+
|
|
380
|
+
- Node.js >= 16
|
|
381
|
+
- pnpm(推荐)
|
|
382
|
+
|
|
383
|
+
### 开始使用
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
# 克隆仓库
|
|
387
|
+
git clone https://github.com/1Money-Co/1money-react-ui.git
|
|
388
|
+
cd 1money-react-ui
|
|
389
|
+
|
|
390
|
+
# 安装依赖
|
|
391
|
+
pnpm install
|
|
392
|
+
|
|
393
|
+
# 启动开发服务器(Storybook)
|
|
394
|
+
pnpm dev
|
|
395
|
+
|
|
396
|
+
# 构建组件
|
|
397
|
+
pnpm build
|
|
398
|
+
|
|
399
|
+
# 运行测试
|
|
400
|
+
pnpm test
|
|
401
|
+
|
|
402
|
+
# 代码检查
|
|
403
|
+
pnpm lint
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### 项目结构
|
|
34
407
|
|
|
35
|
-
pnpm i && pnpm dev
|
|
36
408
|
```
|
|
409
|
+
src/
|
|
410
|
+
├── components/ # 所有 UI 组件
|
|
411
|
+
│ ├── Button/ # 单个组件
|
|
412
|
+
│ │ ├── Button.tsx # 组件实现
|
|
413
|
+
│ │ ├── interface.ts # TypeScript 接口
|
|
414
|
+
│ │ ├── index.ts # 导出文件
|
|
415
|
+
│ │ ├── style/ # 组件样式
|
|
416
|
+
│ │ └── README.md # 组件文档
|
|
417
|
+
│ └── ...
|
|
418
|
+
├── utils/ # 工具函数
|
|
419
|
+
├── variable.scss # 全局 SCSS 变量
|
|
420
|
+
└── index.ts # 主库导出
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## 📚 文档
|
|
424
|
+
|
|
425
|
+
- 📖 [Storybook 文档](https://1money-co.github.io/1money-react-ui/)
|
|
426
|
+
- 🔧 [开发指南](./DEV.zh-CN.md)
|
|
427
|
+
- 📝 [组件文档](./src/components/)
|
|
428
|
+
- 🤖 [Claude Code 指南](./CLAUDE.md)
|
|
429
|
+
|
|
430
|
+
### 开发工作流程
|
|
431
|
+
|
|
432
|
+
1. Fork 仓库
|
|
433
|
+
2. 创建功能分支:`git checkout -b feature/new-component`
|
|
434
|
+
3. 进行更改并添加测试
|
|
435
|
+
4. 运行检查和测试:`pnpm lint && pnpm test`
|
|
436
|
+
5. 创建拉取请求
|
|
437
|
+
|
|
438
|
+
## 📄 许可证
|
|
439
|
+
|
|
440
|
+
本项目基于 MIT 许可证 - 查看 [LICENSE](./LICENSE) 文件了解详情。
|
|
441
|
+
|
|
442
|
+
## 🆘 支持
|
|
443
|
+
|
|
444
|
+
- 📖 [文档](https://1money-co.github.io/1money-react-ui/)
|
|
445
|
+
- 🐛 [问题反馈](https://github.com/1Money-Co/1money-react-ui/issues)
|
|
446
|
+
|
|
447
|
+
---
|
|
37
448
|
|
|
38
|
-
[
|
|
449
|
+
用 ❤️ 由 [@1money](https://github.com/1Money-Co) 团队制作
|
|
@@ -72,7 +72,7 @@ export var InputAmount = function InputAmount(props) {
|
|
|
72
72
|
if (!input) return;
|
|
73
73
|
var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
|
|
74
74
|
var position = input.scrollLeft;
|
|
75
|
-
var shouldToEnd =
|
|
75
|
+
var shouldToEnd = !sticky;
|
|
76
76
|
var start = shouldToEnd ? len : inputCaretPositionRef.current;
|
|
77
77
|
input.setSelectionRange(start, start);
|
|
78
78
|
input.scrollLeft = shouldToEnd ? input.scrollWidth : position;
|
|
@@ -232,4 +232,4 @@ export var InputAmount = function InputAmount(props) {
|
|
|
232
232
|
});
|
|
233
233
|
};
|
|
234
234
|
export default /*#__PURE__*/memo(InputAmount);
|
|
235
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsInByZWZpeCIsImN1cnJlbmN5Iiwic3VmZml4IiwibWVzc2FnZSIsImZvb3Rub3RlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwidmFsIiwidGFyZ2V0Iiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiZGVjaW1hbCIsIk51bWJlciIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImRlY2ltYWxzIiwibWF0Y2giLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwiX3NwbGl0IiwiX3NwbGl0MiIsImludCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwi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QUEsQ0FBTztJQUFBLENBQUEsQ0FDM0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBRUQsNEJBQWU1QixJQUFJLENBQUNVLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJmb290bm90ZUNsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gISFwb3NpdGlvbiB8fCAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gdmFsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE5ld1ZhbCA9IG51bWVyaWNGb3JtYXR0ZXIodmFsLCB7XG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9iID0gaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgICAgIGNvbnN0IG9sZFBvc1ZhbCA9IGZvcm1hdHRlZFZhbHVlLnNsaWNlKDAsIChwb3NpdGlvbiAtIChpc0FkZCA/IDEgOiAtMSkpKTtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoICsgKGlzQWRkID8gMSA6IC0xKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc1ZhbCA9IHZhbC5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgICAgICBmb3JtYXR0ZWROZXdWYWwuc3BsaXQoJycpLnJlZHVjZSgoYWNjLCBjaGFyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICAgICAgaWYgKGFjYy5qb2luKCcnKSA9PT0gcG9zVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kICsgMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gcG9zaXRpb24gKyAoaGFzRGVjaW1hbFBvaW50ID8gMiA6IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2UgPSAoX2QgPSAoX2MgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzFdKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAwO1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKGAke0JpZ051bWJlcih2YWwpLnRvRml4ZWQoZGVjaW1hbHMpfSR7aGFzRGVjaW1hbFBvaW50ID8gJy4nIDogJyd9YC50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2UsIF92YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0c10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBzY3JvbGxUb0VuZCh0cnVlKTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICAgICAgICAgIGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBpbnQgKyAnLicgKyBkZWNpbWFsLnNsaWNlKDAsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9jID0gKF9iID0gKF9hID0gKCcnICsgdmFsKS5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBzZXRWYWx1ZShgJHtCaWdOdW1iZXIodmFsKS50b0ZpeGVkKGRlY2ltYWxzKX0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHNdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBbd3JhcHBlckNscywgaW52YWxpZCA/IGNsYXNzZXMoJ2ludmFsaWQnKSA6IHVuZGVmaW5lZF0uam9pbignICcpLnRyaW0oKSksIGNoaWxkcmVuOiBbX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgW2NsYXNzTmFtZSwgaXNGb2N1cyA/IGNsYXNzZXMoJ2ZvY3VzJykgOiAnJ10uam9pbignICcpLnRyaW0oKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25Gb2N1czogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pLCBjdXJyZW5jeSAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogY3VycmVuY3lSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnY3VycmVuY3knKSwgY2hpbGRyZW46IGN1cnJlbmN5IH0pLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
235
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJmb290bm90ZUNscyIsImludmFsaWQiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsInByZWZpeCIsImN1cnJlbmN5Iiwic3VmZml4IiwibWVzc2FnZSIsImZvb3Rub3RlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJzY3JvbGxUb0VuZCIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwidmFsIiwidGFyZ2V0Iiwic3BsaXQiLCJqb2luIiwiaGFzRGVjaW1hbFBvaW50IiwibGFzdEluZGV4T2YiLCJzbGljZSIsImlzTmFOIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiZGVjaW1hbCIsIk51bWJlciIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImRlY2ltYWxzIiwibWF0Y2giLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJNYXRoIiwibWluIiwibWF4IiwiX3NwbGl0IiwiX3NwbGl0MiIsImludCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwi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M0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBRUQsNEJBQWU1QixJQUFJLENBQUNVLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJmb290bm90ZUNsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbLCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROZXdWYWwgPSBudW1lcmljRm9ybWF0dGVyKHZhbCwge1xuICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRkID0gdmFsLmxlbmd0aCA+ICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYiA9IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICBjb25zdCBvbGRQb3NWYWwgPSBmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCAocG9zaXRpb24gLSAoaXNBZGQgPyAxIDogLTEpKSk7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIChpc0FkZCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgKGhhc0RlY2ltYWxQb2ludCA/IDIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gKF9lID0gKF9kID0gKF9jID0gdmFsLm1hdGNoKC9cXC4oXFxkKykkLykpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY1sxXSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMDtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtCaWdOdW1iZXIodmFsKS50b0ZpeGVkKGRlY2ltYWxzKX0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlLCBfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSB2YWwubGFzdEluZGV4T2YoJy4nKSA9PT0gdmFsLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICgodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICYmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gaW50ICsgJy4nICsgZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9ICgnJyArIHZhbCkubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgc2V0VmFsdWUoYCR7QmlnTnVtYmVyKHZhbCkudG9GaXhlZChkZWNpbWFscyl9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgW3dyYXBwZXJDbHMsIGludmFsaWQgPyBjbGFzc2VzKCdpbnZhbGlkJykgOiB1bmRlZmluZWRdLmpvaW4oJyAnKS50cmltKCkpLCBjaGlsZHJlbjogW19qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIFtjbGFzc05hbWUsIGlzRm9jdXMgPyBjbGFzc2VzKCdmb2N1cycpIDogJyddLmpvaW4oJyAnKS50cmltKCkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgc3VmZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|