Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@squiz/chat-ui

Package Overview
Dependencies
Maintainers
0
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@squiz/chat-ui - npm Package Compare versions

Comparing version 1.3.0 to 1.4.0

6

CHANGELOG.md
# @squiz/chat-ui
## 1.4.0
### Minor Changes
- 10c3643: fix server side rendering issue
## 1.3.0

@@ -4,0 +10,0 @@

24

dist/context/ChatContext.js

@@ -49,11 +49,2 @@ "use strict";

});
const getSavedUserInputState = (sessionStorageId) => {
const chatHistoryItem = sessionStorage.getItem(sessionStorageId);
let isWaitingUserInput = false;
if (chatHistoryItem) {
const chatHistory = JSON.parse(chatHistoryItem);
isWaitingUserInput = chatHistory.isWaitingUserInput;
}
return isWaitingUserInput;
};
const ChatContextProvider = (props) => {

@@ -65,3 +56,2 @@ const { aiId, aiApiUrl, aiService, isPreview, greeting, persistThread = false, children } = props;

const [isWaitingResponse, setIsWaitingResponse] = (0, react_1.useState)(false);
const [isWaitingUserInput, setIsWaitingUserInput] = (0, react_1.useState)(persistThread && getSavedUserInputState(sessionStorageId));
const [threadStartDate, setThreadStartDate] = (0, react_1.useState)(new Date());

@@ -71,2 +61,12 @@ const [conversation, setConversation] = (0, react_1.useState)([]);

const [isProcessingRating, setIsProcessingRating] = (0, react_1.useState)(false);
const getSavedUserInputState = (0, react_1.useCallback)(() => {
const chatHistoryItem = sessionStorage.getItem(sessionStorageId);
let isWaitingUserInput = false;
if (chatHistoryItem) {
const chatHistory = JSON.parse(chatHistoryItem);
isWaitingUserInput = chatHistory.isWaitingUserInput;
}
return isWaitingUserInput;
}, [sessionStorageId]);
const [isWaitingUserInput, setIsWaitingUserInput] = (0, react_1.useState)(persistThread && getSavedUserInputState());
function getCommandExecutor() {

@@ -193,3 +193,3 @@ if (executor.current !== null) {

(0, react_1.useMemo)(() => {
if (persistThread && isWaitingUserInput !== getSavedUserInputState(sessionStorageId)) {
if (persistThread && isWaitingUserInput !== getSavedUserInputState()) {
updateThreadSessionState({});

@@ -359,2 +359,2 @@ }

exports.ChatContextProvider = ChatContextProvider;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdENvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dC9DaGF0Q29udGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBb0c7QUFDcEcsd0RBQTBGO0FBQzFGLCtCQUFvQztBQW1DdkIsUUFBQSxXQUFXLEdBQUcsZUFBSyxDQUFDLGFBQWEsQ0FBbUI7SUFDL0QsTUFBTSxFQUFFLElBQUk7SUFDWixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixZQUFZLEVBQUUsRUFBRTtJQUNoQixnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsZ0JBQXdCLEVBQVcsRUFBRTtJQUNuRSxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakUsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFL0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELGtC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QUFJLGVBQWUsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2pFLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLEVBQ0QsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQzVDLENBQUM7SUFFRixPQUFPLENBQ0wsOEJBQUMsbUJBQVcsQ0FBQyxRQUFRLElBQ25CLEtBQUssRUFBRTtZQUNMLE1BQU07WUFDTixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osZ0JBQWdCLEVBQUUsc0JBQXNCO1lBQ3hDLGdCQUFnQixFQUFFLHNCQUFzQjtZQUN4QyxVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLE1BQU0sRUFBRSxZQUFZO1NBQ3JCLElBRUEsUUFBUSxDQUNZLENBQ3hCLENBQUM7QUFDSixDQUFDLENBQUM7QUFyV1csUUFBQSxtQkFBbUIsdUJBcVc5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IER4cEFpU2VydmljZSwgQ2hhdEJvdENvbW1hbmRFeGVjdXRvciwgY3JlYXRlQ2xpZW50IH0gZnJvbSAnQHNxdWl6L2R4cC1haS1jbGllbnQnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25JdGVtLCBDb250cm9sTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgQ2hhdFByb3ZpZGVyUHJvcHMgPSB7XG4gIGFpSWQ6IHN0cmluZztcbiAgYWlBcGlVcmw/OiBzdHJpbmc7XG4gIGFpU2VydmljZT86IER4cEFpU2VydmljZTx1bmtub3duPjtcbiAgaXNQcmV2aWV3PzogYm9vbGVhbjtcbiAgZ3JlZXRpbmc6IHN0cmluZztcbiAgcGVyc2lzdFRocmVhZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDaGF0Q29udGV4dFByb3BzID0ge1xuICByYXRpbmc6IGJvb2xlYW4gfCBudWxsO1xuICBpc1Byb2Nlc3NpbmdSYXRpbmc6IGJvb2xlYW47XG4gIGlzV2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuO1xuICBpc1dhaXRpbmdVc2VySW5wdXQ6IGJvb2xlYW47XG4gIGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uSXRlbVtdO1xuICBvbk5ld0NoYXRSZXF1ZXN0OiAoKSA9PiB2b2lkO1xuICBvbk5ld0NoYXRDb25maXJtOiAoeWVzUmVzcG9uc2U6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIG9uUmF0ZUNoYXQ6IChwb3NpdGl2ZVJhdGluZzogYm9vbGVhbikgPT4gdm9pZDtcbiAgb25TZW5kOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkO1xufTtcblxudHlwZSBDb252ZXJzYXRpb25JbnN0cnVjdGlvbiA9IHtcbiAgaXRlbTogQ29udmVyc2F0aW9uSXRlbTtcbiAgaW5zdHJ1Y3Rpb246ICdhZGQnIHwgJ3JlbW92ZVNpbmdsZU9mVHlwZSc7XG59O1xuXG50eXBlIENvbnZlcnNhdGlvblBlcnNpc3RQcm9wcyA9IHtcbiAgY29udmVyc2F0aW9uPzogQ29udmVyc2F0aW9uSXRlbVtdO1xuICByYXRpbmc/OiBib29sZWFuIHwgbnVsbDtcbiAgdGhyZWFkSWQ/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IENoYXRDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxDaGF0Q29udGV4dFByb3BzPih7XG4gIHJhdGluZzogbnVsbCxcbiAgaXNQcm9jZXNzaW5nUmF0aW5nOiBmYWxzZSxcbiAgaXNXYWl0aW5nUmVzcG9uc2U6IGZhbHNlLFxuICBpc1dhaXRpbmdVc2VySW5wdXQ6IGZhbHNlLFxuICBjb252ZXJzYXRpb246IFtdLFxuICBvbk5ld0NoYXRSZXF1ZXN0OiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvbk5ld0NoYXRSZXF1ZXN0IGhhcyBub3QgYmVlbiBjb25maWd1cmVkLicpO1xuICB9LFxuICBvbk5ld0NoYXRDb25maXJtOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvbk5ld0NoYXRDb25maXJtIGhhcyBub3QgYmVlbiBjb25maWd1cmVkLicpO1xuICB9LFxuICBvblJhdGVDaGF0OiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvblJhdGVDaGF0IGhhcyBub3QgYmVlbiBjb25maWd1cmVkLicpO1xuICB9LFxuICBvblNlbmQ6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29uU2VuZCBoYXMgbm90IGJlZW4gY29uZmlndXJlZC4nKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBnZXRTYXZlZFVzZXJJbnB1dFN0YXRlID0gKHNlc3Npb25TdG9yYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjaGF0SGlzdG9yeUl0ZW0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlc3Npb25TdG9yYWdlSWQpO1xuICBsZXQgaXNXYWl0aW5nVXNlcklucHV0ID0gZmFsc2U7XG5cbiAgaWYgKGNoYXRIaXN0b3J5SXRlbSkge1xuICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gSlNPTi5wYXJzZShjaGF0SGlzdG9yeUl0ZW0pO1xuICAgIGlzV2FpdGluZ1VzZXJJbnB1dCA9IGNoYXRIaXN0b3J5LmlzV2FpdGluZ1VzZXJJbnB1dDtcbiAgfVxuXG4gIHJldHVybiBpc1dhaXRpbmdVc2VySW5wdXQ7XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhdENvbnRleHRQcm92aWRlciA9IChwcm9wczogUHJvcHNXaXRoQ2hpbGRyZW48Q2hhdFByb3ZpZGVyUHJvcHM+KSA9PiB7XG4gIGNvbnN0IHsgYWlJZCwgYWlBcGlVcmwsIGFpU2VydmljZSwgaXNQcmV2aWV3LCBncmVldGluZywgcGVyc2lzdFRocmVhZCA9IGZhbHNlLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gIGNvbnN0IHNlc3Npb25TdG9yYWdlSWQgPSBgc3F1aXotY2hhdC11aS1oaXN0b3J5LSR7YWlJZH1gO1xuICBjb25zdCBkeHBBaUNsaWVudCA9IHVzZVJlZjxEeHBBaVNlcnZpY2U8dW5rbm93bj4gfCBudWxsPihudWxsKTtcbiAgY29uc3QgZXhlY3V0b3IgPSB1c2VSZWY8Q2hhdEJvdENvbW1hbmRFeGVjdXRvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbaXNXYWl0aW5nUmVzcG9uc2UsIHNldElzV2FpdGluZ1Jlc3BvbnNlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2lzV2FpdGluZ1VzZXJJbnB1dCwgc2V0SXNXYWl0aW5nVXNlcklucHV0XSA9IHVzZVN0YXRlPGJvb2xlYW4+KFxuICAgIHBlcnNpc3RUaHJlYWQgJiYgZ2V0U2F2ZWRVc2VySW5wdXRTdGF0ZShzZXNzaW9uU3RvcmFnZUlkKSxcbiAgKTtcbiAgY29uc3QgW3RocmVhZFN0YXJ0RGF0ZSwgc2V0VGhyZWFkU3RhcnREYXRlXSA9IHVzZVN0YXRlPERhdGU+KG5ldyBEYXRlKCkpO1xuICBjb25zdCBbY29udmVyc2F0aW9uLCBzZXRDb252ZXJzYXRpb25dID0gdXNlU3RhdGU8Q29udmVyc2F0aW9uSXRlbVtdPihbXSk7XG4gIGNvbnN0IFtyYXRpbmcsIHNldFJhdGluZ10gPSB1c2VTdGF0ZTxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtpc1Byb2Nlc3NpbmdSYXRpbmcsIHNldElzUHJvY2Vzc2luZ1JhdGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gUmV0dXJuIHRoZSBjb21tYW5kIGV4ZWN1dG9yIG9yIGNyZWF0ZSBpZiBpdHMgbm90IHNldHVwIHlldCAod29ya2Fyb3VuZCBmb3IgdXNlUmVmIG5vdCB0YWtpbmcgYW4gaW5pdCBmdW5jdGlvbilcbiAgZnVuY3Rpb24gZ2V0Q29tbWFuZEV4ZWN1dG9yKCkge1xuICAgIGlmIChleGVjdXRvci5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZXhlY3V0b3IuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGFpU2VydmljZSkge1xuICAgICAgZHhwQWlDbGllbnQuY3VycmVudCA9IGFpU2VydmljZTtcbiAgICB9IGVsc2UgaWYgKGFpQXBpVXJsKSB7XG4gICAgICBkeHBBaUNsaWVudC5jdXJyZW50ID0gbmV3IER4cEFpU2VydmljZShcbiAgICAgICAgY3JlYXRlQ2xpZW50KHtcbiAgICAgICAgICBiYXNlVXJsOiBhaUFwaVVybCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVzOiBhaUFwaVVybCBvciBhaVNlcnZpY2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIGNoYXRib3QuJyk7XG4gICAgfVxuICAgIGV4ZWN1dG9yLmN1cnJlbnQgPSBuZXcgQ2hhdEJvdENvbW1hbmRFeGVjdXRvcihkeHBBaUNsaWVudC5jdXJyZW50KTtcbiAgICByZXR1cm4gZXhlY3V0b3IuY3VycmVudDtcbiAgfVxuXG4gIC8vIEtlZXAgYSByZWYgdG8gdGhlIGNvbnZlcnNhdGlvbiBzbyBjYWxsYmFja3MgZnJvbSBzZW5kTWVzc2FnZSBoYXZlIHVwIHRvIGRhdGUgaGlzdG9yeSB0byBpbnNlcnQgaW50b1xuICBjb25zdCBjYWxsYmFja1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbkl0ZW1bXTtcbiAgICB0aHJlYWRJZDogc3RyaW5nIHwgbnVsbDtcbiAgICB0aHJlYWRTdGFydERhdGU6IERhdGU7XG4gIH0+KHtcbiAgICBjb252ZXJzYXRpb246IFtdLFxuICAgIHRocmVhZElkOiBudWxsLFxuICAgIHRocmVhZFN0YXJ0RGF0ZSxcbiAgfSk7XG4gIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICBjb252ZXJzYXRpb24sXG4gICAgdGhyZWFkSWQ6IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCxcbiAgICB0aHJlYWRTdGFydERhdGUsXG4gIH07XG5cbiAgLy8gU2ltcGxlIGFkZCBtZXNzYWdlIGZ1bmN0aW9uXG4gIGNvbnN0IGFkZE1lc3NhZ2VzVG9Db252ZXJzYXRpb24gPSAobWVzc2FnZXM6IENvbnZlcnNhdGlvbkl0ZW1bXSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnZlcnNhdGlvbiA9IFsuLi5jYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQuY29udmVyc2F0aW9uLCAuLi5tZXNzYWdlc107XG4gICAgc2V0Q29udmVyc2F0aW9uKG5ld0NvbnZlcnNhdGlvbik7XG4gICAgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlKHsgY29udmVyc2F0aW9uOiBuZXdDb252ZXJzYXRpb24gfSk7XG4gIH07XG5cbiAgLy8gQ29tcGxleCBjb252ZXJzYXRpb24gY2hhbmdlIGZ1bmN0aW9uXG4gIGNvbnN0IGFsdGVyQ29udmVyc2F0aW9uID0gKGluc3RydWN0aW9uczogQ29udmVyc2F0aW9uSW5zdHJ1Y3Rpb25bXSkgPT4ge1xuICAgIGxldCBuZXdDb252ZXJzYXRpb24gPSBbLi4uY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LmNvbnZlcnNhdGlvbl07XG4gICAgaW5zdHJ1Y3Rpb25zLmZvckVhY2goKHsgaXRlbSwgaW5zdHJ1Y3Rpb24gfSkgPT4ge1xuICAgICAgLy8gQWRkIHRvIGVuZCBvZiBjb252ZXJzYXRpb25cbiAgICAgIGlmIChpbnN0cnVjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgICAgbmV3Q29udmVyc2F0aW9uID0gWy4uLm5ld0NvbnZlcnNhdGlvbiwgaXRlbV07XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uID09PSAncmVtb3ZlU2luZ2xlT2ZUeXBlJykge1xuICAgICAgICBjb25zdCByZW1vdmVUeXBlID0gKGl0ZW0gYXMgQ29udHJvbE1lc3NhZ2UpLnR5cGU7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xNZXNzYWdlSW5kZXggPSBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQuY29udmVyc2F0aW9uLmZpbmRJbmRleCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQ29udHJvbE1lc3NhZ2UgPSBPYmplY3QuaGFzT3duKG1lc3NhZ2UsICd0eXBlJyk7XG4gICAgICAgICAgY29uc3QgY29udHJvbE1lc3NhZ2UgPSBtZXNzYWdlIGFzIENvbnRyb2xNZXNzYWdlO1xuXG4gICAgICAgICAgaWYgKGlzQ29udHJvbE1lc3NhZ2UgJiYgY29udHJvbE1lc3NhZ2UudHlwZSA9PT0gcmVtb3ZlVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSB0eXBlIGZyb20gdGhlIGNvbnZlcnNhdGlvblxuICAgICAgICBpZiAoY29udHJvbE1lc3NhZ2VJbmRleCkge1xuICAgICAgICAgIG5ld0NvbnZlcnNhdGlvbi5zcGxpY2UoY29udHJvbE1lc3NhZ2VJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldENvbnZlcnNhdGlvbihuZXdDb252ZXJzYXRpb24pO1xuICAgIHVwZGF0ZVRocmVhZFNlc3Npb25TdGF0ZSh7IGNvbnZlcnNhdGlvbjogbmV3Q29udmVyc2F0aW9uIH0pO1xuICB9O1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBwZXJzaXN0IHRoZSB0aHJlYWQgaW50byB0aGUgc2Vzc2lvbiBzdG9yYWdlIGlmIGVuYWJsZWRcbiAgY29uc3QgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlID0gKHsgY29udmVyc2F0aW9uLCByYXRpbmcsIHRocmVhZElkIH06IENvbnZlcnNhdGlvblBlcnNpc3RQcm9wcykgPT4ge1xuICAgIGlmIChwZXJzaXN0VGhyZWFkKSB7XG4gICAgICAvLyBHZXQgdGhlIG9sZCBoaXN0b3J5IGZyb20gdGhlIHNlc3Npb24gc28gd2UgY2FuIGZpbGwgaW4gbWlzc2luZyBkZXRhaWxzXG4gICAgICBjb25zdCBjaGF0SGlzdG9yeUl0ZW0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlc3Npb25TdG9yYWdlSWQpO1xuICAgICAgbGV0IG9sZENoYXRIaXN0b3J5O1xuICAgICAgaWYgKGNoYXRIaXN0b3J5SXRlbSkge1xuICAgICAgICBvbGRDaGF0SGlzdG9yeSA9IEpTT04ucGFyc2UoY2hhdEhpc3RvcnlJdGVtKTtcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdmFsdWUgdG8gc2V0IHRoZSByYXRpbmcgdG8sIGNsZWFyZXIgdGhhbiBhIHRyaXBsZSB0ZXJuYXJ5XG4gICAgICBsZXQgbmV3UmF0aW5nID0gbnVsbDtcbiAgICAgIGlmIChyYXRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdSYXRpbmcgPSByYXRpbmc7XG4gICAgICB9IGVsc2UgaWYgKG9sZENoYXRIaXN0b3J5Py5yYXRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgbmV3UmF0aW5nID0gb2xkQ2hhdEhpc3Rvcnk/LnJhdGluZztcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2VJZCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogdGhyZWFkSWQgfHwgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkLFxuICAgICAgICAgIGNvbnZlcnNhdGlvbjogY29udmVyc2F0aW9uIHx8IG9sZENoYXRIaXN0b3J5Py5jb252ZXJzYXRpb24sXG4gICAgICAgICAgcmF0aW5nOiBuZXdSYXRpbmcsXG4gICAgICAgICAgLi4uKGlzV2FpdGluZ1VzZXJJbnB1dCA/IHsgaXNXYWl0aW5nVXNlcklucHV0IH0gOiB7fSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkRXJyb3JNZXNzYWdlVG9Db252ZXJzYXRpb24gPSAoKSA9PiB7XG4gICAgYWRkTWVzc2FnZXNUb0NvbnZlcnNhdGlvbihbXG4gICAgICB7XG4gICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgdGV4dDogJ1RoZXJlIHdhcyBhIHByb2JsZW0gcmVzcG9uZGluZyB0byB5b3VyIG1lc3NhZ2UsIHBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgc2VuZGVyOiAnRnJvbnRlbmQnLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfTtcblxuICAvLyBTdGFydCB1cCB0aGUgY2hhdGJvdCBleGVjdXRvciBhbmQgYWRkIHRoZSBncmVldGluZyBpbnRvIHRoZSBjb252ZXJzYXRpb24gaGlzdG9yeVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGdldENvbW1hbmRFeGVjdXRvcigpOyAvLyBTdGFydCB0aGUgY29tbWFuZCBleGVjdXRvclxuICAgIGlmIChwZXJzaXN0VGhyZWFkKSB7XG4gICAgICBjb25zdCBjaGF0SGlzdG9yeUl0ZW0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlc3Npb25TdG9yYWdlSWQpO1xuICAgICAgaWYgKGNoYXRIaXN0b3J5SXRlbSkge1xuICAgICAgICBjb25zdCBjaGF0SGlzdG9yeSA9IEpTT04ucGFyc2UoY2hhdEhpc3RvcnlJdGVtKTtcbiAgICAgICAgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkID0gY2hhdEhpc3RvcnkuY3VycmVudFRocmVhZElkO1xuICAgICAgICBhZGRNZXNzYWdlc1RvQ29udmVyc2F0aW9uKGNoYXRIaXN0b3J5LmNvbnZlcnNhdGlvbik7XG4gICAgICAgIGlmIChjaGF0SGlzdG9yeS5yYXRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgICBzZXRSYXRpbmcoY2hhdEhpc3RvcnkucmF0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldElzV2FpdGluZ1VzZXJJbnB1dChjaGF0SGlzdG9yeS5pc1dhaXRpbmdVc2VySW5wdXQpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgYWRkTWVzc2FnZXNUb0NvbnZlcnNhdGlvbihbXG4gICAgICB7XG4gICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgdGV4dDogZ3JlZXRpbmcsXG4gICAgICAgIHNlbmRlcjogJ0Zyb250ZW5kJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE9uIGNsZWFudXAgcmVzZXQgdGhlIHRocmVhZFN0YXJ0RGF0ZSBzbyBhbnkgaW4tZmxpZ2h0IG1lc3NhZ2VzIGdldCBpZ25vcmVkXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgLi4uY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LFxuICAgICAgICB0aHJlYWRTdGFydERhdGU6IG5ldyBEYXRlKCksXG4gICAgICB9O1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocGVyc2lzdFRocmVhZCAmJiBpc1dhaXRpbmdVc2VySW5wdXQgIT09IGdldFNhdmVkVXNlcklucHV0U3RhdGUoc2Vzc2lvblN0b3JhZ2VJZCkpIHtcbiAgICAgIC8vIFVwZGF0ZSB3YWl0aW5nIHVzZXIgaW5wdXQgc3RhdGUgaW4gc2Vzc2lvbi5cbiAgICAgIHVwZGF0ZVRocmVhZFNlc3Npb25TdGF0ZSh7fSk7XG4gICAgfVxuICB9LCBbaXNXYWl0aW5nVXNlcklucHV0XSk7XG5cbiAgY29uc3QgaGFuZGxlT25TZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgLy8gQWRkIHVzZXJzIG1lc3NhZ2UgdG8gY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICAgIGFkZE1lc3NhZ2VzVG9Db252ZXJzYXRpb24oW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgIHRleHQ6IG1lc3NhZ2UsXG4gICAgICAgICAgc2VuZGVyOiAnVXNlcicsXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgc2V0SXNXYWl0aW5nUmVzcG9uc2UodHJ1ZSk7XG4gICAgICBzZXRJc1dhaXRpbmdVc2VySW5wdXQoZmFsc2UpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRDb21tYW5kRXhlY3V0b3IoKS5leGVjdXRlKGFpSWQsICdwcm9jZXNzQ2hhdE1lc3NhZ2UnLCB7XG4gICAgICAgICAgaXNQcmV2aWV3LFxuICAgICAgICAgIHF1ZXJ5OiBtZXNzYWdlLFxuICAgICAgICAgIHRocmVhZElkOiBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDaGVjayB0aGlzIHJlc3BvbnNlIGlzIGZvciB0aGlzIHRocmVhZCBiYXNlZCBvbiB0aGUgdGhyZWFkU3RhcnREYXRlLCBpZiBub3QgZXF1YWwgdGhlIHJlc3BvbnNlIGlzIGZvciBhbiBvbGQgdGhyZWFkXG4gICAgICAgIGlmICh0aHJlYWRTdGFydERhdGUgPT09IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRTdGFydERhdGUpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRocmVhZElkIGlmIHdlIGRvbid0IGhhdmUgb25lXG4gICAgICAgICAgaWYgKCFjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkSWQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCA9IHJlc3BvbnNlLm91dHB1dHMudGhyZWFkLmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFkZCBzZXJ2ZXIgcmVzcG9uc2UgdG8gY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICAgICAgICBhZGRNZXNzYWdlc1RvQ29udmVyc2F0aW9uKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0ZXh0OiByZXNwb25zZS5vdXRwdXRzLm1lc3NhZ2UucmVzcG9uc2UsXG4gICAgICAgICAgICAgIHNlbmRlcjogJ1NlcnZlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBDaGVjayB0aGlzIGVycm9yIGlzIGZvciB0aGlzIHRocmVhZCBiYXNlZCBvbiB0aGUgdGhyZWFkU3RhcnREYXRlLCBpZiBub3QgZXF1YWwgdGhlIGVycm9yIGlzIGZvciBhbiBvbGQgdGhyZWFkXG4gICAgICAgIGlmICh0aHJlYWRTdGFydERhdGUgPT09IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRTdGFydERhdGUpIHtcbiAgICAgICAgICAvLyBBbiBlcnJvciBpcyBzdG9yZWQgaW4gZXJyb3IuZXJyb3IubWVzc2FnZSBidXQgaXQgbWlnaHQgbm90IGJlIHVzZXIgc2FmZVxuICAgICAgICAgIGFkZEVycm9yTWVzc2FnZVRvQ29udmVyc2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRocmVhZFN0YXJ0RGF0ZSA9PT0gY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZFN0YXJ0RGF0ZSkge1xuICAgICAgICBzZXRJc1dhaXRpbmdSZXNwb25zZShmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbaXNQcmV2aWV3LCB0aHJlYWRTdGFydERhdGVdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU9uTmV3Q2hhdFJlcXVlc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNXYWl0aW5nVXNlcklucHV0KHRydWUpO1xuICAgIHNldElzV2FpdGluZ1Jlc3BvbnNlKGZhbHNlKTtcbiAgICBhZGRNZXNzYWdlc1RvQ29udmVyc2F0aW9uKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICB0ZXh0OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN0YXJ0IGEgbmV3IGNoYXQ/JyxcbiAgICAgICAgc2VuZGVyOiAnRnJvbnRlbmQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICB0eXBlOiAnbmV3Q2hhdFJlcXVlc3QnLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSwgW2dyZWV0aW5nXSk7XG5cbiAgY29uc3QgaGFuZGxlT25OZXdDaGF0Q29uZmlybSA9IHVzZUNhbGxiYWNrKFxuICAgICh5ZXNSZXNwb25zZTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHllc1Jlc3BvbnNlKSB7XG4gICAgICAgIC8vIFJlc2V0IHRoZSB0aHJlYWQgdG8gbnVsbFxuICAgICAgICBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkSWQgPSBudWxsO1xuICAgICAgICBzZXRJc1dhaXRpbmdSZXNwb25zZShmYWxzZSk7XG4gICAgICAgIHNldElzV2FpdGluZ1VzZXJJbnB1dChmYWxzZSk7XG4gICAgICAgIHNldFRocmVhZFN0YXJ0RGF0ZShuZXcgRGF0ZSgpKTsgLy8gUmVzdGFydCB0aGUgdGhyZWFkIGFnZVxuICAgICAgICBzZXRSYXRpbmcobnVsbCk7XG4gICAgICAgIHNldElzUHJvY2Vzc2luZ1JhdGluZyhmYWxzZSk7XG4gICAgICAgIHVwZGF0ZVRocmVhZFNlc3Npb25TdGF0ZSh7IHRocmVhZElkOiBudWxsLCByYXRpbmc6IG51bGwgfSk7XG5cbiAgICAgICAgYWx0ZXJDb252ZXJzYXRpb24oW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiAnYWRkJyxcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0ZXh0OiAnWWVzJyxcbiAgICAgICAgICAgICAgc2VuZGVyOiAnVXNlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdhZGQnLFxuICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHR5cGU6ICduZXdDaGF0QnJlYWsnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiAnYWRkJyxcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0ZXh0OiBncmVldGluZyxcbiAgICAgICAgICAgICAgc2VuZGVyOiAnRnJvbnRlbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiAncmVtb3ZlU2luZ2xlT2ZUeXBlJyxcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0eXBlOiAnbmV3Q2hhdFJlcXVlc3QnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzV2FpdGluZ1VzZXJJbnB1dChmYWxzZSk7XG4gICAgICAgIGFsdGVyQ29udmVyc2F0aW9uKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjogJ2FkZCcsXG4gICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgICAgdGV4dDogJ05vJyxcbiAgICAgICAgICAgICAgc2VuZGVyOiAnVXNlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdhZGQnLFxuICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHRleHQ6ICdPaywgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSBJIGNhbiBoZWxwIHlvdSB3aXRoPycsXG4gICAgICAgICAgICAgIHNlbmRlcjogJ0Zyb250ZW5kJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjogJ3JlbW92ZVNpbmdsZU9mVHlwZScsXG4gICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ25ld0NoYXRSZXF1ZXN0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbZ3JlZXRpbmddLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU9uUmF0ZUNoYXQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocG9zaXRpdmVSYXRpbmc6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChkeHBBaUNsaWVudC5jdXJyZW50ICYmIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCAmJiAhaXNQcm9jZXNzaW5nUmF0aW5nKSB7XG4gICAgICAgIHNldElzUHJvY2Vzc2luZ1JhdGluZyh0cnVlKTtcbiAgICAgICAgc2V0UmF0aW5nKHBvc2l0aXZlUmF0aW5nKTtcbiAgICAgICAgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlKHsgcmF0aW5nOiBwb3NpdGl2ZVJhdGluZyB9KTtcbiAgICAgICAgaWYgKHBvc2l0aXZlUmF0aW5nKSB7XG4gICAgICAgICAgYXdhaXQgZHhwQWlDbGllbnQuY3VycmVudC5jaGF0Ym90LnJhdGUoYWlJZCwgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkLCB7IHJhdGluZzogJ3Bvc2l0aXZlJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCBkeHBBaUNsaWVudC5jdXJyZW50LmNoYXRib3QucmF0ZShhaUlkLCBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkSWQsIHsgcmF0aW5nOiAnbmVnYXRpdmUnIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aHJlYWRTdGFydERhdGUgPT09IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRTdGFydERhdGUpIHtcbiAgICAgICAgICBzZXRJc1Byb2Nlc3NpbmdSYXRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNQcm9jZXNzaW5nUmF0aW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcmV2aW91cyByYXRpbmcgaXMgc3RpbGwgcHJvY2Vzc2luZycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhyZWFkIGhhcyBub3QgYmVlbiBzdGFydGVkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthaUlkLCB0aHJlYWRTdGFydERhdGUsIGlzUHJvY2Vzc2luZ1JhdGluZ10sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2hhdENvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIHJhdGluZyxcbiAgICAgICAgaXNQcm9jZXNzaW5nUmF0aW5nLFxuICAgICAgICBpc1dhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXYWl0aW5nVXNlcklucHV0LFxuICAgICAgICBjb252ZXJzYXRpb24sXG4gICAgICAgIG9uTmV3Q2hhdFJlcXVlc3Q6IGhhbmRsZU9uTmV3Q2hhdFJlcXVlc3QsXG4gICAgICAgIG9uTmV3Q2hhdENvbmZpcm06IGhhbmRsZU9uTmV3Q2hhdENvbmZpcm0sXG4gICAgICAgIG9uUmF0ZUNoYXQ6IGhhbmRsZU9uUmF0ZUNoYXQsXG4gICAgICAgIG9uU2VuZDogaGFuZGxlT25TZW5kLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9DaGF0Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdENvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dC9DaGF0Q29udGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBb0c7QUFDcEcsd0RBQTBGO0FBQzFGLCtCQUFvQztBQW1DdkIsUUFBQSxXQUFXLEdBQUcsZUFBSyxDQUFDLGFBQWEsQ0FBbUI7SUFDL0QsTUFBTSxFQUFFLElBQUk7SUFDWixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixZQUFZLEVBQUUsRUFBRTtJQUNoQixnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSSxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBMkMsRUFBRSxFQUFFO0lBQ2pGLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2xHLE1BQU0sZ0JBQWdCLEdBQUcseUJBQXlCLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sV0FBVyxHQUFHLElBQUEs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O1lBQ0QsSUFBSSxlQUFlLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNqRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxFQUNELENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUM1QyxDQUFDO0lBRUYsT0FBTyxDQUNMLDhCQUFDLG1CQUFXLENBQUMsUUFBUSxJQUNuQixLQUFLLEVBQUU7WUFDTCxNQUFNO1lBQ04sa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLGdCQUFnQixFQUFFLHNCQUFzQjtZQUN4QyxnQkFBZ0IsRUFBRSxzQkFBc0I7WUFDeEMsVUFBVSxFQUFFLGdCQUFnQjtZQUM1QixNQUFNLEVBQUUsWUFBWTtTQUNyQixJQUVBLFFBQVEsQ0FDWSxDQUN4QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBaFhXLFFBQUEsbUJBQW1CLHVCQWdYOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEeHBBaVNlcnZpY2UsIENoYXRCb3RDb21tYW5kRXhlY3V0b3IsIGNyZWF0ZUNsaWVudCB9IGZyb20gJ0BzcXVpei9keHAtYWktY2xpZW50JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uSXRlbSwgQ29udHJvbE1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIENoYXRQcm92aWRlclByb3BzID0ge1xuICBhaUlkOiBzdHJpbmc7XG4gIGFpQXBpVXJsPzogc3RyaW5nO1xuICBhaVNlcnZpY2U/OiBEeHBBaVNlcnZpY2U8dW5rbm93bj47XG4gIGlzUHJldmlldz86IGJvb2xlYW47XG4gIGdyZWV0aW5nOiBzdHJpbmc7XG4gIHBlcnNpc3RUaHJlYWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhdENvbnRleHRQcm9wcyA9IHtcbiAgcmF0aW5nOiBib29sZWFuIHwgbnVsbDtcbiAgaXNQcm9jZXNzaW5nUmF0aW5nOiBib29sZWFuO1xuICBpc1dhaXRpbmdSZXNwb25zZTogYm9vbGVhbjtcbiAgaXNXYWl0aW5nVXNlcklucHV0OiBib29sZWFuO1xuICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbkl0ZW1bXTtcbiAgb25OZXdDaGF0UmVxdWVzdDogKCkgPT4gdm9pZDtcbiAgb25OZXdDaGF0Q29uZmlybTogKHllc1Jlc3BvbnNlOiBib29sZWFuKSA9PiB2b2lkO1xuICBvblJhdGVDaGF0OiAocG9zaXRpdmVSYXRpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIG9uU2VuZDogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbnR5cGUgQ29udmVyc2F0aW9uSW5zdHJ1Y3Rpb24gPSB7XG4gIGl0ZW06IENvbnZlcnNhdGlvbkl0ZW07XG4gIGluc3RydWN0aW9uOiAnYWRkJyB8ICdyZW1vdmVTaW5nbGVPZlR5cGUnO1xufTtcblxudHlwZSBDb252ZXJzYXRpb25QZXJzaXN0UHJvcHMgPSB7XG4gIGNvbnZlcnNhdGlvbj86IENvbnZlcnNhdGlvbkl0ZW1bXTtcbiAgcmF0aW5nPzogYm9vbGVhbiB8IG51bGw7XG4gIHRocmVhZElkPzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBDaGF0Q29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8Q2hhdENvbnRleHRQcm9wcz4oe1xuICByYXRpbmc6IG51bGwsXG4gIGlzUHJvY2Vzc2luZ1JhdGluZzogZmFsc2UsXG4gIGlzV2FpdGluZ1Jlc3BvbnNlOiBmYWxzZSxcbiAgaXNXYWl0aW5nVXNlcklucHV0OiBmYWxzZSxcbiAgY29udmVyc2F0aW9uOiBbXSxcbiAgb25OZXdDaGF0UmVxdWVzdDogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignb25OZXdDaGF0UmVxdWVzdCBoYXMgbm90IGJlZW4gY29uZmlndXJlZC4nKTtcbiAgfSxcbiAgb25OZXdDaGF0Q29uZmlybTogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignb25OZXdDaGF0Q29uZmlybSBoYXMgbm90IGJlZW4gY29uZmlndXJlZC4nKTtcbiAgfSxcbiAgb25SYXRlQ2hhdDogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignb25SYXRlQ2hhdCBoYXMgbm90IGJlZW4gY29uZmlndXJlZC4nKTtcbiAgfSxcbiAgb25TZW5kOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvblNlbmQgaGFzIG5vdCBiZWVuIGNvbmZpZ3VyZWQuJyk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IENoYXRDb250ZXh0UHJvdmlkZXIgPSAocHJvcHM6IFByb3BzV2l0aENoaWxkcmVuPENoYXRQcm92aWRlclByb3BzPikgPT4ge1xuICBjb25zdCB7IGFpSWQsIGFpQXBpVXJsLCBhaVNlcnZpY2UsIGlzUHJldmlldywgZ3JlZXRpbmcsIHBlcnNpc3RUaHJlYWQgPSBmYWxzZSwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICBjb25zdCBzZXNzaW9uU3RvcmFnZUlkID0gYHNxdWl6LWNoYXQtdWktaGlzdG9yeS0ke2FpSWR9YDtcbiAgY29uc3QgZHhwQWlDbGllbnQgPSB1c2VSZWY8RHhwQWlTZXJ2aWNlPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGV4ZWN1dG9yID0gdXNlUmVmPENoYXRCb3RDb21tYW5kRXhlY3V0b3IgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2lzV2FpdGluZ1Jlc3BvbnNlLCBzZXRJc1dhaXRpbmdSZXNwb25zZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFt0aHJlYWRTdGFydERhdGUsIHNldFRocmVhZFN0YXJ0RGF0ZV0gPSB1c2VTdGF0ZTxEYXRlPihuZXcgRGF0ZSgpKTtcbiAgY29uc3QgW2NvbnZlcnNhdGlvbiwgc2V0Q29udmVyc2F0aW9uXSA9IHVzZVN0YXRlPENvbnZlcnNhdGlvbkl0ZW1bXT4oW10pO1xuICBjb25zdCBbcmF0aW5nLCBzZXRSYXRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbaXNQcm9jZXNzaW5nUmF0aW5nLCBzZXRJc1Byb2Nlc3NpbmdSYXRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGdldFNhdmVkVXNlcklucHV0U3RhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY2hhdEhpc3RvcnlJdGVtID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzZXNzaW9uU3RvcmFnZUlkKTtcbiAgICBsZXQgaXNXYWl0aW5nVXNlcklucHV0ID0gZmFsc2U7XG5cbiAgICBpZiAoY2hhdEhpc3RvcnlJdGVtKSB7XG4gICAgICBjb25zdCBjaGF0SGlzdG9yeSA9IEpTT04ucGFyc2UoY2hhdEhpc3RvcnlJdGVtKTtcbiAgICAgIGlzV2FpdGluZ1VzZXJJbnB1dCA9IGNoYXRIaXN0b3J5LmlzV2FpdGluZ1VzZXJJbnB1dDtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNXYWl0aW5nVXNlcklucHV0O1xuICB9LCBbc2Vzc2lvblN0b3JhZ2VJZF0pO1xuXG4gIGNvbnN0IFtpc1dhaXRpbmdVc2VySW5wdXQsIHNldElzV2FpdGluZ1VzZXJJbnB1dF0gPSB1c2VTdGF0ZTxib29sZWFuPihwZXJzaXN0VGhyZWFkICYmIGdldFNhdmVkVXNlcklucHV0U3RhdGUoKSk7XG5cbiAgLy8gUmV0dXJuIHRoZSBjb21tYW5kIGV4ZWN1dG9yIG9yIGNyZWF0ZSBpZiBpdHMgbm90IHNldHVwIHlldCAod29ya2Fyb3VuZCBmb3IgdXNlUmVmIG5vdCB0YWtpbmcgYW4gaW5pdCBmdW5jdGlvbilcbiAgZnVuY3Rpb24gZ2V0Q29tbWFuZEV4ZWN1dG9yKCkge1xuICAgIGlmIChleGVjdXRvci5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZXhlY3V0b3IuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGFpU2VydmljZSkge1xuICAgICAgZHhwQWlDbGllbnQuY3VycmVudCA9IGFpU2VydmljZTtcbiAgICB9IGVsc2UgaWYgKGFpQXBpVXJsKSB7XG4gICAgICBkeHBBaUNsaWVudC5jdXJyZW50ID0gbmV3IER4cEFpU2VydmljZShcbiAgICAgICAgY3JlYXRlQ2xpZW50KHtcbiAgICAgICAgICBiYXNlVXJsOiBhaUFwaVVybCxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVzOiBhaUFwaVVybCBvciBhaVNlcnZpY2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIGNoYXRib3QuJyk7XG4gICAgfVxuICAgIGV4ZWN1dG9yLmN1cnJlbnQgPSBuZXcgQ2hhdEJvdENvbW1hbmRFeGVjdXRvcihkeHBBaUNsaWVudC5jdXJyZW50KTtcbiAgICByZXR1cm4gZXhlY3V0b3IuY3VycmVudDtcbiAgfVxuXG4gIC8vIEtlZXAgYSByZWYgdG8gdGhlIGNvbnZlcnNhdGlvbiBzbyBjYWxsYmFja3MgZnJvbSBzZW5kTWVzc2FnZSBoYXZlIHVwIHRvIGRhdGUgaGlzdG9yeSB0byBpbnNlcnQgaW50b1xuICBjb25zdCBjYWxsYmFja1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvbkl0ZW1bXTtcbiAgICB0aHJlYWRJZDogc3RyaW5nIHwgbnVsbDtcbiAgICB0aHJlYWRTdGFydERhdGU6IERhdGU7XG4gIH0+KHtcbiAgICBjb252ZXJzYXRpb246IFtdLFxuICAgIHRocmVhZElkOiBudWxsLFxuICAgIHRocmVhZFN0YXJ0RGF0ZSxcbiAgfSk7XG4gIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICBjb252ZXJzYXRpb24sXG4gICAgdGhyZWFkSWQ6IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCxcbiAgICB0aHJlYWRTdGFydERhdGUsXG4gIH07XG5cbiAgLy8gU2ltcGxlIGFkZCBtZXNzYWdlIGZ1bmN0aW9uXG4gIGNvbnN0IGFkZE1lc3NhZ2VzVG9Db252ZXJzYXRpb24gPSAobWVzc2FnZXM6IENvbnZlcnNhdGlvbkl0ZW1bXSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnZlcnNhdGlvbiA9IFsuLi5jYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQuY29udmVyc2F0aW9uLCAuLi5tZXNzYWdlc107XG4gICAgc2V0Q29udmVyc2F0aW9uKG5ld0NvbnZlcnNhdGlvbik7XG4gICAgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlKHsgY29udmVyc2F0aW9uOiBuZXdDb252ZXJzYXRpb24gfSk7XG4gIH07XG5cbiAgLy8gQ29tcGxleCBjb252ZXJzYXRpb24gY2hhbmdlIGZ1bmN0aW9uXG4gIGNvbnN0IGFsdGVyQ29udmVyc2F0aW9uID0gKGluc3RydWN0aW9uczogQ29udmVyc2F0aW9uSW5zdHJ1Y3Rpb25bXSkgPT4ge1xuICAgIGxldCBuZXdDb252ZXJzYXRpb24gPSBbLi4uY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LmNvbnZlcnNhdGlvbl07XG4gICAgaW5zdHJ1Y3Rpb25zLmZvckVhY2goKHsgaXRlbSwgaW5zdHJ1Y3Rpb24gfSkgPT4ge1xuICAgICAgLy8gQWRkIHRvIGVuZCBvZiBjb252ZXJzYXRpb25cbiAgICAgIGlmIChpbnN0cnVjdGlvbiA9PT0gJ2FkZCcpIHtcbiAgICAgICAgbmV3Q29udmVyc2F0aW9uID0gWy4uLm5ld0NvbnZlcnNhdGlvbiwgaXRlbV07XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uID09PSAncmVtb3ZlU2luZ2xlT2ZUeXBlJykge1xuICAgICAgICBjb25zdCByZW1vdmVUeXBlID0gKGl0ZW0gYXMgQ29udHJvbE1lc3NhZ2UpLnR5cGU7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xNZXNzYWdlSW5kZXggPSBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQuY29udmVyc2F0aW9uLmZpbmRJbmRleCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQ29udHJvbE1lc3NhZ2UgPSBPYmplY3QuaGFzT3duKG1lc3NhZ2UsICd0eXBlJyk7XG4gICAgICAgICAgY29uc3QgY29udHJvbE1lc3NhZ2UgPSBtZXNzYWdlIGFzIENvbnRyb2xNZXNzYWdlO1xuXG4gICAgICAgICAgaWYgKGlzQ29udHJvbE1lc3NhZ2UgJiYgY29udHJvbE1lc3NhZ2UudHlwZSA9PT0gcmVtb3ZlVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSB0eXBlIGZyb20gdGhlIGNvbnZlcnNhdGlvblxuICAgICAgICBpZiAoY29udHJvbE1lc3NhZ2VJbmRleCkge1xuICAgICAgICAgIG5ld0NvbnZlcnNhdGlvbi5zcGxpY2UoY29udHJvbE1lc3NhZ2VJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldENvbnZlcnNhdGlvbihuZXdDb252ZXJzYXRpb24pO1xuICAgIHVwZGF0ZVRocmVhZFNlc3Npb25TdGF0ZSh7IGNvbnZlcnNhdGlvbjogbmV3Q29udmVyc2F0aW9uIH0pO1xuICB9O1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBwZXJzaXN0IHRoZSB0aHJlYWQgaW50byB0aGUgc2Vzc2lvbiBzdG9yYWdlIGlmIGVuYWJsZWRcbiAgY29uc3QgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlID0gKHsgY29udmVyc2F0aW9uLCByYXRpbmcsIHRocmVhZElkIH06IENvbnZlcnNhdGlvblBlcnNpc3RQcm9wcykgPT4ge1xuICAgIGlmIChwZXJzaXN0VGhyZWFkKSB7XG4gICAgICAvLyBHZXQgdGhlIG9sZCBoaXN0b3J5IGZyb20gdGhlIHNlc3Npb24gc28gd2UgY2FuIGZpbGwgaW4gbWlzc2luZyBkZXRhaWxzXG4gICAgICBjb25zdCBjaGF0SGlzdG9yeUl0ZW0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlc3Npb25TdG9yYWdlSWQpO1xuICAgICAgbGV0IG9sZENoYXRIaXN0b3J5O1xuICAgICAgaWYgKGNoYXRIaXN0b3J5SXRlbSkge1xuICAgICAgICBvbGRDaGF0SGlzdG9yeSA9IEpTT04ucGFyc2UoY2hhdEhpc3RvcnlJdGVtKTtcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdmFsdWUgdG8gc2V0IHRoZSByYXRpbmcgdG8sIGNsZWFyZXIgdGhhbiBhIHRyaXBsZSB0ZXJuYXJ5XG4gICAgICBsZXQgbmV3UmF0aW5nID0gbnVsbDtcbiAgICAgIGlmIChyYXRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdSYXRpbmcgPSByYXRpbmc7XG4gICAgICB9IGVsc2UgaWYgKG9sZENoYXRIaXN0b3J5Py5yYXRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgbmV3UmF0aW5nID0gb2xkQ2hhdEhpc3Rvcnk/LnJhdGluZztcbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2VJZCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogdGhyZWFkSWQgfHwgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkLFxuICAgICAgICAgIGNvbnZlcnNhdGlvbjogY29udmVyc2F0aW9uIHx8IG9sZENoYXRIaXN0b3J5Py5jb252ZXJzYXRpb24sXG4gICAgICAgICAgcmF0aW5nOiBuZXdSYXRpbmcsXG4gICAgICAgICAgLi4uKGlzV2FpdGluZ1VzZXJJbnB1dCA/IHsgaXNXYWl0aW5nVXNlcklucHV0IH0gOiB7fSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkRXJyb3JNZXNzYWdlVG9Db252ZXJzYXRpb24gPSAoKSA9PiB7XG4gICAgYWRkTWVzc2FnZXNUb0NvbnZlcnNhdGlvbihbXG4gICAgICB7XG4gICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgdGV4dDogJ1RoZXJlIHdhcyBhIHByb2JsZW0gcmVzcG9uZGluZyB0byB5b3VyIG1lc3NhZ2UsIHBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICAgICAgc2VuZGVyOiAnRnJvbnRlbmQnLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfTtcblxuICAvLyBTdGFydCB1cCB0aGUgY2hhdGJvdCBleGVjdXRvciBhbmQgYWRkIHRoZSBncmVldGluZyBpbnRvIHRoZSBjb252ZXJzYXRpb24gaGlzdG9yeVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGdldENvbW1hbmRFeGVjdXRvcigpOyAvLyBTdGFydCB0aGUgY29tbWFuZCBleGVjdXRvclxuICAgIGlmIChwZXJzaXN0VGhyZWFkKSB7XG4gICAgICBjb25zdCBjaGF0SGlzdG9yeUl0ZW0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlc3Npb25TdG9yYWdlSWQpO1xuICAgICAgaWYgKGNoYXRIaXN0b3J5SXRlbSkge1xuICAgICAgICBjb25zdCBjaGF0SGlzdG9yeSA9IEpTT04ucGFyc2UoY2hhdEhpc3RvcnlJdGVtKTtcbiAgICAgICAgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkID0gY2hhdEhpc3RvcnkuY3VycmVudFRocmVhZElkO1xuICAgICAgICBhZGRNZXNzYWdlc1RvQ29udmVyc2F0aW9uKGNoYXRIaXN0b3J5LmNvbnZlcnNhdGlvbik7XG4gICAgICAgIGlmIChjaGF0SGlzdG9yeS5yYXRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgICBzZXRSYXRpbmcoY2hhdEhpc3RvcnkucmF0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldElzV2FpdGluZ1VzZXJJbnB1dChjaGF0SGlzdG9yeS5pc1dhaXRpbmdVc2VySW5wdXQpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgYWRkTWVzc2FnZXNUb0NvbnZlcnNhdGlvbihbXG4gICAgICB7XG4gICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgdGV4dDogZ3JlZXRpbmcsXG4gICAgICAgIHNlbmRlcjogJ0Zyb250ZW5kJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE9uIGNsZWFudXAgcmVzZXQgdGhlIHRocmVhZFN0YXJ0RGF0ZSBzbyBhbnkgaW4tZmxpZ2h0IG1lc3NhZ2VzIGdldCBpZ25vcmVkXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgLi4uY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LFxuICAgICAgICB0aHJlYWRTdGFydERhdGU6IG5ldyBEYXRlKCksXG4gICAgICB9O1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocGVyc2lzdFRocmVhZCAmJiBpc1dhaXRpbmdVc2VySW5wdXQgIT09IGdldFNhdmVkVXNlcklucHV0U3RhdGUoKSkge1xuICAgICAgLy8gVXBkYXRlIHdhaXRpbmcgdXNlciBpbnB1dCBzdGF0ZSBpbiBzZXNzaW9uLlxuICAgICAgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlKHt9KTtcbiAgICB9XG4gIH0sIFtpc1dhaXRpbmdVc2VySW5wdXRdKTtcblxuICBjb25zdCBoYW5kbGVPblNlbmQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBBZGQgdXNlcnMgbWVzc2FnZSB0byBjb252ZXJzYXRpb24gaGlzdG9yeVxuICAgICAgYWRkTWVzc2FnZXNUb0NvbnZlcnNhdGlvbihbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgICAgICBzZW5kZXI6ICdVc2VyJyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuXG4gICAgICBzZXRJc1dhaXRpbmdSZXNwb25zZSh0cnVlKTtcbiAgICAgIHNldElzV2FpdGluZ1VzZXJJbnB1dChmYWxzZSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldENvbW1hbmRFeGVjdXRvcigpLmV4ZWN1dGUoYWlJZCwgJ3Byb2Nlc3NDaGF0TWVzc2FnZScsIHtcbiAgICAgICAgICBpc1ByZXZpZXcsXG4gICAgICAgICAgcXVlcnk6IG1lc3NhZ2UsXG4gICAgICAgICAgdGhyZWFkSWQ6IGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENoZWNrIHRoaXMgcmVzcG9uc2UgaXMgZm9yIHRoaXMgdGhyZWFkIGJhc2VkIG9uIHRoZSB0aHJlYWRTdGFydERhdGUsIGlmIG5vdCBlcXVhbCB0aGUgcmVzcG9uc2UgaXMgZm9yIGFuIG9sZCB0aHJlYWRcbiAgICAgICAgaWYgKHRocmVhZFN0YXJ0RGF0ZSA9PT0gY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZFN0YXJ0RGF0ZSkge1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGhyZWFkSWQgaWYgd2UgZG9uJ3QgaGF2ZSBvbmVcbiAgICAgICAgICBpZiAoIWNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCkge1xuICAgICAgICAgICAgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkID0gcmVzcG9uc2Uub3V0cHV0cy50aHJlYWQuaWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIHNlcnZlciByZXNwb25zZSB0byBjb252ZXJzYXRpb24gaGlzdG9yeVxuICAgICAgICAgIGFkZE1lc3NhZ2VzVG9Db252ZXJzYXRpb24oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHRleHQ6IHJlc3BvbnNlLm91dHB1dHMubWVzc2FnZS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgc2VuZGVyOiAnU2VydmVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIC8vIENoZWNrIHRoaXMgZXJyb3IgaXMgZm9yIHRoaXMgdGhyZWFkIGJhc2VkIG9uIHRoZSB0aHJlYWRTdGFydERhdGUsIGlmIG5vdCBlcXVhbCB0aGUgZXJyb3IgaXMgZm9yIGFuIG9sZCB0aHJlYWRcbiAgICAgICAgaWYgKHRocmVhZFN0YXJ0RGF0ZSA9PT0gY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZFN0YXJ0RGF0ZSkge1xuICAgICAgICAgIC8vIEFuIGVycm9yIGlzIHN0b3JlZCBpbiBlcnJvci5lcnJvci5tZXNzYWdlIGJ1dCBpdCBtaWdodCBub3QgYmUgdXNlciBzYWZlXG4gICAgICAgICAgYWRkRXJyb3JNZXNzYWdlVG9Db252ZXJzYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhyZWFkU3RhcnREYXRlID09PSBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkU3RhcnREYXRlKSB7XG4gICAgICAgIHNldElzV2FpdGluZ1Jlc3BvbnNlKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc1ByZXZpZXcsIHRocmVhZFN0YXJ0RGF0ZV0sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlT25OZXdDaGF0UmVxdWVzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc1dhaXRpbmdVc2VySW5wdXQodHJ1ZSk7XG4gICAgc2V0SXNXYWl0aW5nUmVzcG9uc2UoZmFsc2UpO1xuICAgIGFkZE1lc3NhZ2VzVG9Db252ZXJzYXRpb24oW1xuICAgICAge1xuICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgIHRleHQ6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc3RhcnQgYSBuZXcgY2hhdD8nLFxuICAgICAgICBzZW5kZXI6ICdGcm9udGVuZCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgIHR5cGU6ICduZXdDaGF0UmVxdWVzdCcsXG4gICAgICB9LFxuICAgIF0pO1xuICB9LCBbZ3JlZXRpbmddKTtcblxuICBjb25zdCBoYW5kbGVPbk5ld0NoYXRDb25maXJtID0gdXNlQ2FsbGJhY2soXG4gICAgKHllc1Jlc3BvbnNlOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoeWVzUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gUmVzZXQgdGhlIHRocmVhZCB0byBudWxsXG4gICAgICAgIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCA9IG51bGw7XG4gICAgICAgIHNldElzV2FpdGluZ1Jlc3BvbnNlKGZhbHNlKTtcbiAgICAgICAgc2V0SXNXYWl0aW5nVXNlcklucHV0KGZhbHNlKTtcbiAgICAgICAgc2V0VGhyZWFkU3RhcnREYXRlKG5ldyBEYXRlKCkpOyAvLyBSZXN0YXJ0IHRoZSB0aHJlYWQgYWdlXG4gICAgICAgIHNldFJhdGluZyhudWxsKTtcbiAgICAgICAgc2V0SXNQcm9jZXNzaW5nUmF0aW5nKGZhbHNlKTtcbiAgICAgICAgdXBkYXRlVGhyZWFkU2Vzc2lvblN0YXRlKHsgdGhyZWFkSWQ6IG51bGwsIHJhdGluZzogbnVsbCB9KTtcblxuICAgICAgICBhbHRlckNvbnZlcnNhdGlvbihbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdhZGQnLFxuICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHRleHQ6ICdZZXMnLFxuICAgICAgICAgICAgICBzZW5kZXI6ICdVc2VyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjogJ2FkZCcsXG4gICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ25ld0NoYXRCcmVhaycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdhZGQnLFxuICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHRleHQ6IGdyZWV0aW5nLFxuICAgICAgICAgICAgICBzZW5kZXI6ICdGcm9udGVuZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246ICdyZW1vdmVTaW5nbGVPZlR5cGUnLFxuICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgIHR5cGU6ICduZXdDaGF0UmVxdWVzdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNXYWl0aW5nVXNlcklucHV0KGZhbHNlKTtcbiAgICAgICAgYWx0ZXJDb252ZXJzYXRpb24oW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiAnYWRkJyxcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0ZXh0OiAnTm8nLFxuICAgICAgICAgICAgICBzZW5kZXI6ICdVc2VyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbjogJ2FkZCcsXG4gICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgICAgdGV4dDogJ09rLCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgY2FuIGhlbHAgeW91IHdpdGg/JyxcbiAgICAgICAgICAgICAgc2VuZGVyOiAnRnJvbnRlbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uOiAncmVtb3ZlU2luZ2xlT2ZUeXBlJyxcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgICB0eXBlOiAnbmV3Q2hhdFJlcXVlc3QnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtncmVldGluZ10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlT25SYXRlQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChwb3NpdGl2ZVJhdGluZzogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGR4cEFpQ2xpZW50LmN1cnJlbnQgJiYgY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZElkICYmICFpc1Byb2Nlc3NpbmdSYXRpbmcpIHtcbiAgICAgICAgc2V0SXNQcm9jZXNzaW5nUmF0aW5nKHRydWUpO1xuICAgICAgICBzZXRSYXRpbmcocG9zaXRpdmVSYXRpbmcpO1xuICAgICAgICB1cGRhdGVUaHJlYWRTZXNzaW9uU3RhdGUoeyByYXRpbmc6IHBvc2l0aXZlUmF0aW5nIH0pO1xuICAgICAgICBpZiAocG9zaXRpdmVSYXRpbmcpIHtcbiAgICAgICAgICBhd2FpdCBkeHBBaUNsaWVudC5jdXJyZW50LmNoYXRib3QucmF0ZShhaUlkLCBjYWxsYmFja1N0YXRlUmVmLmN1cnJlbnQudGhyZWFkSWQsIHsgcmF0aW5nOiAncG9zaXRpdmUnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGR4cEFpQ2xpZW50LmN1cnJlbnQuY2hhdGJvdC5yYXRlKGFpSWQsIGNhbGxiYWNrU3RhdGVSZWYuY3VycmVudC50aHJlYWRJZCwgeyByYXRpbmc6ICduZWdhdGl2ZScgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRocmVhZFN0YXJ0RGF0ZSA9PT0gY2FsbGJhY2tTdGF0ZVJlZi5jdXJyZW50LnRocmVhZFN0YXJ0RGF0ZSkge1xuICAgICAgICAgIHNldElzUHJvY2Vzc2luZ1JhdGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1Byb2Nlc3NpbmdSYXRpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByZXZpb3VzIHJhdGluZyBpcyBzdGlsbCBwcm9jZXNzaW5nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaHJlYWQgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FpSWQsIHRocmVhZFN0YXJ0RGF0ZSwgaXNQcm9jZXNzaW5nUmF0aW5nXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDaGF0Q29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgcmF0aW5nLFxuICAgICAgICBpc1Byb2Nlc3NpbmdSYXRpbmcsXG4gICAgICAgIGlzV2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgICBpc1dhaXRpbmdVc2VySW5wdXQsXG4gICAgICAgIGNvbnZlcnNhdGlvbixcbiAgICAgICAgb25OZXdDaGF0UmVxdWVzdDogaGFuZGxlT25OZXdDaGF0UmVxdWVzdCxcbiAgICAgICAgb25OZXdDaGF0Q29uZmlybTogaGFuZGxlT25OZXdDaGF0Q29uZmlybSxcbiAgICAgICAgb25SYXRlQ2hhdDogaGFuZGxlT25SYXRlQ2hhdCxcbiAgICAgICAgb25TZW5kOiBoYW5kbGVPblNlbmQsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0NoYXRDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcbiJdfQ==
{
"name": "@squiz/chat-ui",
"version": "1.3.0",
"version": "1.4.0",
"main": "dist/index.js",

@@ -5,0 +5,0 @@ "types": "dist/index.d.ts",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc