@dytesdk/angular-ui-kit 2.1.3 → 2.1.4
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/package.json +2 -2
- package/dist/README.md +0 -85
- package/dist/dytesdk-angular-ui-kit.d.ts +0 -5
- package/dist/esm2020/dytesdk-angular-ui-kit.mjs +0 -5
- package/dist/esm2020/lib/components.module.mjs +0 -20
- package/dist/esm2020/lib/stencil-generated/angular-component-lib/utils.mjs +0 -53
- package/dist/esm2020/lib/stencil-generated/components.mjs +0 -3613
- package/dist/esm2020/lib/stencil-generated/index.mjs +0 -145
- package/dist/esm2020/public-api.mjs +0 -10
- package/dist/fesm2015/dytesdk-angular-ui-kit.mjs +0 -3693
- package/dist/fesm2015/dytesdk-angular-ui-kit.mjs.map +0 -1
- package/dist/fesm2020/dytesdk-angular-ui-kit.mjs +0 -3693
- package/dist/fesm2020/dytesdk-angular-ui-kit.mjs.map +0 -1
- package/dist/lib/components.module.d.ts +0 -7
- package/dist/lib/stencil-generated/angular-component-lib/utils.d.ts +0 -9
- package/dist/lib/stencil-generated/components.d.ts +0 -1813
- package/dist/lib/stencil-generated/index.d.ts +0 -2
- package/dist/public-api.d.ts +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dytesdk/angular-ui-kit",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"description": "Dyte's UI Kit to support easy UI development for Angular Projects",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^13 || ^14 || ^15 || ^16 || ^17",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"tslib": "^2.3.0",
|
|
11
|
-
"@dytesdk/ui-kit": "2.1.
|
|
11
|
+
"@dytesdk/ui-kit": "2.1.4"
|
|
12
12
|
},
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"tag": "staging"
|
package/dist/README.md
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
<!-- PROJECT LOGO -->
|
|
2
|
-
<p align="center">
|
|
3
|
-
<a href="https://dyte.io">
|
|
4
|
-
<img src="https://assets.dyte.io/logo-outlined.png" alt="Logo" width="120" />
|
|
5
|
-
</a>
|
|
6
|
-
|
|
7
|
-
<h2 align="center">Angular UI Kit by dyte</h3>
|
|
8
|
-
|
|
9
|
-
<p align="center">
|
|
10
|
-
A set of UI components to truly customize your meeting UI, in Angular
|
|
11
|
-
<br />
|
|
12
|
-
<a href="https://docs.dyte.io"><strong>Explore the docs »</strong></a>
|
|
13
|
-
<br />
|
|
14
|
-
<br />
|
|
15
|
-
<a href="https://app.dyte.io">View Demo</a>
|
|
16
|
-
·
|
|
17
|
-
<a href="https://community.dyte.io">Report Bug</a>
|
|
18
|
-
·
|
|
19
|
-
<a href="https://community.dyte.io">Request Feature</a>
|
|
20
|
-
</p>
|
|
21
|
-
</p>
|
|
22
|
-
|
|
23
|
-
<!-- TABLE OF CONTENTS -->
|
|
24
|
-
|
|
25
|
-
## Table of Contents
|
|
26
|
-
|
|
27
|
-
- [Getting Started](#getting-started)
|
|
28
|
-
- [Usage](#usage)
|
|
29
|
-
- [About](#about)
|
|
30
|
-
|
|
31
|
-
<!-- GETTING STARTED -->
|
|
32
|
-
|
|
33
|
-
## Getting Started
|
|
34
|
-
|
|
35
|
-
> There are separate UI Kit packages for VanillaJS and React. Check out the links to the packages below
|
|
36
|
-
|
|
37
|
-
> [UI Kit](https://npmjs.com/package/@dytesdk/ui-kit) · [React UI Kit](https://npmjs.com/package/@dytesdk/react-ui-kit)
|
|
38
|
-
|
|
39
|
-
First, you will need to install the ui-kit along with the [web-core](https://npmjs.com/package/@dytesdk/web-core) package:
|
|
40
|
-
|
|
41
|
-
```sh
|
|
42
|
-
npm i @dytesdk/angular-ui-kit @dytesdk/web-core
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
The `web-core` package is the package which handles all the low level logic required for a meeting by interating with our servers. Use it to create a meeting object, which you can pass along to the UI Kit components.
|
|
46
|
-
|
|
47
|
-
## Usage
|
|
48
|
-
|
|
49
|
-
Load the component in your template file (component.html):
|
|
50
|
-
|
|
51
|
-
```html
|
|
52
|
-
<dyte-meeting #myid></dyte-meeting>
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Then initialize and pass the meeting object to the component:
|
|
56
|
-
|
|
57
|
-
```tsx
|
|
58
|
-
class AppComponent {
|
|
59
|
-
title = 'MyProject';
|
|
60
|
-
@ViewChild('myid') meetingComponent: DyteMeeting;
|
|
61
|
-
dyteMeeting: DyteClient;
|
|
62
|
-
|
|
63
|
-
async ngAfterViewInit() {
|
|
64
|
-
const meeting = await DyteClient.init({
|
|
65
|
-
roomName: '<room-name>',
|
|
66
|
-
authToken: '<auth-token>',
|
|
67
|
-
defaults: {
|
|
68
|
-
video: true,
|
|
69
|
-
audio: true,
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
meeting.joinRoom();
|
|
73
|
-
this.dyteMeeting = meeting;
|
|
74
|
-
if (this.meetingComponent) this.meetingComponent.meeting = meeting;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## About
|
|
80
|
-
|
|
81
|
-
`angular-ui-kit` is created & maintained by Dyte, Inc. You can find us on Twitter - [@dyte_io](https://twitter.com/dyte_io) or write to us at `dev [at] dyte.io`.
|
|
82
|
-
|
|
83
|
-
The names and logos for Dyte are trademarks of Dyte, Inc.
|
|
84
|
-
|
|
85
|
-
We love open source software! See [our other projects](https://github.com/dyte-in) and [our products](https://dyte.io).
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHl0ZXNkay1hbmd1bGFyLXVpLWtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keXRlc2RrLWFuZ3VsYXItdWkta2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { defineCustomElements } from '@dytesdk/ui-kit/loader';
|
|
3
|
-
import { DIRECTIVES } from './stencil-generated';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./stencil-generated/components";
|
|
6
|
-
defineCustomElements(window);
|
|
7
|
-
export class DyteComponentsModule {
|
|
8
|
-
}
|
|
9
|
-
DyteComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
DyteComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, declarations: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen], exports: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen] });
|
|
11
|
-
DyteComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, imports: [[]] });
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, decorators: [{
|
|
13
|
-
type: NgModule,
|
|
14
|
-
args: [{
|
|
15
|
-
declarations: [...DIRECTIVES],
|
|
16
|
-
imports: [],
|
|
17
|
-
exports: [...DIRECTIVES],
|
|
18
|
-
}]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFakQsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFPN0IsTUFBTSxPQUFPLG9CQUFvQjs7a0hBQXBCLG9CQUFvQjttSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsWUFIdEIsRUFBRTs0RkFHQSxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50cyB9IGZyb20gJ0BkeXRlc2RrL3VpLWtpdC9sb2FkZXInO1xuXG5pbXBvcnQgeyBESVJFQ1RJVkVTIH0gZnJvbSAnLi9zdGVuY2lsLWdlbmVyYXRlZCc7XG5cbmRlZmluZUN1c3RvbUVsZW1lbnRzKHdpbmRvdyk7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLkRJUkVDVElWRVNdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogWy4uLkRJUkVDVElWRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBEeXRlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
/* tslint:disable */
|
|
3
|
-
import { fromEvent } from 'rxjs';
|
|
4
|
-
export const proxyInputs = (Cmp, inputs) => {
|
|
5
|
-
const Prototype = Cmp.prototype;
|
|
6
|
-
inputs.forEach(item => {
|
|
7
|
-
Object.defineProperty(Prototype, item, {
|
|
8
|
-
get() {
|
|
9
|
-
return this.el[item];
|
|
10
|
-
},
|
|
11
|
-
set(val) {
|
|
12
|
-
this.z.runOutsideAngular(() => (this.el[item] = val));
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
export const proxyMethods = (Cmp, methods) => {
|
|
18
|
-
const Prototype = Cmp.prototype;
|
|
19
|
-
methods.forEach(methodName => {
|
|
20
|
-
Prototype[methodName] = function () {
|
|
21
|
-
const args = arguments;
|
|
22
|
-
return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
|
|
23
|
-
};
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
export const proxyOutputs = (instance, el, events) => {
|
|
27
|
-
events.forEach(eventName => instance[eventName] = fromEvent(el, eventName));
|
|
28
|
-
};
|
|
29
|
-
export const defineCustomElement = (tagName, customElement) => {
|
|
30
|
-
if (customElement !== undefined &&
|
|
31
|
-
typeof customElements !== 'undefined' &&
|
|
32
|
-
!customElements.get(tagName)) {
|
|
33
|
-
customElements.define(tagName, customElement);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
// tslint:disable-next-line: only-arrow-functions
|
|
37
|
-
export function ProxyCmp(opts) {
|
|
38
|
-
const decorator = function (cls) {
|
|
39
|
-
const { defineCustomElementFn, inputs, methods } = opts;
|
|
40
|
-
if (defineCustomElementFn !== undefined) {
|
|
41
|
-
defineCustomElementFn();
|
|
42
|
-
}
|
|
43
|
-
if (inputs) {
|
|
44
|
-
proxyInputs(cls, inputs);
|
|
45
|
-
}
|
|
46
|
-
if (methods) {
|
|
47
|
-
proxyMethods(cls, methods);
|
|
48
|
-
}
|
|
49
|
-
return cls;
|
|
50
|
-
};
|
|
51
|
-
return decorator;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEdBQUc7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBUTtnQkFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxPQUFpQixFQUFFLEVBQUU7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUN0QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUN6QyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFDRSxhQUFhLEtBQUssU0FBUztRQUMzQixPQUFPLGNBQWMsS0FBSyxXQUFXO1FBQ3JDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDNUI7UUFDQSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUMsQ0FBQTtBQUVELGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQXlFO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLFVBQVUsR0FBUTtRQUNsQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUV4RCxJQUFJLHFCQUFxQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IHByb3h5SW5wdXRzID0gKENtcDogYW55LCBpbnB1dHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIGlucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcm90b3R5cGUsIGl0ZW0sIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxbaXRlbV07XG4gICAgICB9LFxuICAgICAgc2V0KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAodGhpcy5lbFtpdGVtXSA9IHZhbCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU1ldGhvZHMgPSAoQ21wOiBhbnksIG1ldGhvZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIG1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBQcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgcmV0dXJuIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICB0aGlzLmVsW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMuZWwsIGFyZ3MpXG4gICAgICApO1xuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3h5T3V0cHV0cyA9IChpbnN0YW5jZTogYW55LCBlbDogYW55LCBldmVudHM6IHN0cmluZ1tdKSA9PiB7XG4gIGV2ZW50cy5mb3JFYWNoKGV2ZW50TmFtZSA9PiBpbnN0YW5jZVtldmVudE5hbWVdID0gZnJvbUV2ZW50KGVsLCBldmVudE5hbWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmluZUN1c3RvbUVsZW1lbnQgPSAodGFnTmFtZTogc3RyaW5nLCBjdXN0b21FbGVtZW50OiBhbnkpID0+IHtcbiAgaWYgKFxuICAgIGN1c3RvbUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpXG4gICkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBjdXN0b21FbGVtZW50KTtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ubHktYXJyb3ctZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gUHJveHlDbXAob3B0czogeyBkZWZpbmVDdXN0b21FbGVtZW50Rm4/OiAoKSA9PiB2b2lkLCBpbnB1dHM/OiBhbnk7IG1ldGhvZHM/OiBhbnkgfSkge1xuICBjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiAoY2xzOiBhbnkpIHtcbiAgICBjb25zdCB7IGRlZmluZUN1c3RvbUVsZW1lbnRGbiwgaW5wdXRzLCBtZXRob2RzIH0gPSBvcHRzO1xuXG4gICAgaWYgKGRlZmluZUN1c3RvbUVsZW1lbnRGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWZpbmVDdXN0b21FbGVtZW50Rm4oKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRzKSB7XG4gICAgICBwcm94eUlucHV0cyhjbHMsIGlucHV0cyk7XG4gICAgfVxuICAgIGlmIChtZXRob2RzKSB7XG4gICAgICBwcm94eU1ldGhvZHMoY2xzLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNscztcbiAgfTtcbiAgcmV0dXJuIGRlY29yYXRvcjtcbn1cbiJdfQ==
|