inspector-ng 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -4
- package/esm2022/lib/checkpoints.mjs +26 -6
- package/esm2022/lib/constants.mjs +1 -3
- package/esm2022/lib/inspector.component.mjs +17 -86
- package/esm2022/lib/types.mjs +1 -1
- package/fesm2022/inspector-ng.mjs +41 -92
- package/fesm2022/inspector-ng.mjs.map +1 -1
- package/lib/constants.d.ts +0 -2
- package/lib/inspector.component.d.ts +2 -11
- package/lib/types.d.ts +0 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Inspired by [ibelick](https://github.com/ibelick)'s original design.
|
|
|
11
11
|
## Installation
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install inspector-ng@0.0.
|
|
14
|
+
npm install inspector-ng@0.0.13 @ngrx/store@^17.2.0
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
For a complete new-project walkthrough with copy-paste Store, Router, Redux DevTools, state, local-package, and troubleshooting examples, see the [setup guide](https://github.com/destx0/inspector/blob/main/SETUP_GUIDE.md).
|
|
@@ -47,7 +47,6 @@ Place `<inspector-overlay>` in your root template (e.g. `app.component.html`). I
|
|
|
47
47
|
|
|
48
48
|
<!-- Inspector overlay -->
|
|
49
49
|
<inspector-overlay
|
|
50
|
-
[persistOnReload]="true"
|
|
51
50
|
[hoverHighlightEnabled]="true"
|
|
52
51
|
></inspector-overlay>
|
|
53
52
|
```
|
|
@@ -84,7 +83,6 @@ A checkpoint contains the root Store value and current route. Restore dispatches
|
|
|
84
83
|
|
|
85
84
|
| Input | Type | Default | Description |
|
|
86
85
|
|---|---|---|---|
|
|
87
|
-
| `persistOnReload` | `boolean` | `false` | Persist inspector state (guides, settings) to localStorage across page reloads |
|
|
88
86
|
| `hoverHighlightEnabled` | `boolean` | `true` | Show a highlight rectangle when hovering over elements |
|
|
89
87
|
| `highlightColor` | `string` | `"#4f8cff"` | Accent color for element selection highlights |
|
|
90
88
|
| `guideColor` | `string` | `"#ff7a00"` | Color for alignment guides |
|
|
@@ -93,7 +91,6 @@ A checkpoint contains the root Store value and current route. Restore dispatches
|
|
|
93
91
|
|
|
94
92
|
```html
|
|
95
93
|
<inspector-overlay
|
|
96
|
-
[persistOnReload]="true"
|
|
97
94
|
[hoverHighlightEnabled]="true"
|
|
98
95
|
highlightColor="#10b981"
|
|
99
96
|
guideColor="#f59e0b"
|
|
@@ -48,7 +48,8 @@ export class IndexedDbCheckpointRepository extends InspectorCheckpointRepository
|
|
|
48
48
|
}
|
|
49
49
|
if (this.databasePromise)
|
|
50
50
|
return this.databasePromise;
|
|
51
|
-
|
|
51
|
+
let rejected = false;
|
|
52
|
+
const databasePromise = new Promise((resolve, reject) => {
|
|
52
53
|
const request = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
|
|
53
54
|
request.onupgradeneeded = () => {
|
|
54
55
|
const database = request.result;
|
|
@@ -57,11 +58,30 @@ export class IndexedDbCheckpointRepository extends InspectorCheckpointRepository
|
|
|
57
58
|
const store = database.createObjectStore(STORE_NAME, { keyPath: 'id' });
|
|
58
59
|
store.createIndex('createdAt', 'createdAt');
|
|
59
60
|
};
|
|
60
|
-
request.onsuccess = () =>
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
request.onsuccess = () => {
|
|
62
|
+
if (rejected) {
|
|
63
|
+
request.result.close();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
request.result.onversionchange = () => request.result.close();
|
|
67
|
+
resolve(request.result);
|
|
68
|
+
};
|
|
69
|
+
request.onerror = () => {
|
|
70
|
+
rejected = true;
|
|
71
|
+
reject(request.error ?? new Error('IndexedDB could not be opened.'));
|
|
72
|
+
};
|
|
73
|
+
request.onblocked = () => {
|
|
74
|
+
rejected = true;
|
|
75
|
+
reject(new Error('IndexedDB is blocked by another open tab.'));
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
this.databasePromise = databasePromise;
|
|
79
|
+
void databasePromise.catch(() => {
|
|
80
|
+
if (this.databasePromise === databasePromise) {
|
|
81
|
+
this.databasePromise = null;
|
|
82
|
+
}
|
|
63
83
|
});
|
|
64
|
-
return
|
|
84
|
+
return databasePromise;
|
|
65
85
|
}
|
|
66
86
|
request(request) {
|
|
67
87
|
return new Promise((resolve, reject) => {
|
|
@@ -339,4 +359,4 @@ function isCheckpointRecord(value) {
|
|
|
339
359
|
(checkpoint.lastUsedAt === undefined || typeof checkpoint.lastUsedAt === 'string') &&
|
|
340
360
|
'state' in checkpoint;
|
|
341
361
|
}
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwZWN0b3Itbmcvc3JjL2xpYi9jaGVja3BvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsYUFBYSxFQUNiLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlCNUMsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUM3RCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7QUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDM0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUMxQyxJQUFJLGNBQWMsQ0FBZ0MsaUNBQWlDLENBQUMsQ0FBQztBQUV2RixNQUFNLFVBQVUsOEJBQThCLENBQzVDLE9BQXlCO0lBRXpCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsT0FBUSxNQUFrQyxDQUFDLEtBQVUsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQWdCLDZCQUE2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QUFVLENBQUMsU0FBUztRQUMxRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVU7UUFDdkIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsQ0FBNEIsRUFDNUIsQ0FBNEI7SUFFNUIsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0QyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBYztJQUN4QyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxLQUEyQyxDQUFDO0lBQy9ELE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxDQUFDO1FBQzdCLE9BQU8sVUFBVSxDQUFDLEVBQUUsS0FBSyxRQUFRO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxRQUFRO1FBQ25DLE9BQU8sVUFBVSxDQUFDLEtBQUssS0FBSyxRQUFRO1FBQ3BDLE9BQU8sVUFBVSxDQUFDLFNBQVMsS0FBSyxRQUFRO1FBQ3hDLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksT0FBTyxVQUFVLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQztRQUNsRixPQUFPLElBQUksVUFBVSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT3B0aW9uYWwsXG4gIFBMQVRGT1JNX0lELFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBNRVRBX1JFRFVDRVJTLFxuICBTdG9yZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIHRha2UgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkIHtcbiAgdmVyc2lvbjogMTtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICByb3V0ZTogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgbGFzdFVzZWRBdD86IHN0cmluZztcbiAgc3RhdGU6IHVua25vd247XG59XG5cbmludGVyZmFjZSBSZXN0b3JlQ2hlY2twb2ludEFjdGlvbiBleHRlbmRzIEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBSRVNUT1JFX0NIRUNLUE9JTlQ7XG4gIHN0YXRlOiB1bmtub3duO1xufVxuXG5jb25zdCBSRVNUT1JFX0NIRUNLUE9JTlQgPSAnW0luc3BlY3RvciBDaGVja3BvaW50c10gUmVzdG9yZSc7XG5jb25zdCBEQVRBQkFTRV9OQU1FID0gJ2luc3BlY3Rvci1uZyc7XG5jb25zdCBEQVRBQkFTRV9WRVJTSU9OID0gMTtcbmNvbnN0IFNUT1JFX05BTUUgPSAnY2hlY2twb2ludHMnO1xuXG5leHBvcnQgY29uc3QgSU5TUEVDVE9SX0NIRUNLUE9JTlRfUkVQT1NJVE9SWSA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxJbnNwZWN0b3JDaGVja3BvaW50UmVwb3NpdG9yeT4oJ0lOU1BFQ1RPUl9DSEVDS1BPSU5UX1JFUE9TSVRPUlknKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RvckNoZWNrcG9pbnRNZXRhUmVkdWNlcjxUPihcbiAgcmVkdWNlcjogQWN0aW9uUmVkdWNlcjxUPixcbik6IEFjdGlvblJlZHVjZXI8VD4ge1xuICByZXR1cm4gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IFJFU1RPUkVfQ0hFQ0tQT0lOVCkge1xuICAgICAgcmV0dXJuIChhY3Rpb24gYXMgUmVzdG9yZUNoZWNrcG9pbnRBY3Rpb24pLnN0YXRlIGFzIFQ7XG4gICAgfVxuICAgIHJldHVybiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5zcGVjdG9yQ2hlY2twb2ludFJlcG9zaXRvcnkge1xuICBhYnN0cmFjdCBsaXN0KCk6IFByb21pc2U8SW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZFtdPjtcbiAgYWJzdHJhY3QgcHV0KGNoZWNrcG9pbnQ6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQpOiBQcm9taXNlPHZvaWQ+O1xuICBhYnN0cmFjdCBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmRleGVkRGJDaGVja3BvaW50UmVwb3NpdG9yeSBleHRlbmRzIEluc3BlY3RvckNoZWNrcG9pbnRSZXBvc2l0b3J5IHtcbiAgcHJpdmF0ZSBkYXRhYmFzZVByb21pc2U6IFByb21pc2U8SURCRGF0YWJhc2U+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkOiBvYmplY3QpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmRbXT4ge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gYXdhaXQgdGhpcy5kYXRhYmFzZSgpO1xuICAgIGNvbnN0IHZhbHVlcyA9IGF3YWl0IHRoaXMucmVxdWVzdDx1bmtub3duW10+KFxuICAgICAgZGF0YWJhc2UudHJhbnNhY3Rpb24oU1RPUkVfTkFNRSwgJ3JlYWRvbmx5Jykub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSkuZ2V0QWxsKCksXG4gICAgKTtcbiAgICByZXR1cm4gdmFsdWVzXG4gICAgICAuZmlsdGVyKGlzQ2hlY2twb2ludFJlY29yZClcbiAgICAgIC5zb3J0KHJlY2VudEFjdGl2aXR5Rmlyc3QpO1xuICB9XG5cbiAgYXN5bmMgcHV0KGNoZWNrcG9pbnQ6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRhYmFzZSA9IGF3YWl0IHRoaXMuZGF0YWJhc2UoKTtcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uQ29tcGxldGUoZGF0YWJhc2UsICdyZWFkd3JpdGUnLCAoc3RvcmUpID0+IHN0b3JlLnB1dChjaGVja3BvaW50KSk7XG4gIH1cblxuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gYXdhaXQgdGhpcy5kYXRhYmFzZSgpO1xuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25Db21wbGV0ZShkYXRhYmFzZSwgJ3JlYWR3cml0ZScsIChzdG9yZSkgPT4gc3RvcmUuZGVsZXRlKGlkKSk7XG4gIH1cblxuICBwcml2YXRlIGRhdGFiYXNlKCk6IFByb21pc2U8SURCRGF0YWJhc2U+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgdHlwZW9mIGluZGV4ZWREQiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0NoZWNrcG9pbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBhIGJyb3dzZXIgd2l0aCBJbmRleGVkREIuJykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhYmFzZVByb21pc2UpIHJldHVybiB0aGlzLmRhdGFiYXNlUHJvbWlzZTtcblxuICAgIHRoaXMuZGF0YWJhc2VQcm9taXNlID0gbmV3IFByb21pc2U8SURCRGF0YWJhc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihEQVRBQkFTRV9OQU1FLCBEQVRBQkFTRV9WRVJTSU9OKTtcbiAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgICBpZiAoZGF0YWJhc2Uub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTVE9SRV9OQU1FKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBzdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKFNUT1JFX05BTUUsIHsga2V5UGF0aDogJ2lkJyB9KTtcbiAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2NyZWF0ZWRBdCcsICdjcmVhdGVkQXQnKTtcbiAgICAgIH07XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IgPz8gbmV3IEVycm9yKCdJbmRleGVkREIgY291bGQgbm90IGJlIG9wZW5lZC4nKSk7XG4gICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9ICgpID0+IHJlamVjdChuZXcgRXJyb3IoJ0luZGV4ZWREQiBpcyBibG9ja2VkIGJ5IGFub3RoZXIgb3BlbiB0YWIuJykpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlUHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWVzdDxUPihyZXF1ZXN0OiBJREJSZXF1ZXN0PFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvciA/PyBuZXcgRXJyb3IoJ0luZGV4ZWREQiByZXF1ZXN0IGZhaWxlZC4nKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zYWN0aW9uQ29tcGxldGUoXG4gICAgZGF0YWJhc2U6IElEQkRhdGFiYXNlLFxuICAgIG1vZGU6IElEQlRyYW5zYWN0aW9uTW9kZSxcbiAgICBvcGVyYXRpb246IChzdG9yZTogSURCT2JqZWN0U3RvcmUpID0+IElEQlJlcXVlc3QsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsIG1vZGUpO1xuICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoKSA9PiByZWplY3QodHJhbnNhY3Rpb24uZXJyb3IgPz8gbmV3IEVycm9yKCdJbmRleGVkREIgdHJhbnNhY3Rpb24gZmFpbGVkLicpKTtcbiAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSAoKSA9PiByZWplY3QodHJhbnNhY3Rpb24uZXJyb3IgPz8gbmV3IEVycm9yKCdJbmRleGVkREIgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuJykpO1xuICAgICAgb3BlcmF0aW9uKHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKFNUT1JFX05BTUUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW5zcGVjdG9yQ2hlY2twb2ludFNlcnZpY2Uge1xuICByZWFkb25seSBjaGVja3BvaW50cyA9IHNpZ25hbDxJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkW10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGJ1c3kgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KElOU1BFQ1RPUl9DSEVDS1BPSU5UX1JFUE9TSVRPUlkpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5OiBJbnNwZWN0b3JDaGVja3BvaW50UmVwb3NpdG9yeSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFN0b3JlKSBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSb3V0ZXIpIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIgfCBudWxsLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogb2JqZWN0LFxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldCgoYXdhaXQgdGhpcy5yZXBvc2l0b3J5Lmxpc3QoKSkuc29ydChyZWNlbnRBY3Rpdml0eUZpcnN0KSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWVzc2FnZUZvcihlcnJvciwgJ1NhdmVkIGNoZWNrcG9pbnRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuIFRyeSByZWxvYWRpbmcgdGhlIHBhZ2UuJykpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8SW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCB8IG51bGw+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWlzc2luZ1N0b3JlTWVzc2FnZSgpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuYnVzeS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc3RvcmUucGlwZSh0YWtlKDEpKSk7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNsb25lSnNvbihjdXJyZW50U3RhdGUpO1xuICAgICAgY29uc3QgcGVyc2lzdGVkID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5Lmxpc3QoKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5jdXJyZW50Um91dGUoKTtcbiAgICAgIGNvbnN0IHBhdGhuYW1lID0gdGhpcy5jdXJyZW50UGF0aG5hbWUoKTtcbiAgICAgIGNvbnN0IGNoZWNrcG9pbnQ6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQgPSB7XG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIGlkOiBjcmVhdGVDaGVja3BvaW50SWQoKSxcbiAgICAgICAgbmFtZTogbmV4dEF1dG9tYXRpY05hbWUocGF0aG5hbWUsIHBlcnNpc3RlZC5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSksXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgc3RhdGUsXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnB1dChjaGVja3BvaW50KTtcbiAgICAgIHRoaXMuY2hlY2twb2ludHMuc2V0KFtjaGVja3BvaW50LCAuLi5wZXJzaXN0ZWRdLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCkpO1xuICAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgc2F2ZWQuJykpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlc3RvcmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgdGhpcy5lcnJvci5zZXQodGhpcy5taXNzaW5nU3RvcmVNZXNzYWdlKCkpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVja3BvaW50cyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5saXN0KCk7XG4gICAgICBjb25zdCBjaGVja3BvaW50ID0gY2hlY2twb2ludHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKCFjaGVja3BvaW50KSB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrcG9pbnQgbm90IGZvdW5kLiBJdCBtYXkgaGF2ZSBiZWVuIGRlbGV0ZWQgaW4gYW5vdGhlciB0YWIuJyk7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNsb25lSnNvbihcbiAgICAgICAgY2hlY2twb2ludC5zdGF0ZSxcbiAgICAgICAgYOKAnCR7Y2hlY2twb2ludC5uYW1lfeKAnSBjb3VsZCBub3QgYmUgZGVjb2RlZC4gRGVsZXRlIGl0IGFuZCBzYXZlIGEgbmV3IGNoZWNrcG9pbnQuYCxcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTVE9SRV9DSEVDS1BPSU5ULCBzdGF0ZSB9IGFzIFJlc3RvcmVDaGVja3BvaW50QWN0aW9uKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yb3V0ZXIgJiZcbiAgICAgICAgdGhpcy5yb3V0ZXIudXJsICE9PSBjaGVja3BvaW50LnJvdXRlICYmXG4gICAgICAgICFhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNoZWNrcG9pbnQucm91dGUpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RhdGUgd2FzIHJlc3RvcmVkLCBidXQgbmF2aWdhdGlvbiB0byDigJwke2NoZWNrcG9pbnQucm91dGV94oCdIHdhcyBjYW5jZWxsZWQuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZWNlbnRseVVzZWRDaGVja3BvaW50ID0ge1xuICAgICAgICAuLi5jaGVja3BvaW50LFxuICAgICAgICBsYXN0VXNlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnB1dChyZWNlbnRseVVzZWRDaGVja3BvaW50KTtcbiAgICAgIHRoaXMuY2hlY2twb2ludHMuc2V0KFxuICAgICAgICBjaGVja3BvaW50c1xuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkID8gcmVjZW50bHlVc2VkQ2hlY2twb2ludCA6IGl0ZW0pXG4gICAgICAgICAgLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWVzc2FnZUZvcihlcnJvciwgJ1RoZSBjaGVja3BvaW50IGNvdWxkIG5vdCBiZSByZXN0b3JlZC4gRGVsZXRlIGl0IGFuZCBzYXZlIGEgbmV3IG9uZS4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbmFtZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBjb25zdCBuZXh0TmFtZSA9IG5hbWUudHJpbSgpO1xuICAgIGlmICghbmV4dE5hbWUpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KCdQbGVhc2UgZW50ZXIgYSBjaGVja3BvaW50IG5hbWUuJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5idXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hlY2twb2ludHMgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkubGlzdCgpO1xuICAgICAgaWYgKGNoZWNrcG9pbnRzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkICYmIGl0ZW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBuZXh0TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgY2hlY2twb2ludCBuYW1lZCDigJwke25leHROYW1lfeKAnSBhbHJlYWR5IGV4aXN0cy4gQ2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjaGVja3BvaW50ID0gY2hlY2twb2ludHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKCFjaGVja3BvaW50KSB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrcG9pbnQgbm90IGZvdW5kLiBJdCBtYXkgaGF2ZSBiZWVuIGRlbGV0ZWQgaW4gYW5vdGhlciB0YWIuJyk7XG4gICAgICBhd2FpdCB0aGlzLnJlcG9zaXRvcnkucHV0KHsgLi4uY2hlY2twb2ludCwgbmFtZTogbmV4dE5hbWUgfSk7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldChcbiAgICAgICAgY2hlY2twb2ludHMubWFwKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCA/IHsgLi4uaXRlbSwgbmFtZTogbmV4dE5hbWUgfSA6IGl0ZW0pLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgcmVuYW1lZC4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5lcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5idXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZShpZCk7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldCh0aGlzLmNoZWNrcG9pbnRzKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgZGVsZXRlZC4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5zZXQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuICcvJztcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW50UGF0aG5hbWUoKX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9JHt3aW5kb3cubG9jYXRpb24uaGFzaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50UGF0aG5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiAnLyc7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSB8fCAnLyc7XG4gIH1cblxuICBwcml2YXRlIG1pc3NpbmdTdG9yZU1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1RoZSBOZ1J4IHJvb3Qgc3RvcmUgaXMgdW5hdmFpbGFibGUuIENoZWNrIHRoYXQgcHJvdmlkZUluc3BlY3RvckNoZWNrcG9pbnRzKCkgaXMgcmVnaXN0ZXJlZCBhZnRlciBwcm92aWRlU3RvcmUoKS4nO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9yYWdlTWVzc2FnZShlcnJvcjogdW5rbm93biwgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzUXVvdGFFcnJvcihlcnJvcikpIHtcbiAgICAgIHJldHVybiAnQnJvd3NlciBzdG9yYWdlIGlzIGZ1bGwuIERlbGV0ZSBvbGQgY2hlY2twb2ludHMsIHRoZW4gdHJ5IHNhdmluZyBhZ2Fpbi4nO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9yKGVycm9yLCBmYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIG1lc3NhZ2VGb3IoZXJyb3I6IHVua25vd24sIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZmFsbGJhY2s7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJbnNwZWN0b3JDaGVja3BvaW50cygpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIEluZGV4ZWREYkNoZWNrcG9pbnRSZXBvc2l0b3J5LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IElOU1BFQ1RPUl9DSEVDS1BPSU5UX1JFUE9TSVRPUlksXG4gICAgICB1c2VFeGlzdGluZzogSW5kZXhlZERiQ2hlY2twb2ludFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICBJbnNwZWN0b3JDaGVja3BvaW50U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNRVRBX1JFRFVDRVJTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogaW5zcGVjdG9yQ2hlY2twb2ludE1ldGFSZWR1Y2VyLFxuICAgIH0sXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV4dEF1dG9tYXRpY05hbWUocm91dGU6IHN0cmluZywgbmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgdXNlZCA9IG5ldyBTZXQobmFtZXMubWFwKChuYW1lKSA9PiBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgaWYgKCF1c2VkLmhhcyhyb3V0ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkgcmV0dXJuIHJvdXRlO1xuICBmb3IgKGxldCBzdWZmaXggPSAyOyA7IHN1ZmZpeCArPSAxKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gYCR7cm91dGV9ICR7c3VmZml4fWA7XG4gICAgaWYgKCF1c2VkLmhhcyhjYW5kaWRhdGUudG9Mb2NhbGVMb3dlckNhc2UoKSkpIHJldHVybiBjYW5kaWRhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVKc29uKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZmFpbHVyZU1lc3NhZ2UgPSAnVGhlIE5nUnggcm9vdCBzdGF0ZSBpcyBub3QgSlNPTi1zZXJpYWxpemFibGUuIFJlbW92ZSBjaXJjdWxhciBvciB1bnN1cHBvcnRlZCB2YWx1ZXMgYW5kIHRyeSBhZ2Fpbi4nLFxuKTogdW5rbm93biB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoc2VyaWFsaXplZCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzZXJpYWxpemVkKSBhcyB1bmtub3duO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNoZWNrcG9pbnRJZCgpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNyeXB0by5yYW5kb21VVUlEID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XG4gIH1cbiAgcmV0dXJuIGBjaGVja3BvaW50LSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gO1xufVxuXG5mdW5jdGlvbiBpc1F1b3RhRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIChcbiAgICBlcnJvci5uYW1lID09PSAnUXVvdGFFeGNlZWRlZEVycm9yJyB8fCBlcnJvci5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja3BvaW50QWN0aXZpdHlBdChjaGVja3BvaW50OiBJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNoZWNrcG9pbnQubGFzdFVzZWRBdCAmJiBjaGVja3BvaW50Lmxhc3RVc2VkQXQgPiBjaGVja3BvaW50LmNyZWF0ZWRBdFxuICAgID8gY2hlY2twb2ludC5sYXN0VXNlZEF0XG4gICAgOiBjaGVja3BvaW50LmNyZWF0ZWRBdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY2VudEFjdGl2aXR5Rmlyc3QoXG4gIGE6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQsXG4gIGI6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQsXG4pOiBudW1iZXIge1xuICByZXR1cm4gY2hlY2twb2ludEFjdGl2aXR5QXQoYikubG9jYWxlQ29tcGFyZShjaGVja3BvaW50QWN0aXZpdHlBdChhKSkgfHxcbiAgICBiLmNyZWF0ZWRBdC5sb2NhbGVDb21wYXJlKGEuY3JlYXRlZEF0KSB8fFxuICAgIGIuaWQubG9jYWxlQ29tcGFyZShhLmlkKTtcbn1cblxuZnVuY3Rpb24gaXNDaGVja3BvaW50UmVjb3JkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjaGVja3BvaW50ID0gdmFsdWUgYXMgUGFydGlhbDxJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkPjtcbiAgcmV0dXJuIGNoZWNrcG9pbnQudmVyc2lvbiA9PT0gMSAmJlxuICAgIHR5cGVvZiBjaGVja3BvaW50LmlkID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBjaGVja3BvaW50Lm5hbWUgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGNoZWNrcG9pbnQucm91dGUgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGNoZWNrcG9pbnQuY3JlYXRlZEF0ID09PSAnc3RyaW5nJyAmJlxuICAgIChjaGVja3BvaW50Lmxhc3RVc2VkQXQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY2hlY2twb2ludC5sYXN0VXNlZEF0ID09PSAnc3RyaW5nJykgJiZcbiAgICAnc3RhdGUnIGluIGNoZWNrcG9pbnQ7XG59XG4iXX0=
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnNwZWN0b3Itbmcvc3JjL2xpYi9jaGVja3BvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLFdBQVcsRUFDWCx3QkFBd0IsRUFDeEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsYUFBYSxFQUNiLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlCNUMsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUM3RCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7QUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDM0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUMxQyxJQUFJLGNBQWMsQ0FBZ0MsaUNBQWlDLENBQUMsQ0FBQztBQUV2RixNQUFNLFVBQVUsOEJBQThCLENBQzVDLE9BQXlCO0lBRXpCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsT0FBUSxNQUFrQyxDQUFDLEtBQVUsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQWdCLDZCQUE2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UTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFHLEtBQTJDLENBQUM7SUFDL0QsT0FBTyxVQUFVLENBQUMsT0FBTyxLQUFLLENBQUM7UUFDN0IsT0FBTyxVQUFVLENBQUMsRUFBRSxLQUFLLFFBQVE7UUFDakMsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDbkMsT0FBTyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVE7UUFDcEMsT0FBTyxVQUFVLENBQUMsU0FBUyxLQUFLLFFBQVE7UUFDeEMsQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxPQUFPLFVBQVUsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO1FBQ2xGLE9BQU8sSUFBSSxVQUFVLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBPcHRpb25hbCxcbiAgUExBVEZPUk1fSUQsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb24sXG4gIEFjdGlvblJlZHVjZXIsXG4gIE1FVEFfUkVEVUNFUlMsXG4gIFN0b3JlLFxufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQge1xuICB2ZXJzaW9uOiAxO1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICBsYXN0VXNlZEF0Pzogc3RyaW5nO1xuICBzdGF0ZTogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIFJlc3RvcmVDaGVja3BvaW50QWN0aW9uIGV4dGVuZHMgQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIFJFU1RPUkVfQ0hFQ0tQT0lOVDtcbiAgc3RhdGU6IHVua25vd247XG59XG5cbmNvbnN0IFJFU1RPUkVfQ0hFQ0tQT0lOVCA9ICdbSW5zcGVjdG9yIENoZWNrcG9pbnRzXSBSZXN0b3JlJztcbmNvbnN0IERBVEFCQVNFX05BTUUgPSAnaW5zcGVjdG9yLW5nJztcbmNvbnN0IERBVEFCQVNFX1ZFUlNJT04gPSAxO1xuY29uc3QgU1RPUkVfTkFNRSA9ICdjaGVja3BvaW50cyc7XG5cbmV4cG9ydCBjb25zdCBJTlNQRUNUT1JfQ0hFQ0tQT0lOVF9SRVBPU0lUT1JZID1cbiAgbmV3IEluamVjdGlvblRva2VuPEluc3BlY3RvckNoZWNrcG9pbnRSZXBvc2l0b3J5PignSU5TUEVDVE9SX0NIRUNLUE9JTlRfUkVQT1NJVE9SWScpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdG9yQ2hlY2twb2ludE1ldGFSZWR1Y2VyPFQ+KFxuICByZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFQ+LFxuKTogQWN0aW9uUmVkdWNlcjxUPiB7XG4gIHJldHVybiAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gUkVTVE9SRV9DSEVDS1BPSU5UKSB7XG4gICAgICByZXR1cm4gKGFjdGlvbiBhcyBSZXN0b3JlQ2hlY2twb2ludEFjdGlvbikuc3RhdGUgYXMgVDtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG4gIH07XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnNwZWN0b3JDaGVja3BvaW50UmVwb3NpdG9yeSB7XG4gIGFic3RyYWN0IGxpc3QoKTogUHJvbWlzZTxJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkW10+O1xuICBhYnN0cmFjdCBwdXQoY2hlY2twb2ludDogSW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCk6IFByb21pc2U8dm9pZD47XG4gIGFic3RyYWN0IGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYkNoZWNrcG9pbnRSZXBvc2l0b3J5IGV4dGVuZHMgSW5zcGVjdG9yQ2hlY2twb2ludFJlcG9zaXRvcnkge1xuICBwcml2YXRlIGRhdGFiYXNlUHJvbWlzZTogUHJvbWlzZTxJREJEYXRhYmFzZT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IG9iamVjdCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBhc3luYyBsaXN0KCk6IFByb21pc2U8SW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZFtdPiB7XG4gICAgY29uc3QgZGF0YWJhc2UgPSBhd2FpdCB0aGlzLmRhdGFiYXNlKCk7XG4gICAgY29uc3QgdmFsdWVzID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHVua25vd25bXT4oXG4gICAgICBkYXRhYmFzZS50cmFuc2FjdGlvbihTVE9SRV9OQU1FLCAncmVhZG9ubHknKS5vYmplY3RTdG9yZShTVE9SRV9OQU1FKS5nZXRBbGwoKSxcbiAgICApO1xuICAgIHJldHVybiB2YWx1ZXNcbiAgICAgIC5maWx0ZXIoaXNDaGVja3BvaW50UmVjb3JkKVxuICAgICAgLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCk7XG4gIH1cblxuICBhc3luYyBwdXQoY2hlY2twb2ludDogSW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gYXdhaXQgdGhpcy5kYXRhYmFzZSgpO1xuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25Db21wbGV0ZShkYXRhYmFzZSwgJ3JlYWR3cml0ZScsIChzdG9yZSkgPT4gc3RvcmUucHV0KGNoZWNrcG9pbnQpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGF0YWJhc2UgPSBhd2FpdCB0aGlzLmRhdGFiYXNlKCk7XG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbkNvbXBsZXRlKGRhdGFiYXNlLCAncmVhZHdyaXRlJywgKHN0b3JlKSA9PiBzdG9yZS5kZWxldGUoaWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0YWJhc2UoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCB0eXBlb2YgaW5kZXhlZERCID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ2hlY2twb2ludHMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGEgYnJvd3NlciB3aXRoIEluZGV4ZWREQi4nKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFiYXNlUHJvbWlzZSkgcmV0dXJuIHRoaXMuZGF0YWJhc2VQcm9taXNlO1xuXG4gICAgbGV0IHJlamVjdGVkID0gZmFsc2U7XG4gICAgY29uc3QgZGF0YWJhc2VQcm9taXNlID0gbmV3IFByb21pc2U8SURCRGF0YWJhc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihEQVRBQkFTRV9OQU1FLCBEQVRBQkFTRV9WRVJTSU9OKTtcbiAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgICBpZiAoZGF0YWJhc2Uub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTVE9SRV9OQU1FKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBzdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKFNUT1JFX05BTUUsIHsga2V5UGF0aDogJ2lkJyB9KTtcbiAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2NyZWF0ZWRBdCcsICdjcmVhdGVkQXQnKTtcbiAgICAgIH07XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgICAgcmVxdWVzdC5yZXN1bHQuY2xvc2UoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdC5yZXN1bHQub252ZXJzaW9uY2hhbmdlID0gKCkgPT4gcmVxdWVzdC5yZXN1bHQuY2xvc2UoKTtcbiAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICB9O1xuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICByZWplY3RlZCA9IHRydWU7XG4gICAgICAgIHJlamVjdChyZXF1ZXN0LmVycm9yID8/IG5ldyBFcnJvcignSW5kZXhlZERCIGNvdWxkIG5vdCBiZSBvcGVuZWQuJykpO1xuICAgICAgfTtcbiAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gKCkgPT4ge1xuICAgICAgICByZWplY3RlZCA9IHRydWU7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0luZGV4ZWREQiBpcyBibG9ja2VkIGJ5IGFub3RoZXIgb3BlbiB0YWIuJykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLmRhdGFiYXNlUHJvbWlzZSA9IGRhdGFiYXNlUHJvbWlzZTtcbiAgICB2b2lkIGRhdGFiYXNlUHJvbWlzZS5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kYXRhYmFzZVByb21pc2UgPT09IGRhdGFiYXNlUHJvbWlzZSkge1xuICAgICAgICB0aGlzLmRhdGFiYXNlUHJvbWlzZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFiYXNlUHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVxdWVzdDxUPihyZXF1ZXN0OiBJREJSZXF1ZXN0PFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvciA/PyBuZXcgRXJyb3IoJ0luZGV4ZWREQiByZXF1ZXN0IGZhaWxlZC4nKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zYWN0aW9uQ29tcGxldGUoXG4gICAgZGF0YWJhc2U6IElEQkRhdGFiYXNlLFxuICAgIG1vZGU6IElEQlRyYW5zYWN0aW9uTW9kZSxcbiAgICBvcGVyYXRpb246IChzdG9yZTogSURCT2JqZWN0U3RvcmUpID0+IElEQlJlcXVlc3QsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsIG1vZGUpO1xuICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoKSA9PiByZWplY3QodHJhbnNhY3Rpb24uZXJyb3IgPz8gbmV3IEVycm9yKCdJbmRleGVkREIgdHJhbnNhY3Rpb24gZmFpbGVkLicpKTtcbiAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSAoKSA9PiByZWplY3QodHJhbnNhY3Rpb24uZXJyb3IgPz8gbmV3IEVycm9yKCdJbmRleGVkREIgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuJykpO1xuICAgICAgb3BlcmF0aW9uKHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKFNUT1JFX05BTUUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW5zcGVjdG9yQ2hlY2twb2ludFNlcnZpY2Uge1xuICByZWFkb25seSBjaGVja3BvaW50cyA9IHNpZ25hbDxJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkW10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGJ1c3kgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KElOU1BFQ1RPUl9DSEVDS1BPSU5UX1JFUE9TSVRPUlkpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5OiBJbnNwZWN0b3JDaGVja3BvaW50UmVwb3NpdG9yeSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFN0b3JlKSBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSb3V0ZXIpIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIgfCBudWxsLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZDogb2JqZWN0LFxuICApIHt9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldCgoYXdhaXQgdGhpcy5yZXBvc2l0b3J5Lmxpc3QoKSkuc29ydChyZWNlbnRBY3Rpdml0eUZpcnN0KSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWVzc2FnZUZvcihlcnJvciwgJ1NhdmVkIGNoZWNrcG9pbnRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuIFRyeSByZWxvYWRpbmcgdGhlIHBhZ2UuJykpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8SW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCB8IG51bGw+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWlzc2luZ1N0b3JlTWVzc2FnZSgpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuYnVzeS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc3RvcmUucGlwZSh0YWtlKDEpKSk7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNsb25lSnNvbihjdXJyZW50U3RhdGUpO1xuICAgICAgY29uc3QgcGVyc2lzdGVkID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5Lmxpc3QoKTtcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5jdXJyZW50Um91dGUoKTtcbiAgICAgIGNvbnN0IHBhdGhuYW1lID0gdGhpcy5jdXJyZW50UGF0aG5hbWUoKTtcbiAgICAgIGNvbnN0IGNoZWNrcG9pbnQ6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQgPSB7XG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIGlkOiBjcmVhdGVDaGVja3BvaW50SWQoKSxcbiAgICAgICAgbmFtZTogbmV4dEF1dG9tYXRpY05hbWUocGF0aG5hbWUsIHBlcnNpc3RlZC5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSksXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgc3RhdGUsXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnB1dChjaGVja3BvaW50KTtcbiAgICAgIHRoaXMuY2hlY2twb2ludHMuc2V0KFtjaGVja3BvaW50LCAuLi5wZXJzaXN0ZWRdLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCkpO1xuICAgICAgcmV0dXJuIGNoZWNrcG9pbnQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgc2F2ZWQuJykpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlc3RvcmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuICAgIGlmICghdGhpcy5zdG9yZSkge1xuICAgICAgdGhpcy5lcnJvci5zZXQodGhpcy5taXNzaW5nU3RvcmVNZXNzYWdlKCkpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVja3BvaW50cyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5saXN0KCk7XG4gICAgICBjb25zdCBjaGVja3BvaW50ID0gY2hlY2twb2ludHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKCFjaGVja3BvaW50KSB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrcG9pbnQgbm90IGZvdW5kLiBJdCBtYXkgaGF2ZSBiZWVuIGRlbGV0ZWQgaW4gYW5vdGhlciB0YWIuJyk7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNsb25lSnNvbihcbiAgICAgICAgY2hlY2twb2ludC5zdGF0ZSxcbiAgICAgICAgYOKAnCR7Y2hlY2twb2ludC5uYW1lfeKAnSBjb3VsZCBub3QgYmUgZGVjb2RlZC4gRGVsZXRlIGl0IGFuZCBzYXZlIGEgbmV3IGNoZWNrcG9pbnQuYCxcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTVE9SRV9DSEVDS1BPSU5ULCBzdGF0ZSB9IGFzIFJlc3RvcmVDaGVja3BvaW50QWN0aW9uKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yb3V0ZXIgJiZcbiAgICAgICAgdGhpcy5yb3V0ZXIudXJsICE9PSBjaGVja3BvaW50LnJvdXRlICYmXG4gICAgICAgICFhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNoZWNrcG9pbnQucm91dGUpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RhdGUgd2FzIHJlc3RvcmVkLCBidXQgbmF2aWdhdGlvbiB0byDigJwke2NoZWNrcG9pbnQucm91dGV94oCdIHdhcyBjYW5jZWxsZWQuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZWNlbnRseVVzZWRDaGVja3BvaW50ID0ge1xuICAgICAgICAuLi5jaGVja3BvaW50LFxuICAgICAgICBsYXN0VXNlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnB1dChyZWNlbnRseVVzZWRDaGVja3BvaW50KTtcbiAgICAgIHRoaXMuY2hlY2twb2ludHMuc2V0KFxuICAgICAgICBjaGVja3BvaW50c1xuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkID8gcmVjZW50bHlVc2VkQ2hlY2twb2ludCA6IGl0ZW0pXG4gICAgICAgICAgLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMubWVzc2FnZUZvcihlcnJvciwgJ1RoZSBjaGVja3BvaW50IGNvdWxkIG5vdCBiZSByZXN0b3JlZC4gRGVsZXRlIGl0IGFuZCBzYXZlIGEgbmV3IG9uZS4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbmFtZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICBjb25zdCBuZXh0TmFtZSA9IG5hbWUudHJpbSgpO1xuICAgIGlmICghbmV4dE5hbWUpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KCdQbGVhc2UgZW50ZXIgYSBjaGVja3BvaW50IG5hbWUuJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5idXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hlY2twb2ludHMgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkubGlzdCgpO1xuICAgICAgaWYgKGNoZWNrcG9pbnRzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkICYmIGl0ZW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBuZXh0TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgY2hlY2twb2ludCBuYW1lZCDigJwke25leHROYW1lfeKAnSBhbHJlYWR5IGV4aXN0cy4gQ2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjaGVja3BvaW50ID0gY2hlY2twb2ludHMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xuICAgICAgaWYgKCFjaGVja3BvaW50KSB0aHJvdyBuZXcgRXJyb3IoJ0NoZWNrcG9pbnQgbm90IGZvdW5kLiBJdCBtYXkgaGF2ZSBiZWVuIGRlbGV0ZWQgaW4gYW5vdGhlciB0YWIuJyk7XG4gICAgICBhd2FpdCB0aGlzLnJlcG9zaXRvcnkucHV0KHsgLi4uY2hlY2twb2ludCwgbmFtZTogbmV4dE5hbWUgfSk7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldChcbiAgICAgICAgY2hlY2twb2ludHMubWFwKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCA/IHsgLi4uaXRlbSwgbmFtZTogbmV4dE5hbWUgfSA6IGl0ZW0pLnNvcnQocmVjZW50QWN0aXZpdHlGaXJzdCksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgcmVuYW1lZC4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5lcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5idXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZShpZCk7XG4gICAgICB0aGlzLmNoZWNrcG9pbnRzLnNldCh0aGlzLmNoZWNrcG9pbnRzKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBpZCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KHRoaXMuc3RvcmFnZU1lc3NhZ2UoZXJyb3IsICdUaGUgY2hlY2twb2ludCBjb3VsZCBub3QgYmUgZGVsZXRlZC4nKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5zZXQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRSb3V0ZSgpOiBzdHJpbmcge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuICcvJztcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW50UGF0aG5hbWUoKX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9JHt3aW5kb3cubG9jYXRpb24uaGFzaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50UGF0aG5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiAnLyc7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSB8fCAnLyc7XG4gIH1cblxuICBwcml2YXRlIG1pc3NpbmdTdG9yZU1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1RoZSBOZ1J4IHJvb3Qgc3RvcmUgaXMgdW5hdmFpbGFibGUuIENoZWNrIHRoYXQgcHJvdmlkZUluc3BlY3RvckNoZWNrcG9pbnRzKCkgaXMgcmVnaXN0ZXJlZCBhZnRlciBwcm92aWRlU3RvcmUoKS4nO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9yYWdlTWVzc2FnZShlcnJvcjogdW5rbm93biwgZmFsbGJhY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGlzUXVvdGFFcnJvcihlcnJvcikpIHtcbiAgICAgIHJldHVybiAnQnJvd3NlciBzdG9yYWdlIGlzIGZ1bGwuIERlbGV0ZSBvbGQgY2hlY2twb2ludHMsIHRoZW4gdHJ5IHNhdmluZyBhZ2Fpbi4nO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9yKGVycm9yLCBmYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIG1lc3NhZ2VGb3IoZXJyb3I6IHVua25vd24sIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZmFsbGJhY2s7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJbnNwZWN0b3JDaGVja3BvaW50cygpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIEluZGV4ZWREYkNoZWNrcG9pbnRSZXBvc2l0b3J5LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IElOU1BFQ1RPUl9DSEVDS1BPSU5UX1JFUE9TSVRPUlksXG4gICAgICB1c2VFeGlzdGluZzogSW5kZXhlZERiQ2hlY2twb2ludFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICBJbnNwZWN0b3JDaGVja3BvaW50U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNRVRBX1JFRFVDRVJTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VWYWx1ZTogaW5zcGVjdG9yQ2hlY2twb2ludE1ldGFSZWR1Y2VyLFxuICAgIH0sXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV4dEF1dG9tYXRpY05hbWUocm91dGU6IHN0cmluZywgbmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgdXNlZCA9IG5ldyBTZXQobmFtZXMubWFwKChuYW1lKSA9PiBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgaWYgKCF1c2VkLmhhcyhyb3V0ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkgcmV0dXJuIHJvdXRlO1xuICBmb3IgKGxldCBzdWZmaXggPSAyOyA7IHN1ZmZpeCArPSAxKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gYCR7cm91dGV9ICR7c3VmZml4fWA7XG4gICAgaWYgKCF1c2VkLmhhcyhjYW5kaWRhdGUudG9Mb2NhbGVMb3dlckNhc2UoKSkpIHJldHVybiBjYW5kaWRhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVKc29uKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZmFpbHVyZU1lc3NhZ2UgPSAnVGhlIE5nUnggcm9vdCBzdGF0ZSBpcyBub3QgSlNPTi1zZXJpYWxpemFibGUuIFJlbW92ZSBjaXJjdWxhciBvciB1bnN1cHBvcnRlZCB2YWx1ZXMgYW5kIHRyeSBhZ2Fpbi4nLFxuKTogdW5rbm93biB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoc2VyaWFsaXplZCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzZXJpYWxpemVkKSBhcyB1bmtub3duO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNoZWNrcG9pbnRJZCgpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNyeXB0by5yYW5kb21VVUlEID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XG4gIH1cbiAgcmV0dXJuIGBjaGVja3BvaW50LSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gO1xufVxuXG5mdW5jdGlvbiBpc1F1b3RhRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIChcbiAgICBlcnJvci5uYW1lID09PSAnUXVvdGFFeGNlZWRlZEVycm9yJyB8fCBlcnJvci5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja3BvaW50QWN0aXZpdHlBdChjaGVja3BvaW50OiBJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNoZWNrcG9pbnQubGFzdFVzZWRBdCAmJiBjaGVja3BvaW50Lmxhc3RVc2VkQXQgPiBjaGVja3BvaW50LmNyZWF0ZWRBdFxuICAgID8gY2hlY2twb2ludC5sYXN0VXNlZEF0XG4gICAgOiBjaGVja3BvaW50LmNyZWF0ZWRBdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY2VudEFjdGl2aXR5Rmlyc3QoXG4gIGE6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQsXG4gIGI6IEluc3BlY3RvckNoZWNrcG9pbnRSZWNvcmQsXG4pOiBudW1iZXIge1xuICByZXR1cm4gY2hlY2twb2ludEFjdGl2aXR5QXQoYikubG9jYWxlQ29tcGFyZShjaGVja3BvaW50QWN0aXZpdHlBdChhKSkgfHxcbiAgICBiLmNyZWF0ZWRBdC5sb2NhbGVDb21wYXJlKGEuY3JlYXRlZEF0KSB8fFxuICAgIGIuaWQubG9jYWxlQ29tcGFyZShhLmlkKTtcbn1cblxuZnVuY3Rpb24gaXNDaGVja3BvaW50UmVjb3JkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSW5zcGVjdG9yQ2hlY2twb2ludFJlY29yZCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjaGVja3BvaW50ID0gdmFsdWUgYXMgUGFydGlhbDxJbnNwZWN0b3JDaGVja3BvaW50UmVjb3JkPjtcbiAgcmV0dXJuIGNoZWNrcG9pbnQudmVyc2lvbiA9PT0gMSAmJlxuICAgIHR5cGVvZiBjaGVja3BvaW50LmlkID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBjaGVja3BvaW50Lm5hbWUgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGNoZWNrcG9pbnQucm91dGUgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGNoZWNrcG9pbnQuY3JlYXRlZEF0ID09PSAnc3RyaW5nJyAmJlxuICAgIChjaGVja3BvaW50Lmxhc3RVc2VkQXQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgY2hlY2twb2ludC5sYXN0VXNlZEF0ID09PSAnc3RyaW5nJykgJiZcbiAgICAnc3RhdGUnIGluIGNoZWNrcG9pbnQ7XG59XG4iXX0=
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export const inspector_STORAGE_KEY = "inspector-state";
|
|
2
|
-
export const inspector_STATE_VERSION = 2;
|
|
3
1
|
export const GUIDE_SNAP_DISTANCE = 10;
|
|
4
2
|
export const GUIDE_HITBOX_SIZE = 14;
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5zcGVjdG9yLW5nL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgR1VJREVfU05BUF9ESVNUQU5DRSA9IDEwO1xuZXhwb3J0IGNvbnN0IEdVSURFX0hJVEJPWF9TSVpFID0gMTQ7XG4iXX0=
|