@fundamental-ngx/platform 0.58.0-rc.68 → 0.58.0-rc.69

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.
Files changed (23) hide show
  1. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +7 -8
  2. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-platform-form.mjs +4 -5
  4. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +4 -5
  6. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-platform-list.mjs +1 -3
  8. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +1 -2
  10. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +1 -2
  12. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +2 -3
  14. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-platform-table.mjs +1 -2
  16. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -3
  18. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +1 -2
  20. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +3 -4
  22. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  23. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-approval-flow.mjs","sources":["../tmp-esm2022/approval-flow/helpers/index.js","../tmp-esm2022/approval-flow/approval-flow-graph.js","../tmp-esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.js","../tmp-esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.js","../tmp-esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.js","../tmp-esm2022/approval-flow/services/approval-flow-add-node-view.service.js","../tmp-esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.js","../tmp-esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.js","../tmp-esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.js","../tmp-esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.js","../tmp-esm2022/approval-flow/approval-flow-node/approval-flow-node.component.js","../tmp-esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.js","../tmp-esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.js","../tmp-esm2022/approval-flow/approval-flow.component.js","../tmp-esm2022/approval-flow/approval-flow.module.js","../tmp-esm2022/approval-flow/fundamental-ngx-platform-approval-flow.js"],"sourcesContent":["/** @hidden */\nexport function isNodeApproved(node) {\n return node.status === 'approved';\n}\n/** @hidden */\nexport function isNodeStarted(node) {\n return node.status !== 'not started';\n}\n/** @hidden */\nexport function displayTeamFn(team) {\n return team?.name;\n}\n/** @hidden */\nexport function displayUserFn(user) {\n return user?.name;\n}\n/** @hidden */\nexport function userValueFn(user) {\n return user?.id;\n}\n/** @hidden */\nexport function filterByName(obj, searchString) {\n return obj.name.toLowerCase().indexOf(searchString.toLowerCase()) > -1;\n}\n/** @hidden */\nexport function trackByFn(index, item) {\n return item?.id ?? index;\n}\n/** @hidden */\nexport function getGraphNodes(graph) {\n return graph.columns.reduce((acc, column) => acc.concat(column.nodes), []);\n}\n/** @hidden */\nexport function getParentNodes(node, nodes) {\n return nodes.filter((_node) => isNodeTargetsIncludeId(_node, node.id));\n}\n/** @hidden */\nexport function getBlankApprovalGraphNode() {\n return {\n id: `blankId${(Math.random() * 1000).toFixed()}`,\n name: '',\n targets: [],\n approvers: [],\n status: 'not started',\n blank: true\n };\n}\n/** @hidden */\nexport function getSpaceApprovalGraphNode() {\n return {\n id: `spaceId${(Math.random() * 1000).toFixed()}`,\n name: '',\n targets: [],\n approvers: [],\n status: 'not started',\n space: true\n };\n}\n/** @hidden */\nexport function isNodeTargetsIncludeId(node, id) {\n return node.targets.includes(id);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxjQUFjO0FBQ2QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFrQjtJQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFrQjtJQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFrQjtJQUM1QyxPQUFPLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEIsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWtCO0lBQzVDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQztBQUN0QixDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBa0I7SUFDMUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFxQixFQUFFLFlBQW9CO0lBQ3BFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFvQjtJQUN6RCxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDO0FBQzdCLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUF3QjtJQUNsRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQXVCLEVBQUUsQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFrQixFQUFFLEtBQXFCO0lBQ3BFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLHlCQUF5QjtJQUNyQyxPQUFPO1FBQ0gsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxFQUFFLEVBQUU7UUFDUixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsTUFBTSxFQUFFLGFBQWE7UUFDckIsS0FBSyxFQUFFLElBQUk7S0FDZCxDQUFDO0FBQ04sQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUseUJBQXlCO0lBQ3JDLE9BQU87UUFDSCxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEVBQUUsRUFBRTtRQUNSLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLEVBQUU7UUFDYixNQUFNLEVBQUUsYUFBYTtRQUNyQixLQUFLLEVBQUUsSUFBSTtLQUNkLENBQUM7QUFDTixDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFrQixFQUFFLEVBQVU7SUFDakUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwcm92YWxGbG93R3JhcGggfSBmcm9tICcuLi9hcHByb3ZhbC1mbG93LWdyYXBoJztcbmltcG9ydCB7IEFwcHJvdmFsR3JhcGhOb2RlLCBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlQXBwcm92ZWQobm9kZTogQXBwcm92YWxOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuc3RhdHVzID09PSAnYXBwcm92ZWQnO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVN0YXJ0ZWQobm9kZTogQXBwcm92YWxOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuc3RhdHVzICE9PSAnbm90IHN0YXJ0ZWQnO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlUZWFtRm4odGVhbTogQXBwcm92YWxUZWFtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGVhbT8ubmFtZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5VXNlckZuKHVzZXI6IEFwcHJvdmFsVXNlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVzZXI/Lm5hbWU7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlclZhbHVlRm4odXNlcjogQXBwcm92YWxVc2VyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXNlcj8uaWQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlOYW1lKG9iajogeyBuYW1lOiBzdHJpbmcgfSwgc2VhcmNoU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSA+IC0xO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmcgfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkID8/IGluZGV4O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdyYXBoTm9kZXMoZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoKTogQXBwcm92YWxHcmFwaE5vZGVbXSB7XG4gICAgcmV0dXJuIGdyYXBoLmNvbHVtbnMucmVkdWNlKChhY2MsIGNvbHVtbikgPT4gYWNjLmNvbmNhdChjb2x1bW4ubm9kZXMpLCA8QXBwcm92YWxHcmFwaE5vZGVbXT5bXSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZXMobm9kZTogQXBwcm92YWxOb2RlLCBub2RlczogQXBwcm92YWxOb2RlW10pOiBBcHByb3ZhbE5vZGVbXSB7XG4gICAgcmV0dXJuIG5vZGVzLmZpbHRlcigoX25vZGUpID0+IGlzTm9kZVRhcmdldHNJbmNsdWRlSWQoX25vZGUsIG5vZGUuaWQpKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCbGFua0FwcHJvdmFsR3JhcGhOb2RlKCk6IEFwcHJvdmFsR3JhcGhOb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogYGJsYW5rSWQkeyhNYXRoLnJhbmRvbSgpICogMTAwMCkudG9GaXhlZCgpfWAsXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICB0YXJnZXRzOiBbXSxcbiAgICAgICAgYXBwcm92ZXJzOiBbXSxcbiAgICAgICAgc3RhdHVzOiAnbm90IHN0YXJ0ZWQnLFxuICAgICAgICBibGFuazogdHJ1ZVxuICAgIH07XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BhY2VBcHByb3ZhbEdyYXBoTm9kZSgpOiBBcHByb3ZhbEdyYXBoTm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGBzcGFjZUlkJHsoTWF0aC5yYW5kb20oKSAqIDEwMDApLnRvRml4ZWQoKX1gLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgdGFyZ2V0czogW10sXG4gICAgICAgIGFwcHJvdmVyczogW10sXG4gICAgICAgIHN0YXR1czogJ25vdCBzdGFydGVkJyxcbiAgICAgICAgc3BhY2U6IHRydWVcbiAgICB9O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobm9kZTogQXBwcm92YWxOb2RlLCBpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUudGFyZ2V0cy5pbmNsdWRlcyhpZCk7XG59XG4iXX0=","import { getBlankApprovalGraphNode, getGraphNodes, getParentNodes, getSpaceApprovalGraphNode, isNodeApproved, isNodeStarted, isNodeTargetsIncludeId } from './helpers';\n/** Algorithm in short:\n * 1. Find all possible paths (longest path length = amount of the columns in the graph)\n * 2. Trim paths (remove blank nodes at the end of the paths)\n * 3. Make all paths the same length (= longest path length) to make every unique node be present at the same index across all paths\n * 4. Sort paths by their likeness between each other to avoid paths crossing\n * 5. Remove \"duplicate\" nodes in paths (make every unique node be present only once across all paths)\n * 6. Remove empty paths\n * 7. Transform paths into the columns\n * 8. Trim columns (remove space nodes at the end of columns)\n * 9. Remove columns which contain only blank and empty nodes\n * 10. Transform columns into the graph columns\n */\nexport function generateApprovalFlowGraph(nodes) {\n const graph = { columns: [], errors: false };\n if (!nodes.length) {\n return graph;\n }\n const rootNodes = findRootNodes(nodes);\n const finalNodes = findFinalNodes(nodes);\n if (!rootNodes.length || !finalNodes.length) {\n console.warn(`Err: Not possible to build graph because root or final nodes aren't present!`);\n graph.errors = true;\n return graph;\n }\n const paths = getPaths(rootNodes, nodes);\n if (!paths.length) {\n console.warn('Err: Not possible to build graph!');\n graph.errors = true;\n return graph;\n }\n const trimmedPaths = trimPaths(paths);\n const sameLengthPaths = makePathsSameLength(trimmedPaths);\n const pathsBySimilarity = sortPaths(sameLengthPaths);\n const pathsWithUniqueNodes = removeDuplicateNodes(pathsBySimilarity);\n const notEmptyPaths = removeEmptyPaths(pathsWithUniqueNodes);\n const columns = getColumnsFromPaths(notEmptyPaths);\n const trimmedColumns = trimColumns(columns);\n const notEmptyColumns = removeEmptyColumns(trimmedColumns);\n graph.columns = getGraphColumnsFromPaths(notEmptyColumns);\n return graph;\n}\n/** Generate graph metadata */\nexport function generateApprovalFlowGraphMetadata(graph) {\n const nodes = getGraphNodes(graph);\n const metadata = {};\n graph.columns.forEach((column, columnIndex) => {\n column.nodes.forEach((node, nodeIndex) => {\n const parents = getParentNodes(node, nodes);\n const parentsApproved = parents.length ? parents.every((_node) => isNodeApproved(_node)) : false;\n const isRoot = !parents.length && !node.space;\n const isFinal = !node.targets.length && !node.space;\n const parallelEnd = parents.length > 1;\n const firstOfMultipleRootNodes = columnIndex === 0 && column.nodes.length > 1 && nodeIndex === 0;\n const firstOfMultipleFinalNodes = columnIndex === graph.columns.length - 1 && column.nodes.length > 1 && nodeIndex === 0;\n metadata[node.id] = {\n parents,\n isRoot,\n isFinal,\n parallelStart: node.targets.length > 1,\n parallelEnd,\n columnIndex,\n nodeIndex,\n canAddNodeBefore: !isNodeStarted(node) && !parentsApproved,\n canAddNodeBeforeAll: isRoot && firstOfMultipleRootNodes,\n canAddNodeAfter: !isNodeApproved(node),\n canAddNodeAfterAll: !isNodeApproved(node) && ((isFinal && firstOfMultipleFinalNodes) || (parallelEnd && node.blank)),\n canAddParallel: !isNodeApproved(node),\n isVerticalLineBeforeSolid: node.space && graph.columns[columnIndex - 1]?.allNodesApproved,\n isVerticalLineAfterSolid: node.space && column.allNodesApproved,\n firstOfMultipleRootNodes,\n firstOfMultipleFinalNodes,\n rootNodesApproved: columnIndex === 0 && column.allNodesApproved\n };\n });\n });\n /* Some flags can be calculated only on the second run, when all nodes already have base metadata */\n graph.columns.forEach((column) => {\n column.nodes.forEach((node, nodeIndex) => {\n const nodeMetadata = metadata[node.id];\n nodeMetadata.isLastInParallel = metadata[node.targets[0]]?.parallelEnd;\n nodeMetadata.isFirstInParallel = metadata[nodeMetadata.parents[0]?.id]?.parallelStart;\n const columnIndex = column.index;\n const graphPrevColumn = columnIndex ? graph.columns[columnIndex - 1] : undefined;\n const graphNextColumn = columnIndex ? graph.columns[columnIndex + 1] : undefined;\n const prevHNode = graphPrevColumn?.nodes[nodeIndex];\n const nextHNode = graphNextColumn?.nodes[nodeIndex];\n nodeMetadata.renderAddNodeAfterButton =\n nodeMetadata.canAddNodeAfter &&\n (nodeMetadata.isFinal ||\n nodeMetadata.parallelStart ||\n nodeMetadata.isLastInParallel ||\n nextHNode?.blank);\n const nextColumnNodes = graphNextColumn?.nodes;\n if (nodeMetadata.parallelStart && nextColumnNodes) {\n const children = nextColumnNodes.filter((_node) => node.targets.includes(_node.id));\n const firstChildIndex = nextColumnNodes.findIndex((_node) => _node.id === children[0].id);\n const lastChildIndex = nextColumnNodes.findIndex((_node) => _node.id === children[children.length - 1].id);\n for (let i = firstChildIndex + 1; i <= lastChildIndex; i++) {\n metadata[nextColumnNodes[i].id].renderVerticalLineBefore = true;\n }\n }\n const prevColumnNodes = graphPrevColumn?.nodes;\n if (nodeMetadata.parallelEnd && prevColumnNodes) {\n const firstParentIndex = prevColumnNodes.findIndex((_node) => _node.id === nodeMetadata.parents[0].id);\n const lastParentIndex = prevColumnNodes.findIndex((_node) => _node.id === nodeMetadata.parents[nodeMetadata.parents.length - 1].id);\n for (let i = firstParentIndex + 1; i <= lastParentIndex; i++) {\n metadata[prevColumnNodes[i].id].renderVerticalLineAfter = true;\n }\n }\n nodeMetadata.renderVerticalLineBefore = !nodeMetadata.renderVerticalLineBefore\n ? nodeIndex > 0 && !prevHNode\n : true;\n nodeMetadata.renderVerticalLineAfter = !nodeMetadata.renderVerticalLineAfter\n ? nodeIndex > 0 && !nextHNode\n : true;\n });\n });\n return metadata;\n}\nfunction findRootNodes(nodes) {\n return nodes.filter((node) => nodes.every((n) => !isNodeTargetsIncludeId(n, node.id)));\n}\nfunction findFinalNodes(nodes) {\n return nodes.filter((node) => !node.targets.length);\n}\n/** Find all possible paths (longest path length = amount of the columns in the graph) */\nfunction getPaths(rootNodes, nodes) {\n const paths = [];\n const queue = [];\n for (let i = 0; i < rootNodes.length; i++) {\n queue.push([rootNodes[i]]);\n while (queue.length) {\n const path = queue.pop();\n let lastNodeInPath;\n if (path) {\n lastNodeInPath = path[path.length - 1];\n }\n /** Indicates about an error */\n if (!lastNodeInPath) {\n return [];\n }\n if (!lastNodeInPath.targets.length) {\n paths.push(path);\n }\n else {\n lastNodeInPath.targets.forEach((targetId) => {\n const targetNode = nodes.find((node) => node.id === targetId);\n if (!targetNode) {\n return;\n }\n const newPath = [...path, targetNode];\n queue.push(newPath);\n });\n }\n }\n }\n return paths;\n}\n/** Trim paths (remove blank nodes at the end of the paths) */\nfunction trimPaths(paths) {\n const processedPaths = [];\n paths.forEach((path) => {\n let indexToSlice = path.length - 1;\n for (let i = path.length - 1; i > 0; --i) {\n if (path[i].blank) {\n indexToSlice = i - 1;\n }\n else {\n break;\n }\n }\n path[indexToSlice].targets = [];\n processedPaths.push(path.slice(0, indexToSlice + 1));\n });\n return processedPaths;\n}\n/** Make all paths the same length (= longest path length) to make every unique node be present at the same index across all paths */\nfunction makePathsSameLength(paths) {\n const processedPaths = [];\n const pathLengths = paths.map((path) => path.length);\n const longestPathLength = Math.max(...pathLengths);\n paths.forEach((path) => {\n if (path.length === longestPathLength) {\n processedPaths.push(path);\n return;\n }\n path.forEach((node, nodeIndex) => {\n /** Try to get blank nodes from already processed paths as paths may be the same within some part */\n let blankNodes = getBlankNodesAfterNode(node, processedPaths);\n if (blankNodes.length && blankNodes[0].id !== path[nodeIndex + 1]?.id) {\n path.splice(nodeIndex + 1, 0, ...blankNodes);\n return;\n }\n const nodeIndexInPaths = paths.map((_path) => _path.indexOf(node));\n const mostFarNodeIndexInPaths = Math.max(...nodeIndexInPaths);\n if (nodeIndex < mostFarNodeIndexInPaths) {\n blankNodes = getBlankNodes(mostFarNodeIndexInPaths - nodeIndex, path[nodeIndex - 1].status);\n blankNodes[blankNodes.length - 1].targets = [node.id];\n path[nodeIndex - 1].targets = [blankNodes[0].id];\n path.splice(nodeIndex, 0, ...blankNodes);\n return;\n }\n if (nodeIndex === mostFarNodeIndexInPaths && nodeIndex === path.length - 1) {\n blankNodes = getBlankNodes(longestPathLength - path.length, path[nodeIndex].status);\n path[nodeIndex].targets = [blankNodes[0].id];\n path.splice(nodeIndex + 1, 0, ...blankNodes);\n return;\n }\n });\n processedPaths.push(path);\n });\n return processedPaths;\n}\n/** Try to get blank nodes from already processed paths as paths may be the same within some part */\nfunction getBlankNodesAfterNode(node, paths) {\n const blankNodes = [];\n const pathWithBlankNodeAfter = paths.find((path) => {\n const nodeIndex = path.indexOf(node);\n return nodeIndex > -1 && path[nodeIndex + 1]?.blank;\n });\n if (pathWithBlankNodeAfter) {\n const nodeIndex = pathWithBlankNodeAfter.indexOf(node) + 1;\n const nextNotBlankNodeIndex = pathWithBlankNodeAfter.findIndex((_node, _index) => _index > nodeIndex && !_node.blank);\n blankNodes.push(...pathWithBlankNodeAfter.slice(nodeIndex, nextNotBlankNodeIndex > 0 ? nextNotBlankNodeIndex : undefined));\n }\n return blankNodes;\n}\n/** Generate blank nodes sequential */\nfunction getBlankNodes(count, status) {\n const nodes = [];\n let node;\n let nodeId;\n for (let i = count; i > 0; i--) {\n node = Object.assign({}, getBlankApprovalGraphNode(), { targets: nodeId ? [nodeId] : [], status });\n nodeId = node.id;\n nodes.unshift(node);\n }\n return nodes;\n}\n/** Sort paths by their likeness (= count of the same nodes relatively to the other paths) between each other to avoid paths crossing */\nfunction sortPaths(paths) {\n if (paths.length === 1) {\n return paths;\n }\n /** [pathIndex, relativeToPathIndex, sameNodesCount][] */\n let similarities = [];\n let pathSimilarity = 0;\n paths.forEach((path, index) => {\n for (let i = 0; i < paths.length; i++) {\n if (index !== i && !similarities.some((likely) => index === likely[1] && i === likely[0])) {\n pathSimilarity = 0;\n for (let j = 0; j < path.length; j++) {\n if (path[j].id === paths[i][j].id) {\n pathSimilarity++;\n }\n }\n similarities.push([index, i, pathSimilarity]);\n }\n }\n });\n similarities = similarities.sort((a, b) => (a[2] > b[2] ? -1 : 1));\n const usedPathIndexes = [];\n const processedPaths = [];\n similarities.forEach((similarity) => {\n if (!usedPathIndexes.some((i) => i === similarity[0])) {\n processedPaths.push(paths[similarity[0]]);\n usedPathIndexes.push(similarity[0]);\n }\n if (!usedPathIndexes.some((i) => i === similarity[1])) {\n processedPaths.push(paths[similarity[1]]);\n usedPathIndexes.push(similarity[1]);\n }\n });\n return processedPaths;\n}\n/** Remove \"duplicate\" nodes in paths (make every unique node be present only once across all paths) */\nfunction removeDuplicateNodes(paths) {\n const processedPaths = [];\n paths.forEach((path, index) => {\n path.forEach((node) => {\n paths.forEach((_path, _index) => {\n const isNodeInPath = _index !== index && _path.indexOf(node) > -1;\n if (isNodeInPath) {\n /** Instead of node place space node */\n _path.splice(_path.indexOf(node), 1, getSpaceApprovalGraphNode());\n }\n });\n });\n processedPaths.push(path);\n });\n return processedPaths;\n}\n/** Remove empty paths (which contains only empty nodes) */\nfunction removeEmptyPaths(paths) {\n return paths.reduce((acc, path) => {\n if (!path.every((node) => node.space)) {\n acc.push(path);\n }\n return acc;\n }, []);\n}\n/** Transform paths into the columns (it's possible as they're all the same length) */\nfunction getColumnsFromPaths(paths) {\n const columns = [];\n let column = [];\n for (let i = 0; i < paths[0].length; i++) {\n column = [];\n for (let v = 0; v < paths.length; v++) {\n column.push(paths[v][i]);\n }\n columns.push(column);\n }\n return columns;\n}\n/** Trim space nodes at the end of the columns. */\nfunction trimColumns(columns) {\n const processedColumns = [];\n columns.forEach((column) => {\n let lastNotSpaceNodeIndex;\n for (let i = column.length - 1; i >= 0; i--) {\n if (!column[i].space) {\n lastNotSpaceNodeIndex = i;\n break;\n }\n }\n if (lastNotSpaceNodeIndex < column.length) {\n processedColumns.push(column.slice(0, lastNotSpaceNodeIndex + 1));\n }\n else {\n processedColumns.push(column);\n }\n });\n return processedColumns;\n}\n/** Remove empty columns (where every node is a blank node) */\nfunction removeEmptyColumns(columns) {\n const processedColumns = [];\n columns.forEach((column) => {\n const areAllNodesEmpty = column.every((node) => node.blank || node.space);\n if (areAllNodesEmpty) {\n column.forEach((node) => {\n if (node.blank) {\n /** Connect previous column to the next column, omitting current column. */\n replaceTargets(node.id, node.targets, columns);\n }\n });\n }\n else {\n processedColumns.push(column);\n }\n });\n return processedColumns;\n}\nfunction replaceTargets(replaceId, replaceWithId, columns) {\n columns.forEach((column) => {\n column.forEach((n) => {\n if (isNodeTargetsIncludeId(n, replaceId)) {\n n.targets = n.targets.filter((_id) => _id !== replaceId);\n n.targets.push(...replaceWithId);\n }\n });\n });\n}\n/** Transform columns into the graph columns (with additional metadata). */\nfunction getGraphColumnsFromPaths(columns) {\n const graphColumns = [];\n columns.forEach((column, index) => {\n column.forEach((node) => (node.colIndex = index));\n graphColumns.push({\n nodes: column,\n index,\n allNodesApproved: column.every((node) => isNodeApproved(node))\n });\n });\n return graphColumns;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsYUFBYSxFQUNiLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsRUFDekIsTUFBTSxXQUFXLENBQUM7QUFpQm5COzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQTBCO0lBQ2hFLE1BQU0sS0FBSyxHQUFzQixFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRWhFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1FBQzdGLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXpDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxNQUFN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LEtBQUssRUFBRSxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxELFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUs7WUFDTCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwcm92YWxHcmFwaE5vZGUsIEFwcHJvdmFsR3JhcGhOb2RlTWV0YWRhdGEsIEFwcHJvdmFsTm9kZSwgQXBwcm92YWxTdGF0dXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICAgIGdldEJsYW5rQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgZ2V0R3JhcGhOb2RlcyxcbiAgICBnZXRQYXJlbnROb2RlcyxcbiAgICBnZXRTcGFjZUFwcHJvdmFsR3JhcGhOb2RlLFxuICAgIGlzTm9kZUFwcHJvdmVkLFxuICAgIGlzTm9kZVN0YXJ0ZWQsXG4gICAgaXNOb2RlVGFyZ2V0c0luY2x1ZGVJZFxufSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsRmxvd0dyYXBoIHtcbiAgICBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoQ29sdW1uW107XG4gICAgZXJyb3JzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEdyYXBoQ29sdW1uIHtcbiAgICBub2RlczogQXBwcm92YWxHcmFwaE5vZGVbXTtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBhbGxOb2Rlc0FwcHJvdmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEdyYXBoTWV0YWRhdGEge1xuICAgIFtrZXk6IHN0cmluZ106IEFwcHJvdmFsR3JhcGhOb2RlTWV0YWRhdGE7XG59XG5cbi8qKiBBbGdvcml0aG0gaW4gc2hvcnQ6XG4gKiAxLiBGaW5kIGFsbCBwb3NzaWJsZSBwYXRocyAobG9uZ2VzdCBwYXRoIGxlbmd0aCA9IGFtb3VudCBvZiB0aGUgY29sdW1ucyBpbiB0aGUgZ3JhcGgpXG4gKiAyLiBUcmltIHBhdGhzIChyZW1vdmUgYmxhbmsgbm9kZXMgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aHMpXG4gKiAzLiBNYWtlIGFsbCBwYXRocyB0aGUgc2FtZSBsZW5ndGggKD0gbG9uZ2VzdCBwYXRoIGxlbmd0aCkgdG8gbWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IGF0IHRoZSBzYW1lIGluZGV4IGFjcm9zcyBhbGwgcGF0aHNcbiAqIDQuIFNvcnQgcGF0aHMgYnkgdGhlaXIgbGlrZW5lc3MgYmV0d2VlbiBlYWNoIG90aGVyIHRvIGF2b2lkIHBhdGhzIGNyb3NzaW5nXG4gKiA1LiBSZW1vdmUgXCJkdXBsaWNhdGVcIiBub2RlcyBpbiBwYXRocyAobWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IG9ubHkgb25jZSBhY3Jvc3MgYWxsIHBhdGhzKVxuICogNi4gUmVtb3ZlIGVtcHR5IHBhdGhzXG4gKiA3LiBUcmFuc2Zvcm0gcGF0aHMgaW50byB0aGUgY29sdW1uc1xuICogOC4gVHJpbSBjb2x1bW5zIChyZW1vdmUgc3BhY2Ugbm9kZXMgYXQgdGhlIGVuZCBvZiBjb2x1bW5zKVxuICogOS4gUmVtb3ZlIGNvbHVtbnMgd2hpY2ggY29udGFpbiBvbmx5IGJsYW5rIGFuZCBlbXB0eSBub2Rlc1xuICogMTAuIFRyYW5zZm9ybSBjb2x1bW5zIGludG8gdGhlIGdyYXBoIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQXBwcm92YWxGbG93R3JhcGgobm9kZXM6IEFwcHJvdmFsR3JhcGhOb2RlW10pOiBBcHByb3ZhbEZsb3dHcmFwaCB7XG4gICAgY29uc3QgZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoID0geyBjb2x1bW5zOiBbXSwgZXJyb3JzOiBmYWxzZSB9O1xuXG4gICAgaWYgKCFub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGdyYXBoO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3ROb2RlcyA9IGZpbmRSb290Tm9kZXMobm9kZXMpO1xuICAgIGNvbnN0IGZpbmFsTm9kZXMgPSBmaW5kRmluYWxOb2Rlcyhub2Rlcyk7XG5cbiAgICBpZiAoIXJvb3ROb2Rlcy5sZW5ndGggfHwgIWZpbmFsTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRXJyOiBOb3QgcG9zc2libGUgdG8gYnVpbGQgZ3JhcGggYmVjYXVzZSByb290IG9yIGZpbmFsIG5vZGVzIGFyZW4ndCBwcmVzZW50IWApO1xuICAgICAgICBncmFwaC5lcnJvcnMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZ3JhcGg7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aHMgPSBnZXRQYXRocyhyb290Tm9kZXMsIG5vZGVzKTtcblxuICAgIGlmICghcGF0aHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRXJyOiBOb3QgcG9zc2libGUgdG8gYnVpbGQgZ3JhcGghJyk7XG4gICAgICAgIGdyYXBoLmVycm9ycyA9IHRydWU7XG4gICAgICAgIHJldHVybiBncmFwaDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmltbWVkUGF0aHMgPSB0cmltUGF0aHMocGF0aHMpO1xuICAgIGNvbnN0IHNhbWVMZW5ndGhQYXRocyA9IG1ha2VQYXRoc1NhbWVMZW5ndGgodHJpbW1lZFBhdGhzKTtcbiAgICBjb25zdCBwYXRoc0J5U2ltaWxhcml0eSA9IHNvcnRQYXRocyhzYW1lTGVuZ3RoUGF0aHMpO1xuICAgIGNvbnN0IHBhdGhzV2l0aFVuaXF1ZU5vZGVzID0gcmVtb3ZlRHVwbGljYXRlTm9kZXMocGF0aHNCeVNpbWlsYXJpdHkpO1xuICAgIGNvbnN0IG5vdEVtcHR5UGF0aHMgPSByZW1vdmVFbXB0eVBhdGhzKHBhdGhzV2l0aFVuaXF1ZU5vZGVzKTtcbiAgICBjb25zdCBjb2x1bW5zID0gZ2V0Q29sdW1uc0Zyb21QYXRocyhub3RFbXB0eVBhdGhzKTtcbiAgICBjb25zdCB0cmltbWVkQ29sdW1ucyA9IHRyaW1Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IG5vdEVtcHR5Q29sdW1ucyA9IHJlbW92ZUVtcHR5Q29sdW1ucyh0cmltbWVkQ29sdW1ucyk7XG4gICAgZ3JhcGguY29sdW1ucyA9IGdldEdyYXBoQ29sdW1uc0Zyb21QYXRocyhub3RFbXB0eUNvbHVtbnMpO1xuXG4gICAgcmV0dXJuIGdyYXBoO1xufVxuXG4vKiogR2VuZXJhdGUgZ3JhcGggbWV0YWRhdGEgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFwcHJvdmFsRmxvd0dyYXBoTWV0YWRhdGEoZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoKTogQXBwcm92YWxHcmFwaE1ldGFkYXRhIHtcbiAgICBjb25zdCBub2RlcyA9IGdldEdyYXBoTm9kZXMoZ3JhcGgpO1xuICAgIGNvbnN0IG1ldGFkYXRhOiBBcHByb3ZhbEdyYXBoTWV0YWRhdGEgPSB7fTtcblxuICAgIGdyYXBoLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICBjb2x1bW4ubm9kZXMuZm9yRWFjaCgobm9kZSwgbm9kZUluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRzID0gZ2V0UGFyZW50Tm9kZXMobm9kZSwgbm9kZXMpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50c0FwcHJvdmVkID0gcGFyZW50cy5sZW5ndGggPyBwYXJlbnRzLmV2ZXJ5KChfbm9kZSkgPT4gaXNOb2RlQXBwcm92ZWQoX25vZGUpKSA6IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgaXNSb290ID0gIXBhcmVudHMubGVuZ3RoICYmICFub2RlLnNwYWNlO1xuICAgICAgICAgICAgY29uc3QgaXNGaW5hbCA9ICFub2RlLnRhcmdldHMubGVuZ3RoICYmICFub2RlLnNwYWNlO1xuICAgICAgICAgICAgY29uc3QgcGFyYWxsZWxFbmQgPSBwYXJlbnRzLmxlbmd0aCA+IDE7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9mTXVsdGlwbGVSb290Tm9kZXMgPSBjb2x1bW5JbmRleCA9PT0gMCAmJiBjb2x1bW4ubm9kZXMubGVuZ3RoID4gMSAmJiBub2RlSW5kZXggPT09IDA7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzID1cbiAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCA9PT0gZ3JhcGguY29sdW1ucy5sZW5ndGggLSAxICYmIGNvbHVtbi5ub2Rlcy5sZW5ndGggPiAxICYmIG5vZGVJbmRleCA9PT0gMDtcblxuICAgICAgICAgICAgbWV0YWRhdGFbbm9kZS5pZF0gPSB7XG4gICAgICAgICAgICAgICAgcGFyZW50cyxcbiAgICAgICAgICAgICAgICBpc1Jvb3QsXG4gICAgICAgICAgICAgICAgaXNGaW5hbCxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbFN0YXJ0OiBub2RlLnRhcmdldHMubGVuZ3RoID4gMSxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbEVuZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgICAgICAgICAgY2FuQWRkTm9kZUJlZm9yZTogIWlzTm9kZVN0YXJ0ZWQobm9kZSkgJiYgIXBhcmVudHNBcHByb3ZlZCxcbiAgICAgICAgICAgICAgICBjYW5BZGROb2RlQmVmb3JlQWxsOiBpc1Jvb3QgJiYgZmlyc3RPZk11bHRpcGxlUm9vdE5vZGVzLFxuICAgICAgICAgICAgICAgIGNhbkFkZE5vZGVBZnRlcjogIWlzTm9kZUFwcHJvdmVkKG5vZGUpLFxuICAgICAgICAgICAgICAgIGNhbkFkZE5vZGVBZnRlckFsbDpcbiAgICAgICAgICAgICAgICAgICAgIWlzTm9kZUFwcHJvdmVkKG5vZGUpICYmICgoaXNGaW5hbCAmJiBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzKSB8fCAocGFyYWxsZWxFbmQgJiYgbm9kZS5ibGFuaykpLFxuICAgICAgICAgICAgICAgIGNhbkFkZFBhcmFsbGVsOiAhaXNOb2RlQXBwcm92ZWQobm9kZSksXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbExpbmVCZWZvcmVTb2xpZDogbm9kZS5zcGFjZSAmJiBncmFwaC5jb2x1bW5zW2NvbHVtbkluZGV4IC0gMV0/LmFsbE5vZGVzQXBwcm92ZWQsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbExpbmVBZnRlclNvbGlkOiBub2RlLnNwYWNlICYmIGNvbHVtbi5hbGxOb2Rlc0FwcHJvdmVkLFxuICAgICAgICAgICAgICAgIGZpcnN0T2ZNdWx0aXBsZVJvb3ROb2RlcyxcbiAgICAgICAgICAgICAgICBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzLFxuICAgICAgICAgICAgICAgIHJvb3ROb2Rlc0FwcHJvdmVkOiBjb2x1bW5JbmRleCA9PT0gMCAmJiBjb2x1bW4uYWxsTm9kZXNBcHByb3ZlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKiBTb21lIGZsYWdzIGNhbiBiZSBjYWxjdWxhdGVkIG9ubHkgb24gdGhlIHNlY29uZCBydW4sIHdoZW4gYWxsIG5vZGVzIGFscmVhZHkgaGF2ZSBiYXNlIG1ldGFkYXRhICovXG4gICAgZ3JhcGguY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29sdW1uLm5vZGVzLmZvckVhY2goKG5vZGUsIG5vZGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU1ldGFkYXRhID0gbWV0YWRhdGFbbm9kZS5pZF07XG5cbiAgICAgICAgICAgIG5vZGVNZXRhZGF0YS5pc0xhc3RJblBhcmFsbGVsID0gbWV0YWRhdGFbbm9kZS50YXJnZXRzWzBdXT8ucGFyYWxsZWxFbmQ7XG4gICAgICAgICAgICBub2RlTWV0YWRhdGEuaXNGaXJzdEluUGFyYWxsZWwgPSBtZXRhZGF0YVtub2RlTWV0YWRhdGEucGFyZW50c1swXT8uaWRdPy5wYXJhbGxlbFN0YXJ0O1xuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IGNvbHVtbi5pbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoUHJldkNvbHVtbiA9IGNvbHVtbkluZGV4ID8gZ3JhcGguY29sdW1uc1tjb2x1bW5JbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZ3JhcGhOZXh0Q29sdW1uID0gY29sdW1uSW5kZXggPyBncmFwaC5jb2x1bW5zW2NvbHVtbkluZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHByZXZITm9kZSA9IGdyYXBoUHJldkNvbHVtbj8ubm9kZXNbbm9kZUluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRITm9kZSA9IGdyYXBoTmV4dENvbHVtbj8ubm9kZXNbbm9kZUluZGV4XTtcblxuICAgICAgICAgICAgbm9kZU1ldGFkYXRhLnJlbmRlckFkZE5vZGVBZnRlckJ1dHRvbiA9XG4gICAgICAgICAgICAgICAgbm9kZU1ldGFkYXRhLmNhbkFkZE5vZGVBZnRlciAmJlxuICAgICAgICAgICAgICAgIChub2RlTWV0YWRhdGEuaXNGaW5hbCB8fFxuICAgICAgICAgICAgICAgICAgICBub2RlTWV0YWRhdGEucGFyYWxsZWxTdGFydCB8fFxuICAgICAgICAgICAgICAgICAgICBub2RlTWV0YWRhdGEuaXNMYXN0SW5QYXJhbGxlbCB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0SE5vZGU/LmJsYW5rKTtcblxuICAgICAgICAgICAgY29uc3QgbmV4dENvbHVtbk5vZGVzID0gZ3JhcGhOZXh0Q29sdW1uPy5ub2RlcztcbiAgICAgICAgICAgIGlmIChub2RlTWV0YWRhdGEucGFyYWxsZWxTdGFydCAmJiBuZXh0Q29sdW1uTm9kZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG5leHRDb2x1bW5Ob2Rlcy5maWx0ZXIoKF9ub2RlKSA9PiBub2RlLnRhcmdldHMuaW5jbHVkZXMoX25vZGUuaWQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENoaWxkSW5kZXggPSBuZXh0Q29sdW1uTm9kZXMuZmluZEluZGV4KChfbm9kZSkgPT4gX25vZGUuaWQgPT09IGNoaWxkcmVuWzBdLmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGRJbmRleCA9IG5leHRDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChfbm9kZSkgPT4gX25vZGUuaWQgPT09IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLmlkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBmaXJzdENoaWxkSW5kZXggKyAxOyBpIDw9IGxhc3RDaGlsZEluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbbmV4dENvbHVtbk5vZGVzW2ldLmlkXS5yZW5kZXJWZXJ0aWNhbExpbmVCZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJldkNvbHVtbk5vZGVzID0gZ3JhcGhQcmV2Q29sdW1uPy5ub2RlcztcbiAgICAgICAgICAgIGlmIChub2RlTWV0YWRhdGEucGFyYWxsZWxFbmQgJiYgcHJldkNvbHVtbk5vZGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJlbnRJbmRleCA9IHByZXZDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoKF9ub2RlKSA9PiBfbm9kZS5pZCA9PT0gbm9kZU1ldGFkYXRhLnBhcmVudHNbMF0uaWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RQYXJlbnRJbmRleCA9IHByZXZDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChfbm9kZSkgPT4gX25vZGUuaWQgPT09IG5vZGVNZXRhZGF0YS5wYXJlbnRzW25vZGVNZXRhZGF0YS5wYXJlbnRzLmxlbmd0aCAtIDFdLmlkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBmaXJzdFBhcmVudEluZGV4ICsgMTsgaSA8PSBsYXN0UGFyZW50SW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVtwcmV2Q29sdW1uTm9kZXNbaV0uaWRdLnJlbmRlclZlcnRpY2FsTGluZUFmdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vZGVNZXRhZGF0YS5yZW5kZXJWZXJ0aWNhbExpbmVCZWZvcmUgPSAhbm9kZU1ldGFkYXRhLnJlbmRlclZlcnRpY2FsTGluZUJlZm9yZVxuICAgICAgICAgICAgICAgID8gbm9kZUluZGV4ID4gMCAmJiAhcHJldkhOb2RlXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICAgICAgbm9kZU1ldGFkYXRhLnJlbmRlclZlcnRpY2FsTGluZUFmdGVyID0gIW5vZGVNZXRhZGF0YS5yZW5kZXJWZXJ0aWNhbExpbmVBZnRlclxuICAgICAgICAgICAgICAgID8gbm9kZUluZGV4ID4gMCAmJiAhbmV4dEhOb2RlXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRhZGF0YTtcbn1cblxuZnVuY3Rpb24gZmluZFJvb3ROb2Rlcyhub2RlczogQXBwcm92YWxOb2RlW10pOiBBcHByb3ZhbE5vZGVbXSB7XG4gICAgcmV0dXJuIG5vZGVzLmZpbHRlcigobm9kZSkgPT4gbm9kZXMuZXZlcnkoKG4pID0+ICFpc05vZGVUYXJnZXRzSW5jbHVkZUlkKG4sIG5vZGUuaWQpKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRGaW5hbE5vZGVzKG5vZGVzOiBBcHByb3ZhbE5vZGVbXSk6IEFwcHJvdmFsTm9kZVtdIHtcbiAgICByZXR1cm4gbm9kZXMuZmlsdGVyKChub2RlKSA9PiAhbm9kZS50YXJnZXRzLmxlbmd0aCk7XG59XG5cbi8qKiBGaW5kIGFsbCBwb3NzaWJsZSBwYXRocyAobG9uZ2VzdCBwYXRoIGxlbmd0aCA9IGFtb3VudCBvZiB0aGUgY29sdW1ucyBpbiB0aGUgZ3JhcGgpICovXG5mdW5jdGlvbiBnZXRQYXRocyhyb290Tm9kZXM6IEFwcHJvdmFsR3JhcGhOb2RlW10sIG5vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBwYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdID0gW107XG4gICAgY29uc3QgcXVldWU6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb290Tm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcXVldWUucHVzaChbcm9vdE5vZGVzW2ldXSk7XG5cbiAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICAgICAgbGV0IGxhc3ROb2RlSW5QYXRoOiBBcHByb3ZhbEdyYXBoTm9kZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGVJblBhdGggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKiBJbmRpY2F0ZXMgYWJvdXQgYW4gZXJyb3IgKi9cbiAgICAgICAgICAgIGlmICghbGFzdE5vZGVJblBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbGFzdE5vZGVJblBhdGgudGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHBhdGghKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGVJblBhdGgudGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXRJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gbm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gdGFyZ2V0SWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gWy4uLnBhdGghLCB0YXJnZXROb2RlXTtcblxuICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKG5ld1BhdGgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhzO1xufVxuXG4vKiogVHJpbSBwYXRocyAocmVtb3ZlIGJsYW5rIG5vZGVzIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGhzKSAqL1xuZnVuY3Rpb24gdHJpbVBhdGhzKHBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10ge1xuICAgIGNvbnN0IHByb2Nlc3NlZFBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcblxuICAgIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4VG9TbGljZSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgICAgICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID4gMDsgLS1pKSB7XG4gICAgICAgICAgICBpZiAocGF0aFtpXS5ibGFuaykge1xuICAgICAgICAgICAgICAgIGluZGV4VG9TbGljZSA9IGkgLSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGhbaW5kZXhUb1NsaWNlXS50YXJnZXRzID0gW107XG4gICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aC5zbGljZSgwLCBpbmRleFRvU2xpY2UgKyAxKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBNYWtlIGFsbCBwYXRocyB0aGUgc2FtZSBsZW5ndGggKD0gbG9uZ2VzdCBwYXRoIGxlbmd0aCkgdG8gbWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IGF0IHRoZSBzYW1lIGluZGV4IGFjcm9zcyBhbGwgcGF0aHMgKi9cbmZ1bmN0aW9uIG1ha2VQYXRoc1NhbWVMZW5ndGgocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkUGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuICAgIGNvbnN0IHBhdGhMZW5ndGhzID0gcGF0aHMubWFwKChwYXRoKSA9PiBwYXRoLmxlbmd0aCk7XG4gICAgY29uc3QgbG9uZ2VzdFBhdGhMZW5ndGggPSBNYXRoLm1heCguLi5wYXRoTGVuZ3Rocyk7XG5cbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gbG9uZ2VzdFBhdGhMZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYXRoLmZvckVhY2goKG5vZGUsIG5vZGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIFRyeSB0byBnZXQgYmxhbmsgbm9kZXMgZnJvbSBhbHJlYWR5IHByb2Nlc3NlZCBwYXRocyBhcyBwYXRocyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIHNvbWUgcGFydCAqL1xuICAgICAgICAgICAgbGV0IGJsYW5rTm9kZXMgPSBnZXRCbGFua05vZGVzQWZ0ZXJOb2RlKG5vZGUsIHByb2Nlc3NlZFBhdGhzKTtcbiAgICAgICAgICAgIGlmIChibGFua05vZGVzLmxlbmd0aCAmJiBibGFua05vZGVzWzBdLmlkICE9PSBwYXRoW25vZGVJbmRleCArIDFdPy5pZCkge1xuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKG5vZGVJbmRleCArIDEsIDAsIC4uLmJsYW5rTm9kZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZUluZGV4SW5QYXRocyA9IHBhdGhzLm1hcCgoX3BhdGgpID0+IF9wYXRoLmluZGV4T2Yobm9kZSkpO1xuICAgICAgICAgICAgY29uc3QgbW9zdEZhck5vZGVJbmRleEluUGF0aHMgPSBNYXRoLm1heCguLi5ub2RlSW5kZXhJblBhdGhzKTtcblxuICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA8IG1vc3RGYXJOb2RlSW5kZXhJblBhdGhzKSB7XG4gICAgICAgICAgICAgICAgYmxhbmtOb2RlcyA9IGdldEJsYW5rTm9kZXMobW9zdEZhck5vZGVJbmRleEluUGF0aHMgLSBub2RlSW5kZXgsIHBhdGhbbm9kZUluZGV4IC0gMV0uc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgIGJsYW5rTm9kZXNbYmxhbmtOb2Rlcy5sZW5ndGggLSAxXS50YXJnZXRzID0gW25vZGUuaWRdO1xuICAgICAgICAgICAgICAgIHBhdGhbbm9kZUluZGV4IC0gMV0udGFyZ2V0cyA9IFtibGFua05vZGVzWzBdLmlkXTtcblxuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKG5vZGVJbmRleCwgMCwgLi4uYmxhbmtOb2Rlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZUluZGV4ID09PSBtb3N0RmFyTm9kZUluZGV4SW5QYXRocyAmJiBub2RlSW5kZXggPT09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGJsYW5rTm9kZXMgPSBnZXRCbGFua05vZGVzKGxvbmdlc3RQYXRoTGVuZ3RoIC0gcGF0aC5sZW5ndGgsIHBhdGhbbm9kZUluZGV4XS5zdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgcGF0aFtub2RlSW5kZXhdLnRhcmdldHMgPSBbYmxhbmtOb2Rlc1swXS5pZF07XG5cbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZShub2RlSW5kZXggKyAxLCAwLCAuLi5ibGFua05vZGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBUcnkgdG8gZ2V0IGJsYW5rIG5vZGVzIGZyb20gYWxyZWFkeSBwcm9jZXNzZWQgcGF0aHMgYXMgcGF0aHMgbWF5IGJlIHRoZSBzYW1lIHdpdGhpbiBzb21lIHBhcnQgKi9cbmZ1bmN0aW9uIGdldEJsYW5rTm9kZXNBZnRlck5vZGUobm9kZTogQXBwcm92YWxHcmFwaE5vZGUsIHBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdIHtcbiAgICBjb25zdCBibGFua05vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBjb25zdCBwYXRoV2l0aEJsYW5rTm9kZUFmdGVyID0gcGF0aHMuZmluZCgocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBub2RlSW5kZXggPSBwYXRoLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlSW5kZXggPiAtMSAmJiBwYXRoW25vZGVJbmRleCArIDFdPy5ibGFuaztcbiAgICB9KTtcblxuICAgIGlmIChwYXRoV2l0aEJsYW5rTm9kZUFmdGVyKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IHBhdGhXaXRoQmxhbmtOb2RlQWZ0ZXIuaW5kZXhPZihub2RlKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHROb3RCbGFua05vZGVJbmRleCA9IHBhdGhXaXRoQmxhbmtOb2RlQWZ0ZXIuZmluZEluZGV4KFxuICAgICAgICAgICAgKF9ub2RlLCBfaW5kZXgpID0+IF9pbmRleCA+IG5vZGVJbmRleCAmJiAhX25vZGUuYmxhbmtcbiAgICAgICAgKTtcblxuICAgICAgICBibGFua05vZGVzLnB1c2goXG4gICAgICAgICAgICAuLi5wYXRoV2l0aEJsYW5rTm9kZUFmdGVyLnNsaWNlKG5vZGVJbmRleCwgbmV4dE5vdEJsYW5rTm9kZUluZGV4ID4gMCA/IG5leHROb3RCbGFua05vZGVJbmRleCA6IHVuZGVmaW5lZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxhbmtOb2Rlcztcbn1cblxuLyoqIEdlbmVyYXRlIGJsYW5rIG5vZGVzIHNlcXVlbnRpYWwgKi9cbmZ1bmN0aW9uIGdldEJsYW5rTm9kZXMoY291bnQ6IG51bWJlciwgc3RhdHVzOiBBcHByb3ZhbFN0YXR1cyk6IEFwcHJvdmFsR3JhcGhOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBsZXQgbm9kZTogQXBwcm92YWxHcmFwaE5vZGU7XG4gICAgbGV0IG5vZGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgICAgIG5vZGUgPSBPYmplY3QuYXNzaWduKHt9LCBnZXRCbGFua0FwcHJvdmFsR3JhcGhOb2RlKCksIHsgdGFyZ2V0czogbm9kZUlkID8gW25vZGVJZF0gOiBbXSwgc3RhdHVzIH0pO1xuICAgICAgICBub2RlSWQgPSBub2RlLmlkO1xuXG4gICAgICAgIG5vZGVzLnVuc2hpZnQobm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xufVxuXG4vKiogU29ydCBwYXRocyBieSB0aGVpciBsaWtlbmVzcyAoPSBjb3VudCBvZiB0aGUgc2FtZSBub2RlcyByZWxhdGl2ZWx5IHRvIHRoZSBvdGhlciBwYXRocykgYmV0d2VlbiBlYWNoIG90aGVyIHRvIGF2b2lkIHBhdGhzIGNyb3NzaW5nICovXG5mdW5jdGlvbiBzb3J0UGF0aHMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcGF0aHM7XG4gICAgfVxuXG4gICAgLyoqIFtwYXRoSW5kZXgsIHJlbGF0aXZlVG9QYXRoSW5kZXgsIHNhbWVOb2Rlc0NvdW50XVtdICovXG4gICAgbGV0IHNpbWlsYXJpdGllczogbnVtYmVyW11bXSA9IFtdO1xuICAgIGxldCBwYXRoU2ltaWxhcml0eSA9IDA7XG5cbiAgICBwYXRocy5mb3JFYWNoKChwYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IGkgJiYgIXNpbWlsYXJpdGllcy5zb21lKChsaWtlbHkpID0+IGluZGV4ID09PSBsaWtlbHlbMV0gJiYgaSA9PT0gbGlrZWx5WzBdKSkge1xuICAgICAgICAgICAgICAgIHBhdGhTaW1pbGFyaXR5ID0gMDtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcGF0aC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGF0aFtqXS5pZCA9PT0gcGF0aHNbaV1bal0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhTaW1pbGFyaXR5Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzaW1pbGFyaXRpZXMucHVzaChbaW5kZXgsIGksIHBhdGhTaW1pbGFyaXR5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHNpbWlsYXJpdGllcyA9IHNpbWlsYXJpdGllcy5zb3J0KChhLCBiKSA9PiAoYVsyXSA+IGJbMl0gPyAtMSA6IDEpKTtcblxuICAgIGNvbnN0IHVzZWRQYXRoSW5kZXhlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBwcm9jZXNzZWRQYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdID0gW107XG5cbiAgICBzaW1pbGFyaXRpZXMuZm9yRWFjaCgoc2ltaWxhcml0eSkgPT4ge1xuICAgICAgICBpZiAoIXVzZWRQYXRoSW5kZXhlcy5zb21lKChpKSA9PiBpID09PSBzaW1pbGFyaXR5WzBdKSkge1xuICAgICAgICAgICAgcHJvY2Vzc2VkUGF0aHMucHVzaChwYXRoc1tzaW1pbGFyaXR5WzBdXSk7XG4gICAgICAgICAgICB1c2VkUGF0aEluZGV4ZXMucHVzaChzaW1pbGFyaXR5WzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdXNlZFBhdGhJbmRleGVzLnNvbWUoKGkpID0+IGkgPT09IHNpbWlsYXJpdHlbMV0pKSB7XG4gICAgICAgICAgICBwcm9jZXNzZWRQYXRocy5wdXNoKHBhdGhzW3NpbWlsYXJpdHlbMV1dKTtcbiAgICAgICAgICAgIHVzZWRQYXRoSW5kZXhlcy5wdXNoKHNpbWlsYXJpdHlbMV0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBSZW1vdmUgXCJkdXBsaWNhdGVcIiBub2RlcyBpbiBwYXRocyAobWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IG9ubHkgb25jZSBhY3Jvc3MgYWxsIHBhdGhzKSAqL1xuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlTm9kZXMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkUGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgcGF0aC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBwYXRocy5mb3JFYWNoKChfcGF0aCwgX2luZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOb2RlSW5QYXRoID0gX2luZGV4ICE9PSBpbmRleCAmJiBfcGF0aC5pbmRleE9mKG5vZGUpID4gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlSW5QYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBJbnN0ZWFkIG9mIG5vZGUgcGxhY2Ugc3BhY2Ugbm9kZSAqL1xuICAgICAgICAgICAgICAgICAgICBfcGF0aC5zcGxpY2UoX3BhdGguaW5kZXhPZihub2RlKSwgMSwgZ2V0U3BhY2VBcHByb3ZhbEdyYXBoTm9kZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc2VkUGF0aHMucHVzaChwYXRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9jZXNzZWRQYXRocztcbn1cblxuLyoqIFJlbW92ZSBlbXB0eSBwYXRocyAod2hpY2ggY29udGFpbnMgb25seSBlbXB0eSBub2RlcykgKi9cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5UGF0aHMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgcmV0dXJuIHBhdGhzLnJlZHVjZSgoYWNjLCBwYXRoKSA9PiB7XG4gICAgICAgIGlmICghcGF0aC5ldmVyeSgobm9kZSkgPT4gbm9kZS5zcGFjZSkpIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKHBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBBcHByb3ZhbEdyYXBoTm9kZVtdW10pO1xufVxuXG4vKiogVHJhbnNmb3JtIHBhdGhzIGludG8gdGhlIGNvbHVtbnMgKGl0J3MgcG9zc2libGUgYXMgdGhleSdyZSBhbGwgdGhlIHNhbWUgbGVuZ3RoKSAqL1xuZnVuY3Rpb24gZ2V0Q29sdW1uc0Zyb21QYXRocyhwYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcbiAgICBsZXQgY29sdW1uOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzWzBdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbHVtbiA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcGF0aHMubGVuZ3RoOyB2KyspIHtcbiAgICAgICAgICAgIGNvbHVtbi5wdXNoKHBhdGhzW3ZdW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5zO1xufVxuXG4vKiogVHJpbSBzcGFjZSBub2RlcyBhdCB0aGUgZW5kIG9mIHRoZSBjb2x1bW5zLiAqL1xuZnVuY3Rpb24gdHJpbUNvbHVtbnMoY29sdW1uczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBwcm9jZXNzZWRDb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGxldCBsYXN0Tm90U3BhY2VOb2RlSW5kZXg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbHVtbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW5baV0uc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm90U3BhY2VOb2RlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxhc3ROb3RTcGFjZU5vZGVJbmRleCA8IGNvbHVtbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZENvbHVtbnMucHVzaChjb2x1bW4uc2xpY2UoMCwgbGFzdE5vdFNwYWNlTm9kZUluZGV4ICsgMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc2VkQ29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9jZXNzZWRDb2x1bW5zO1xufVxuXG4vKiogUmVtb3ZlIGVtcHR5IGNvbHVtbnMgKHdoZXJlIGV2ZXJ5IG5vZGUgaXMgYSBibGFuayBub2RlKSAgKi9cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5Q29sdW1ucyhjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10ge1xuICAgIGNvbnN0IHByb2Nlc3NlZENvbHVtbnM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgYXJlQWxsTm9kZXNFbXB0eSA9IGNvbHVtbi5ldmVyeSgobm9kZSkgPT4gbm9kZS5ibGFuayB8fCBub2RlLnNwYWNlKTtcblxuICAgICAgICBpZiAoYXJlQWxsTm9kZXNFbXB0eSkge1xuICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5ibGFuaykge1xuICAgICAgICAgICAgICAgICAgICAvKiogQ29ubmVjdCBwcmV2aW91cyBjb2x1bW4gdG8gdGhlIG5leHQgY29sdW1uLCBvbWl0dGluZyBjdXJyZW50IGNvbHVtbi4gKi9cbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVRhcmdldHMobm9kZS5pZCwgbm9kZS50YXJnZXRzLCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZENvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkQ29sdW1ucztcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVRhcmdldHMocmVwbGFjZUlkOiBzdHJpbmcsIHJlcGxhY2VXaXRoSWQ6IHN0cmluZ1tdLCBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiB2b2lkIHtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBjb2x1bW4uZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobiwgcmVwbGFjZUlkKSkge1xuICAgICAgICAgICAgICAgIG4udGFyZ2V0cyA9IG4udGFyZ2V0cy5maWx0ZXIoKF9pZCkgPT4gX2lkICE9PSByZXBsYWNlSWQpO1xuICAgICAgICAgICAgICAgIG4udGFyZ2V0cy5wdXNoKC4uLnJlcGxhY2VXaXRoSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuLyoqIFRyYW5zZm9ybSBjb2x1bW5zIGludG8gdGhlIGdyYXBoIGNvbHVtbnMgKHdpdGggYWRkaXRpb25hbCBtZXRhZGF0YSkuICovXG5mdW5jdGlvbiBnZXRHcmFwaENvbHVtbnNGcm9tUGF0aHMoY29sdW1uczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaENvbHVtbltdIHtcbiAgICBjb25zdCBncmFwaENvbHVtbnM6IEFwcHJvdmFsR3JhcGhDb2x1bW5bXSA9IFtdO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbHVtbi5mb3JFYWNoKChub2RlKSA9PiAobm9kZS5jb2xJbmRleCA9IGluZGV4KSk7XG5cbiAgICAgICAgZ3JhcGhDb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgbm9kZXM6IGNvbHVtbixcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYWxsTm9kZXNBcHByb3ZlZDogY29sdW1uLmV2ZXJ5KChub2RlKSA9PiBpc05vZGVBcHByb3ZlZChub2RlKSlcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhcGhDb2x1bW5zO1xufVxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { FormGroupComponent, FormItemComponent } from '@fundamental-ngx/core/form';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ListComponent, StandardListItemComponent } from '@fundamental-ngx/platform/list';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * @deprecated\n * ApprovalFlowTeamList component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowTeamListComponent {\n constructor() {\n /** Approval flow teams */\n this.teams = [];\n /** Whether in RTL mode */\n this.isRtl = false;\n /** Event emitted on team click */\n this.onTeamClick = new EventEmitter();\n /** Event emitted on team selection change */\n this.onTeamRadioClick = new EventEmitter();\n /** @hidden */\n this._trackByFn = trackByFn;\n }\n /** @hidden */\n _showTeamDetails(team) {\n this.onTeamClick.emit(team);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowTeamListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowTeamListComponent, isStandalone: true, selector: \"fdp-approval-flow-team-list\", inputs: { teams: \"teams\", isRtl: \"isRtl\", selectedTeamId: \"selectedTeamId\" }, outputs: { onTeamClick: \"onTeamClick\", onTeamRadioClick: \"onTeamRadioClick\" }, host: { classAttribute: \"fdp-approval-flow-team-list\" }, ngImport: i0, template: \"<fdp-list [hasByLine]=\\\"true\\\" fdCompact>\\n <fd-form-group>\\n @for (team of teams; track _trackByFn(i, team); let i = $index) {\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"team.id\\\"\\n [attr.id]=\\\"'team-radio' + i\\\"\\n [name]=\\\"'team-radio' + i\\\"\\n [(ngModel)]=\\\"selectedTeamId\\\"\\n (click)=\\\"onTeamRadioClick.emit(team)\\\"\\n >\\n </fd-radio-button>\\n <fdp-standard-list-item\\n [attr.id]=\\\"'approval-team-' + team.id\\\"\\n [avatar]=\\\"{ image: '', ariaLabel: team.name }\\\"\\n [description]=\\\"team.description || team.members.length + ' members'\\\"\\n [title]=\\\"team.name\\\"\\n (click)=\\\"_showTeamDetails(team)\\\"\\n >\\n </fdp-standard-list-item>\\n <fd-icon [glyph]=\\\"'navigation-' + (isRtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </div>\\n }\\n </fd-form-group>\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-team-list .fd-form-item{position:relative;margin-bottom:0}.fdp-approval-flow-team-list .fd-form-item fd-radio-button{position:absolute;z-index:1;top:1.4rem}.fdp-approval-flow-team-list .fd-form-item .fd-list__item{padding-left:2rem!important;cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-icon{position:absolute;right:1rem;top:2rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-avatar{color:#fff;color:var(--sapBaseColor, #fff)}[dir=rtl] .fdp-approval-flow-team-list .fd-form-item fd-icon,.fdp-approval-flow-team-list[dir=rtl] .fd-form-item fd-icon{right:auto;left:1rem}[dir=rtl] .fdp-approval-flow-team-list .fd-list__item,.fdp-approval-flow-team-list[dir=rtl] .fd-list__item{padding-right:2rem!important;padding-left:0!important}\\n\"], dependencies: [{ kind: \"component\", type: ListComponent, selector: \"fdp-list\", inputs: [\"selectedItems\", \"ariaSetsize\", \"ariaMultiselectable\", \"loadTitle\", \"loadingLabel\", \"delayTime\", \"itemSize\", \"loadMore\", \"loadOnScroll\", \"role\", \"listType\", \"maxHeight\", \"noBorder\", \"scrollOffsetPercentage\", \"selection\", \"selectionMode\", \"value\", \"rowSelection\", \"dataSource\", \"navigated\", \"navigationIndicator\", \"hasByLine\", \"hasObject\", \"unreadIndicator\", \"interceptTabKey\"], outputs: [\"selectedItemChange\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: FormGroupComponent, selector: \"fd-form-group\", inputs: [\"isInline\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: RadioButtonComponent, selector: \"fd-radio-button\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"tabIndex\", \"state\", \"disabled\", \"readOnly\", \"selectedValue\", \"name\", \"id\", \"value\", \"required\", \"standalone\", \"wrapLabel\", \"valignLabel\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: StandardListItemComponent, selector: \"fdp-standard-list-item\" }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowTeamListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-team-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-team-list'\n }, imports: [\n ListComponent,\n ContentDensityDirective,\n FormGroupComponent,\n FormItemComponent,\n RadioButtonComponent,\n FormsModule,\n StandardListItemComponent,\n IconComponent\n ], template: \"<fdp-list [hasByLine]=\\\"true\\\" fdCompact>\\n <fd-form-group>\\n @for (team of teams; track _trackByFn(i, team); let i = $index) {\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"team.id\\\"\\n [attr.id]=\\\"'team-radio' + i\\\"\\n [name]=\\\"'team-radio' + i\\\"\\n [(ngModel)]=\\\"selectedTeamId\\\"\\n (click)=\\\"onTeamRadioClick.emit(team)\\\"\\n >\\n </fd-radio-button>\\n <fdp-standard-list-item\\n [attr.id]=\\\"'approval-team-' + team.id\\\"\\n [avatar]=\\\"{ image: '', ariaLabel: team.name }\\\"\\n [description]=\\\"team.description || team.members.length + ' members'\\\"\\n [title]=\\\"team.name\\\"\\n (click)=\\\"_showTeamDetails(team)\\\"\\n >\\n </fdp-standard-list-item>\\n <fd-icon [glyph]=\\\"'navigation-' + (isRtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </div>\\n }\\n </fd-form-group>\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-team-list .fd-form-item{position:relative;margin-bottom:0}.fdp-approval-flow-team-list .fd-form-item fd-radio-button{position:absolute;z-index:1;top:1.4rem}.fdp-approval-flow-team-list .fd-form-item .fd-list__item{padding-left:2rem!important;cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-icon{position:absolute;right:1rem;top:2rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-avatar{color:#fff;color:var(--sapBaseColor, #fff)}[dir=rtl] .fdp-approval-flow-team-list .fd-form-item fd-icon,.fdp-approval-flow-team-list[dir=rtl] .fd-form-item fd-icon{right:auto;left:1rem}[dir=rtl] .fdp-approval-flow-team-list .fd-list__item,.fdp-approval-flow-team-list[dir=rtl] .fd-list__item{padding-right:2rem!important;padding-left:0!important}\\n\"] }]\n }], propDecorators: { teams: [{\n type: Input\n }], isRtl: [{\n type: Input\n }], selectedTeamId: [{\n type: Input\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTeamClick: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTeamRadioClick: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUd2Qzs7O0dBR0c7QUFxQkgsTUFBTSxPQUFPLDZCQUE2QjtJQXBCMUM7UUFxQkksMEJBQTBCO1FBRTFCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTNCLDBCQUEwQjtRQUUxQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBTWQsa0NBQWtDO1FBR2xDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFL0MsNkNBQTZDO1FBRzdDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRXBELGNBQWM7UUFDZCxlQUFVLEdBQUcsU0FBUyxDQUFDO0tBTTFCO0lBSkcsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBN0JRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDZTQ3BDMUMsd2xDQXlCQSwrM0JEQ1EsYUFBYSx5ZEFDYix1QkFBdUIsb2RBQ3ZCLGtCQUFrQixnRkFDbEIsaUJBQWlCLCtGQUNqQixvQkFBb0IsMlFBQ3BCLFdBQVcsK1ZBQ1gseUJBQXlCLG1FQUN6QixhQUFhOzsyRkFHUiw2QkFBNkI7a0JBcEJ6QyxTQUFTOytCQUNJLDZCQUE2QixtQkFHdEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsNkJBQTZCO3FCQUN2QyxXQUNRO3dCQUNMLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsYUFBYTtxQkFDaEI7OEJBS0QsS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7O1FBS04sK0RBQStEO1FBQy9ELFdBQVc7c0JBRlYsTUFBTTs7UUFNUCwrREFBK0Q7UUFDL0QsZ0JBQWdCO3NCQUZmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50LCBGb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9yYWRpbyc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7IHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxUZWFtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd1RlYW1MaXN0IGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0J1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgUmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB7XG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgdGVhbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgaW4gUlRMIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUnRsID0gZmFsc2U7XG5cbiAgICAvKiogU2VsZWN0ZWQgdGVhbSBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRUZWFtSWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiB0ZWFtIGNsaWNrICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25UZWFtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVGVhbT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIHRlYW0gc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uVGVhbVJhZGlvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVGVhbT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dUZWFtRGV0YWlscyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRlYW1DbGljay5lbWl0KHRlYW0pO1xuICAgIH1cbn1cbiIsIjxmZHAtbGlzdCBbaGFzQnlMaW5lXT1cInRydWVcIiBmZENvbXBhY3Q+XG4gICAgPGZkLWZvcm0tZ3JvdXA+XG4gICAgICAgIEBmb3IgKHRlYW0gb2YgdGVhbXM7IHRyYWNrIF90cmFja0J5Rm4oaSwgdGVhbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0ZWFtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ3RlYW0tcmFkaW8nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIid0ZWFtLXJhZGlvJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGVhbUlkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGVhbVJhZGlvQ2xpY2suZW1pdCh0ZWFtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidhcHByb3ZhbC10ZWFtLScgKyB0ZWFtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F2YXRhcl09XCJ7IGltYWdlOiAnJywgYXJpYUxhYmVsOiB0ZWFtLm5hbWUgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJ0ZWFtLmRlc2NyaXB0aW9uIHx8IHRlYW0ubWVtYmVycy5sZW5ndGggKyAnIG1lbWJlcnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInRlYW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd1RlYW1EZXRhaWxzKHRlYW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCInbmF2aWdhdGlvbi0nICsgKGlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JykgKyAnLWFycm93J1wiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9mZC1mb3JtLWdyb3VwPlxuPC9mZHAtbGlzdD5cbiJdfQ==","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowUserDetails component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowUserDetailsComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowUserDetailsComponent, isStandalone: true, selector: \"fdp-approval-flow-user-details\", inputs: { user: \"user\", details: \"details\", detailsTemplate: \"detailsTemplate\" }, host: { classAttribute: \"fdp-approval-flow-user-details\" }, ngImport: i0, template: \"<div class=\\\"fdp-approval-flow-user-details__user-info\\\">\\n <fd-avatar [image]=\\\"user.imgUrl\\\" size=\\\"s\\\"> </fd-avatar>\\n <div>\\n <div class=\\\"fdp-approval-flow-user-details__name\\\">{{ user.name }}</div>\\n <div class=\\\"fdp-approval-flow-user-details__description\\\">{{ user.description }}</div>\\n </div>\\n</div>\\n@if (detailsTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"detailsTemplate\\\" [ngTemplateOutletContext]=\\\"{ data: details | async }\\\">\\n </ng-template>\\n}\\n\", styles: [\".fdp-approval-flow-user-details__user-info{display:flex;align-items:center;margin-bottom:1rem}.fdp-approval-flow-user-details__name{font-size:1rem}.fdp-approval-flow-user-details__description{color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70)}\\n\"], dependencies: [{ kind: \"component\", type: AvatarComponent, selector: \"fd-avatar\", inputs: [\"class\", \"id\", \"ariaLabel\", \"ariaLabelledby\", \"label\", \"size\", \"font\", \"glyph\", \"zoomGlyph\", \"circle\", \"interactive\", \"transparent\", \"contain\", \"placeholder\", \"tile\", \"border\", \"colorAccent\", \"colorIndication\", \"random\", \"clickable\", \"valueState\", \"image\", \"alterIcon\", \"backupImage\"], outputs: [\"avatarClicked\", \"zoomGlyphClicked\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserDetailsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-user-details', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-user-details'\n }, imports: [AvatarComponent, NgTemplateOutlet, AsyncPipe], template: \"<div class=\\\"fdp-approval-flow-user-details__user-info\\\">\\n <fd-avatar [image]=\\\"user.imgUrl\\\" size=\\\"s\\\"> </fd-avatar>\\n <div>\\n <div class=\\\"fdp-approval-flow-user-details__name\\\">{{ user.name }}</div>\\n <div class=\\\"fdp-approval-flow-user-details__description\\\">{{ user.description }}</div>\\n </div>\\n</div>\\n@if (detailsTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"detailsTemplate\\\" [ngTemplateOutletContext]=\\\"{ data: details | async }\\\">\\n </ng-template>\\n}\\n\", styles: [\".fdp-approval-flow-user-details__user-info{display:flex;align-items:center;margin-bottom:1rem}.fdp-approval-flow-user-details__name{font-size:1rem}.fdp-approval-flow-user-details__description{color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70)}\\n\"] }]\n }], propDecorators: { user: [{\n type: Input\n }], details: [{\n type: Input\n }], detailsTemplate: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHL0Q7OztHQUdHO0FBWUgsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msd09DdkI3QyxtZkFXQSxzVERVYyxlQUFlLDZZQUFFLGdCQUFnQiwrSUFBRSxTQUFTOzsyRkFFN0MsZ0NBQWdDO2tCQVg1QyxTQUFTOytCQUNJLGdDQUFnQyxpQkFHM0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsZ0NBQWdDO3FCQUMxQyxXQUNRLENBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQzs4QkFLdkQsSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9hdmF0YXInO1xuaW1wb3J0IHsgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW0F2YXRhckNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldCwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB7XG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlcjogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciBkZXRhaWxzICovXG4gICAgQElucHV0KClcbiAgICBkZXRhaWxzOiBOdWxsYWJsZTxPYnNlcnZhYmxlPGFueT4+O1xuXG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciBkZXRhaWxzIHRlbXBsYXRlICovXG4gICAgQElucHV0KClcbiAgICBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzX191c2VyLWluZm9cIj5cbiAgICA8ZmQtYXZhdGFyIFtpbWFnZV09XCJ1c2VyLmltZ1VybFwiIHNpemU9XCJzXCI+IDwvZmQtYXZhdGFyPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHNfX25hbWVcIj57eyB1c2VyLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc19fZGVzY3JpcHRpb25cIj57eyB1c2VyLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoZGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRldGFpbHNUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6IGRldGFpbHMgfCBhc3luYyB9XCI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, inject, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ListComponent, StandardListItemComponent } from '@fundamental-ngx/platform/list';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nconst ITEMS_RENDERED_AT_ONCE = 100;\nconst INTERVAL_IN_MS = 10;\n/**\n * @deprecated\n * ApprovalFlowUserList component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowUserListComponent {\n /** @hidden */\n constructor(_cdr) {\n this._cdr = _cdr;\n /** Approval flow users */\n this.users = [];\n /** Approval flow selected users */\n this.selectedUsers = [];\n /** Whether the list is selectable */\n this.isSelectable = true;\n /** Event emitted on user click */\n this.onUserClick = new EventEmitter();\n /** Event emitted on selection change */\n this.onSelectionChange = new EventEmitter();\n /** @hidden */\n this._selectedItems = [];\n /** @hidden */\n this._idPrefix = 'approval-node-user-';\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this._displayUsers = [];\n /** @hidden */\n this._allSelectedUsers = [];\n /** @hidden */\n this._destroyed$ = inject(DestroyRef);\n /** @hidden */\n this._dontCallSelection = false;\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.selectedUsers.length) {\n this._selectItems(this.selectedUsers);\n this._allSelectedUsers = [...this.selectedUsers];\n this._cdr.markForCheck();\n }\n if (this.isSelectable) {\n this._listenToListItemChange();\n }\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (changes.users) {\n this._collectDataProgressive();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._killInterval();\n }\n /** @hidden */\n _onSelect(event) {\n if (!this._dontCallSelection) {\n this._selectedItems = event.selectedItems;\n if (event.removed) {\n const ids = event.removed.map((item) => item.id);\n this._allSelectedUsers = this._allSelectedUsers.filter((user) => !ids.includes(`${this._idPrefix + user.id}`));\n }\n if (event.added) {\n this._allSelectedUsers.push(...this._getUsersFromSelectedItems(event.added));\n }\n this.onSelectionChange.emit(this._allSelectedUsers);\n this._cdr.detectChanges();\n }\n }\n /** @hidden */\n _getUsersFromSelectedItems(items) {\n return items\n .map((item) => this.users.find((user) => `${this._idPrefix + user.id}` === item.id))\n .filter((u) => !!u);\n }\n /** @hidden */\n _collectDataProgressive() {\n this._killInterval();\n this._displayUsers = [];\n if (!this.users?.length) {\n return;\n }\n const collectionTracker = { currentIndex: 0 };\n this._userCollectorIntervalFn(collectionTracker);\n this._intervalID = window.setInterval(this._userCollectorIntervalFn.bind(this), INTERVAL_IN_MS, collectionTracker);\n }\n /** @hidden */\n _userCollectorIntervalFn(tracker) {\n const nextIndex = tracker.currentIndex + ITEMS_RENDERED_AT_ONCE;\n const collectedUsers = [];\n for (let i = tracker.currentIndex; i <= nextIndex; i++) {\n if (i >= this.users.length) {\n this._killInterval();\n break;\n }\n collectedUsers.push(this.users[i]);\n }\n tracker.currentIndex += ITEMS_RENDERED_AT_ONCE;\n this._displayUsers.push(...collectedUsers);\n this._cdr.markForCheck();\n }\n /** @hidden */\n _killInterval() {\n if (this._intervalID) {\n clearInterval(this._intervalID);\n }\n }\n /** @hidden */\n _listenToListItemChange() {\n this.listItems.changes.pipe(takeUntilDestroyed(this._destroyed$)).subscribe(() => {\n this._selectItems(this._allSelectedUsers);\n this._cdr.detectChanges();\n });\n }\n /** @hidden */\n _selectItems(users) {\n this._dontCallSelection = true;\n const allSelectedUserNames = users.map((user) => this._idPrefix + user.id);\n const currentSelectedList = this.listItems.filter((item) => allSelectedUserNames.includes(item.id));\n this.list._clearSelection();\n this._selectedItems = [...currentSelectedList];\n this._selectedItems.forEach((item) => {\n item._selected = true;\n this.list._selectItem(item);\n });\n this._dontCallSelection = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowUserListComponent, isStandalone: true, selector: \"fdp-approval-flow-user-list\", inputs: { users: \"users\", selectedUsers: \"selectedUsers\", isSelectable: \"isSelectable\" }, outputs: { onUserClick: \"onUserClick\", onSelectionChange: \"onSelectionChange\" }, host: { classAttribute: \"fdp-approval-flow-user-list\" }, viewQueries: [{ propertyName: \"list\", first: true, predicate: ListComponent, descendants: true }, { propertyName: \"listItems\", predicate: StandardListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"@if (_allSelectedUsers.length) {\\n <div class=\\\"fdp-approval-flow-user-list__selected-count\\\">\\n @if (_allSelectedUsers.length === 1) {\\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\\n } @else {\\n {{\\n 'platformApprovalFlow.userListSelectedItemsCountPlural'\\n | fdTranslate: { count: _allSelectedUsers.length }\\n }}\\n }\\n </div>\\n}\\n<fdp-list\\n [selectionMode]=\\\"isSelectable ? 'multi' : 'none'\\\"\\n [selection]=\\\"isSelectable\\\"\\n [navigationIndicator]=\\\"true\\\"\\n [hasByLine]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedItems\\\"\\n [selectedItems]=\\\"_selectedItems\\\"\\n (selectedItemChange)=\\\"_onSelect($event)\\\"\\n>\\n @for (_user of _displayUsers; track _trackByFn($index, _user)) {\\n <fdp-standard-list-item\\n [attr.id]=\\\"_idPrefix + _user.id\\\"\\n [id]=\\\"_idPrefix + _user.id\\\"\\n [avatar]=\\\"{ image: _user.imgUrl, ariaLabel: _user.name }\\\"\\n [description]=\\\"_user.description\\\"\\n [ariaLabel]=\\\"_user.name\\\"\\n [title]=\\\"_user.name\\\"\\n (click)=\\\"$event.stopPropagation(); onUserClick.emit(_user)\\\"\\n ></fdp-standard-list-item>\\n }\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\\n\"], dependencies: [{ kind: \"component\", type: ListComponent, selector: \"fdp-list\", inputs: [\"selectedItems\", \"ariaSetsize\", \"ariaMultiselectable\", \"loadTitle\", \"loadingLabel\", \"delayTime\", \"itemSize\", \"loadMore\", \"loadOnScroll\", \"role\", \"listType\", \"maxHeight\", \"noBorder\", \"scrollOffsetPercentage\", \"selection\", \"selectionMode\", \"value\", \"rowSelection\", \"dataSource\", \"navigated\", \"navigationIndicator\", \"hasByLine\", \"hasObject\", \"unreadIndicator\", \"interceptTabKey\"], outputs: [\"selectedItemChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: StandardListItemComponent, selector: \"fdp-standard-list-item\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-user-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-user-list'\n }, imports: [ListComponent, FormsModule, StandardListItemComponent, FdTranslatePipe], template: \"@if (_allSelectedUsers.length) {\\n <div class=\\\"fdp-approval-flow-user-list__selected-count\\\">\\n @if (_allSelectedUsers.length === 1) {\\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\\n } @else {\\n {{\\n 'platformApprovalFlow.userListSelectedItemsCountPlural'\\n | fdTranslate: { count: _allSelectedUsers.length }\\n }}\\n }\\n </div>\\n}\\n<fdp-list\\n [selectionMode]=\\\"isSelectable ? 'multi' : 'none'\\\"\\n [selection]=\\\"isSelectable\\\"\\n [navigationIndicator]=\\\"true\\\"\\n [hasByLine]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedItems\\\"\\n [selectedItems]=\\\"_selectedItems\\\"\\n (selectedItemChange)=\\\"_onSelect($event)\\\"\\n>\\n @for (_user of _displayUsers; track _trackByFn($index, _user)) {\\n <fdp-standard-list-item\\n [attr.id]=\\\"_idPrefix + _user.id\\\"\\n [id]=\\\"_idPrefix + _user.id\\\"\\n [avatar]=\\\"{ image: _user.imgUrl, ariaLabel: _user.name }\\\"\\n [description]=\\\"_user.description\\\"\\n [ariaLabel]=\\\"_user.name\\\"\\n [title]=\\\"_user.name\\\"\\n (click)=\\\"$event.stopPropagation(); onUserClick.emit(_user)\\\"\\n ></fdp-standard-list-item>\\n }\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { users: [{\n type: Input\n }], selectedUsers: [{\n type: Input\n }], isSelectable: [{\n type: Input\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onUserClick: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelectionChange: [{\n type: Output\n }], list: [{\n type: ViewChild,\n args: [ListComponent]\n }], listItems: [{\n type: ViewChildren,\n args: [StandardListItemComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBRUgsYUFBYSxFQUViLHlCQUF5QixFQUM1QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUd2QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUI7OztHQUdHO0FBWUgsTUFBTSxPQUFPLDZCQUE2QjtJQXVEdEMsY0FBYztJQUNkLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBdkQzQywwQkFBMEI7UUFFMUIsVUFBSyxH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QUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7OEdBbExRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGlXQXdCM0IsYUFBYSwrREFJVix5QkFBeUIscUVDN0UzQyw0dkNBaUNBLDJSRGNjLGFBQWEsd2RBQUUsV0FBVywrVkFBRSx5QkFBeUIsOERBQUUsZUFBZTs7MkZBRXZFLDZCQUE2QjtrQkFYekMsU0FBUzsrQkFDSSw2QkFBNkIsaUJBR3hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLDZCQUE2QjtxQkFDdkMsV0FDUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxDQUFDO3NGQUtqRixLQUFLO3NCQURKLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSzs7UUFLTiwrREFBK0Q7UUFDL0QsV0FBVztzQkFGVixNQUFNOztRQU1QLCtEQUErRDtRQUMvRCxpQkFBaUI7c0JBRmhCLE1BQU07Z0JBTVAsSUFBSTtzQkFESCxTQUFTO3VCQUFDLGFBQWE7Z0JBS3hCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICAgIFN0YW5kYXJkTGlzdEl0ZW1Db21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7IHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IElURU1TX1JFTkRFUkVEX0FUX09OQ0UgPSAxMDA7XG5jb25zdCBJTlRFUlZBTF9JTl9NUyA9IDEwO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dVc2VyTGlzdCBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtMaXN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgU3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudCwgRmRUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogQXBwcm92YWwgZmxvdyB1c2VycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQXBwcm92YWwgZmxvdyBzZWxlY3RlZCB1c2VycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGlzIHNlbGVjdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU2VsZWN0YWJsZSA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiB1c2VyIGNsaWNrICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25Vc2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVXNlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIHNlbGVjdGlvbiBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxVc2VyW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0OiBMaXN0Q29tcG9uZW50PEFwcHJvdmFsVXNlcj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oU3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudClcbiAgICBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkSXRlbXM6IEJhc2VMaXN0SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pZFByZWZpeCA9ICdhcHByb3ZhbC1ub2RlLXVzZXItJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FsbFNlbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ludGVydmFsSUQ/OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCQgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RvbnRDYWxsU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW1zKHRoaXMuc2VsZWN0ZWRVc2Vycyk7XG4gICAgICAgICAgICB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzID0gWy4uLnRoaXMuc2VsZWN0ZWRVc2Vyc107XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvTGlzdEl0ZW1DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy51c2Vycykge1xuICAgICAgICAgICAgdGhpcy5fY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWxlY3QoZXZlbnQ6IFNlbGVjdGlvbkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZG9udENhbGxTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBldmVudC5zZWxlY3RlZEl0ZW1zO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IGV2ZW50LnJlbW92ZWQubWFwKChpdGVtOiBCYXNlTGlzdEl0ZW0pID0+IGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FsbFNlbGVjdGVkVXNlcnMgPSB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHVzZXI6IEFwcHJvdmFsVXNlcikgPT4gIWlkcy5pbmNsdWRlcyhgJHt0aGlzLl9pZFByZWZpeCArIHVzZXIuaWR9YClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWRkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzLnB1c2goLi4udGhpcy5fZ2V0VXNlcnNGcm9tU2VsZWN0ZWRJdGVtcyhldmVudC5hZGRlZCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fYWxsU2VsZWN0ZWRVc2Vycyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRVc2Vyc0Zyb21TZWxlY3RlZEl0ZW1zKGl0ZW1zOiBCYXNlTGlzdEl0ZW1bXSk6IEFwcHJvdmFsVXNlcltdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiB0aGlzLnVzZXJzLmZpbmQoKHVzZXIpID0+IGAke3RoaXMuX2lkUHJlZml4ICsgdXNlci5pZH1gID09PSBpdGVtLmlkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHUpOiB1IGlzIEFwcHJvdmFsVXNlciA9PiAhIXUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlVc2VycyA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy51c2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uVHJhY2tlciA9IHsgY3VycmVudEluZGV4OiAwIH07XG5cbiAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4oY29sbGVjdGlvblRyYWNrZXIpO1xuICAgICAgICB0aGlzLl9pbnRlcnZhbElEID0gd2luZG93LnNldEludGVydmFsKFxuICAgICAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIElOVEVSVkFMX0lOX01TLFxuICAgICAgICAgICAgY29sbGVjdGlvblRyYWNrZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VzZXJDb2xsZWN0b3JJbnRlcnZhbEZuKHRyYWNrZXI6IHsgY3VycmVudEluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSB0cmFja2VyLmN1cnJlbnRJbmRleCArIElURU1TX1JFTkRFUkVEX0FUX09OQ0U7XG5cbiAgICAgICAgY29uc3QgY29sbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRyYWNrZXIuY3VycmVudEluZGV4OyBpIDw9IG5leHRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSB0aGlzLnVzZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tpbGxJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRVc2Vycy5wdXNoKHRoaXMudXNlcnNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhY2tlci5jdXJyZW50SW5kZXggKz0gSVRFTVNfUkVOREVSRURfQVRfT05DRTtcblxuICAgICAgICB0aGlzLl9kaXNwbGF5VXNlcnMucHVzaCguLi5jb2xsZWN0ZWRVc2Vycyk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tpbGxJbnRlcnZhbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2ludGVydmFsSUQpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJRCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTGlzdEl0ZW1DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtcyh0aGlzLl9hbGxTZWxlY3RlZFVzZXJzKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0SXRlbXModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYWxsU2VsZWN0ZWRVc2VyTmFtZXMgPSB1c2Vycy5tYXAoKHVzZXIpID0+IHRoaXMuX2lkUHJlZml4ICsgdXNlci5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZExpc3QgPSB0aGlzLmxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGFsbFNlbGVjdGVkVXNlck5hbWVzLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICAgICAgdGhpcy5saXN0Ll9jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gWy4uLmN1cnJlbnRTZWxlY3RlZExpc3RdO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5fc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgfVxufVxuIiwiQGlmIChfYWxsU2VsZWN0ZWRVc2Vycy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0X19zZWxlY3RlZC1jb3VudFwiPlxuICAgICAgICBAaWYgKF9hbGxTZWxlY3RlZFVzZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJMaXN0U2VsZWN0ZWRJdGVtc0NvdW50U2luZ3VsYXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy51c2VyTGlzdFNlbGVjdGVkSXRlbXNDb3VudFBsdXJhbCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyBjb3VudDogX2FsbFNlbGVjdGVkVXNlcnMubGVuZ3RoIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbjxmZHAtbGlzdFxuICAgIFtzZWxlY3Rpb25Nb2RlXT1cImlzU2VsZWN0YWJsZSA/ICdtdWx0aScgOiAnbm9uZSdcIlxuICAgIFtzZWxlY3Rpb25dPVwiaXNTZWxlY3RhYmxlXCJcbiAgICBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgICBbaGFzQnlMaW5lXT1cInRydWVcIlxuICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkSXRlbXNcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cIl9zZWxlY3RlZEl0ZW1zXCJcbiAgICAoc2VsZWN0ZWRJdGVtQ2hhbmdlKT1cIl9vblNlbGVjdCgkZXZlbnQpXCJcbj5cbiAgICBAZm9yIChfdXNlciBvZiBfZGlzcGxheVVzZXJzOyB0cmFjayBfdHJhY2tCeUZuKCRpbmRleCwgX3VzZXIpKSB7XG4gICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfaWRQcmVmaXggKyBfdXNlci5pZFwiXG4gICAgICAgICAgICBbaWRdPVwiX2lkUHJlZml4ICsgX3VzZXIuaWRcIlxuICAgICAgICAgICAgW2F2YXRhcl09XCJ7IGltYWdlOiBfdXNlci5pbWdVcmwsIGFyaWFMYWJlbDogX3VzZXIubmFtZSB9XCJcbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJfdXNlci5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIl91c2VyLm5hbWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIl91c2VyLm5hbWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25Vc2VyQ2xpY2suZW1pdChfdXNlcilcIlxuICAgICAgICA+PC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgIH1cbjwvZmRwLWxpc3Q+XG4iXX0=","import { EventEmitter, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport var VIEW_MODES;\n(function (VIEW_MODES) {\n VIEW_MODES[\"SELECT_TEAM\"] = \"SELECT_TEAM\";\n VIEW_MODES[\"SELECT_USER\"] = \"SELECT_USER\";\n VIEW_MODES[\"VIEW_TEAM_MEMBERS\"] = \"VIEW_TEAM_MEMBERS\";\n VIEW_MODES[\"USER_DETAILS\"] = \"USER_DETAILS\";\n})(VIEW_MODES || (VIEW_MODES = {}));\nexport class ApprovalFlowAddNodeViewService {\n constructor() {\n /** @hidden */\n this.onViewChange = new EventEmitter();\n }\n /** @hidden */\n get isUserDetailsMode() {\n return this.currentView === VIEW_MODES.USER_DETAILS;\n }\n /** @hidden */\n get isTeamMembersMode() {\n return this.currentView === VIEW_MODES.VIEW_TEAM_MEMBERS;\n }\n /** @hidden */\n get isSelectUserMode() {\n return this.currentView === VIEW_MODES.SELECT_USER;\n }\n /** @hidden */\n get isSelectTeamMode() {\n return this.currentView === VIEW_MODES.SELECT_TEAM;\n }\n /** @hidden */\n get team() {\n return this.selectedTeam;\n }\n /** @hidden */\n setCurrentView(view) {\n this.currentView = view;\n this.onViewChange.emit();\n }\n /** @hidden */\n resetView() {\n this.currentView = undefined;\n this.onViewChange.emit();\n }\n /** @hidden */\n selectTeam(team) {\n this.selectedTeam = team;\n }\n /** @hidden */\n resetTeam() {\n this.selectedTeam = undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pELE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDbEIseUNBQTJCLENBQUE7SUFDM0IseUNBQTJCLENBQUE7SUFDM0IscURBQXVDLENBQUE7SUFDdkMsMkNBQTZCLENBQUE7QUFDakMsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBR0QsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUVJLGNBQWM7UUFDZCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FxRHJDO0lBOUNHLGNBQWM7SUFDZCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUM7SUFDN0QsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYyxDQUFDLElBQWdCO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFrQjtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVM7UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDOzhHQXREUSw4QkFBOEI7a0hBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwcm92YWxUZWFtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBlbnVtIFZJRVdfTU9ERVMge1xuICAgIFNFTEVDVF9URUFNID0gJ1NFTEVDVF9URUFNJyxcbiAgICBTRUxFQ1RfVVNFUiA9ICdTRUxFQ1RfVVNFUicsXG4gICAgVklFV19URUFNX01FTUJFUlMgPSAnVklFV19URUFNX01FTUJFUlMnLFxuICAgIFVTRVJfREVUQUlMUyA9ICdVU0VSX0RFVEFJTFMnXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2Uge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25WaWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGN1cnJlbnRWaWV3PzogVklFV19NT0RFUztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRUZWFtPzogQXBwcm92YWxUZWFtO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNVc2VyRGV0YWlsc01vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWaWV3ID09PSBWSUVXX01PREVTLlVTRVJfREVUQUlMUztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1RlYW1NZW1iZXJzTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTZWxlY3RVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTZWxlY3RUZWFtTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdGVhbSgpOiBBcHByb3ZhbFRlYW0gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRlYW07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRDdXJyZW50Vmlldyh2aWV3OiBWSUVXX01PREVTKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB2aWV3O1xuICAgICAgICB0aGlzLm9uVmlld0NoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZXNldFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25WaWV3Q2hhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlc2V0VGVhbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlYW0gPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { FdDate } from '@fundamental-ngx/core/datetime';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { FormItemComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { MultiInputComponent } from '@fundamental-ngx/core/multi-input';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { ApprovalFlowTeamListComponent } from '../approval-flow-team-list/approval-flow-team-list.component';\nimport { ApprovalFlowUserDetailsComponent } from '../approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from '../approval-flow-user-list/approval-flow-user-list.component';\nimport { displayTeamFn, displayUserFn, filterByName, trackByFn } from '../helpers';\nimport { ApprovalFlowAddNodeViewService, VIEW_MODES } from '../services/approval-flow-add-node-view.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"../services/approval-flow-add-node-view.service\";\nimport * as i3 from \"@angular/forms\";\nexport var APPROVAL_FLOW_NODE_TYPES;\n(function (APPROVAL_FLOW_NODE_TYPES) {\n APPROVAL_FLOW_NODE_TYPES[\"SERIAL\"] = \"SERIAL\";\n APPROVAL_FLOW_NODE_TYPES[\"PARALLEL\"] = \"PARALLEL\";\n})(APPROVAL_FLOW_NODE_TYPES || (APPROVAL_FLOW_NODE_TYPES = {}));\nexport var APPROVAL_FLOW_APPROVER_TYPES;\n(function (APPROVAL_FLOW_APPROVER_TYPES) {\n APPROVAL_FLOW_APPROVER_TYPES[\"SINGLE_USER\"] = \"SINGLE_USER\";\n APPROVAL_FLOW_APPROVER_TYPES[\"ANYONE\"] = \"ANYONE\";\n APPROVAL_FLOW_APPROVER_TYPES[\"EVERYONE\"] = \"EVERYONE\";\n})(APPROVAL_FLOW_APPROVER_TYPES || (APPROVAL_FLOW_APPROVER_TYPES = {}));\n/**\n * @deprecated\n * ApprovalFlowAddNode component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowAddNodeComponent {\n /** @hidden */\n constructor(dialogRef, viewService, _cdr) {\n this.dialogRef = dialogRef;\n this.viewService = viewService;\n this._cdr = _cdr;\n /** @hidden */\n this._nodeType = APPROVAL_FLOW_NODE_TYPES.SERIAL;\n /** @hidden */\n this._nodeTypes = APPROVAL_FLOW_NODE_TYPES;\n /** @hidden */\n this._nodeTypesArray = Object.keys(APPROVAL_FLOW_NODE_TYPES);\n /** @hidden */\n this._approverType = APPROVAL_FLOW_APPROVER_TYPES.SINGLE_USER;\n /** @hidden */\n this._approverTypes = APPROVAL_FLOW_APPROVER_TYPES;\n /** @hidden */\n this._approverTypesArray = Object.keys(APPROVAL_FLOW_APPROVER_TYPES);\n /** @hidden */\n this._dueDate = FdDate.getNow();\n /** @hidden */\n this._selectMode = false;\n /** @hidden */\n this._approvers = [];\n /** @hidden */\n this._teams = [];\n /** @hidden */\n this._selectedApprovers = [];\n /** @hidden */\n this._selectedTeamArray = [];\n /** @hidden */\n this._selectedTeamMembers = [];\n /** @hidden */\n this._filteredTeamMembers = [];\n /** @hidden */\n this._checkDueDate = false;\n /** @hidden */\n this._displayUserFn = displayUserFn;\n /** @hidden */\n this._displayTeamFn = displayTeamFn;\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this._addToNextSerial = false;\n /** @hidden */\n this._searchInput = '';\n }\n /** @hidden */\n get _data() {\n return this.dialogRef.data;\n }\n /** @hidden */\n get _isSingleUserMode() {\n return this._approverType === this._approverTypes.SINGLE_USER;\n }\n /** @hidden */\n get _isMainSubmitButtonDisabled() {\n const approvers = this._isSingleUserMode ? this._selectedApprovers : this._selectedTeamArray;\n return !approvers.length || (this._checkDueDate && !this._dueDate);\n }\n /** @hidden */\n get _headerArrowGlyph() {\n return 'navigation-' + (this._data.rtl ? 'right' : 'left') + '-arrow';\n }\n /** @hidden */\n ngOnInit() {\n // triggering initial loading of data in data sources.\n this._data.teamDataSource.match();\n this._data.userDataSource.match();\n const teams$ = this._data.teamDataSource.open();\n const approvers$ = this._data.userDataSource.open();\n this._dataSourceSub = combineLatest([teams$, approvers$]).subscribe(([teams, approvers]) => {\n this._teams = teams;\n this._approvers = approvers;\n if (this._data.isEdit) {\n this._checkDueDate = !!this._data.checkDueDate;\n if (this._checkDueDate && this._data.node?.dueDate) {\n this._dueDate = FdDate.getFdDateByDate(new Date(this._data.node.dueDate));\n }\n this._selectedApprovers = [...(this._data.node?.approvers ?? [])];\n const team = this._data.node?.approvalTeamId &&\n this._teams.find((t) => t.id === this._data.node?.approvalTeamId);\n if (team) {\n this.viewService.selectTeam(team);\n this._selectedTeam = team;\n this._selectedTeamArray = [team];\n this._approverType = this._data.node?.isEveryoneApprovalNeeded\n ? this._approverTypes.EVERYONE\n : this._approverTypes.ANYONE;\n }\n }\n this._cdr.detectChanges();\n });\n this._viewChangeSub = this.viewService.onViewChange.subscribe(() => {\n this._cdr.detectChanges();\n });\n switch (this._data.nodeTarget) {\n case 'empty':\n case 'before':\n case 'after':\n this._nodeType = this._nodeTypes.SERIAL;\n break;\n case 'parallel':\n this._nodeType = this._nodeTypes.PARALLEL;\n break;\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._viewChangeSub.unsubscribe();\n this._dataSourceSub.unsubscribe();\n this._data.userDataSource.close();\n this._data.teamDataSource.close();\n }\n /** @hidden */\n _goToSelectMode() {\n this._selectMode = true;\n this.viewService.setCurrentView(this._isSingleUserMode ? VIEW_MODES.SELECT_USER : VIEW_MODES.SELECT_TEAM);\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitSelectMode() {\n this._searchInput = '';\n this._onSearchStringChange('');\n this._selectedApprovers = this._data.node?.approvers?.length ? [...this._data.node.approvers] : [];\n if (!this._data.isEdit && !this._data.node?.approvalTeamId) {\n this.viewService.resetTeam();\n }\n this._selectMode = false;\n this.viewService.resetView();\n this._cdr.detectChanges();\n }\n /** @hidden */\n _setSelectedApprovers(approvers) {\n this._selectedApprovers = approvers;\n this._confirmSelectedApprovers();\n }\n /** @hidden */\n _confirmSelectedApprovers() {\n if (!this._data.node) {\n return;\n }\n this._data.node.approvers = this._selectedApprovers;\n this._data.node.variousTeams = this._data.node.approvers.some((u) => u.teamId !== this._data.node.approvers[0].teamId);\n this._data.node.description = this._data.node.variousTeams ? '' : this._selectedApprovers[0]?.description;\n delete this._data.node.approvalTeamId;\n delete this._data.node.isEveryoneApprovalNeeded;\n this._exitSelectMode();\n }\n /** @hidden */\n _setSelectedTeam(team) {\n this.viewService.selectTeam(team);\n }\n /** @hidden */\n _confirmSelectedTeam() {\n if (!this.viewService.team) {\n return;\n }\n this._selectedTeam = this.viewService.team;\n this._selectedTeamArray = [this.viewService.team];\n if (this._data.node) {\n this._data.node.variousTeams = false;\n this._data.node.approvalTeamId = this.viewService.team.id;\n this._data.node.description = this.viewService.team.name;\n this._data.node.isEveryoneApprovalNeeded = this._approverType === APPROVAL_FLOW_APPROVER_TYPES.EVERYONE;\n }\n this._exitSelectMode();\n }\n /** @hidden */\n _seeUserDetails(user) {\n this.viewService.setCurrentView(VIEW_MODES.USER_DETAILS);\n this._userToShowDetails = user;\n this._userToShowDetailsData$ = this._data.userDataSource.dataProvider.getOne(new Map([['id', user.id]]));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitUserDetailsMode() {\n this.viewService.setCurrentView(this.viewService.team ? VIEW_MODES.VIEW_TEAM_MEMBERS : VIEW_MODES.SELECT_USER);\n this._userToShowDetails = undefined;\n this._userToShowDetailsData$ = undefined;\n this._cdr.detectChanges();\n }\n /** @hidden */\n _viewTeamMembers(team) {\n this.viewService.selectTeam(team);\n this.viewService.setCurrentView(VIEW_MODES.VIEW_TEAM_MEMBERS);\n this._selectedTeamMembers = team.members;\n this._setFilteredTeamMembers(this._selectedTeamMembers); // applying local filtering\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitTeamMembersMode() {\n this.viewService.setCurrentView(VIEW_MODES.SELECT_TEAM);\n this.viewService.resetTeam();\n this._selectedTeamMembers = [];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _submit() {\n if (this._data.node && !this._isSingleUserMode && this._selectedTeam) {\n this._data.node.approvers = [...this._selectedTeam.members];\n }\n if (this._data.node && this._checkDueDate) {\n this._data.node.dueDate = this._dueDate.toDate();\n }\n this.dialogRef.close({\n node: this._data.node,\n nodeType: this._nodeType,\n toNextSerial: this._addToNextSerial\n });\n }\n /** @hidden */\n _onSearchStringChange(searchString = '') {\n this._searchInput = searchString;\n const params = new Map([['query', searchString]]);\n if (this.viewService.isSelectUserMode) {\n this._data.userDataSource.match(params);\n }\n else if (this.viewService.isSelectTeamMode) {\n this._data.teamDataSource.match(params);\n }\n else if (this.viewService.isTeamMembersMode) {\n this._setFilteredTeamMembers(this._selectedTeamMembers.filter((user) => filterByName(user, searchString)));\n }\n }\n /** @hidden */\n _setFilteredTeamMembers(users) {\n this._filteredTeamMembers = [...users];\n this._cdr.detectChanges();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: \"fdp-approval-flow-add-node\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-add-node\" }, ngImport: i0, template: \"<fd-dialog fdCompact>\\n <fd-dialog-header [class.show-search]=\\\"_selectMode && !_userToShowDetails\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (!_selectMode && !_data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\\n }\\n @if (!_selectMode && _data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\\n }\\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitTeamMembersMode()\\\"></fd-icon>\\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitUserDetailsMode()\\\"></fd-icon>\\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\\n }\\n </p>\\n @if (_selectMode && !_userToShowDetails) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n [suggestions]=\\\"[]\\\"\\n [inputText]=\\\"_searchInput\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\\\"viewService.isUserDetailsMode\\\">\\n @if (!_selectMode) {\\n @if (_data.showNodeTypeSelect) {\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_nodeType\\\">\\n @for (option of _nodeTypesArray; track option) {\\n @switch (option) {\\n @case (_nodeTypes.SERIAL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\\n </li>\\n }\\n @case (_nodeTypes.PARALLEL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n }\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_approverType\\\">\\n @for (option of _approverTypesArray; track option) {\\n @switch (option) {\\n @case (_approverTypes.SINGLE_USER) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.ANYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.EVERYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\\n @if (_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedApprovers\\\"\\n [(ngModel)]=\\\"_selectedApprovers\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n (selectedChange)=\\\"_setSelectedApprovers($event)\\\"\\n ></fd-multi-input>\\n }\\n @if (!_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedTeamArray\\\"\\n [(ngModel)]=\\\"_selectedTeamArray\\\"\\n [displayFn]=\\\"_displayTeamFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n ></fd-multi-input>\\n }\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_addToNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n @if (_checkDueDate) {\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\\n <fd-date-picker type=\\\"single\\\" [state]=\\\"!this._dueDate ? 'error' : null\\\" [(ngModel)]=\\\"_dueDate\\\">\\n </fd-date-picker>\\n </div>\\n }\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectTeamMode) {\\n @if (!_data.teamDataSource.isDataLoading) {\\n <fdp-approval-flow-team-list\\n [isRtl]=\\\"_data.rtl\\\"\\n [teams]=\\\"_teams\\\"\\n [selectedTeamId]=\\\"_selectedTeam?.id\\\"\\n (onTeamClick)=\\\"_viewTeamMembers($event)\\\"\\n (onTeamRadioClick)=\\\"_setSelectedTeam($event)\\\"\\n ></fdp-approval-flow-team-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\\\"\\n [isSelectable]=\\\"viewService.isSelectUserMode\\\"\\n [selectedUsers]=\\\"_selectedApprovers\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedApprovers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer>\\n @if (!_selectMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"_isMainSubmitButtonDisabled\\\"\\n (click)=\\\"_submit()\\\"\\n >\\n </fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close()\\\"\\n ></fd-button-bar>\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectUserMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedApprovers.length\\\"\\n (click)=\\\"_confirmSelectedApprovers()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isSelectTeamMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedTeam && !viewService.team\\\"\\n (click)=\\\"_confirmSelectedTeam()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitTeamMembersMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-button-bar>\\n }\\n }\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SelectComponent, selector: \"fd-select\", inputs: [\"extendedBodyTemplate\", \"scrollStrategy\", \"textOverflow\", \"controlId\", \"state\", \"mobile\", \"stateMessage\", \"disabled\", \"required\", \"readonly\", \"placeholder\", \"value\", \"maxHeight\", \"glyph\", \"glyphFont\", \"closeOnOutsideClick\", \"fillControlMode\", \"controlTemplate\", \"appendTo\", \"unselectMissingOption\", \"typeaheadDebounceInterval\", \"ariaLabelledBy\", \"ariaLabel\", \"mobileConfig\", \"inline\", \"selectControlClass\", \"selectDropdownButtonClass\", \"advancedStateMessage\", \"tabOutStrategy\", \"compareWith\"], outputs: [\"isOpenChange\", \"valueChange\"] }, { kind: \"component\", type: OptionComponent, selector: \"[fd-option], fd-option\", inputs: [\"id\", \"value\", \"disabled\"], outputs: [\"selectionChange\"] }, { kind: \"component\", type: MultiInputComponent, selector: \"fd-multi-input\", inputs: [\"placeholder\", \"disabled\", \"required\", \"compactCollapse\", \"maxHeight\", \"glyph\", \"glyphFont\", \"dropdownValues\", \"openDropdownOnAddOnClicked\", \"addonIconTitle\", \"searchTerm\", \"inputId\", \"highlight\", \"selected\", \"class\", \"filterFn\", \"valueFn\", \"displayFn\", \"newTokenParseFn\", \"optionItemIdentifier\", \"newTokenValidateFn\", \"ariaLabel\", \"ariaLabelledBy\", \"fillControlMode\", \"state\", \"buttonFocusable\", \"allowNewTokens\", \"mobile\", \"showAllButton\", \"bodyMaxWidth\", \"mobileConfig\", \"includes\", \"itemTemplate\", \"title\", \"byline\", \"autoComplete\", \"open\", \"displayAddonButton\", \"addOnButtonAriaLabel\"], outputs: [\"searchTermChange\", \"selectedChange\", \"openChange\", \"addOnButtonClicked\", \"allItemsSelectedChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"component\", type: DatePickerComponent, selector: \"fd-date-picker\", inputs: [\"type\", \"placeholder\", \"inputId\", \"required\", \"customDateTimeFormat\", \"message\", \"messageTriggers\", \"selectedDate\", \"selectedMultipleDates\", \"selectedRangeDate\", \"selectedMultipleDateRanges\", \"startingDayOfWeek\", \"rangeHoverEffect\", \"useValidation\", \"allowNull\", \"activeView\", \"placement\", \"appendTo\", \"disabled\", \"closeOnDateChoose\", \"showTodayButton\", \"todayButtonLabel\", \"previousButtonDisableFunction\", \"nextButtonDisableFunction\", \"state\", \"buttonFocusable\", \"specialDaysRules\", \"yearGrid\", \"aggregatedYearGrid\", \"markWeekends\", \"showWeekNumbers\", \"allowMultipleSelection\", \"isOpen\", \"inline\", \"ariaLabelledBy\", \"processInputOnBlur\", \"preventScrollOnFocus\", \"mobile\", \"mobileConfig\", \"mobileLandscape\", \"mobilePortrait\", \"dateRangeFormat\", \"disableFunction\", \"disableRangeStartFunction\", \"disableRangeEndFunction\"], outputs: [\"isOpenChange\", \"selectedDateChange\", \"selectedMultipleDatesChange\", \"selectedRangeDateChange\", \"selectedMultipleDateRangesChange\", \"activeViewChange\"] }, { kind: \"component\", type: ApprovalFlowTeamListComponent, selector: \"fdp-approval-flow-team-list\", inputs: [\"teams\", \"isRtl\", \"selectedTeamId\"], outputs: [\"onTeamClick\", \"onTeamRadioClick\"] }, { kind: \"component\", type: ApprovalFlowUserListComponent, selector: \"fdp-approval-flow-user-list\", inputs: [\"users\", \"selectedUsers\", \"isSelectable\"], outputs: [\"onUserClick\", \"onSelectionChange\"] }, { kind: \"component\", type: ApprovalFlowUserDetailsComponent, selector: \"fdp-approval-flow-user-details\", inputs: [\"user\", \"details\", \"detailsTemplate\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"component\", type: BusyIndicatorComponent, selector: \"fd-busy-indicator\", inputs: [\"loading\", \"size\", \"block\", \"ariaLabel\", \"ariaValueText\", \"title\", \"label\", \"ariaLive\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'\n }, imports: [\n DialogComponent,\n ContentDensityDirective,\n DialogHeaderComponent,\n TemplateDirective,\n IconComponent,\n SearchFieldComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n FormItemComponent,\n FormLabelComponent,\n SelectComponent,\n OptionComponent,\n MultiInputComponent,\n FormsModule,\n CheckboxComponent,\n DatePickerComponent,\n ApprovalFlowTeamListComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog fdCompact>\\n <fd-dialog-header [class.show-search]=\\\"_selectMode && !_userToShowDetails\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (!_selectMode && !_data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\\n }\\n @if (!_selectMode && _data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\\n }\\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitTeamMembersMode()\\\"></fd-icon>\\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitUserDetailsMode()\\\"></fd-icon>\\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\\n }\\n </p>\\n @if (_selectMode && !_userToShowDetails) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n [suggestions]=\\\"[]\\\"\\n [inputText]=\\\"_searchInput\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\\\"viewService.isUserDetailsMode\\\">\\n @if (!_selectMode) {\\n @if (_data.showNodeTypeSelect) {\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_nodeType\\\">\\n @for (option of _nodeTypesArray; track option) {\\n @switch (option) {\\n @case (_nodeTypes.SERIAL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\\n </li>\\n }\\n @case (_nodeTypes.PARALLEL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n }\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_approverType\\\">\\n @for (option of _approverTypesArray; track option) {\\n @switch (option) {\\n @case (_approverTypes.SINGLE_USER) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.ANYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.EVERYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\\n @if (_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedApprovers\\\"\\n [(ngModel)]=\\\"_selectedApprovers\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n (selectedChange)=\\\"_setSelectedApprovers($event)\\\"\\n ></fd-multi-input>\\n }\\n @if (!_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedTeamArray\\\"\\n [(ngModel)]=\\\"_selectedTeamArray\\\"\\n [displayFn]=\\\"_displayTeamFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n ></fd-multi-input>\\n }\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_addToNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n @if (_checkDueDate) {\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\\n <fd-date-picker type=\\\"single\\\" [state]=\\\"!this._dueDate ? 'error' : null\\\" [(ngModel)]=\\\"_dueDate\\\">\\n </fd-date-picker>\\n </div>\\n }\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectTeamMode) {\\n @if (!_data.teamDataSource.isDataLoading) {\\n <fdp-approval-flow-team-list\\n [isRtl]=\\\"_data.rtl\\\"\\n [teams]=\\\"_teams\\\"\\n [selectedTeamId]=\\\"_selectedTeam?.id\\\"\\n (onTeamClick)=\\\"_viewTeamMembers($event)\\\"\\n (onTeamRadioClick)=\\\"_setSelectedTeam($event)\\\"\\n ></fdp-approval-flow-team-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\\\"\\n [isSelectable]=\\\"viewService.isSelectUserMode\\\"\\n [selectedUsers]=\\\"_selectedApprovers\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedApprovers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer>\\n @if (!_selectMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"_isMainSubmitButtonDisabled\\\"\\n (click)=\\\"_submit()\\\"\\n >\\n </fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close()\\\"\\n ></fd-button-bar>\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectUserMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedApprovers.length\\\"\\n (click)=\\\"_confirmSelectedApprovers()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isSelectTeamMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedTeam && !viewService.team\\\"\\n (click)=\\\"_confirmSelectedTeam()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitTeamMembersMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-button-bar>\\n }\\n }\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxF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O3dCQUNqQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3QixnQ0FBZ0M7d0JBQ2hDLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUl0ZW1Db21wb25lbnQsXG4gICAgICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICAgICAgU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoSW5wdXQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0NoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8QWRkTm9kZURpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwdWJsaWMgdmlld1NlcnZpY2U6IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9kYXRhKCk6IEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2luZ2xlVXNlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHByb3ZlclR5cGUgPT09IHRoaXMuX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzTWFpblN1Ym1pdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgOiB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheTtcblxuICAgICAgICByZXR1cm4gIWFwcHJvdmVycy5sZW5ndGggfHwgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiAhdGhpcy5fZHVlRGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2hlYWRlckFycm93R2x5cGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICduYXZpZ2F0aW9uLScgKyAodGhpcy5fZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHRyaWdnZXJpbmcgaW5pdGlhbCBsb2FkaW5nIG9mIGRhdGEgaW4gZGF0YSBzb3VyY2VzLlxuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgY29uc3QgdGVhbXMkID0gdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1YiA9IGNvbWJpbmVMYXRlc3QoW3RlYW1zJCwgYXBwcm92ZXJzJF0pLnN1YnNjcmliZSgoW3RlYW1zLCBhcHByb3ZlcnNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90ZWFtcyA9IHRlYW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9hcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrRHVlRGF0ZSA9ICEhdGhpcy5fZGF0YS5jaGVja0R1ZURhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tEdWVEYXRlICYmIHRoaXMuX2RhdGEubm9kZT8uZHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdWVEYXRlID0gRmREYXRlLmdldEZkRGF0ZUJ5RGF0ZShuZXcgRGF0ZSh0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gWy4uLih0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyA/PyBbXSldO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVhbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRlYW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RlYW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZlclR5cGUgPSB0aGlzLl9kYXRhLm5vZGU/LmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FwcHJvdmVyVHlwZXMuQU5ZT05FO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIgPSB0aGlzLnZpZXdTZXJ2aWNlLm9uVmlld0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhLm5vZGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuU0VSSUFMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncGFyYWxsZWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlBBUkFMTEVMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dvVG9TZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyBWSUVXX01PREVTLlNFTEVDVF9VU0VSIDogVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaElucHV0ID0gJyc7XG4gICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycz8ubGVuZ3RoID8gWy4uLnRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnNdIDogW107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaElucHV0ID0gc2VhcmNoU3RyaW5nO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgTWFwKFtbJ3F1ZXJ5Jywgc2VhcmNoU3RyaW5nXV0pO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh1c2VyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWRUZWFtTWVtYmVycyA9IFsuLi51c2Vyc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBmZENvbXBhY3Q+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKF9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiX3NlYXJjaElucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9vblNlYXJjaFN0cmluZ0NoYW5nZSgkZXZlbnQudGV4dClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keSBbY2xhc3MuZmQtZGlhbG9nX19ib2R5LS1hdXRvLWhlaWdodF09XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgQGlmIChfZGF0YS5zaG93Tm9kZVR5cGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX25vZGVUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgX25vZGVUeXBlc0FycmF5OyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9ub2RlVHlwZXMuU0VSSUFMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlUGFyYWxsZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0IFsodmFsdWUpXT1cIl9hcHByb3ZlclR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIF9hcHByb3ZlclR5cGVzQXJyYXk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVVc2VyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5BTllPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1BbnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9hcHByb3ZlclR5cGVzLkVWRVJZT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtRXZlcnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dVc2VyT3JUZWFtJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKF9pc1NpbmdsZVVzZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJfc2V0U2VsZWN0ZWRBcHByb3ZlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKCFfaXNTaW5nbGVVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVRlYW1GblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJfZ29Ub1NlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChfbm9kZVR5cGUgPT09IF9ub2RlVHlwZXMuUEFSQUxMRUwpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiX2FkZFRvTmV4dFNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBZGRUb05leHQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0R1ZURhdGUnIHwgZmRUcmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtZGF0ZS1waWNrZXIgdHlwZT1cInNpbmdsZVwiIFtzdGF0ZV09XCIhdGhpcy5fZHVlRGF0ZSA/ICdlcnJvcicgOiBudWxsXCIgWyhuZ01vZGVsKV09XCJfZHVlRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgIEBpZiAoIV9kYXRhLnRlYW1EYXRhU291cmNlLmlzRGF0YUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cIl9kYXRhLnJ0bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGVhbXNdPVwiX3RlYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRlYW1JZF09XCJfc2VsZWN0ZWRUZWFtPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25UZWFtQ2xpY2spPVwiX3ZpZXdUZWFtTWVtYmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblRlYW1SYWRpb0NsaWNrKT1cIl9zZXRTZWxlY3RlZFRlYW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cInRydWVcIiBbYmxvY2tdPVwidHJ1ZVwiPiA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCB2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCAhX2RhdGEudXNlckRhdGFTb3VyY2UuaXNEYXRhTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdXNlcnNdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSA/IF9hcHByb3ZlcnMgOiBfZmlsdGVyZWRUZWFtTWVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNTZWxlY3RhYmxlXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVXNlcnNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblVzZXJDbGljayk9XCJfc2VlVXNlckRldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdGVkQXBwcm92ZXJzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSAmJiBfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzVGVtcGxhdGVdPVwiX2RhdGEudXNlckRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzXT1cIl91c2VyVG9TaG93RGV0YWlsc0RhdGEkXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBZGRBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zdWJtaXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCJcbiAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFwcHJvdmVyU2VsZWN0aW9uQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX3NlbGVjdGVkVGVhbSAmJiAhdmlld1NlcnZpY2UudGVhbVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkVGVhbSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFwcHJvdmVyU2VsZWN0aW9uQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQXBwcm92ZXJPclRlYW1EZXRhaWxzQ2xvc2VBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { ApprovalFlowUserDetailsComponent } from '../approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from '../approval-flow-user-list/approval-flow-user-list.component';\nimport { filterByName } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\n/**\n * @deprecated\n * ApprovalFlowApproverDetails component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowApproverDetailsComponent {\n /** @hidden */\n constructor(dialogRef, _cdr) {\n this.dialogRef = dialogRef;\n this._cdr = _cdr;\n /** @hidden */\n this._isListMode = false;\n /** @hidden */\n this._listItems = [];\n /** @hidden */\n this._selectedUsers = [];\n }\n /** @hidden */\n get _data() {\n return this.dialogRef.data;\n }\n /** @hidden */\n ngOnInit() {\n this._isListMode = (this._data.node?.approvers.length ?? 0) > 1;\n if (this._isListMode) {\n this._setListItems(this._data.node?.approvers ?? []);\n }\n else {\n const user = this._data.watcher || this._data.node?.approvers[0];\n if (user) {\n this._seeUserDetails(user);\n }\n else {\n this.dialogRef.close();\n }\n }\n }\n /** @hidden */\n _setListItems(items = []) {\n this._listItems = [...items];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitUserDetailsMode() {\n this._userToShowDetails = undefined;\n this._isListMode = true;\n }\n /** @hidden */\n _seeUserDetails(user) {\n this._userToShowDetails = user;\n this._userToShowDetailsData$ = this._data.userDataSource.dataProvider.getOne(new Map([['id', user.id]]));\n this._isListMode = false;\n this._selectedUsers = [];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _sendReminder() {\n const reminderTargets = this._isListMode ? this._selectedUsers : this._data.node?.approvers;\n this.dialogRef.close(reminderTargets);\n }\n /** @hidden */\n _onSearchStringChange(searchString) {\n if (!searchString) {\n this._setListItems(this._data.node?.approvers);\n return;\n }\n this._setListItems(this._data.node?.approvers.filter((user) => filterByName(user, searchString)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, deps: [{ token: i1.DialogRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowApproverDetailsComponent, isStandalone: true, selector: \"fdp-approval-flow-approver-details\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-approver-details\" }, ngImport: i0, template: \"<fd-dialog>\\n <fd-dialog-header [class.show-search]=\\\"!_userToShowDetails && _isListMode\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1) {\\n <fd-icon\\n [glyph]=\\\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"button\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.space)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.enter)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-icon>\\n }\\n @if (_isListMode && !_userToShowDetails) {\\n {{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})\\n } @else {\\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\\n }\\n </p>\\n @if (!_userToShowDetails && _isListMode) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n fdCompact\\n [suggestions]=\\\"[]\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body>\\n @if (_userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n @if (_isListMode) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"_listItems\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedUsers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n @if (_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\\\"\\n (click)=\\\"_sendReminder()\\\"\\n ></fd-button-bar>\\n }\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close('Cancel')\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: ApprovalFlowUserDetailsComponent, selector: \"fdp-approval-flow-user-details\", inputs: [\"user\", \"details\", \"detailsTemplate\"] }, { kind: \"component\", type: ApprovalFlowUserListComponent, selector: \"fdp-approval-flow-user-list\", inputs: [\"users\", \"selectedUsers\", \"isSelectable\"], outputs: [\"onUserClick\", \"onSelectionChange\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-approver-details', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-approver-details'\n }, imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n IconComponent,\n SearchFieldComponent,\n ContentDensityDirective,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowUserListComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog>\\n <fd-dialog-header [class.show-search]=\\\"!_userToShowDetails && _isListMode\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1) {\\n <fd-icon\\n [glyph]=\\\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"button\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.space)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.enter)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-icon>\\n }\\n @if (_isListMode && !_userToShowDetails) {\\n {{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})\\n } @else {\\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\\n }\\n </p>\\n @if (!_userToShowDetails && _isListMode) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n fdCompact\\n [suggestions]=\\\"[]\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body>\\n @if (_userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n @if (_isListMode) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"_listItems\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedUsers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n @if (_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\\\"\\n (click)=\\\"_sendReminder()\\\"\\n ></fd-button-bar>\\n }\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close('Cancel')\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9C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Z3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmaWx0ZXJCeU5hbWUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEFwcHJvdmFsTm9kZSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YSB7XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICB3YXRjaGVyPzogQXBwcm92YWxVc2VyO1xuICAgIGFsbG93U2VuZFJlbWluZGVyPzogYm9vbGVhbjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHJ0bD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlscyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi4vc3R5bGVzL2FwcHJvdmFsLWZsb3ctZGlhbG9nLnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNMaXN0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbGlzdEl0ZW1zOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0RpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTGlzdE1vZGUgPSAodGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMubGVuZ3RoID8/IDApID4gMTtcblxuICAgICAgICBpZiAodGhpcy5faXNMaXN0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1zKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl9kYXRhLndhdGNoZXIgfHwgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnNbMF07XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlZVVzZXJEZXRhaWxzKHVzZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0TGlzdEl0ZW1zKGl0ZW1zOiBBcHByb3ZhbFVzZXJbXSA9IFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtcyA9IFsuLi5pdGVtc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2lzTGlzdE1vZGUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuICAgICAgICB0aGlzLl9pc0xpc3RNb2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVXNlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZW5kUmVtaW5kZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlbWluZGVyVGFyZ2V0cyA9IHRoaXMuX2lzTGlzdE1vZGUgPyB0aGlzLl9zZWxlY3RlZFVzZXJzIDogdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlbWluZGVyVGFyZ2V0cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldExpc3RJdGVtcyh0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXRMaXN0SXRlbXModGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2c+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIiFfdXNlclRvU2hvd0RldGFpbHMgJiYgX2lzTGlzdE1vZGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKF91c2VyVG9TaG93RGV0YWlscyAmJiBfZGF0YS5ub2RlPy5hcHByb3ZlcnMgJiYgX2RhdGEubm9kZSEuYXBwcm92ZXJzIS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ25hdmlnYXRpb24tJyArIChfZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChfaXNMaXN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IF9kYXRhLm5vZGU/LmRlc2NyaXB0aW9uIH19ICh7eyBfZGF0YS5ub2RlPy5hcHByb3ZlcnM/Lmxlbmd0aCA/PyAwIH19KVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cudXNlckRldGFpbHNIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKCFfdXNlclRvU2hvd0RldGFpbHMgJiYgX2lzTGlzdE1vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkQ29tcGFjdFxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCRldmVudC50ZXh0KVwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICBAaWYgKF91c2VyVG9TaG93RGV0YWlscykge1xuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfaXNMaXN0TW9kZSkge1xuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdFxuICAgICAgICAgICAgICAgIFt1c2Vyc109XCJfbGlzdEl0ZW1zXCJcbiAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRVc2VycyA9ICRldmVudFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3Q+XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyIGZkQ29tcGFjdD5cbiAgICAgICAgQGlmIChfaXNMaXN0TW9kZSB8fCAoX3VzZXJUb1Nob3dEZXRhaWxzICYmIF9kYXRhLm5vZGU/LmFwcHJvdmVycz8ubGVuZ3RoID09PSAxKSkge1xuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJEZXRhaWxzU2VuZFJlbWluZGVyQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX2RhdGEuYWxsb3dTZW5kUmVtaW5kZXIgfHwgKF9pc0xpc3RNb2RlICYmICFfc2VsZWN0ZWRVc2Vycy5sZW5ndGgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbmRSZW1pbmRlcigpXCJcbiAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIH1cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy51c2VyRGV0YWlsc0NhbmNlbEJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoJ0NhbmNlbCcpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MessageStripComponent } from '@fundamental-ngx/core/message-strip';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowMessages component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowMessagesComponent {\n constructor() {\n /** Array of messages */\n this.messages = [];\n /** Whether undo action is available */\n this.undoLastActionAvailable = false;\n /** Event emitted when messages array change */\n this.messagesChange = new EventEmitter();\n /** Event emitted when user click undo button */\n this.undoLastAction = new EventEmitter();\n /** @hidden */\n this._trackByFn = trackByFn;\n }\n /** @hidden */\n _dismissMessage(messageIndex) {\n this.messages.splice(messageIndex, 1);\n }\n /** @hidden */\n _undoLastAction(messageIndex, event) {\n event.preventDefault();\n this._dismissMessage(messageIndex);\n this.undoLastAction.emit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowMessagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowMessagesComponent, isStandalone: true, selector: \"fdp-approval-flow-messages\", inputs: { messages: \"messages\", undoLastActionAvailable: \"undoLastActionAvailable\" }, outputs: { messagesChange: \"messagesChange\", undoLastAction: \"undoLastAction\" }, host: { classAttribute: \"fdp-approval-flow-messages\" }, ngImport: i0, template: \"@for (message of messages; track message; let i = $index) {\\n <fd-message-strip\\n class=\\\"fdp-approval-flow-messages__item\\\"\\n [type]=\\\"message.type === 'error' ? 'error' : 'success'\\\"\\n [dismissible]=\\\"message.type !== 'error'\\\"\\n (onDismiss)=\\\"_dismissMessage(i)\\\"\\n >\\n <bdi>\\n <span>\\n @switch (message.type) {\\n @case ('approverAddSuccess') {\\n {{ 'platformApprovalFlow.messagesApproverAddedSuccess' | fdTranslate }}\\n }\\n @case ('teamAddSuccess') {\\n {{ 'platformApprovalFlow.messagesTeamAddedSuccess' | fdTranslate }}\\n }\\n @case ('nodeEdit') {\\n {{ 'platformApprovalFlow.messagesNodeEdited' | fdTranslate }}\\n }\\n @case ('nodeRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedSingular' | fdTranslate }}\\n }\\n @case ('nodesRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedPlural' | fdTranslate }}\\n }\\n @case ('teamRemove') {\\n {{ 'platformApprovalFlow.messagesTeamRemoved' | fdTranslate }}\\n }\\n @case ('error') {\\n {{ 'platformApprovalFlow.messagesErrorBuildGraph' | fdTranslate }}\\n }\\n }\\n </span>\\n @if (undoLastActionAvailable) {\\n <a\\n href=\\\"#\\\"\\n (click)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.enter)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.space)=\\\"_undoLastAction(i, $event)\\\"\\n >\\n {{ 'platformApprovalFlow.messagesUndoAction' | fdTranslate }}\\n </a>\\n }\\n </bdi>\\n </fd-message-strip>\\n}\\n\", styles: [\".fdp-approval-flow-messages__item:not(:last-child){margin-bottom:1rem}\\n\"], dependencies: [{ kind: \"component\", type: MessageStripComponent, selector: \"fd-message-strip\", inputs: [\"class\", \"dismissible\", \"ariaLabelledBy\", \"dismissBtnTitle\", \"noIcon\", \"type\", \"id\", \"ariaLabel\", \"width\", \"minWidth\", \"marginBottom\", \"indicationColor\"], outputs: [\"onDismiss\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowMessagesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-messages', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-messages'\n }, imports: [MessageStripComponent, FdTranslatePipe], template: \"@for (message of messages; track message; let i = $index) {\\n <fd-message-strip\\n class=\\\"fdp-approval-flow-messages__item\\\"\\n [type]=\\\"message.type === 'error' ? 'error' : 'success'\\\"\\n [dismissible]=\\\"message.type !== 'error'\\\"\\n (onDismiss)=\\\"_dismissMessage(i)\\\"\\n >\\n <bdi>\\n <span>\\n @switch (message.type) {\\n @case ('approverAddSuccess') {\\n {{ 'platformApprovalFlow.messagesApproverAddedSuccess' | fdTranslate }}\\n }\\n @case ('teamAddSuccess') {\\n {{ 'platformApprovalFlow.messagesTeamAddedSuccess' | fdTranslate }}\\n }\\n @case ('nodeEdit') {\\n {{ 'platformApprovalFlow.messagesNodeEdited' | fdTranslate }}\\n }\\n @case ('nodeRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedSingular' | fdTranslate }}\\n }\\n @case ('nodesRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedPlural' | fdTranslate }}\\n }\\n @case ('teamRemove') {\\n {{ 'platformApprovalFlow.messagesTeamRemoved' | fdTranslate }}\\n }\\n @case ('error') {\\n {{ 'platformApprovalFlow.messagesErrorBuildGraph' | fdTranslate }}\\n }\\n }\\n </span>\\n @if (undoLastActionAvailable) {\\n <a\\n href=\\\"#\\\"\\n (click)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.enter)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.space)=\\\"_undoLastAction(i, $event)\\\"\\n >\\n {{ 'platformApprovalFlow.messagesUndoAction' | fdTranslate }}\\n </a>\\n }\\n </bdi>\\n </fd-message-strip>\\n}\\n\", styles: [\".fdp-approval-flow-messages__item:not(:last-child){margin-bottom:1rem}\\n\"] }]\n }], propDecorators: { messages: [{\n type: Input\n }], undoLastActionAvailable: [{\n type: Input\n }], messagesChange: [{\n type: Output\n }], undoLastAction: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1tZXNzYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1tZXNzYWdlcy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzL2FwcHJvdmFsLWZsb3ctbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFnQnZDOzs7R0FHRztBQVlILE1BQU0sT0FBTyw2QkFBNkI7SUFYMUM7UUFZSSx3QkFBd0I7UUFFeEIsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFFckMsdUNBQXVDO1FBRXZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQywrQ0FBK0M7UUFFL0MsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUUzRCxnREFBZ0Q7UUFFaEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFDZCxlQUFVLEdBQUcsU0FBUyxDQUFDO0tBYzFCO0lBWkcsY0FBYztJQUNkLGVBQWUsQ0FBQyxZQUFvQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlLENBQUMsWUFBb0IsRUFBRSxLQUFZO1FBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0EvQlEsNkJBQTZCO2tHQUE3Qiw2QkFBNkIscVRDbkMxQyxtK0RBOENBLGtJRGJjLHFCQUFxQixvUEFBRSxlQUFlOzsyRkFFdkMsNkJBQTZCO2tCQVh6QyxTQUFTOytCQUNJLDRCQUE0QixpQkFHdkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsNEJBQTRCO3FCQUN0QyxXQUNRLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDOzhCQUtqRCxRQUFRO3NCQURQLEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lc3NhZ2VTdHJpcENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZXNzYWdlLXN0cmlwJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyB0cmFja0J5Rm4gfSBmcm9tICcuLi9oZWxwZXJzJztcblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93TWVzc2FnZVR5cGUgPVxuICAgIHwgJ3dhdGNoZXJzQ2hhbmdlU3VjY2VzcydcbiAgICB8ICdhcHByb3ZlckFkZFN1Y2Nlc3MnXG4gICAgfCAndGVhbUFkZFN1Y2Nlc3MnXG4gICAgfCAnbm9kZUVkaXQnXG4gICAgfCAnbm9kZVJlbW92ZSdcbiAgICB8ICdub2Rlc1JlbW92ZSdcbiAgICB8ICd0ZWFtUmVtb3ZlJ1xuICAgIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEZsb3dNZXNzYWdlIHtcbiAgICB0eXBlOiBBcHByb3ZhbEZsb3dNZXNzYWdlVHlwZTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93TWVzc2FnZXMgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1tZXNzYWdlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1tZXNzYWdlcydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtNZXNzYWdlU3RyaXBDb21wb25lbnQsIEZkVHJhbnNsYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93TWVzc2FnZXNDb21wb25lbnQge1xuICAgIC8qKiBBcnJheSBvZiBtZXNzYWdlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWVzc2FnZXM6IEFwcHJvdmFsRmxvd01lc3NhZ2VbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdW5kbyBhY3Rpb24gaXMgYXZhaWxhYmxlICovXG4gICAgQElucHV0KClcbiAgICB1bmRvTGFzdEFjdGlvbkF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBtZXNzYWdlcyBhcnJheSBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtZXNzYWdlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxGbG93TWVzc2FnZVtdPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrIHVuZG8gYnV0dG9uICovXG4gICAgQE91dHB1dCgpXG4gICAgdW5kb0xhc3RBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNtaXNzTWVzc2FnZShtZXNzYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShtZXNzYWdlSW5kZXgsIDEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VuZG9MYXN0QWN0aW9uKG1lc3NhZ2VJbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0aGlzLl9kaXNtaXNzTWVzc2FnZShtZXNzYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnVuZG9MYXN0QWN0aW9uLmVtaXQoKTtcbiAgICB9XG59XG4iLCJAZm9yIChtZXNzYWdlIG9mIG1lc3NhZ2VzOyB0cmFjayBtZXNzYWdlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxmZC1tZXNzYWdlLXN0cmlwXG4gICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbWVzc2FnZXNfX2l0ZW1cIlxuICAgICAgICBbdHlwZV09XCJtZXNzYWdlLnR5cGUgPT09ICdlcnJvcicgPyAnZXJyb3InIDogJ3N1Y2Nlc3MnXCJcbiAgICAgICAgW2Rpc21pc3NpYmxlXT1cIm1lc3NhZ2UudHlwZSAhPT0gJ2Vycm9yJ1wiXG4gICAgICAgIChvbkRpc21pc3MpPVwiX2Rpc21pc3NNZXNzYWdlKGkpXCJcbiAgICA+XG4gICAgICAgIDxiZGk+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdhcHByb3ZlckFkZFN1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNBcHByb3ZlckFkZGVkU3VjY2VzcycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgndGVhbUFkZFN1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNUZWFtQWRkZWRTdWNjZXNzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdub2RlRWRpdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5tZXNzYWdlc05vZGVFZGl0ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ25vZGVSZW1vdmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNOb2RlUmVtb3ZlZFNpbmd1bGFyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdub2Rlc1JlbW92ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5tZXNzYWdlc05vZGVSZW1vdmVkUGx1cmFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0ZWFtUmVtb3ZlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzVGVhbVJlbW92ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzRXJyb3JCdWlsZEdyYXBoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAaWYgKHVuZG9MYXN0QWN0aW9uQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzVW5kb0FjdGlvbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9iZGk+XG4gICAgPC9mZC1tZXNzYWdlLXN0cmlwPlxufVxuIl19","import { Directive, ElementRef, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ApprovalFlowDropZoneDirective {\n /** @hidden */\n constructor(elRef) {\n this.elRef = elRef;\n /** Whether drop zone is active (pointer with dragged node over the drop zone) */\n this.active = false;\n }\n /** @hidden */\n _checkIfNodeDraggedInDropZone(nodeRect) {\n this.active = false;\n const dropZoneRect = this.elRef.nativeElement.getBoundingClientRect();\n if (dropZoneRect.top + dropZoneRect.height > nodeRect.top &&\n dropZoneRect.left + dropZoneRect.width > nodeRect.left &&\n dropZoneRect.bottom - dropZoneRect.height < nodeRect.bottom &&\n dropZoneRect.right - dropZoneRect.width < nodeRect.right) {\n this.active = true;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowDropZoneDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ApprovalFlowDropZoneDirective, isStandalone: true, selector: \"[fdp-approval-flow-drop-zone]\", inputs: { placement: \"placement\" }, exportAs: [\"fdp-approval-flow-drop-zone\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowDropZoneDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-approval-flow-drop-zone]',\n exportAs: 'fdp-approval-flow-drop-zone',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { placement: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1kcm9wLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctbm9kZS9hcHByb3ZhbC1mbG93LWRyb3Atem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVU3RCxNQUFNLE9BQU8sNkJBQTZCO0lBUXRDLGNBQWM7SUFDZCxZQUE2QixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBSjlDLGlGQUFpRjtRQUNqRixXQUFNLEdBQUcsS0FBSyxDQUFDO0lBR2tDLENBQUM7SUFFbEQsY0FBYztJQUNkLDZCQUE2QixDQUFDLFFBQWlCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFdEUsSUFDSSxZQUFZLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDckQsWUFBWSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJO1lBQ3RELFlBQVksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtZQUMzRCxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFDMUQsQ0FBQztZQUNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDOzhHQXpCUSw2QkFBNkI7a0dBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFOekMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFJRyxTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgfSBmcm9tICcuLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZHAtYXBwcm92YWwtZmxvdy1kcm9wLXpvbmVdJyxcbiAgICBleHBvcnRBczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRyb3Atem9uZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSB7XG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgbmV3IG5vZGUgcGxhY2VtZW50ICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZW1lbnQ6IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQ7XG5cbiAgICAvKiogV2hldGhlciBkcm9wIHpvbmUgaXMgYWN0aXZlIChwb2ludGVyIHdpdGggZHJhZ2dlZCBub2RlIG92ZXIgdGhlIGRyb3Agem9uZSkgKi9cbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrSWZOb2RlRHJhZ2dlZEluRHJvcFpvbmUobm9kZVJlY3Q6IERPTVJlY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBkcm9wWm9uZVJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZHJvcFpvbmVSZWN0LnRvcCArIGRyb3Bab25lUmVjdC5oZWlnaHQgPiBub2RlUmVjdC50b3AgJiZcbiAgICAgICAgICAgIGRyb3Bab25lUmVjdC5sZWZ0ICsgZHJvcFpvbmVSZWN0LndpZHRoID4gbm9kZVJlY3QubGVmdCAmJlxuICAgICAgICAgICAgZHJvcFpvbmVSZWN0LmJvdHRvbSAtIGRyb3Bab25lUmVjdC5oZWlnaHQgPCBub2RlUmVjdC5ib3R0b20gJiZcbiAgICAgICAgICAgIGRyb3Bab25lUmVjdC5yaWdodCAtIGRyb3Bab25lUmVjdC53aWR0aCA8IG5vZGVSZWN0LnJpZ2h0XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { GridListItemComponent } from '@fundamental-ngx/core/grid-list';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { MenuInteractiveComponent, MenuItemComponent, MenuTitleDirective, MenuTriggerDirective } from '@fundamental-ngx/core/menu';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ObjectStatusComponent, PlatformObjectStatusTextDirective } from '@fundamental-ngx/platform/object-status';\nimport { isNodeApproved, isNodeStarted } from '../helpers';\nimport { ApprovalFlowDropZoneDirective } from './approval-flow-drop-zone.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/cdk/utils\";\nconst NODE_STATUS_CLASS_MAP = {\n approved: 'positive',\n rejected: 'negative',\n 'in progress': 'informative',\n 'not started': ''\n};\nconst DAY_IN_MILLISECONDS = 1000 * 60 * 60 * 24;\nlet defaultId = 0;\n/**\n * @deprecated\n * ApprovalFlowNode component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowNodeComponent {\n /** @hidden */\n get _blank() {\n return !!this.node?.blank;\n }\n /** @hidden */\n get _space() {\n return !!this.node?.space;\n }\n /** @hidden */\n get _isRoot() {\n return this.meta?.isRoot;\n }\n /** @hidden */\n get _isFinal() {\n return this.meta?.isFinal;\n }\n /** @hidden */\n get _renderLineBefore() {\n return !this.node?.blank;\n }\n /** @hidden */\n get _renderLineAfter() {\n return !this.node?.blank || this._isFinal;\n }\n /** @hidden */\n get _isApproved() {\n return this.node && isNodeApproved(this.node);\n }\n /** @hidden */\n get _isParentApproved() {\n if (!this.meta?.parents?.length) {\n return !!this.meta?.rootNodesApproved;\n }\n return this.meta.parents.every((node) => isNodeApproved(node));\n }\n /** @hidden */\n get _isNodeSelected() {\n return this.isEdit && this._isSelected;\n }\n /** @hidden */\n get _isParallelStart() {\n return Boolean(this.meta?.parallelStart);\n }\n /** @hidden */\n get _isParallelEnd() {\n return Boolean(this.meta?.parallelEnd);\n }\n /** @hidden */\n get _isFirstInParallel() {\n return Boolean(this.meta?.isFirstInParallel);\n }\n /** @hidden */\n get _isLastInParallel() {\n return Boolean(this.meta?.isLastInParallel);\n }\n /** Whether the node is blank and the final */\n get _lastBlank() {\n return this._blank && this.node.targets.length === 0;\n }\n /** @hidden */\n get _isSelected() {\n return !!this.node.selected;\n }\n /** @hidden */\n constructor(_elRef, _cdr, _rtlService) {\n this._elRef = _elRef;\n this._cdr = _cdr;\n this._rtlService = _rtlService;\n /** Whether node element has arrow on the left side pointing to the node */\n this.renderArrow = false;\n /** Whether to display due date warning in status */\n this.checkDueDate = false;\n /** Number of days before due date when status changes to `warning` with text 'Due in X days'.\n * Not used if 'checkDueDate' equals false */\n this.dueDateThreshold = 7;\n /** Whether nodes in column in which current node placed are approved\n * Used to render appropriate vertical line after (dashed/solid)\n */\n this.allNodesInColumnApproved = false;\n /** Event emitted on add node button clicked, value is the placement for the new node */\n this.onAdd = new EventEmitter();\n /** Event emitted on edit node button clicked */\n this.onEdit = new EventEmitter();\n /** Event emitted on delete node button clicked */\n this.onDelete = new EventEmitter();\n /** @hidden */\n this._showDueDateWarning = false;\n /** @hidden */\n this._dueIn = 0;\n /** @hidden */\n this.approvalFlowNodeId = 'fdp-approval-flow-node-' + defaultId++;\n /** @hidden */\n this._subscriptions = new Subscription();\n }\n /** @hidden */\n get _nativeElement() {\n return this._elRef.nativeElement;\n }\n /** @hidden */\n get _isNotStarted() {\n return !isNodeStarted(this.node);\n }\n /** @hidden */\n get _isEditActionsAvailable() {\n return this.node.status === 'approved' || this.node.status === 'rejected';\n }\n /** @hidden */\n get _activeDropZones() {\n return this._dropZones.filter((z) => z.active);\n }\n /** @hidden */\n get _isAnyDropZoneActive() {\n return this._activeDropZones.length > 0;\n }\n /** @hidden */\n get _isVerticalLineBeforeSolid() {\n if (!this.meta?.parents.length) {\n return !!this.meta?.isVerticalLineBeforeSolid;\n }\n return this.meta.parents.every((parentNode) => isNodeApproved(parentNode));\n }\n /** @hidden */\n get _isVerticalLineAfterSolid() {\n if (!this.node?.targets.length) {\n return !!this.meta?.isVerticalLineAfterSolid;\n }\n return this._isVerticalLineBeforeSolid && this.allNodesInColumnApproved;\n }\n /** @hidden */\n get _showAddButton() {\n return this.isEdit && !this._blank && !this._space && !this.node?.disableActions;\n }\n /** @hidden */\n get _showAfterAllAddButton() {\n return this.isEdit && !this._space && !this.node?.disableActions;\n }\n /** @hidden */\n _dropZonePartial(placement) {\n return ((!this._blank && (!this.isNextNodeBlank || placement === 'before')) ||\n (this._lastBlank && placement === 'after-all'));\n }\n /** @hidden */\n ngOnInit() {\n this._checkNodeStatus();\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._cdr.markForCheck()));\n }\n /** @hidden */\n ngOnChanges() {\n this._checkNodeStatus();\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n _onMenuOpen() {\n this._menu.refreshPosition();\n }\n /** @hidden */\n _focus(options) {\n this._gridListItem?.focus(options);\n }\n /** @hidden */\n _deactivateDropZones() {\n this._dropZones.forEach((dropZone) => (dropZone.active = false));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _checkIfNodeDraggedInDropZone(nodeRect) {\n this._dropZones.forEach((dropZone) => dropZone._checkIfNodeDraggedInDropZone(nodeRect));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _checkNodeStatus() {\n if (!this.node) {\n return;\n }\n if (this.checkDueDate && this.node.dueDate) {\n const dueThreshold = Number(new Date(this.node.dueDate)) - this.dueDateThreshold * DAY_IN_MILLISECONDS;\n const nowAndDueDiff = Date.now() - dueThreshold;\n this._dueIn = Math.round(nowAndDueDiff / DAY_IN_MILLISECONDS);\n this._showDueDateWarning = !isNodeApproved(this.node) && dueThreshold < Date.now();\n this._objectStatus = this._showDueDateWarning ? 'critical' : this._getNodeStatusClass();\n this._cdr.detectChanges();\n return;\n }\n this._objectStatus = this._getNodeStatusClass();\n this._cdr.detectChanges();\n }\n /** @hidden */\n _getNodeStatusClass() {\n return (this.statusColorMapping\n ? this.statusColorMapping[this.node.status]\n : NODE_STATUS_CLASS_MAP[this.node.status]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowNodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowNodeComponent, isStandalone: true, selector: \"fdp-approval-flow-node\", inputs: { node: \"node\", meta: \"meta\", renderArrow: \"renderArrow\", checkDueDate: \"checkDueDate\", dueDateThreshold: \"dueDateThreshold\", allNodesInColumnApproved: \"allNodesInColumnApproved\", approvalStatusTemplate: \"approvalStatusTemplate\", statusColorMapping: \"statusColorMapping\", isEdit: \"isEdit\", isNextNodeBlank: \"isNextNodeBlank\" }, outputs: { onAdd: \"onAdd\", onEdit: \"onEdit\", onDelete: \"onDelete\" }, host: { properties: { \"class.fdp-approval-flow-node--first-root\": \"meta?.firstOfMultipleRootNodes\", \"class.fdp-approval-flow-node--first-final\": \"meta?.firstOfMultipleFinalNodes\", \"class.fdp-approval-flow-node--edit-mode\": \"this.isEdit\", \"class.fdp-approval-flow-node--next-blank\": \"this.isNextNodeBlank\", \"class.fdp-approval-flow-node--blank\": \"this._blank\", \"class.fdp-approval-flow-node--space\": \"this._space\", \"class.fdp-approval-flow-node--root\": \"this._isRoot\", \"class.fdp-approval-flow-node--final\": \"this._isFinal\", \"class.fdp-approval-flow-node--line-before\": \"this._renderLineBefore\", \"class.fdp-approval-flow-node--line-after\": \"this._renderLineAfter\", \"class.fdp-approval-flow-node--approved\": \"this._isApproved\", \"class.fdp-approval-flow-node--parent-approved\": \"this._isParentApproved\", \"class.fdp-approval-flow-node--selected\": \"this._isNodeSelected\", \"class.fdp-approval-flow-node--parallel-start\": \"this._isParallelStart\", \"class.fdp-approval-flow-node--parallel-end\": \"this._isParallelEnd\", \"class.fdp-approval-flow-node--first-in-parallel\": \"this._isFirstInParallel\", \"class.fdp-approval-flow-node--last-in-parallel\": \"this._isLastInParallel\", \"class.fdp-approval-flow-node--last-blank\": \"this._lastBlank\" }, classAttribute: \"fdp-approval-flow-node\" }, queries: [{ propertyName: \"_gridListItem\", first: true, predicate: GridListItemComponent, descendants: true }], viewQueries: [{ propertyName: \"_menu\", first: true, predicate: MenuComponent, descendants: true }, { propertyName: \"_overflowMenuButton\", first: true, predicate: [\"overflowMenuButton\"], descendants: true }, { propertyName: \"_nodeContent\", first: true, predicate: [\"nodeContent\"], descendants: true }, { propertyName: \"_dropZones\", predicate: ApprovalFlowDropZoneDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"@if (meta?.renderVerticalLineBefore) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-before\\\"\\n [class.fdp-approval-flow-node__vertical-line-before-solid]=\\\"_isVerticalLineBeforeSolid\\\"\\n ></div>\\n}\\n@if (meta?.renderVerticalLineAfter) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-after\\\"\\n [class.fdp-approval-flow-node__vertical-line-after-solid]=\\\"_isVerticalLineAfterSolid\\\"\\n ></div>\\n}\\n@if (!_blank && !_space) {\\n @if (renderArrow) {\\n <div class=\\\"fdp-approval-flow-node__arrow\\\"></div>\\n }\\n @if (_isRoot && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-start-marker\\\"></div>\\n }\\n @if (_isFinal && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-end-marker\\\"></div>\\n }\\n <ng-content></ng-content>\\n}\\n<ng-template #overflowMenuButton>\\n <!-- Actually just the fd-grid-item action button but with some hardcode to be used as menu trigger -->\\n @if (!node?.disableActions) {\\n <button\\n class=\\\"fdp-approval-flow-node__menu-button\\\"\\n fd-button\\n fdType=\\\"transparent\\\"\\n tabindex=\\\"0\\\"\\n glyph=\\\"overflow\\\"\\n [title]=\\\"'platformApprovalFlow.nodeMenuButtonTitle' | fdTranslate\\\"\\n fdCompact\\n [fdMenuTrigger]=\\\"menu\\\"\\n [disabled]=\\\"_isEditActionsAvailable\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></button>\\n }\\n</ng-template>\\n<ng-template #nodeContent>\\n <div class=\\\"fdp-approval-flow-node__info\\\">\\n <div\\n class=\\\"fdp-approval-flow-node__name\\\"\\n [class.fdp-approval-flow-node__name--members-count]=\\\"node.approvers.length > 1\\\"\\n [id]=\\\"approvalFlowNodeId\\\"\\n >\\n @if (node.approvers.length === 1) {\\n {{ node.approvers[0].name }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeMembersCount' | fdTranslate: { count: node.approvers.length } }}\\n }\\n </div>\\n <div class=\\\"fdp-approval-flow-node__description\\\">\\n @if (!node.variousTeams) {\\n {{\\n node.approvers.length > 1\\n ? node.description\\n : node.approvers.length\\n ? node.approvers[0].description\\n : ''\\n }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }}\\n }\\n <ng-template #variousTeams> {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }} </ng-template>\\n </div>\\n <fdp-object-status [status]=\\\"_objectStatus\\\" [inverted]=\\\"true\\\">\\n <ng-template fdpObjectStatusText>\\n @if (approvalStatusTemplate) {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @if (approvalStatusTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalStatusTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ node: node }\\\"\\n >\\n </ng-template>\\n }\\n }\\n } @else {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @switch (node.status) {\\n @case ('approved') {\\n {{ 'platformApprovalFlow.statusApproved' | fdTranslate }}\\n }\\n @case ('rejected') {\\n {{ 'platformApprovalFlow.statusRejected' | fdTranslate }}\\n }\\n @case ('in progress') {\\n {{ 'platformApprovalFlow.statusInProgress' | fdTranslate }}\\n }\\n @case ('not started') {\\n {{ 'platformApprovalFlow.statusNotStarted' | fdTranslate }}\\n }\\n }\\n }\\n }\\n @if (checkDueDate && _showDueDateWarning) {\\n @if (_dueIn === dueDateThreshold) {\\n {{ 'platformApprovalFlow.nodeStatusDueToday' | fdTranslate }}\\n }\\n @if (_dueIn < dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusDueInXDays'\\n | fdTranslate: { count: dueDateThreshold - _dueIn }\\n }}\\n }\\n @if (_dueIn > dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusXDaysOverdue'\\n | fdTranslate: { count: _dueIn - dueDateThreshold }\\n }}\\n }\\n }\\n </ng-template>\\n </fdp-object-status>\\n </div>\\n</ng-template>\\n@if (_showAddButton && meta?.canAddNodeBeforeAll && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'before-all' }\\\"\\n ></ng-template>\\n}\\n@if (_showAddButton && meta?.canAddNodeBefore && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'before' }\\\"></ng-template>\\n}\\n@if (\\n _showAddButton && meta?.canAddNodeAfter && meta?.renderAddNodeAfterButton && !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'after' }\\\"></ng-template>\\n}\\n@if (\\n _showAfterAllAddButton &&\\n meta?.canAddNodeAfterAll &&\\n meta?.renderAddNodeAfterButton &&\\n !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'after-all' }\\\"\\n ></ng-template>\\n}\\n<ng-template #addNodeButton let-placement=\\\"placement\\\">\\n @if (node.status !== 'approved') {\\n <button\\n fd-button\\n glyph=\\\"add\\\"\\n [title]=\\\"'platformApprovalFlow.addNodeButtonTitle' | fdTranslate\\\"\\n fdCompact\\n class=\\\"fdp-approval-flow-node__add\\\"\\n [class.fdp-approval-flow-node__add--blank]=\\\"this._blank\\\"\\n [class.fdp-approval-flow-node__add--before]=\\\"\\n !this._blank && (placement === 'before' || placement === 'before-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--before-all]=\\\"!this._blank && placement === 'before-all'\\\"\\n [class.fdp-approval-flow-node__add--after]=\\\"\\n !this._blank && (placement === 'after' || placement === 'after-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--after-all]=\\\"placement === 'after-all'\\\"\\n [style.visibility]=\\\"dropZone.active ? 'hidden' : ''\\\"\\n (click)=\\\"onAdd.emit(placement)\\\"\\n ></button>\\n }\\n <div\\n #dropZone=\\\"fdp-approval-flow-drop-zone\\\"\\n fdp-approval-flow-drop-zone\\n [placement]=\\\"placement\\\"\\n class=\\\"fdp-approval-flow-node__drop-zone\\\"\\n [class.fdp-approval-flow-node__drop-zone--active]=\\\"dropZone.active\\\"\\n [class.fdp-approval-flow-node__drop-zone--blank]=\\\"isNextNodeBlank\\\"\\n [class.fdp-approval-flow-node__drop-zone--partial]=\\\"_dropZonePartial(placement)\\\"\\n ></div>\\n</ng-template>\\n<fd-menu #menu fdContentDensity placement=\\\"bottom-end\\\" (isOpenChange)=\\\"_onMenuOpen()\\\">\\n @if (meta?.canAddNodeBefore && !this.node?.actionsConfig?.disableAddBefore) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('before')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversBefore' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddNodeAfter && !this.node?.actionsConfig?.disableAddAfter) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('after')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversAfter' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddParallel && !this.node?.actionsConfig?.disableAddParallel) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('parallel')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversParallel' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (_isNotStarted && !this.node?.actionsConfig?.disableEdit) {\\n <li fd-menu-item (click)=\\\"menu.close(); onEdit.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionEditApprover' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (!this.node?.actionsConfig?.disableRemove) {\\n <li fd-menu-item (click)=\\\"menu.close(); onDelete.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionRemove' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n</fd-menu>\\n\", styles: [\".fdp-approval-flow-node{display:block;box-sizing:border-box;position:relative;width:17.375rem;height:5.875rem;margin-bottom:1rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode{height:7.875rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-after:after{top:-4.9375rem;height:8.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{content:\\\"\\\";display:block;position:absolute;top:-3.9375rem;height:6.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before{left:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before-solid:before{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{right:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after-solid:after{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-before:before{left:auto;right:-2.0625rem}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-after:after{right:auto;left:-2.0625rem}.fdp-approval-flow-node .fdp-approval-flow-node__add{position:absolute;z-index:10;margin:calc(3.4375rem - 1px) auto auto;inset:0;border-radius:100%;min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem}.fdp-approval-flow-node .fdp-approval-flow-node__add fd-icon{line-height:1rem;font-size:.7rem;font-weight:900}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before{left:-2.5rem;right:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-2.8rem}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after{right:-2.5rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-2.8rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone{border-radius:.25rem;position:absolute;height:100%;z-index:1}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa);border:.125rem solid #0854a0;border:.125rem solid var(--sapButton_IconColor, #0854a0)}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--blank{width:100%;top:0}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--partial{width:10%;left:0;top:0}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank{background:transparent;box-shadow:none;pointer-events:none;cursor:default}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:before{content:\\\"\\\";display:block;position:absolute;width:calc(100% + 4rem);height:0;left:-2rem;top:calc(50% - .0625rem);border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{width:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:not(.fdp-approval-flow-node--last-blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{width:100%}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{content:\\\"\\\";width:2rem;height:0;display:block;position:absolute;top:calc(50% - .0625rem);bottom:0;pointer-events:none;border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{right:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--blank:before{border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parent-approved.fdp-approval-flow-node--line-before:before{left:-2rem;border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode.fdp-approval-flow-node--blank{pointer-events:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-end-marker{top:3.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__arrow{display:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{right:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{right:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{left:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{left:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{left:19.875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{right:-12.6875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:calc(100% + 4rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{width:4rem;left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{width:4rem;right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__add,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-after{visibility:hidden}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name{font-size:1rem;line-height:1.25rem;margin-bottom:.1rem;color:#32363a;color:var(--sapTextColor, #32363a)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__description{font-size:.875rem;line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin-bottom:.4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow{width:0;height:0;border-style:solid;border-width:.375rem 0 .375rem .5rem;border-color:transparent transparent transparent #d9d9d9;border-color:transparent transparent transparent var(--sapGroup_TitleBorderColor, #d9d9d9);position:absolute;left:-.5rem;top:0;bottom:0;margin:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{z-index:1;background:#d9d9d9;background:var(--sapGroup_TitleBorderColor, #d9d9d9);display:block;position:absolute;width:.25rem;height:1rem;top:2.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__arrow{left:auto;right:-.5rem;border-width:.375rem .5rem .375rem 0;border-color:transparent #d9d9d9 transparent transparent;border-color:transparent var(--sapGroup_TitleBorderColor, #d9d9d9) transparent transparent}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-before:before{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-after:after{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count{direction:ltr;text-align:right}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before{right:-2.5rem;left:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-2.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after{left:-2.5rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-2.8rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{left:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{left:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{right:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{right:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{right:19.875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:calc(100% + 2rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{left:-12.6875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:calc(100% + 4rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{left:0}\\n\"], dependencies: [{ kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"directive\", type: MenuTriggerDirective, selector: \"[fdMenuTrigger]\", inputs: [\"fdMenuTrigger\"] }, { kind: \"component\", type: ObjectStatusComponent, selector: \"fdp-object-status\", inputs: [\"status\", \"glyph\", \"glyphFont\", \"indicationColor\", \"secondaryIndication\", \"clickable\", \"inverted\", \"large\", \"label\", \"ariaLabel\", \"title\"], outputs: [\"objectStatusClick\"] }, { kind: \"directive\", type: PlatformObjectStatusTextDirective, selector: \"[fdpObjectStatusText]\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ApprovalFlowDropZoneDirective, selector: \"[fdp-approval-flow-drop-zone]\", inputs: [\"placement\"], exportAs: [\"fdp-approval-flow-drop-zone\"] }, { kind: \"component\", type: MenuComponent, selector: \"fd-menu\", inputs: [\"mobile\", \"disabled\", \"focusTrapped\", \"focusAutoCapture\", \"openOnHoverTime\", \"mobileConfig\", \"ariaLabel\", \"ariaLabelledby\", \"id\"], outputs: [\"activePath\"] }, { kind: \"component\", type: MenuItemComponent, selector: \"li[fd-menu-item]\", inputs: [\"disabled\", \"itemId\", \"submenu\", \"parentSubmenu\", \"hasSeparator\"], outputs: [\"onSelect\"], exportAs: [\"fd-menu-item\"] }, { kind: \"component\", type: MenuInteractiveComponent, selector: \"[fd-menu-interactive]\" }, { kind: \"directive\", type: MenuTitleDirective, selector: \"[fd-menu-title]\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowNodeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-node', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-node',\n '[class.fdp-approval-flow-node--first-root]': 'meta?.firstOfMultipleRootNodes',\n '[class.fdp-approval-flow-node--first-final]': 'meta?.firstOfMultipleFinalNodes'\n }, imports: [\n ButtonComponent,\n ContentDensityDirective,\n MenuTriggerDirective,\n ObjectStatusComponent,\n PlatformObjectStatusTextDirective,\n NgTemplateOutlet,\n ApprovalFlowDropZoneDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n MenuTitleDirective,\n FdTranslatePipe\n ], template: \"@if (meta?.renderVerticalLineBefore) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-before\\\"\\n [class.fdp-approval-flow-node__vertical-line-before-solid]=\\\"_isVerticalLineBeforeSolid\\\"\\n ></div>\\n}\\n@if (meta?.renderVerticalLineAfter) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-after\\\"\\n [class.fdp-approval-flow-node__vertical-line-after-solid]=\\\"_isVerticalLineAfterSolid\\\"\\n ></div>\\n}\\n@if (!_blank && !_space) {\\n @if (renderArrow) {\\n <div class=\\\"fdp-approval-flow-node__arrow\\\"></div>\\n }\\n @if (_isRoot && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-start-marker\\\"></div>\\n }\\n @if (_isFinal && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-end-marker\\\"></div>\\n }\\n <ng-content></ng-content>\\n}\\n<ng-template #overflowMenuButton>\\n <!-- Actually just the fd-grid-item action button but with some hardcode to be used as menu trigger -->\\n @if (!node?.disableActions) {\\n <button\\n class=\\\"fdp-approval-flow-node__menu-button\\\"\\n fd-button\\n fdType=\\\"transparent\\\"\\n tabindex=\\\"0\\\"\\n glyph=\\\"overflow\\\"\\n [title]=\\\"'platformApprovalFlow.nodeMenuButtonTitle' | fdTranslate\\\"\\n fdCompact\\n [fdMenuTrigger]=\\\"menu\\\"\\n [disabled]=\\\"_isEditActionsAvailable\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></button>\\n }\\n</ng-template>\\n<ng-template #nodeContent>\\n <div class=\\\"fdp-approval-flow-node__info\\\">\\n <div\\n class=\\\"fdp-approval-flow-node__name\\\"\\n [class.fdp-approval-flow-node__name--members-count]=\\\"node.approvers.length > 1\\\"\\n [id]=\\\"approvalFlowNodeId\\\"\\n >\\n @if (node.approvers.length === 1) {\\n {{ node.approvers[0].name }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeMembersCount' | fdTranslate: { count: node.approvers.length } }}\\n }\\n </div>\\n <div class=\\\"fdp-approval-flow-node__description\\\">\\n @if (!node.variousTeams) {\\n {{\\n node.approvers.length > 1\\n ? node.description\\n : node.approvers.length\\n ? node.approvers[0].description\\n : ''\\n }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }}\\n }\\n <ng-template #variousTeams> {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }} </ng-template>\\n </div>\\n <fdp-object-status [status]=\\\"_objectStatus\\\" [inverted]=\\\"true\\\">\\n <ng-template fdpObjectStatusText>\\n @if (approvalStatusTemplate) {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @if (approvalStatusTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalStatusTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ node: node }\\\"\\n >\\n </ng-template>\\n }\\n }\\n } @else {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @switch (node.status) {\\n @case ('approved') {\\n {{ 'platformApprovalFlow.statusApproved' | fdTranslate }}\\n }\\n @case ('rejected') {\\n {{ 'platformApprovalFlow.statusRejected' | fdTranslate }}\\n }\\n @case ('in progress') {\\n {{ 'platformApprovalFlow.statusInProgress' | fdTranslate }}\\n }\\n @case ('not started') {\\n {{ 'platformApprovalFlow.statusNotStarted' | fdTranslate }}\\n }\\n }\\n }\\n }\\n @if (checkDueDate && _showDueDateWarning) {\\n @if (_dueIn === dueDateThreshold) {\\n {{ 'platformApprovalFlow.nodeStatusDueToday' | fdTranslate }}\\n }\\n @if (_dueIn < dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusDueInXDays'\\n | fdTranslate: { count: dueDateThreshold - _dueIn }\\n }}\\n }\\n @if (_dueIn > dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusXDaysOverdue'\\n | fdTranslate: { count: _dueIn - dueDateThreshold }\\n }}\\n }\\n }\\n </ng-template>\\n </fdp-object-status>\\n </div>\\n</ng-template>\\n@if (_showAddButton && meta?.canAddNodeBeforeAll && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'before-all' }\\\"\\n ></ng-template>\\n}\\n@if (_showAddButton && meta?.canAddNodeBefore && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'before' }\\\"></ng-template>\\n}\\n@if (\\n _showAddButton && meta?.canAddNodeAfter && meta?.renderAddNodeAfterButton && !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'after' }\\\"></ng-template>\\n}\\n@if (\\n _showAfterAllAddButton &&\\n meta?.canAddNodeAfterAll &&\\n meta?.renderAddNodeAfterButton &&\\n !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'after-all' }\\\"\\n ></ng-template>\\n}\\n<ng-template #addNodeButton let-placement=\\\"placement\\\">\\n @if (node.status !== 'approved') {\\n <button\\n fd-button\\n glyph=\\\"add\\\"\\n [title]=\\\"'platformApprovalFlow.addNodeButtonTitle' | fdTranslate\\\"\\n fdCompact\\n class=\\\"fdp-approval-flow-node__add\\\"\\n [class.fdp-approval-flow-node__add--blank]=\\\"this._blank\\\"\\n [class.fdp-approval-flow-node__add--before]=\\\"\\n !this._blank && (placement === 'before' || placement === 'before-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--before-all]=\\\"!this._blank && placement === 'before-all'\\\"\\n [class.fdp-approval-flow-node__add--after]=\\\"\\n !this._blank && (placement === 'after' || placement === 'after-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--after-all]=\\\"placement === 'after-all'\\\"\\n [style.visibility]=\\\"dropZone.active ? 'hidden' : ''\\\"\\n (click)=\\\"onAdd.emit(placement)\\\"\\n ></button>\\n }\\n <div\\n #dropZone=\\\"fdp-approval-flow-drop-zone\\\"\\n fdp-approval-flow-drop-zone\\n [placement]=\\\"placement\\\"\\n class=\\\"fdp-approval-flow-node__drop-zone\\\"\\n [class.fdp-approval-flow-node__drop-zone--active]=\\\"dropZone.active\\\"\\n [class.fdp-approval-flow-node__drop-zone--blank]=\\\"isNextNodeBlank\\\"\\n [class.fdp-approval-flow-node__drop-zone--partial]=\\\"_dropZonePartial(placement)\\\"\\n ></div>\\n</ng-template>\\n<fd-menu #menu fdContentDensity placement=\\\"bottom-end\\\" (isOpenChange)=\\\"_onMenuOpen()\\\">\\n @if (meta?.canAddNodeBefore && !this.node?.actionsConfig?.disableAddBefore) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('before')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversBefore' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddNodeAfter && !this.node?.actionsConfig?.disableAddAfter) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('after')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversAfter' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddParallel && !this.node?.actionsConfig?.disableAddParallel) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('parallel')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversParallel' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (_isNotStarted && !this.node?.actionsConfig?.disableEdit) {\\n <li fd-menu-item (click)=\\\"menu.close(); onEdit.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionEditApprover' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (!this.node?.actionsConfig?.disableRemove) {\\n <li fd-menu-item (click)=\\\"menu.close(); onDelete.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionRemove' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n</fd-menu>\\n\", styles: [\".fdp-approval-flow-node{display:block;box-sizing:border-box;position:relative;width:17.375rem;height:5.875rem;margin-bottom:1rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode{height:7.875rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-after:after{top:-4.9375rem;height:8.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{content:\\\"\\\";display:block;position:absolute;top:-3.9375rem;height:6.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before{left:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before-solid:before{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{right:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after-solid:after{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-before:before{left:auto;right:-2.0625rem}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-after:after{right:auto;left:-2.0625rem}.fdp-approval-flow-node .fdp-approval-flow-node__add{position:absolute;z-index:10;margin:calc(3.4375rem - 1px) auto auto;inset:0;border-radius:100%;min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem}.fdp-approval-flow-node .fdp-approval-flow-node__add fd-icon{line-height:1rem;font-size:.7rem;font-weight:900}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before{left:-2.5rem;right:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-2.8rem}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after{right:-2.5rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-2.8rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone{border-radius:.25rem;position:absolute;height:100%;z-index:1}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa);border:.125rem solid #0854a0;border:.125rem solid var(--sapButton_IconColor, #0854a0)}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--blank{width:100%;top:0}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--partial{width:10%;left:0;top:0}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank{background:transparent;box-shadow:none;pointer-events:none;cursor:default}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:before{content:\\\"\\\";display:block;position:absolute;width:calc(100% + 4rem);height:0;left:-2rem;top:calc(50% - .0625rem);border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{width:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:not(.fdp-approval-flow-node--last-blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{width:100%}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{content:\\\"\\\";width:2rem;height:0;display:block;position:absolute;top:calc(50% - .0625rem);bottom:0;pointer-events:none;border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{right:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--blank:before{border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parent-approved.fdp-approval-flow-node--line-before:before{left:-2rem;border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode.fdp-approval-flow-node--blank{pointer-events:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-end-marker{top:3.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__arrow{display:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{right:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{right:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{left:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{left:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{left:19.875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{right:-12.6875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:calc(100% + 4rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{width:4rem;left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{width:4rem;right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__add,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-after{visibility:hidden}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name{font-size:1rem;line-height:1.25rem;margin-bottom:.1rem;color:#32363a;color:var(--sapTextColor, #32363a)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__description{font-size:.875rem;line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin-bottom:.4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow{width:0;height:0;border-style:solid;border-width:.375rem 0 .375rem .5rem;border-color:transparent transparent transparent #d9d9d9;border-color:transparent transparent transparent var(--sapGroup_TitleBorderColor, #d9d9d9);position:absolute;left:-.5rem;top:0;bottom:0;margin:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{z-index:1;background:#d9d9d9;background:var(--sapGroup_TitleBorderColor, #d9d9d9);display:block;position:absolute;width:.25rem;height:1rem;top:2.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__arrow{left:auto;right:-.5rem;border-width:.375rem .5rem .375rem 0;border-color:transparent #d9d9d9 transparent transparent;border-color:transparent var(--sapGroup_TitleBorderColor, #d9d9d9) transparent transparent}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-before:before{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-after:after{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count{direction:ltr;text-align:right}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before{right:-2.5rem;left:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-2.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after{left:-2.5rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-2.8rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{left:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{left:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{right:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{right:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{right:19.875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:calc(100% + 2rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{left:-12.6875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:calc(100% + 4rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{left:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { node: [{\n type: Input\n }], meta: [{\n type: Input\n }], renderArrow: [{\n type: Input\n }], checkDueDate: [{\n type: Input\n }], dueDateThreshold: [{\n type: Input\n }], allNodesInColumnApproved: [{\n type: Input\n }], approvalStatusTemplate: [{\n type: Input\n }], statusColorMapping: [{\n type: Input\n }], isEdit: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--edit-mode']\n }], isNextNodeBlank: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--next-blank']\n }], _blank: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--blank']\n }], _space: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--space']\n }], _isRoot: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--root']\n }], _isFinal: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--final']\n }], _renderLineBefore: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--line-before']\n }], _renderLineAfter: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--line-after']\n }], _isApproved: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--approved']\n }], _isParentApproved: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parent-approved']\n }], _isNodeSelected: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--selected']\n }], _isParallelStart: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parallel-start']\n }], _isParallelEnd: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parallel-end']\n }], _isFirstInParallel: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--first-in-parallel']\n }], _isLastInParallel: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--last-in-parallel']\n }], _lastBlank: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--last-blank']\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onAdd: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onEdit: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onDelete: [{\n type: Output\n }], _menu: [{\n type: ViewChild,\n args: [MenuComponent]\n }], _overflowMenuButton: [{\n type: ViewChild,\n args: ['overflowMenuButton']\n }], _nodeContent: [{\n type: ViewChild,\n args: ['nodeContent']\n }], _dropZones: [{\n type: ViewChildren,\n args: [ApprovalFlowDropZoneDirective]\n }], _gridListItem: [{\n type: ContentChild,\n args: [GridListItemComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUVwRixNQUFNLHFCQUFxQixHQUFHO0lBQzFCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGFBQWEsRUFBRSxFQUFFO0NBQ3BCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUVoRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFbEI7OztHQUdHO0FBMkJILE1BQU0sT0FBTyx5QkFBeUI7SUF3Q2xDLGNBQWM7SUFDZCxJQUNJLE1BQU07UUFDTixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksTUFBTTtRQUNOLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLGlCQUFpQjtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDSSxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzNDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDSSxnQkFBZ0I7UUFDaEIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksY0FBYztRQUNkLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLGtCQUFrQjtRQUNsQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLGlCQUFpQjtRQUNqQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksV0FBVztRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFvREQsY0FBYztJQUNkLFlBQ3FCLE1BQWtCLEVBQ2xCLElBQXVCLEVBQ1gsV0FBdUI7UUFGbkMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNYLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBcEx4RCwyRUFBMkU7UUFDbEUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0Isb0RBQW9EO1FBQzNDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTlCO3NEQUM4QztRQUNyQyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFOUI7O1dBRUc7UUFDTSw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFpSDFDLHdGQUF3RjtRQUd4RixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFbkQsZ0RBQWdEO1FBR2hELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxDLGtEQUFrRDtRQUdsRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQXlCcEMsY0FBYztRQUNkLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1QixjQUFjO1FBQ2QsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVYLGNBQWM7UUFDTCx1QkFBa0IsR0FBRyx5QkFBeUIsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUV0RSxjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBT3pDLENBQUM7SUFFSixjQUFjO0lBQ2QsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksYUFBYTtRQUNiLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0lBQzlFLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQzVFLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyRixDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLFNBQWlDO1FBQzlDLE9BQU8sQ0FDSCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FDakQsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxNQUFNLENBQUMsT0FBc0I7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7SUFDZCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGNBQWM7SUFDZCw2QkFBNkIsQ0FBQyxRQUFpQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztZQUN2RyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBRWhELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUUxQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQjtRQUN2QixPQUFPLENBQ0gsSUFBSSxDQUFDLGtCQUFrQjtZQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUNoQyxDQUFDO0lBQ3RCLENBQUM7OEdBaFVRLHlCQUF5QjtrR0FBekIseUJBQXlCLDB3REFxS3BCLHFCQUFxQix1RkFoQnhCLGFBQWEsMFFBWVYsNkJBQTZCLHFFQ3JQL0Msd3lTQW9OQSw0MjZCRDlJUSxlQUFlLCtJQUNmLHVCQUF1QixvZEFDdkIsb0JBQW9CLHVGQUNwQixxQkFBcUIsbVBBQ3JCLGlDQUFpQyxrRUFDakMsZ0JBQWdCLG9KQUNoQiw2QkFBNkIsNElBQzdCLGFBQWEseU5BQ2IsaUJBQWlCLDRMQUNqQix3QkFBd0Isa0VBQ3hCLGtCQUFrQix1REFDbEIsZUFBZTs7MkZBR1YseUJBQXlCO2tCQTFCckMsU0FBUzsrQkFDSSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLHdCQUF3Qjt3QkFDL0IsNENBQTRDLEVBQUUsZ0NBQWdDO3dCQUM5RSw2Q0FBNkMsRUFBRSxpQ0FBaUM7cUJBQ25GLFdBQ1E7d0JBQ0wsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixpQ0FBaUM7d0JBQ2pDLGdCQUFnQjt3QkFDaEIsNkJBQTZCO3dCQUM3QixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2xCOzswQkE2TEksUUFBUTt5Q0F6TEosSUFBSTtzQkFBWixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyx5Q0FBeUM7Z0JBTXRELGVBQWU7c0JBRmQsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQywwQ0FBMEM7Z0JBS25ELE1BQU07c0JBRFQsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTzlDLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTzlDLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBTzdDLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTzlDLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywyQ0FBMkM7Z0JBT3BELGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQywwQ0FBMEM7Z0JBT25ELFdBQVc7c0JBRGQsV0FBVzt1QkFBQyx3Q0FBd0M7Z0JBT2pELGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywrQ0FBK0M7Z0JBV3hELGVBQWU7c0JBRGxCLFdBQVc7dUJBQUMsd0NBQXdDO2dCQU9qRCxnQkFBZ0I7c0JBRG5CLFdBQVc7dUJBQUMsOENBQThDO2dCQU92RCxjQUFjO3NCQURqQixXQUFXO3VCQUFDLDRDQUE0QztnQkFPckQsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLGlEQUFpRDtnQkFPMUQsaUJBQWlCO3NCQURwQixXQUFXO3VCQUFDLGdEQUFnRDtnQkFPekQsVUFBVTtzQkFEYixXQUFXO3VCQUFDLDBDQUEwQzs7UUFZdkQsK0RBQStEO1FBQy9ELEtBQUs7c0JBRkosTUFBTTs7UUFNUCwrREFBK0Q7UUFDL0QsTUFBTTtzQkFGTCxNQUFNOztRQU1QLCtEQUErRDtRQUMvRCxRQUFRO3NCQUZQLE1BQU07Z0JBTVAsS0FBSztzQkFESixTQUFTO3VCQUFDLGFBQWE7Z0JBS3hCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBSy9CLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixVQUFVO3NCQURULFlBQVk7dUJBQUMsNkJBQTZCO2dCQUszQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgR3JpZExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL29iamVjdC1zdGF0dXMnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1lbnVUaXRsZURpcmVjdGl2ZSxcbiAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzQ29tcG9uZW50LCBQbGF0Zm9ybU9iamVjdFN0YXR1c1RleHREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL29iamVjdC1zdGF0dXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93Tm9kZVRhcmdldCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOb2RlQXBwcm92ZWQsIGlzTm9kZVN0YXJ0ZWQgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEFwcHJvdmFsR3JhcGhOb2RlLCBBcHByb3ZhbEdyYXBoTm9kZU1ldGFkYXRhLCBBcHByb3ZhbFN0YXR1cyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93RHJvcFpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctZHJvcC16b25lLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IE5PREVfU1RBVFVTX0NMQVNTX01BUCA9IHtcbiAgICBhcHByb3ZlZDogJ3Bvc2l0aXZlJyxcbiAgICByZWplY3RlZDogJ25lZ2F0aXZlJyxcbiAgICAnaW4gcHJvZ3Jlc3MnOiAnaW5mb3JtYXRpdmUnLFxuICAgICdub3Qgc3RhcnRlZCc6ICcnXG59O1xuXG5jb25zdCBEQVlfSU5fTUlMTElTRUNPTkRTID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxubGV0IGRlZmF1bHRJZCA9IDA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd05vZGUgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlJyxcbiAgICAgICAgJ1tjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1maXJzdC1yb290XSc6ICdtZXRhPy5maXJzdE9mTXVsdGlwbGVSb290Tm9kZXMnLFxuICAgICAgICAnW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpcnN0LWZpbmFsXSc6ICdtZXRhPy5maXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgT2JqZWN0U3RhdHVzQ29tcG9uZW50LFxuICAgICAgICBQbGF0Zm9ybU9iamVjdFN0YXR1c1RleHREaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBNZW51VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93Tm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBBcHByb3ZhbCBmbG93IGdyYXBoIG5vZGUgKi9cbiAgICBASW5wdXQoKSBub2RlOiBBcHByb3ZhbEdyYXBoTm9kZTtcblxuICAgIC8qKiBOb2RlIG1ldGFkYXRhICovXG4gICAgQElucHV0KCkgbWV0YTogQXBwcm92YWxHcmFwaE5vZGVNZXRhZGF0YTtcblxuICAgIC8qKiBXaGV0aGVyIG5vZGUgZWxlbWVudCBoYXMgYXJyb3cgb24gdGhlIGxlZnQgc2lkZSBwb2ludGluZyB0byB0aGUgbm9kZSAqL1xuICAgIEBJbnB1dCgpIHJlbmRlckFycm93ID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGR1ZSBkYXRlIHdhcm5pbmcgaW4gc3RhdHVzICovXG4gICAgQElucHV0KCkgY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogTnVtYmVyIG9mIGRheXMgYmVmb3JlIGR1ZSBkYXRlIHdoZW4gc3RhdHVzIGNoYW5nZXMgdG8gYHdhcm5pbmdgIHdpdGggdGV4dCAnRHVlIGluIFggZGF5cycuXG4gICAgICogIE5vdCB1c2VkIGlmICdjaGVja0R1ZURhdGUnIGVxdWFscyBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIGR1ZURhdGVUaHJlc2hvbGQgPSA3O1xuXG4gICAgLyoqIFdoZXRoZXIgbm9kZXMgaW4gY29sdW1uIGluIHdoaWNoIGN1cnJlbnQgbm9kZSBwbGFjZWQgYXJlIGFwcHJvdmVkXG4gICAgICogIFVzZWQgdG8gcmVuZGVyIGFwcHJvcHJpYXRlIHZlcnRpY2FsIGxpbmUgYWZ0ZXIgKGRhc2hlZC9zb2xpZClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxOb2Rlc0luQ29sdW1uQXBwcm92ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgYXBwIGN1c3RvbSBzdGF0dXNlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwcm92YWxTdGF0dXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBDdXN0b20gc3RhdHVzIHRvIGNvbG9yIG1hcHBpbmcgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNDb2xvck1hcHBpbmc6IFJlY29yZDxBcHByb3ZhbFN0YXR1cywgT2JqZWN0U3RhdHVzPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGlzIGluIGVkaXQgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1lZGl0LW1vZGUnKVxuICAgIGlzRWRpdDogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGFmdGVyIGlzIGJsYW5rICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLW5leHQtYmxhbmsnKVxuICAgIGlzTmV4dE5vZGVCbGFuazogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1ibGFuaycpXG4gICAgZ2V0IF9ibGFuaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5ub2RlPy5ibGFuaztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tc3BhY2UnKVxuICAgIGdldCBfc3BhY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubm9kZT8uc3BhY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXJvb3QnKVxuICAgIGdldCBfaXNSb290KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhPy5pc1Jvb3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpbmFsJylcbiAgICBnZXQgX2lzRmluYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGE/LmlzRmluYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWxpbmUtYmVmb3JlJylcbiAgICBnZXQgX3JlbmRlckxpbmVCZWZvcmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2RlPy5ibGFuaztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tbGluZS1hZnRlcicpXG4gICAgZ2V0IF9yZW5kZXJMaW5lQWZ0ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2RlPy5ibGFuayB8fCB0aGlzLl9pc0ZpbmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1hcHByb3ZlZCcpXG4gICAgZ2V0IF9pc0FwcHJvdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlICYmIGlzTm9kZUFwcHJvdmVkKHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXBhcmVudC1hcHByb3ZlZCcpXG4gICAgZ2V0IF9pc1BhcmVudEFwcHJvdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWV0YT8ucGFyZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm1ldGE/LnJvb3ROb2Rlc0FwcHJvdmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YS5wYXJlbnRzLmV2ZXJ5KChub2RlKSA9PiBpc05vZGVBcHByb3ZlZChub2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXNlbGVjdGVkJylcbiAgICBnZXQgX2lzTm9kZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgdGhpcy5faXNTZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tcGFyYWxsZWwtc3RhcnQnKVxuICAgIGdldCBfaXNQYXJhbGxlbFN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LnBhcmFsbGVsU3RhcnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1wYXJhbGxlbC1lbmQnKVxuICAgIGdldCBfaXNQYXJhbGxlbEVuZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5tZXRhPy5wYXJhbGxlbEVuZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpcnN0LWluLXBhcmFsbGVsJylcbiAgICBnZXQgX2lzRmlyc3RJblBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LmlzRmlyc3RJblBhcmFsbGVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tbGFzdC1pbi1wYXJhbGxlbCcpXG4gICAgZ2V0IF9pc0xhc3RJblBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LmlzTGFzdEluUGFyYWxsZWwpO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGlzIGJsYW5rIGFuZCB0aGUgZmluYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWxhc3QtYmxhbmsnKVxuICAgIGdldCBfbGFzdEJsYW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmxhbmsgJiYgdGhpcy5ub2RlLnRhcmdldHMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5vZGUuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gYWRkIG5vZGUgYnV0dG9uIGNsaWNrZWQsIHZhbHVlIGlzIHRoZSBwbGFjZW1lbnQgZm9yIHRoZSBuZXcgbm9kZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uQWRkID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZWRpdCBub2RlIGJ1dHRvbiBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25FZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZGVsZXRlIG5vZGUgYnV0dG9uIGNsaWNrZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvbkRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChNZW51Q29tcG9uZW50KVxuICAgIF9tZW51OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdvdmVyZmxvd01lbnVCdXR0b24nKVxuICAgIF9vdmVyZmxvd01lbnVCdXR0b246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ25vZGVDb250ZW50JylcbiAgICBfbm9kZUNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQXBwcm92YWxGbG93RHJvcFpvbmVEaXJlY3RpdmUpXG4gICAgX2Ryb3Bab25lczogUXVlcnlMaXN0PEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChHcmlkTGlzdEl0ZW1Db21wb25lbnQpXG4gICAgX2dyaWRMaXN0SXRlbTogR3JpZExpc3RJdGVtQ29tcG9uZW50PEFwcHJvdmFsR3JhcGhOb2RlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29iamVjdFN0YXR1czogT2JqZWN0U3RhdHVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2hvd0R1ZURhdGVXYXJuaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kdWVJbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGFwcHJvdmFsRmxvd05vZGVJZCA9ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlLScgKyBkZWZhdWx0SWQrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX25hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNOb3RTdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWlzTm9kZVN0YXJ0ZWQodGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNFZGl0QWN0aW9uc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgfHwgdGhpcy5ub2RlLnN0YXR1cyA9PT0gJ3JlamVjdGVkJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfYWN0aXZlRHJvcFpvbmVzKCk6IEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcFpvbmVzLmZpbHRlcigoeikgPT4gei5hY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc0FueURyb3Bab25lQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRHJvcFpvbmVzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzVmVydGljYWxMaW5lQmVmb3JlU29saWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tZXRhPy5wYXJlbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5tZXRhPy5pc1ZlcnRpY2FsTGluZUJlZm9yZVNvbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YS5wYXJlbnRzLmV2ZXJ5KChwYXJlbnROb2RlKSA9PiBpc05vZGVBcHByb3ZlZChwYXJlbnROb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGU/LnRhcmdldHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm1ldGE/LmlzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZlcnRpY2FsTGluZUJlZm9yZVNvbGlkICYmIHRoaXMuYWxsTm9kZXNJbkNvbHVtbkFwcHJvdmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgIXRoaXMuX2JsYW5rICYmICF0aGlzLl9zcGFjZSAmJiAhdGhpcy5ub2RlPy5kaXNhYmxlQWN0aW9ucztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2hvd0FmdGVyQWxsQWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgIXRoaXMuX3NwYWNlICYmICF0aGlzLm5vZGU/LmRpc2FibGVBY3Rpb25zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Ryb3Bab25lUGFydGlhbChwbGFjZW1lbnQ6IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICghdGhpcy5fYmxhbmsgJiYgKCF0aGlzLmlzTmV4dE5vZGVCbGFuayB8fCBwbGFjZW1lbnQgPT09ICdiZWZvcmUnKSkgfHxcbiAgICAgICAgICAgICh0aGlzLl9sYXN0QmxhbmsgJiYgcGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGVja05vZGVTdGF0dXMoKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoZWNrTm9kZVN0YXR1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk1lbnVPcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51LnJlZnJlc2hQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JpZExpc3RJdGVtPy5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kZWFjdGl2YXRlRHJvcFpvbmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kcm9wWm9uZXMuZm9yRWFjaCgoZHJvcFpvbmUpID0+IChkcm9wWm9uZS5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrSWZOb2RlRHJhZ2dlZEluRHJvcFpvbmUobm9kZVJlY3Q6IERPTVJlY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHJvcFpvbmVzLmZvckVhY2goKGRyb3Bab25lKSA9PiBkcm9wWm9uZS5fY2hlY2tJZk5vZGVEcmFnZ2VkSW5Ecm9wWm9uZShub2RlUmVjdCkpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tOb2RlU3RhdHVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tEdWVEYXRlICYmIHRoaXMubm9kZS5kdWVEYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkdWVUaHJlc2hvbGQgPSBOdW1iZXIobmV3IERhdGUodGhpcy5ub2RlLmR1ZURhdGUpKSAtIHRoaXMuZHVlRGF0ZVRocmVzaG9sZCAqIERBWV9JTl9NSUxMSVNFQ09ORFM7XG4gICAgICAgICAgICBjb25zdCBub3dBbmREdWVEaWZmID0gRGF0ZS5ub3coKSAtIGR1ZVRocmVzaG9sZDtcblxuICAgICAgICAgICAgdGhpcy5fZHVlSW4gPSBNYXRoLnJvdW5kKG5vd0FuZER1ZURpZmYgLyBEQVlfSU5fTUlMTElTRUNPTkRTKTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dEdWVEYXRlV2FybmluZyA9ICFpc05vZGVBcHByb3ZlZCh0aGlzLm5vZGUpICYmIGR1ZVRocmVzaG9sZCA8IERhdGUubm93KCk7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RTdGF0dXMgPSB0aGlzLl9zaG93RHVlRGF0ZVdhcm5pbmcgPyAnY3JpdGljYWwnIDogdGhpcy5fZ2V0Tm9kZVN0YXR1c0NsYXNzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29iamVjdFN0YXR1cyA9IHRoaXMuX2dldE5vZGVTdGF0dXNDbGFzcygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Tm9kZVN0YXR1c0NsYXNzKCk6IE9iamVjdFN0YXR1cyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnN0YXR1c0NvbG9yTWFwcGluZ1xuICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0dXNDb2xvck1hcHBpbmdbdGhpcy5ub2RlLnN0YXR1c11cbiAgICAgICAgICAgICAgICA6IE5PREVfU1RBVFVTX0NMQVNTX01BUFt0aGlzLm5vZGUuc3RhdHVzXVxuICAgICAgICApIGFzIE9iamVjdFN0YXR1cztcbiAgICB9XG59XG4iLCJAaWYgKG1ldGE/LnJlbmRlclZlcnRpY2FsTGluZUJlZm9yZSkge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWJlZm9yZVwiXG4gICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWJlZm9yZS1zb2xpZF09XCJfaXNWZXJ0aWNhbExpbmVCZWZvcmVTb2xpZFwiXG4gICAgPjwvZGl2PlxufVxuQGlmIChtZXRhPy5yZW5kZXJWZXJ0aWNhbExpbmVBZnRlcikge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWFmdGVyXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX3ZlcnRpY2FsLWxpbmUtYWZ0ZXItc29saWRdPVwiX2lzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZFwiXG4gICAgPjwvZGl2PlxufVxuQGlmICghX2JsYW5rICYmICFfc3BhY2UpIHtcbiAgICBAaWYgKHJlbmRlckFycm93KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hcnJvd1wiPjwvZGl2PlxuICAgIH1cbiAgICBAaWYgKF9pc1Jvb3QgJiYgbWV0YT8ubm9kZUluZGV4ID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19jYXJvdXNlbC1zdGFydC1tYXJrZXJcIj48L2Rpdj5cbiAgICB9XG4gICAgQGlmIChfaXNGaW5hbCAmJiBtZXRhPy5ub2RlSW5kZXggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Nhcm91c2VsLWVuZC1tYXJrZXJcIj48L2Rpdj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxufVxuPG5nLXRlbXBsYXRlICNvdmVyZmxvd01lbnVCdXR0b24+XG4gICAgPCEtLSBBY3R1YWxseSBqdXN0IHRoZSBmZC1ncmlkLWl0ZW0gYWN0aW9uIGJ1dHRvbiBidXQgd2l0aCBzb21lIGhhcmRjb2RlIHRvIGJlIHVzZWQgYXMgbWVudSB0cmlnZ2VyIC0tPlxuICAgIEBpZiAoIW5vZGU/LmRpc2FibGVBY3Rpb25zKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbWVudS1idXR0b25cIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgZ2x5cGg9XCJvdmVyZmxvd1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVNZW51QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgZmRDb21wYWN0XG4gICAgICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNFZGl0QWN0aW9uc0F2YWlsYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vZGVDb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19pbmZvXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbmFtZVwiXG4gICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbmFtZS0tbWVtYmVycy1jb3VudF09XCJub2RlLmFwcHJvdmVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgIFtpZF09XCJhcHByb3ZhbEZsb3dOb2RlSWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKG5vZGUuYXBwcm92ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHt7IG5vZGUuYXBwcm92ZXJzWzBdLm5hbWUgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlTWVtYmVyc0NvdW50JyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBub2RlLmFwcHJvdmVycy5sZW5ndGggfSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKCFub2RlLnZhcmlvdXNUZWFtcykge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwcm92ZXJzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub2RlLmFwcHJvdmVycy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBub2RlLmFwcHJvdmVyc1swXS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlVmFyaW91c1RlYW1zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhcmlvdXNUZWFtcz4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVWYXJpb3VzVGVhbXMnIHwgZmRUcmFuc2xhdGUgfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxmZHAtb2JqZWN0LXN0YXR1cyBbc3RhdHVzXT1cIl9vYmplY3RTdGF0dXNcIiBbaW52ZXJ0ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZkcE9iamVjdFN0YXR1c1RleHQ+XG4gICAgICAgICAgICAgICAgQGlmIChhcHByb3ZhbFN0YXR1c1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoZWNrRHVlRGF0ZSB8fCAhX3Nob3dEdWVEYXRlV2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhcHByb3ZhbFN0YXR1c1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFwcHJvdmFsU3RhdHVzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBub2RlOiBub2RlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoZWNrRHVlRGF0ZSB8fCAhX3Nob3dEdWVEYXRlV2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAobm9kZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2FwcHJvdmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc3RhdHVzQXBwcm92ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdyZWplY3RlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnN0YXR1c1JlamVjdGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW4gcHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zdGF0dXNJblByb2dyZXNzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnbm90IHN0YXJ0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zdGF0dXNOb3RTdGFydGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY2hlY2tEdWVEYXRlICYmIF9zaG93RHVlRGF0ZVdhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChfZHVlSW4gPT09IGR1ZURhdGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlU3RhdHVzRHVlVG9kYXknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKF9kdWVJbiA8IGR1ZURhdGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVTdGF0dXNEdWVJblhEYXlzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkdWVEYXRlVGhyZXNob2xkIC0gX2R1ZUluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfZHVlSW4gPiBkdWVEYXRlVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlU3RhdHVzWERheXNPdmVyZHVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBfZHVlSW4gLSBkdWVEYXRlVGhyZXNob2xkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkcC1vYmplY3Qtc3RhdHVzPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbkBpZiAoX3Nob3dBZGRCdXR0b24gJiYgbWV0YT8uY2FuQWRkTm9kZUJlZm9yZUFsbCAmJiAhbm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEJlZm9yZSkge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGROb2RlQnV0dG9uXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcGxhY2VtZW50OiAnYmVmb3JlLWFsbCcgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKF9zaG93QWRkQnV0dG9uICYmIG1ldGE/LmNhbkFkZE5vZGVCZWZvcmUgJiYgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRCZWZvcmUpIHtcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkTm9kZUJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBsYWNlbWVudDogJ2JlZm9yZScgfVwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKFxuICAgIF9zaG93QWRkQnV0dG9uICYmIG1ldGE/LmNhbkFkZE5vZGVBZnRlciAmJiBtZXRhPy5yZW5kZXJBZGROb2RlQWZ0ZXJCdXR0b24gJiYgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRBZnRlclxuKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZE5vZGVCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBwbGFjZW1lbnQ6ICdhZnRlcicgfVwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKFxuICAgIF9zaG93QWZ0ZXJBbGxBZGRCdXR0b24gJiZcbiAgICBtZXRhPy5jYW5BZGROb2RlQWZ0ZXJBbGwgJiZcbiAgICBtZXRhPy5yZW5kZXJBZGROb2RlQWZ0ZXJCdXR0b24gJiZcbiAgICAhbm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEFmdGVyXG4pIHtcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkTm9kZUJ1dHRvblwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBsYWNlbWVudDogJ2FmdGVyLWFsbCcgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG59XG48bmctdGVtcGxhdGUgI2FkZE5vZGVCdXR0b24gbGV0LXBsYWNlbWVudD1cInBsYWNlbWVudFwiPlxuICAgIEBpZiAobm9kZS5zdGF0dXMgIT09ICdhcHByb3ZlZCcpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cImFkZFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBmZENvbXBhY3RcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fYWRkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hZGQtLWJsYW5rXT1cInRoaXMuX2JsYW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hZGQtLWJlZm9yZV09XCJcbiAgICAgICAgICAgICAgICAhdGhpcy5fYmxhbmsgJiYgKHBsYWNlbWVudCA9PT0gJ2JlZm9yZScgfHwgcGxhY2VtZW50ID09PSAnYmVmb3JlLWFsbCcpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2FkZC0tYmVmb3JlLWFsbF09XCIhdGhpcy5fYmxhbmsgJiYgcGxhY2VtZW50ID09PSAnYmVmb3JlLWFsbCdcIlxuICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2FkZC0tYWZ0ZXJdPVwiXG4gICAgICAgICAgICAgICAgIXRoaXMuX2JsYW5rICYmIChwbGFjZW1lbnQgPT09ICdhZnRlcicgfHwgcGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fYWRkLS1hZnRlci1hbGxdPVwicGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJ1wiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJkcm9wWm9uZS5hY3RpdmUgPyAnaGlkZGVuJyA6ICcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFkZC5lbWl0KHBsYWNlbWVudClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIDxkaXZcbiAgICAgICAgI2Ryb3Bab25lPVwiZmRwLWFwcHJvdmFsLWZsb3ctZHJvcC16b25lXCJcbiAgICAgICAgZmRwLWFwcHJvdmFsLWZsb3ctZHJvcC16b25lXG4gICAgICAgIFtwbGFjZW1lbnRdPVwicGxhY2VtZW50XCJcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19kcm9wLXpvbmVcIlxuICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fZHJvcC16b25lLS1hY3RpdmVdPVwiZHJvcFpvbmUuYWN0aXZlXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Ryb3Atem9uZS0tYmxhbmtdPVwiaXNOZXh0Tm9kZUJsYW5rXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Ryb3Atem9uZS0tcGFydGlhbF09XCJfZHJvcFpvbmVQYXJ0aWFsKHBsYWNlbWVudClcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48ZmQtbWVudSAjbWVudSBmZENvbnRlbnREZW5zaXR5IHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiAoaXNPcGVuQ2hhbmdlKT1cIl9vbk1lbnVPcGVuKClcIj5cbiAgICBAaWYgKG1ldGE/LmNhbkFkZE5vZGVCZWZvcmUgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEJlZm9yZSkge1xuICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJtZW51LmNsb3NlKCk7IG9uQWRkLmVtaXQoJ2JlZm9yZScpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubm9kZUFjdGlvbkFkZEFwcHJvdmVyc0JlZm9yZScgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKG1ldGE/LmNhbkFkZE5vZGVBZnRlciAmJiAhdGhpcy5ub2RlPy5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlQWRkQWZ0ZXIpIHtcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBvbkFkZC5lbWl0KCdhZnRlcicpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubm9kZUFjdGlvbkFkZEFwcHJvdmVyc0FmdGVyJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuICAgIEBpZiAobWV0YT8uY2FuQWRkUGFyYWxsZWwgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZFBhcmFsbGVsKSB7XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgb25BZGQuZW1pdCgncGFyYWxsZWwnKVwiPlxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25BZGRBcHByb3ZlcnNQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKF9pc05vdFN0YXJ0ZWQgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUVkaXQpIHtcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBvbkVkaXQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25FZGl0QXBwcm92ZXInIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICB9XG4gICAgQGlmICghdGhpcy5ub2RlPy5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlUmVtb3ZlKSB7XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgb25EZWxldGUuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25SZW1vdmUnIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICB9XG48L2ZkLW1lbnU+XG4iXX0=","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { FormGroupComponent, FormItemComponent } from '@fundamental-ngx/core/form';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { APPROVAL_FLOW_NODE_TYPES } from '../approval-flow-add-node/approval-flow-add-node.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@angular/forms\";\n/**\n * @deprecated\n * ApprovalFlowSelectType component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowSelectTypeComponent {\n /** @hidden */\n constructor(_dialogRef) {\n this._dialogRef = _dialogRef;\n /** @hidden */\n this._nodeType = APPROVAL_FLOW_NODE_TYPES.SERIAL;\n /** @hidden */\n this._nodeTypes = APPROVAL_FLOW_NODE_TYPES;\n /** @hidden */\n this._toNextSerial = false;\n }\n /** @hidden */\n _submit() {\n this._dialogRef.close({ type: this._nodeType, toNextSerial: this._toNextSerial });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowSelectTypeComponent, deps: [{ token: i1.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowSelectTypeComponent, isStandalone: true, selector: \"fdp-approval-flow-select-type\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-select-type\" }, ngImport: i0, template: \"<fd-dialog>\\n <fd-dialog-header>\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>{{ 'platformApprovalFlow.selectTypeDialogMoveApproverAs' | fdTranslate }}</p>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body fdCompact>\\n <span class=\\\"fd-form-label\\\">\\n {{ 'platformApprovalFlow.selectTypeDialogParallelOrSerial' | fdTranslate }}\\n </span>\\n <fd-form-group class=\\\"fdp-approval-flow-select-type__form\\\">\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.PARALLEL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-parallel\\\"\\n name=\\\"select-type-parallel\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeParallel' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.SERIAL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-serial\\\"\\n name=\\\"select-type-serial\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeSerial' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_toNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n </fd-form-group>\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogConfirmButton' | fdTranslate\\\"\\n (click)=\\\"_submit()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogCancelButton' | fdTranslate\\\"\\n (click)=\\\"_dialogRef.close()\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-select-type .fd-dialog__body{width:24rem}.fdp-approval-flow-select-type .fd-dialog__body .fd-form-item{margin-bottom:0}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: FormGroupComponent, selector: \"fd-form-group\", inputs: [\"isInline\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: RadioButtonComponent, selector: \"fd-radio-button\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"tabIndex\", \"state\", \"disabled\", \"readOnly\", \"selectedValue\", \"name\", \"id\", \"value\", \"required\", \"standalone\", \"wrapLabel\", \"valignLabel\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowSelectTypeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-select-type', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-select-type'\n }, imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ContentDensityDirective,\n FormGroupComponent,\n FormItemComponent,\n RadioButtonComponent,\n FormsModule,\n CheckboxComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog>\\n <fd-dialog-header>\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>{{ 'platformApprovalFlow.selectTypeDialogMoveApproverAs' | fdTranslate }}</p>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body fdCompact>\\n <span class=\\\"fd-form-label\\\">\\n {{ 'platformApprovalFlow.selectTypeDialogParallelOrSerial' | fdTranslate }}\\n </span>\\n <fd-form-group class=\\\"fdp-approval-flow-select-type__form\\\">\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.PARALLEL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-parallel\\\"\\n name=\\\"select-type-parallel\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeParallel' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.SERIAL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-serial\\\"\\n name=\\\"select-type-serial\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeSerial' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_toNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n </fd-form-group>\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogConfirmButton' | fdTranslate\\\"\\n (click)=\\\"_submit()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogCancelButton' | fdTranslate\\\"\\n (click)=\\\"_dialogRef.close()\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-select-type .fd-dialog__body{width:24rem}.fdp-approval-flow-select-type .fd-dialog__body .fd-form-item{margin-bottom:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlL2FwcHJvdmFsLWZsb3ctc2VsZWN0LXR5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOzs7O0FBT3RHOzs7R0FHRztBQTRCSCxNQUFNLE9BQU8sK0JBQStCO0lBVXhDLGNBQWM7SUFDZCxZQUE0QixVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBVmpELGNBQWM7UUFDZCxjQUFTLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDO1FBRTVDLGNBQWM7UUFDZCxlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFFdEMsY0FBYztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRzhCLENBQUM7SUFFckQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUE4QixDQUFDLENBQUM7SUFDbEgsQ0FBQzs4R0FoQlEsK0JBQStCO2tHQUEvQiwrQkFBK0IsNktDM0Q1Qyw2c0VBc0RBLHkrRERaUSxlQUFlLHNHQUNmLHFCQUFxQiw2REFDckIsaUJBQWlCLG1GQUdqQixtQkFBbUIsd0ZBQ25CLHVCQUF1QixvZEFDdkIsa0JBQWtCLGdGQUNsQixpQkFBaUIsK0ZBQ2pCLG9CQUFvQiwyUUFDcEIsV0FBVywrVkFDWCxpQkFBaUIsb1dBQ2pCLHFCQUFxQiw2REFDckIsa0JBQWtCLHVIQUNsQixlQUFlOzsyRkFHViwrQkFBK0I7a0JBM0IzQyxTQUFTOytCQUNJLCtCQUErQixtQkFHeEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsd0RBQXdEO3FCQUNsRSxXQUNRO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50LCBGb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFR5cGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgdHlwZTogQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuICAgIHRvTmV4dFNlcmlhbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93U2VsZWN0VHlwZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZSdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBGb3JtR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkJhckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dTZWxlY3RUeXBlQ29tcG9uZW50IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b05leHRTZXJpYWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IF9kaWFsb2dSZWY6IERpYWxvZ1JlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHsgdHlwZTogdGhpcy5fbm9kZVR5cGUsIHRvTmV4dFNlcmlhbDogdGhpcy5fdG9OZXh0U2VyaWFsIH0gYXMgU2VsZWN0VHlwZURpYWxvZ0Zvcm1EYXRhKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxwPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nTW92ZUFwcHJvdmVyQXMnIHwgZmRUcmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keSBmZENvbXBhY3Q+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtZm9ybS1sYWJlbFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnNlbGVjdFR5cGVEaWFsb2dQYXJhbGxlbE9yU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGZkLWZvcm0tZ3JvdXAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZV9fZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX25vZGVUeXBlcy5QQVJBTExFTFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX25vZGVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3QtdHlwZS1wYXJhbGxlbFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3QtdHlwZS1wYXJhbGxlbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc2VsZWN0VHlwZURpYWxvZ05vZGVUeXBlUGFyYWxsZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX25vZGVUeXBlcy5TRVJJQUxcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9ub2RlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LXR5cGUtc2VyaWFsXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdC10eXBlLXNlcmlhbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc2VsZWN0VHlwZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl90b05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQWRkVG9OZXh0JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZm9ybS1ncm91cD5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyIGZkQ29tcGFjdD5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nQ29uZmlybUJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX3N1Ym1pdCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nQ2FuY2VsQnV0dG9uJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfZGlhbG9nUmVmLmNsb3NlKClcIlxuICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { isNodeApproved } from '../helpers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowToolbarActions component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowToolbarActionsComponent {\n constructor() {\n /** Whether approval flow in the edit mode */\n this.isEditMode = false;\n /** Event emitted when edit mode toggled */\n this.enterEditMode = new EventEmitter();\n /** Event emitted when node added */\n this.addNode = new EventEmitter();\n /** Event emitted when selected node edited */\n this.editSelectedNode = new EventEmitter();\n /** Event emitted when selected nodes deleted (bulk) */\n this.deleteSelectedNodes = new EventEmitter();\n /** @hidden */\n this._canRemoveSelectedNodes = false;\n /** @hidden */\n this._selectedNodes = [];\n }\n /** Array of selected approval flow graph nodes */\n set selectedNodes(value) {\n this._selectedNodes = value;\n this._canRemoveSelectedNodes =\n !!this.selectedNodes.length &&\n this.selectedNodes.every((node) => !node.disableActions && !node.actionsConfig?.disableRemove);\n }\n get selectedNodes() {\n return this._selectedNodes;\n }\n /** @hidden */\n get _notApprovedSelectedNode() {\n if (this.selectedNodes.length !== 1) {\n return null;\n }\n return !isNodeApproved(this.selectedNodes[0]) ? this.selectedNodes[0] : null;\n }\n /** @hidden */\n get _canAddBefore() {\n const node = this._notApprovedSelectedNode;\n return (!!node &&\n !node.disableActions &&\n !node.actionsConfig?.disableAddBefore &&\n !!this.graphMetadata[node.id].canAddNodeBefore);\n }\n /** @hidden */\n get _canAddAfter() {\n const node = this._notApprovedSelectedNode;\n return (!!node &&\n !node.disableActions &&\n !node.actionsConfig?.disableAddAfter &&\n !!this.graphMetadata[node.id].canAddNodeAfter);\n }\n /** @hidden */\n get _canAddParallel() {\n const node = this._notApprovedSelectedNode;\n return (!!this._notApprovedSelectedNode &&\n !node?.disableActions &&\n !node?.actionsConfig?.disableAddParallel &&\n !!this.graphMetadata[node.id].canAddParallel);\n }\n /** @hidden */\n get _canEditNode() {\n const node = this._notApprovedSelectedNode;\n return !!node && !node.disableActions && !node.actionsConfig?.disableEdit;\n }\n /** @hidden */\n _addNode(target) {\n const node = this.selectedNodes[0];\n this.addNode.emit({ node, target });\n }\n /** @hidden */\n _editSelectedNode() {\n const node = this.selectedNodes[0];\n this.editSelectedNode.emit(node);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowToolbarActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowToolbarActionsComponent, isStandalone: true, selector: \"fdp-approval-flow-toolbar-actions\", inputs: { graph: \"graph\", graphMetadata: \"graphMetadata\", selectedNodes: \"selectedNodes\", isEditMode: \"isEditMode\" }, outputs: { enterEditMode: \"enterEditMode\", addNode: \"addNode\", editSelectedNode: \"editSelectedNode\", deleteSelectedNodes: \"deleteSelectedNodes\" }, host: { classAttribute: \"fdp-approval-flow-toolbar-actions\" }, ngImport: i0, template: \"<ng-container fdCompact>\\n @if (!graph?.columns?.length && !graph?.errors) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddStepButton' | fdTranslate\\\"\\n (click)=\\\"_addNode('empty')\\\"\\n ></button>\\n }\\n @if (!!graph?.columns?.length && !isEditMode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditButton' | fdTranslate\\\"\\n (click)=\\\"enterEditMode.emit()\\\"\\n ></button>\\n }\\n @if (isEditMode) {\\n @if (_canAddBefore) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversBefore' | fdTranslate\\\"\\n (click)=\\\"_addNode('before')\\\"\\n ></button>\\n }\\n @if (_canAddAfter) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversAfter' | fdTranslate\\\"\\n (click)=\\\"_addNode('after')\\\"\\n ></button>\\n }\\n @if (_canAddParallel) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversParallel' | fdTranslate\\\"\\n (click)=\\\"_addNode('parallel')\\\"\\n ></button>\\n }\\n @if (_canRemoveSelectedNodes) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarRemove' | fdTranslate\\\"\\n (click)=\\\"deleteSelectedNodes.emit()\\\"\\n ></button>\\n }\\n @if (_canEditNode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditApprover' | fdTranslate\\\"\\n (click)=\\\"_editSelectedNode()\\\"\\n ></button>\\n }\\n }\\n</ng-container>\\n\", styles: [\".fdp-approval-flow-toolbar-actions .fd-button:not(:last-child){margin-right:.5rem}[dir=rtl] .fdp-approval-flow-toolbar-actions .fd-button:not(:last-child),.fdp-approval-flow-toolbar-actions[dir=rtl] .fd-button:not(:last-child){margin-right:0;margin-left:.5rem}\\n\"], dependencies: [{ kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowToolbarActionsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-toolbar-actions', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-toolbar-actions'\n }, imports: [ContentDensityDirective, ButtonComponent, FdTranslatePipe], template: \"<ng-container fdCompact>\\n @if (!graph?.columns?.length && !graph?.errors) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddStepButton' | fdTranslate\\\"\\n (click)=\\\"_addNode('empty')\\\"\\n ></button>\\n }\\n @if (!!graph?.columns?.length && !isEditMode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditButton' | fdTranslate\\\"\\n (click)=\\\"enterEditMode.emit()\\\"\\n ></button>\\n }\\n @if (isEditMode) {\\n @if (_canAddBefore) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversBefore' | fdTranslate\\\"\\n (click)=\\\"_addNode('before')\\\"\\n ></button>\\n }\\n @if (_canAddAfter) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversAfter' | fdTranslate\\\"\\n (click)=\\\"_addNode('after')\\\"\\n ></button>\\n }\\n @if (_canAddParallel) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversParallel' | fdTranslate\\\"\\n (click)=\\\"_addNode('parallel')\\\"\\n ></button>\\n }\\n @if (_canRemoveSelectedNodes) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarRemove' | fdTranslate\\\"\\n (click)=\\\"deleteSelectedNodes.emit()\\\"\\n ></button>\\n }\\n @if (_canEditNode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditApprover' | fdTranslate\\\"\\n (click)=\\\"_editSelectedNode()\\\"\\n ></button>\\n }\\n }\\n</ng-container>\\n\", styles: [\".fdp-approval-flow-toolbar-actions .fd-button:not(:last-child){margin-right:.5rem}[dir=rtl] .fdp-approval-flow-toolbar-actions .fd-button:not(:last-child),.fdp-approval-flow-toolbar-actions[dir=rtl] .fd-button:not(:last-child){margin-right:0;margin-left:.5rem}\\n\"] }]\n }], propDecorators: { graph: [{\n type: Input\n }], graphMetadata: [{\n type: Input\n }], selectedNodes: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], enterEditMode: [{\n type: Output\n }], addNode: [{\n type: Output\n }], editSelectedNode: [{\n type: Output\n }], deleteSelectedNodes: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHNUM7OztHQUdHO0FBWUgsTUFBTSxPQUFPLG1DQUFtQztJQVhoRDtRQWlDSSw2Q0FBNkM7UUFFN0MsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQiwyQ0FBMkM7UUFFM0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpDLG9DQUFvQztRQUVwQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQStELENBQUM7UUFFMUYsOENBQThDO1FBRTlDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRXpELHVEQUF1RDtRQUV2RCx3QkFBbUIsR0FBRyxJQUFJLFlBQVks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O1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBOUdRLG1DQUFtQztrR0FBbkMsbUNBQW1DLHFhQ3pCaEQsbXpEQXFEQSxnVUQ5QmMsdUJBQXVCLG9kQUFFLGVBQWUsMElBQUUsZUFBZTs7MkZBRTFELG1DQUFtQztrQkFYL0MsU0FBUzsrQkFDSSxtQ0FBbUMsaUJBRzlCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLG1DQUFtQztxQkFDN0MsV0FDUSxDQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7OEJBS3BFLEtBQUs7c0JBREosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS0YsYUFBYTtzQkFEaEIsS0FBSztnQkFjTixVQUFVO3NCQURULEtBQUs7Z0JBS04sYUFBYTtzQkFEWixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxtQkFBbUI7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dHcmFwaCwgQXBwcm92YWxHcmFwaE1ldGFkYXRhIH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy1ncmFwaCc7XG5pbXBvcnQgeyBpc05vZGVBcHByb3ZlZCB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxHcmFwaE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FwcHJvdmFsLW5vZGUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9ucyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtDb250ZW50RGVuc2l0eURpcmVjdGl2ZSwgQnV0dG9uQ29tcG9uZW50LCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd1Rvb2xiYXJBY3Rpb25zQ29tcG9uZW50IHtcbiAgICAvKiogQXBwcm92YWwgZmxvdyBncmFwaCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoO1xuXG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgZ3JhcGggbWV0YWRhdGEgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyYXBoTWV0YWRhdGE6IEFwcHJvdmFsR3JhcGhNZXRhZGF0YTtcblxuICAgIC8qKiBBcnJheSBvZiBzZWxlY3RlZCBhcHByb3ZhbCBmbG93IGdyYXBoIG5vZGVzICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWROb2Rlcyh2YWx1ZTogQXBwcm92YWxHcmFwaE5vZGVbXSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fY2FuUmVtb3ZlU2VsZWN0ZWROb2RlcyA9XG4gICAgICAgICAgICAhIXRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5ldmVyeSgobm9kZSkgPT4gIW5vZGUuZGlzYWJsZUFjdGlvbnMgJiYgIW5vZGUuYWN0aW9uc0NvbmZpZz8uZGlzYWJsZVJlbW92ZSk7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZE5vZGVzKCk6IEFwcHJvdmFsR3JhcGhOb2RlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROb2RlcztcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBhcHByb3ZhbCBmbG93IGluIHRoZSBlZGl0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzRWRpdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZWRpdCBtb2RlIHRvZ2dsZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlbnRlckVkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBub2RlIGFkZGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgYWRkTm9kZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBub2RlOiBBcHByb3ZhbEdyYXBoTm9kZTsgdGFyZ2V0OiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0IH0+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHNlbGVjdGVkIG5vZGUgZWRpdGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgZWRpdFNlbGVjdGVkTm9kZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxHcmFwaE5vZGU+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHNlbGVjdGVkIG5vZGVzIGRlbGV0ZWQgKGJ1bGspICovXG4gICAgQE91dHB1dCgpXG4gICAgZGVsZXRlU2VsZWN0ZWROb2RlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhblJlbW92ZVNlbGVjdGVkTm9kZXMgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlczogQXBwcm92YWxHcmFwaE5vZGVbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX25vdEFwcHJvdmVkU2VsZWN0ZWROb2RlKCk6IEFwcHJvdmFsR3JhcGhOb2RlIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhaXNOb2RlQXBwcm92ZWQodGhpcy5zZWxlY3RlZE5vZGVzWzBdKSA/IHRoaXMuc2VsZWN0ZWROb2Rlc1swXSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZEJlZm9yZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX25vdEFwcHJvdmVkU2VsZWN0ZWROb2RlO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIW5vZGUgJiZcbiAgICAgICAgICAgICFub2RlLmRpc2FibGVBY3Rpb25zICYmXG4gICAgICAgICAgICAhbm9kZS5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlQWRkQmVmb3JlICYmXG4gICAgICAgICAgICAhIXRoaXMuZ3JhcGhNZXRhZGF0YVtub2RlLmlkXS5jYW5BZGROb2RlQmVmb3JlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZEFmdGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhbm9kZSAmJlxuICAgICAgICAgICAgIW5vZGUuZGlzYWJsZUFjdGlvbnMgJiZcbiAgICAgICAgICAgICFub2RlLmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRBZnRlciAmJlxuICAgICAgICAgICAgISF0aGlzLmdyYXBoTWV0YWRhdGFbbm9kZS5pZF0uY2FuQWRkTm9kZUFmdGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZFBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGUgJiZcbiAgICAgICAgICAgICFub2RlPy5kaXNhYmxlQWN0aW9ucyAmJlxuICAgICAgICAgICAgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRQYXJhbGxlbCAmJlxuICAgICAgICAgICAgISF0aGlzLmdyYXBoTWV0YWRhdGFbbm9kZSEuaWRdLmNhbkFkZFBhcmFsbGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkVkaXROb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuICEhbm9kZSAmJiAhbm9kZS5kaXNhYmxlQWN0aW9ucyAmJiAhbm9kZS5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlRWRpdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGROb2RlKHRhcmdldDogQXBwcm92YWxGbG93Tm9kZVRhcmdldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdO1xuICAgICAgICB0aGlzLmFkZE5vZGUuZW1pdCh7IG5vZGUsIHRhcmdldCB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9lZGl0U2VsZWN0ZWROb2RlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdO1xuICAgICAgICB0aGlzLmVkaXRTZWxlY3RlZE5vZGUuZW1pdChub2RlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIGZkQ29tcGFjdD5cbiAgICBAaWYgKCFncmFwaD8uY29sdW1ucz8ubGVuZ3RoICYmICFncmFwaD8uZXJyb3JzKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyQWRkU3RlcEJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2FkZE5vZGUoJ2VtcHR5JylcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoISFncmFwaD8uY29sdW1ucz8ubGVuZ3RoICYmICFpc0VkaXRNb2RlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyRWRpdEJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZW50ZXJFZGl0TW9kZS5lbWl0KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoaXNFZGl0TW9kZSkge1xuICAgICAgICBAaWYgKF9jYW5BZGRCZWZvcmUpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnRvb2xiYXJBZGRBcHByb3ZlcnNCZWZvcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTm9kZSgnYmVmb3JlJylcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX2NhbkFkZEFmdGVyKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyQWRkQXBwcm92ZXJzQWZ0ZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTm9kZSgnYWZ0ZXInKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfY2FuQWRkUGFyYWxsZWwpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnRvb2xiYXJBZGRBcHByb3ZlcnNQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9hZGROb2RlKCdwYXJhbGxlbCcpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9jYW5SZW1vdmVTZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyUmVtb3ZlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWROb2Rlcy5lbWl0KClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX2NhbkVkaXROb2RlKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyRWRpdEFwcHJvdmVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2VkaXRTZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICB9XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { CdkDrag } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Injector, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { Subject, Subscription, combineLatest, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, map, mapTo, startWith, switchMap, throttleTime } from 'rxjs/operators';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { GridListComponent } from '@fundamental-ngx/core/grid-list';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { GridListItemBodyDirective, GridListItemComponent, GridListItemImageDirective, GridListItemToolbarComponent, GridListTitleBarComponent, GridListTitleBarSpacerComponent } from '@fundamental-ngx/core/grid-list';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IllustratedMessageComponent, IllustratedMessageFigcaptionComponent, IllustratedMessageTextDirective, IllustratedMessageTitleDirective } from '@fundamental-ngx/core/illustrated-message';\nimport { MultiInputComponent } from '@fundamental-ngx/core/multi-input';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ApprovalFlowTeamDataSource, ApprovalFlowUserDataSource, DATA_PROVIDERS } from '@fundamental-ngx/platform/shared';\nimport { cloneDeep, uniqBy } from 'lodash-es';\nimport { APPROVAL_FLOW_NODE_TYPES, ApprovalFlowAddNodeComponent } from './approval-flow-add-node/approval-flow-add-node.component';\nimport { ApprovalFlowApproverDetailsComponent } from './approval-flow-approver-details/approval-flow-approver-details.component';\nimport { generateApprovalFlowGraph, generateApprovalFlowGraphMetadata } from './approval-flow-graph';\nimport { ApprovalFlowMessagesComponent } from './approval-flow-messages/approval-flow-messages.component';\nimport { ApprovalFlowNodeComponent } from './approval-flow-node/approval-flow-node.component';\nimport { ApprovalFlowSelectTypeComponent } from './approval-flow-select-type/approval-flow-select-type.component';\nimport { ApprovalFlowToolbarActionsComponent } from './approval-flow-toolbar-actions/approval-flow-toolbar-actions.component';\nimport { displayUserFn, getBlankApprovalGraphNode, getGraphNodes, isNodeTargetsIncludeId, trackByFn, userValueFn } from './helpers';\nimport { ApprovalFlowAddNodeViewService } from './services/approval-flow-add-node-view.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nimport * as i3 from \"@angular/forms\";\nlet defaultId = 0;\n/**\n * @deprecated\n * Approval Flow component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowComponent {\n /** Returns snapshot of the current and initial states of approval process */\n get approvalProcess() {\n return cloneDeep(this._approvalProcess);\n }\n /** @hidden */\n get _rtl() {\n return this._rtlService?.rtl.getValue();\n }\n /** @hidden */\n get _selectedNodes() {\n return getGraphNodes(this._graph).filter((node) => node.selected);\n }\n /** @hidden */\n constructor(_dialogService, _cdr, _injector, providers, _rtlService) {\n this._dialogService = _dialogService;\n this._cdr = _cdr;\n this._injector = _injector;\n this.providers = providers;\n this._rtlService = _rtlService;\n /** Whether to display due date warning in status */\n this.checkDueDate = false;\n /** Number of days before due date when status changes to `warning` with text 'Due in X days'.\n * Not used if 'checkDueDate' equals false */\n this.dueDateThreshold = 7;\n /** A list of approval statuses that allow sending reminders to their approvers */\n this.allowSendRemindersForStatuses = ['in progress', 'not started'];\n /** Whether the approval flow is editable */\n this.isEditAvailable = false;\n /** Enables or disables ability to add parallel nodes */\n this.allowAddParallelNodes = true;\n /** Disables save button, save button is enabled by default */\n this.disableSaveButton = false;\n /** Disables exit button, exit button is enabled by default */\n this.disableExitButton = false;\n /**\n * Should remove the space node from the graph\n */\n this.removeSpaceNode = false;\n /** Event emitted on approval flow node click. */\n this.nodeClick = new EventEmitter();\n /** Event emitted on approval flow node add */\n this.afterNodeAdd = new EventEmitter();\n /** Event emitted on approval flow node edit */\n this.afterNodeEdit = new EventEmitter();\n /** Event emitted whenver save is clicked in edit mode */\n this.valueChange = new EventEmitter();\n /** Event emitted whenever reminders should be sent */\n this.sendReminders = new EventEmitter();\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataReceived = new EventEmitter();\n /** @hidden */\n this._isCarousel = false;\n /** @hidden */\n this._graphMetadata = {};\n /** @hidden */\n this._isEditMode = false;\n /** @hidden */\n this._usersForWatchersList = [];\n /** @hidden */\n this._selectedWatcherIds = [];\n /** @hidden */\n this._messages = [];\n /** @hidden */\n this._emptyApprovalFlowSpotConfig = {\n spot: { url: '', id: 'sapIllus-Spot-NoData' }\n };\n /** @hidden */\n this._multipleRootNodes = false;\n /** @hidden */\n this._multipleFinalNodes = false;\n /** @hidden */\n this._dragDropInProgress = false;\n /** @hidden */\n this._displayUserFn = displayUserFn;\n /** @hidden */\n this._userValueFn = userValueFn;\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this.approvalFlowUniqueId = `fdp-approval-flow-${++defaultId}`;\n /** @hidden */\n this._selectedWatchers = [];\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this._dataSourceChanged$ = new Subject();\n /** @hidden */\n this._getNextHorizontalNode = (nodeIndex, columnIndex, direction) => {\n const indexDiff = direction === 'right' ? 1 : -1;\n const nextColumn = this._graph.columns[columnIndex + indexDiff];\n const nextNode = nextColumn?.nodes[nodeIndex];\n if (!nextNode) {\n return undefined;\n }\n if (nextNode.blank || nextNode.space) {\n return this._getNextHorizontalNode(nodeIndex, columnIndex + indexDiff, direction);\n }\n return nextNode;\n };\n /** @hidden */\n this._getNextVerticalNode = (nodeIndex, columnIndex, direction) => {\n const indexDiff = direction === 'down' ? 1 : -1;\n const currColumn = this._graph.columns[columnIndex];\n const nextNode = currColumn.nodes[nodeIndex + indexDiff];\n if (!nextNode) {\n return undefined;\n }\n if (nextNode.blank || nextNode.space) {\n return this._getNextVerticalNode(nodeIndex + indexDiff, columnIndex, direction);\n }\n return nextNode;\n };\n console.log('ApprovalFlowComponent is deprecated and will be removed in next release.');\n }\n /** @hidden */\n ngOnInit() {\n if (!this.userDataSource) {\n const usersDP = this.usersDataProviderEntityKey && this.providers?.get(this.usersDataProviderEntityKey);\n if (usersDP) {\n this.userDataSource = new ApprovalFlowUserDataSource(usersDP);\n }\n else {\n console.error('Could not resolve users data source');\n }\n }\n if (!this.watcherDataSource) {\n const watchersDP = this.watchersDataProviderEntityKey && this.providers?.get(this.watchersDataProviderEntityKey);\n if (watchersDP) {\n this.watcherDataSource = new ApprovalFlowUserDataSource(watchersDP);\n }\n else {\n console.error('Could not resolve watchers data source');\n }\n }\n if (!this.teamDataSource) {\n const teamsDP = this.teamsDataProviderEntityKey && this.providers?.get(this.teamsDataProviderEntityKey);\n if (teamsDP) {\n this.teamDataSource = new ApprovalFlowTeamDataSource(teamsDP);\n }\n else {\n console.error('Could not resolve teams data source');\n }\n }\n this._listenOnResize();\n this._setupDataSourceSubscription();\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (changes.value) {\n const process = this.value ?? { watchers: [], nodes: [] };\n this._initialApprovalProcess = cloneDeep(process);\n this._buildView(process);\n }\n if (changes.userDataSource || changes.watcherDataSource || changes.teamDataSource) {\n this._dataSourceChanged$.next();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n _isNextNodeBlank(node, columnIndex, nodeIndex) {\n const nextNode = this._graph.columns[columnIndex + 1]?.nodes[nodeIndex];\n const nextNodeBlank = nextNode?.blank;\n const nextNodeParallelEnd = this._graphMetadata[nextNode?.id]?.parallelEnd;\n return !node.blank && !!nextNodeBlank && !nextNodeParallelEnd;\n }\n /** @hidden */\n _isCdkDragDisabled(node) {\n return !this._isEditMode || node.blank || node.space || node.status !== 'not started';\n }\n /** @hidden Node click handler */\n _onNodeClick(node) {\n if (this._dragDropInProgress) {\n return;\n }\n const dialog = this._dialogService.open(ApprovalFlowApproverDetailsComponent, {\n data: {\n node,\n allowSendReminder: this.allowSendRemindersForStatuses.includes(node.status),\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((reminderTargets) => {\n if (Array.isArray(reminderTargets)) {\n this.sendReminders.emit({ users: reminderTargets, node });\n }\n });\n this.nodeClick.emit(node);\n }\n /** @hidden */\n _onNodeAdd(node) {\n this.afterNodeAdd.emit(node);\n }\n /** @hidden */\n _onNodeEdit(node) {\n this.afterNodeEdit.emit(node);\n }\n /** @hidden */\n _onNodeSelectionChange(event) {\n this._graph.columns.forEach((column) => {\n column.nodes.forEach((node) => {\n node.selected = !!event.selection.find((_node) => _node.id === node.id);\n });\n });\n }\n /** @hidden Watcher's avatar click handler */\n _onWatcherClick(watcher, event) {\n event.preventDefault();\n this._dialogService.open(ApprovalFlowApproverDetailsComponent, {\n data: {\n watcher,\n ...this._defaultDialogOptions\n }\n });\n }\n /** Retrive metadata by node id */\n getNodeMetadataByNodeId(nodeId) {\n return this._graphMetadata[nodeId];\n }\n /** Scroll to the next horizontal slide */\n nextSlide(dir = 1) {\n const threshold = 1;\n let pos;\n if (dir === 1) {\n const lastStep = this._carouselStepsRight === 1;\n const nextStep = this._carouselStepsCount - this._carouselStepsRight + 1;\n const visibleRightPoint = this._carouselStepSize * nextStep + (lastStep ? 0 : threshold);\n pos = visibleRightPoint - this._graphEl.nativeElement.clientWidth;\n }\n else {\n const lastStep = this._carouselStepsLeft === 1;\n const nextStep = this._carouselStepsLeft - 1;\n pos = this._carouselStepSize * nextStep - (lastStep ? 0 : threshold);\n }\n this._setScrollPosition(pos);\n this._cdr.detectChanges();\n }\n /** @hidden */\n _setScrollPosition(pos) {\n this._graphContainerEl.nativeElement.scrollTo({\n left: pos,\n behavior: 'smooth'\n });\n }\n /** @hidden Handle node keydown and focus other node based on which key is pressed */\n _onNodeKeyDown(event, node) {\n if (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW])) {\n return;\n }\n const { nodeIndex, columnIndex } = this._graphMetadata[node.id];\n event.preventDefault();\n let nextFocusTarget;\n if (typeof nodeIndex === 'number' && typeof columnIndex === 'number') {\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (nodeIndex > 0) {\n nextFocusTarget = this._getNextVerticalNode(nodeIndex, columnIndex, 'up');\n }\n }\n else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n nextFocusTarget = this._getNextVerticalNode(nodeIndex, columnIndex, 'down');\n }\n else if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n nextFocusTarget = this._getNextHorizontalNode(nodeIndex, columnIndex, this._rtl ? 'right' : 'left');\n }\n else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n nextFocusTarget = this._getNextHorizontalNode(nodeIndex, columnIndex, this._rtl ? 'left' : 'right');\n }\n }\n if (nextFocusTarget) {\n this._focusNode(nextFocusTarget);\n }\n }\n /** @hidden Fetch all necessary data and enter edit mode */\n _enterEditMode() {\n // there's no support for searching in multi-input, so grabbing all watchers\n // triggering initial loading of data in data sources\n this.watcherDataSource.match();\n this._editModeInitSub = this.watcherDataSource.open().subscribe((watchers) => {\n this._usersForWatchersList = watchers;\n this._selectedWatchers = this._approvalProcess.watchers;\n this._selectedWatcherIds = this._selectedWatchers.map((w) => w.id);\n this._isEditMode = true;\n this._initialApprovalProcess = cloneDeep(this._approvalProcess);\n this._cdr.detectChanges();\n });\n this._subscriptions.add(this._editModeInitSub);\n }\n /** @hidden Send update approval process calls to DataSource and exit edit mode*/\n _saveEditModeChanges() {\n this._editModeInitSub?.unsubscribe();\n this.watcherDataSource.close();\n this._initialApprovalProcess = undefined;\n this._isEditMode = false;\n this._messages = [];\n const updated = {\n ...this._approvalProcess,\n watchers: this._selectedWatchers\n };\n this._buildView(updated);\n this.valueChange.emit(updated);\n }\n /** @hidden Restore initial approval flow state and exit edit mode */\n _exitEditMode() {\n this._editModeInitSub?.unsubscribe();\n this.watcherDataSource.close();\n this._approvalProcess = cloneDeep(this._initialApprovalProcess);\n this._initialApprovalProcess = undefined;\n this._isEditMode = false;\n this._messages = [];\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _watchersSelectionChanged(selectedIds) {\n const idsSet = new Set(selectedIds);\n // updating watchers selection\n // since it's possible \"_usersForWatchersList\" might not contain all selected values,\n // determine current selection based on what's already selected and \"_usersForWatchersList\"\n this._selectedWatchers = uniqBy(this._selectedWatchers.concat(this._usersForWatchersList).filter((user) => idsSet.has(user.id)), (u) => u.id);\n }\n /** @hidden Restore previously saved approval process state */\n _undoLastAction() {\n this._approvalProcess = cloneDeep(this._previousApprovalProcess);\n this._previousApprovalProcess = undefined;\n this._buildView(this._approvalProcess);\n }\n /** @hidden Open add node dialog */\n _addNode(source, type) {\n const showNodeTypeSelect = type === 'before' && !source.actionsConfig?.disableAddParallel;\n const dialog = this._dialogService.open(ApprovalFlowAddNodeComponent, {\n data: {\n nodeTarget: type,\n showNodeTypeSelect,\n node: Object.assign(getBlankApprovalGraphNode(), { blank: false }),\n checkDueDate: this.checkDueDate,\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((data) => {\n if (!data) {\n return;\n }\n const { node, nodeType, toNextSerial } = data;\n if (!node) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n node.id = `tempId${(Math.random() * 1000).toFixed()}`;\n switch (type) {\n case 'empty':\n this._enterEditMode();\n break;\n case 'before':\n if (nodeType === APPROVAL_FLOW_NODE_TYPES.SERIAL) {\n node.targets = [source.id];\n this._replaceTargets(source.id, [node.id]);\n }\n if (nodeType === APPROVAL_FLOW_NODE_TYPES.PARALLEL) {\n this._processAddingParallelNode(node, source, toNextSerial);\n }\n break;\n case 'before-all':\n node.targets = this._graph.columns[0].nodes.map((_node) => _node.id);\n break;\n case 'after':\n node.targets = source.targets;\n source.targets = [node.id];\n break;\n case 'after-all': {\n const targetParents = this._graphMetadata[source.targets[0]]?.parents;\n if (targetParents) {\n node.targets = source.targets;\n this._replaceTargets(source.id, [node.id]);\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((_node) => _node.id !== source.id);\n }\n else {\n this._graph.columns[this._graph.columns.length - 1].nodes.forEach((_node) => _node.targets.push(node.id));\n }\n break;\n }\n case 'parallel':\n this._processAddingParallelNode(node, source, toNextSerial);\n break;\n }\n this._showMessage(node.approvalTeamId ? 'teamAddSuccess' : 'approverAddSuccess');\n this._approvalProcess.nodes.push(node);\n this._buildView(this._approvalProcess);\n this._onNodeAdd(node);\n });\n }\n /** @hidden Open edit node dialog */\n _editNode(node) {\n const dialog = this._dialogService.open(ApprovalFlowAddNodeComponent, {\n data: {\n isEdit: true,\n node: Object.assign({}, node),\n checkDueDate: this.checkDueDate,\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((data) => {\n const updatedNode = data?.node;\n if (!updatedNode) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n this._updateNode(updatedNode);\n this._showMessage('nodeEdit');\n this._buildView(this._approvalProcess);\n this._onNodeEdit(node);\n });\n }\n /** @hidden \"Delete\" button click handler */\n _onNodeDelete(nodeToDelete) {\n this._cacheCurrentApprovalProcess();\n this._deleteNode(nodeToDelete);\n this._showMessage(nodeToDelete.approvalTeamId ? 'teamRemove' : 'nodeRemove');\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _deleteSelectedNodes() {\n this._cacheCurrentApprovalProcess();\n const nodesToDelete = this._nodeComponents\n .filter((nodeComponent) => nodeComponent._isSelected)\n .map((nodeComponent) => nodeComponent.node);\n nodesToDelete.forEach((node) => {\n this._deleteNode(node);\n this._buildView(this._approvalProcess);\n });\n this._showMessage('nodesRemove');\n }\n /** @hidden Node drag move handler, used to check if need to highlight a drop zone rectangle */\n _onNodeDragMoved(node) {\n const draggedNodeDimensions = this._nodeComponents\n .find((comp) => comp.node === node)\n ?._nativeElement.getBoundingClientRect();\n if (!draggedNodeDimensions) {\n return;\n }\n this._nodeComponents.forEach((component) => {\n if (component.node !== node && Boolean(component._dropZones.length)) {\n component._checkIfNodeDraggedInDropZone(draggedNodeDimensions);\n }\n });\n }\n /** @hidden */\n _focusNode(node) {\n const nodeToFocus = this._nodeComponents.find((comp) => comp.node === node);\n if (!nodeToFocus) {\n return;\n }\n this._moveColInView(node.colIndex ?? 0);\n nodeToFocus._focus({ preventScroll: true });\n }\n /** @hidden Node drop handler */\n _onNodeDrop(nodeToDrop, drag) {\n drag.reset();\n setTimeout(() => (this._dragDropInProgress = false));\n const dropTarget = this._nodeComponents.find((n) => n._isAnyDropZoneActive);\n if (!dropTarget) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n const placement = dropTarget._activeDropZones[0].placement;\n this._nodeComponents.forEach((n) => n._deactivateDropZones());\n if (placement === 'after') {\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n const nextNode = getGraphNodes(this._graph).find((node) => node.id === dropTarget.node.targets[0]);\n if (nextNode?.blank) {\n this._deleteNode(nextNode);\n this._buildView(this._approvalProcess);\n }\n nodeToDrop.targets =\n this._approvalProcess.nodes.find((node) => node.id === dropTarget.node.id)?.targets ?? [];\n dropTarget.node.targets = [nodeToDrop.id];\n this._finishDragDropProcess(nodeToDrop);\n }\n else if (placement === 'before') {\n const dialog = this._dialogService.open(ApprovalFlowSelectTypeComponent, undefined, this._injector);\n dialog.afterClosed.subscribe((data) => {\n if (!data) {\n return;\n }\n const { type, toNextSerial } = data;\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n if (type === APPROVAL_FLOW_NODE_TYPES.SERIAL) {\n this._replaceTargets(dropTarget.node.id, [nodeToDrop.id]);\n nodeToDrop.targets = [dropTarget.node.id];\n }\n if (type === APPROVAL_FLOW_NODE_TYPES.PARALLEL) {\n this._processAddingParallelNode(nodeToDrop, dropTarget.node, toNextSerial);\n }\n this._finishDragDropProcess(nodeToDrop);\n });\n }\n else if (placement === 'before-all') {\n this._deleteNode(nodeToDrop);\n const firstColumnNodes = this._graph.columns[0].nodes;\n nodeToDrop.targets = firstColumnNodes.map((node) => node.id);\n this._finishDragDropProcess(nodeToDrop);\n }\n else if (placement === 'after-all') {\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n nodeToDrop.targets = [...dropTarget.node.targets];\n if (dropTarget.node.targets.length === 0) {\n const lastColumnNodes = this._graph.columns[this._graph.columns.length - 1].nodes;\n lastColumnNodes.forEach((node) => node.targets.push(nodeToDrop.id));\n }\n else {\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((node) => node.id !== dropTarget.node.id);\n this._replaceTargets(dropTarget.node.id, [nodeToDrop.id]);\n }\n this._finishDragDropProcess(nodeToDrop);\n }\n }\n /** @hidden */\n _moveColInView(colIndex) {\n const node = this._graphEl.nativeElement.children[colIndex].firstElementChild;\n if (!node) {\n return;\n }\n const { x: nodeX, width } = node.getBoundingClientRect();\n const delta = this._graphContainerEl.nativeElement.getBoundingClientRect().x;\n const left = nodeX - delta;\n const right = left + width;\n if (left < 0) {\n this._setScrollPosition(this._graphContainerEl.nativeElement.scrollLeft + left);\n }\n else if (right > this._graphEl.nativeElement.clientWidth) {\n this._setScrollPosition(this._graphContainerEl.nativeElement.scrollLeft + right - this._graphEl.nativeElement.clientWidth);\n }\n }\n /** @hidden */\n _finishDragDropProcess(nodeToDrop) {\n this._approvalProcess.nodes.push(nodeToDrop);\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _showMessage(type) {\n this._messages = [{ type }];\n }\n /** @hidden Build Approval Flow graph and render it */\n _buildView(approvalProcess) {\n if (!approvalProcess.nodes) {\n approvalProcess.nodes = [];\n }\n if (!approvalProcess.watchers) {\n approvalProcess.watchers = [];\n }\n this._approvalProcess = approvalProcess;\n this._graph = generateApprovalFlowGraph(this._approvalProcess.nodes);\n if (this.removeSpaceNode) {\n this._graph.columns = this.removeSpaceNodesFromColumns(this._graph.columns);\n }\n if (this._graph.errors) {\n this._showMessage('error');\n return;\n }\n this._graphMetadata = generateApprovalFlowGraphMetadata(this._graph);\n const nodes = getGraphNodes(this._graph);\n this._approvalProcess.nodes = nodes.filter((node) => !node.space);\n this._multipleRootNodes = nodes.filter((node) => this._graphMetadata[node.id].isRoot).length > 1;\n this._multipleFinalNodes = nodes.filter((node) => this._graphMetadata[node.id].isFinal).length > 1;\n this._cdr.detectChanges();\n this._gridList?.clearSelection();\n if (!this._isEditMode) {\n this._setScrollPosition(0);\n }\n }\n /** @hidden Listen window resize and distribute cards on column change */\n _listenOnResize() {\n this._subscriptions.add(merge(fromEvent(window, 'resize'), fromEvent(this._graphContainerEl.nativeElement, 'scroll'))\n .pipe(throttleTime(50, undefined, { leading: true, trailing: true }))\n .subscribe(() => {\n this._cdr.detectChanges();\n }));\n }\n /** @hidden Update node object in local approval process data structure */\n _updateNode(node) {\n const nodeIndex = this._approvalProcess.nodes.findIndex((n) => n.id === node.id);\n if (nodeIndex > -1) {\n this._approvalProcess.nodes[nodeIndex] = node;\n }\n }\n /** @hidden Delete node object in local approval process data structure */\n _deleteNode(nodeToDelete) {\n const nodesToDelete = [nodeToDelete];\n const graphNodes = getGraphNodes(this._graph);\n let currNode = graphNodes.find((node) => node.id === nodeToDelete.id);\n let nextNode;\n do {\n if (currNode?.targets.length === 1) {\n nextNode = graphNodes.find((node) => node.id === currNode?.targets[0]);\n if (nextNode?.blank && this._graphMetadata[nextNode.id].parents.length === 1) {\n nodesToDelete.push(nextNode);\n currNode = nextNode;\n nextNode = graphNodes.find((node) => node.id === currNode?.targets[0]);\n }\n }\n } while (nextNode?.blank && this._graphMetadata[nextNode.id].parents.length === 1);\n const parent = this._graphMetadata[nodeToDelete.id].parents[0];\n const target = nodeToDelete.targets[0];\n const isParentParallelStart = this._graphMetadata[parent?.id]?.parallelStart;\n const isTargetParallelEnd = this._graphMetadata[target]?.parallelEnd;\n const targets = (isParentParallelStart && isTargetParallelEnd) || nodesToDelete.length > 1 ? [] : (currNode?.targets ?? []);\n this._replaceTargets(nodeToDelete.id, targets);\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((node) => !nodesToDelete.includes(node));\n }\n /** @hidden */\n _addParallelTargets(targetNodeId, nodeIdToAdd) {\n this._approvalProcess.nodes.forEach((node) => {\n if (isNodeTargetsIncludeId(node, targetNodeId)) {\n node.targets.push(nodeIdToAdd);\n }\n });\n }\n /** @hidden Replace all occurrences of \"idToReplace\" in all nodes' \"targets\" with ones in \"replaceWith\" array */\n _replaceTargets(IdToReplace, replaceWithId) {\n this._approvalProcess.nodes.forEach((n) => {\n if (isNodeTargetsIncludeId(n, IdToReplace)) {\n n.targets = n.targets.filter((_id) => _id !== IdToReplace);\n n.targets.push(...replaceWithId);\n }\n });\n }\n /** @hidden Save current state of approval process data to be able to undo an action made in edit mode */\n _cacheCurrentApprovalProcess() {\n this._previousApprovalProcess = cloneDeep(this._approvalProcess);\n }\n /** @hidden */\n get _carouselStepSize() {\n return this._graphEl.nativeElement.scrollWidth / this._carouselStepsCount;\n }\n /** @hidden */\n get _scrollDiff() {\n if (!this._graphEl) {\n return 0;\n }\n return this._graphEl.nativeElement.scrollWidth - this._graphEl.nativeElement.clientWidth;\n }\n /** @hidden */\n get _carouselStepsCount() {\n return this._graphEl.nativeElement.children.length;\n }\n /** @hidden */\n get _carouselStepsLeft() {\n return Math.ceil(this._graphContainerEl.nativeElement.scrollLeft / this._carouselStepSize);\n }\n /** @hidden */\n get _carouselStepsRight() {\n return Math.ceil((this._scrollDiff - Math.round(this._graphContainerEl.nativeElement.scrollLeft)) / this._carouselStepSize);\n }\n /** @hidden */\n get _defaultDialogOptions() {\n return {\n teamDataSource: this.teamDataSource,\n userDataSource: this.userDataSource,\n userDetailsTemplate: this.userDetailsTemplate,\n rtl: this._rtl\n };\n }\n /** @hidden */\n _findSerialNode(yIndex, targets) {\n const targetIsParent = Number.isInteger(yIndex) &&\n targets?.some((targetId) => {\n const nodeIndex = this._graphMetadata[targetId]?.nodeIndex;\n return Number.isInteger(nodeIndex) && nodeIndex <= yIndex - 1;\n });\n if (targetIsParent) {\n return targets ?? [];\n }\n const targetNode = this._approvalProcess.nodes.find((node) => node.id === targets?.[0]);\n return this._findSerialNode(yIndex, targetNode?.targets);\n }\n /** @hidden */\n _processAddingParallelNode(addedNode, sourceNode, toNextSerial = false) {\n addedNode.targets = sourceNode.targets;\n this._addParallelTargets(sourceNode.id, addedNode.id);\n if (toNextSerial) {\n let yIndex = this._graphMetadata[sourceNode.id].nodeIndex;\n let targets = sourceNode.targets;\n if (yIndex === 0) {\n const sourceNodeMetadata = this._graphMetadata[sourceNode.id];\n const columnNodes = this._graph.columns?.[sourceNodeMetadata.columnIndex]?.nodes;\n const nextParallelNode = columnNodes.find((node, index) => index > 0 && !node.space);\n if (nextParallelNode) {\n yIndex = this._graphMetadata[nextParallelNode.id].columnIndex;\n targets = nextParallelNode.targets;\n addedNode.targets = this._findSerialNode(yIndex, targets);\n return;\n }\n addedNode.targets = sourceNode.targets;\n return;\n }\n addedNode.targets = this._findSerialNode(yIndex, targets);\n }\n }\n /** @hidden */\n _setupDataSourceSubscription() {\n const sub = this._dataSourceChanged$\n .pipe(startWith(null), switchMap(() => {\n const loadingStates = [this.teamDataSource, this.userDataSource, this.watcherDataSource]\n .filter(Boolean)\n .map((ds) => merge(ds.onDataRequested().pipe(mapTo(true)), ds.onDataReceived().pipe(mapTo(false))).pipe(startWith(ds.isDataLoading)));\n return combineLatest(loadingStates);\n }), map((loadingStates) => loadingStates.some(Boolean)), distinctUntilChanged())\n .subscribe((someLoading) => {\n if (someLoading) {\n this.onDataRequested.emit();\n }\n else {\n this.onDataReceived.emit();\n }\n });\n this._subscriptions.add(sub);\n }\n /** @hidden */\n removeSpaceNodesFromColumns(columns) {\n const filteredColumns = [];\n columns.forEach((column) => {\n const filteredNodes = column.nodes.filter((node) => !node.space);\n const updatedColumn = {\n ...column, // Preserve other properties of the column\n nodes: filteredNodes // Use the filtered list of nodes\n };\n filteredColumns.push(updatedColumn);\n });\n return filteredColumns;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowComponent, deps: [{ token: i1.DialogService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: DATA_PROVIDERS, optional: true }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowComponent, isStandalone: true, selector: \"fdp-approval-flow\", inputs: { title: \"title\", value: \"value\", userDataSource: \"userDataSource\", watcherDataSource: \"watcherDataSource\", teamDataSource: \"teamDataSource\", userDetailsTemplate: \"userDetailsTemplate\", approvalStatusTemplate: \"approvalStatusTemplate\", statusColorMapping: \"statusColorMapping\", checkDueDate: \"checkDueDate\", dueDateThreshold: \"dueDateThreshold\", allowSendRemindersForStatuses: \"allowSendRemindersForStatuses\", isEditAvailable: \"isEditAvailable\", watchersLabel: \"watchersLabel\", allowAddParallelNodes: \"allowAddParallelNodes\", disableSaveButton: \"disableSaveButton\", disableExitButton: \"disableExitButton\", usersDataProviderEntityKey: \"usersDataProviderEntityKey\", teamsDataProviderEntityKey: \"teamsDataProviderEntityKey\", watchersDataProviderEntityKey: \"watchersDataProviderEntityKey\", removeSpaceNode: \"removeSpaceNode\" }, outputs: { nodeClick: \"nodeClick\", afterNodeAdd: \"afterNodeAdd\", afterNodeEdit: \"afterNodeEdit\", valueChange: \"valueChange\", sendReminders: \"sendReminders\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [ApprovalFlowAddNodeViewService], viewQueries: [{ propertyName: \"_graphContainerEl\", first: true, predicate: [\"graphContainerEl\"], descendants: true }, { propertyName: \"_graphEl\", first: true, predicate: [\"graphEl\"], descendants: true }, { propertyName: \"_gridList\", first: true, predicate: [\"gridList\"], descendants: true }, { propertyName: \"_nodeComponents\", predicate: ApprovalFlowNodeComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-container fdCompact>\\n <fdp-approval-flow-messages\\n [(messages)]=\\\"_messages\\\"\\n [undoLastActionAvailable]=\\\"!!_previousApprovalProcess\\\"\\n (undoLastAction)=\\\"_undoLastAction()\\\"\\n ></fdp-approval-flow-messages>\\n <fd-grid-list\\n #gridList\\n class=\\\"fdp-approval-flow__toolbar\\\"\\n [selectionMode]=\\\"_isEditMode ? 'multiSelect' : 'none'\\\"\\n (selectionChange)=\\\"_onNodeSelectionChange($event)\\\"\\n >\\n <fd-grid-list-title-bar [title]=\\\"title || ('platformApprovalFlow.defaultTitle' | fdTranslate)\\\">\\n <fd-grid-list-title-bar-spacer></fd-grid-list-title-bar-spacer>\\n @if (isEditAvailable) {\\n <fdp-approval-flow-toolbar-actions\\n [graph]=\\\"_graph\\\"\\n [selectedNodes]=\\\"_selectedNodes\\\"\\n [graphMetadata]=\\\"_graphMetadata\\\"\\n [isEditMode]=\\\"_isEditMode\\\"\\n (enterEditMode)=\\\"_enterEditMode()\\\"\\n (addNode)=\\\"_addNode($event.node, $event.target)\\\"\\n (editSelectedNode)=\\\"_editNode($event)\\\"\\n (deleteSelectedNodes)=\\\"_deleteSelectedNodes()\\\"\\n ></fdp-approval-flow-toolbar-actions>\\n }\\n </fd-grid-list-title-bar>\\n @if (_approvalProcess.watchers?.length || _isEditMode) {\\n <div class=\\\"fdp-approval-flow__watchers\\\" [attr.aria-label]=\\\"watchersLabel\\\">\\n <p class=\\\"fdp-approval-flow__watchers-title\\\">\\n {{ watchersLabel || ('platformApprovalFlow.defaultWatchersLabel' | fdTranslate) }}\\n </p>\\n @if (!_isEditMode) {\\n @for (watcher of _approvalProcess.watchers; track _trackByFn($index, watcher)) {\\n <fd-avatar\\n size=\\\"xs\\\"\\n [image]=\\\"watcher.imgUrl || ''\\\"\\n [label]=\\\"watcher.name\\\"\\n [clickable]=\\\"true\\\"\\n [circle]=\\\"true\\\"\\n (avatarClicked)=\\\"_onWatcherClick(watcher, $event)\\\"\\n ></fd-avatar>\\n }\\n } @else {\\n <div class=\\\"fdp-approval-flow__watchers-input-container\\\">\\n <fd-multi-input\\n [dropdownValues]=\\\"_usersForWatchersList\\\"\\n [placeholder]=\\\"'platformApprovalFlow.watchersInputPlaceholder' | fdTranslate\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n [valueFn]=\\\"_userValueFn\\\"\\n [showAllButton]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedWatcherIds\\\"\\n (ngModelChange)=\\\"_watchersSelectionChanged($event)\\\"\\n ></fd-multi-input>\\n </div>\\n }\\n </div>\\n }\\n @if (!_graph.errors) {\\n @if (_graph.columns.length) {\\n <div\\n class=\\\"fdp-approval-flow__container\\\"\\n [class.fdp-approval-flow__container--extra-padding-start]=\\\"true\\\"\\n [class.fdp-approval-flow__container--extra-padding-end]=\\\"true\\\"\\n >\\n @if (_scrollDiff > 0) {\\n <div\\n class=\\\"fdp-approval-flow-carousel-controls\\\"\\n [class.fdp-approval-flow-carousel-controls--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @if (_carouselStepsLeft > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--prev-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.prevButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide(-1)\\\"\\n >\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'right' : 'left') + '-arrow'\\\"></fd-icon>\\n {{ _carouselStepsLeft }}\\n </button>\\n }\\n @if (_carouselStepsRight > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--next-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.nextButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide()\\\"\\n >\\n {{ _carouselStepsRight }}\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </button>\\n }\\n </div>\\n }\\n <div\\n class=\\\"fdp-approval-flow__graph-container\\\"\\n [class.fdp-approval-flow__graph-container--multiple-root-nodes]=\\\"_multipleRootNodes\\\"\\n [class.fdp-approval-flow__graph-container--multiple-final-nodes]=\\\"_multipleFinalNodes\\\"\\n [class.fd-scrollbar]=\\\"true\\\"\\n #graphContainerEl\\n >\\n <div\\n class=\\\"fdp-approval-flow__graph\\\"\\n #graphEl\\n [class.fdp-approval-flow__graph--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @for (column of _graph.columns; track column; let columnIndex = $index) {\\n <div class=\\\"fdp-approval-flow__graph-column\\\">\\n @for (\\n node of column.nodes;\\n track _trackByFn(nodeIndex, node);\\n let nodeIndex = $index\\n ) {\\n <fdp-approval-flow-node\\n cdkDrag\\n #approvalFlowNode\\n [cdkDragDisabled]=\\\"_isCdkDragDisabled(node)\\\"\\n [node]=\\\"node\\\"\\n [meta]=\\\"_graphMetadata[node.id]\\\"\\n [isEdit]=\\\"_isEditMode\\\"\\n [isNextNodeBlank]=\\\"_isNextNodeBlank(node, columnIndex, nodeIndex)\\\"\\n [checkDueDate]=\\\"checkDueDate\\\"\\n [dueDateThreshold]=\\\"dueDateThreshold\\\"\\n [renderArrow]=\\\"columnIndex > 0\\\"\\n [allNodesInColumnApproved]=\\\"!!column.allNodesApproved\\\"\\n [approvalStatusTemplate]=\\\"approvalStatusTemplate\\\"\\n [statusColorMapping]=\\\"statusColorMapping\\\"\\n (onAdd)=\\\"_addNode(node, $event)\\\"\\n (onEdit)=\\\"_editNode(node)\\\"\\n (onDelete)=\\\"_onNodeDelete(node)\\\"\\n (keydown)=\\\"_onNodeKeyDown($event, node)\\\"\\n (cdkDragStarted)=\\\"_dragDropInProgress = true\\\"\\n (cdkDragReleased)=\\\"_onNodeDrop(node, $event.source)\\\"\\n (cdkDragMoved)=\\\"_onNodeDragMoved(node)\\\"\\n >\\n <!-- Trick with using projection to make grid list items visible for the grid list -->\\n <fd-grid-list-item\\n type=\\\"active\\\"\\n [value]=\\\"node\\\"\\n [selected]=\\\"!!node.selected\\\"\\n [ariaLabelledBy]=\\\"approvalFlowNode.approvalFlowNodeId\\\"\\n [disableToolbarClick]=\\\"true\\\"\\n class=\\\"fdp-approval-flow__graph-node-inner\\\"\\n [class.fdp-approval-flow__graph-node-inner--edit]=\\\"_isEditMode\\\"\\n (press)=\\\"_onNodeClick(node)\\\"\\n >\\n <fd-grid-list-item-toolbar>\\n @if (_isEditMode) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._overflowMenuButton\\\"\\n ></ng-template>\\n }\\n </fd-grid-list-item-toolbar>\\n <fd-avatar\\n fd-grid-list-item-image\\n [image]=\\\"\\n node.approvers.length === 1 ? node.approvers[0].imgUrl : null\\n \\\"\\n [label]=\\\"node.approvers.length > 1 ? node.description : null\\\"\\n size=\\\"xs\\\"\\n [circle]=\\\"true\\\"\\n ></fd-avatar>\\n <ng-template fd-grid-list-item-body>\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._nodeContent\\\"\\n ></ng-template>\\n </ng-template>\\n </fd-grid-list-item>\\n </fdp-approval-flow-node>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n } @else {\\n <figure fd-illustrated-message type=\\\"spot\\\" [svgConfig]=\\\"_emptyApprovalFlowSpotConfig\\\">\\n <figcaption fd-illustrated-message-figcaption>\\n <h3 fd-illustrated-message-title>\\n {{ 'platformApprovalFlow.emptyTitle' | fdTranslate }}\\n </h3>\\n <p fd-illustrated-message-text>\\n {{ 'platformApprovalFlow.emptyHint' | fdTranslate }}\\n </p>\\n </figcaption>\\n </figure>\\n <!-- TODO #5178: Replace with illustrated image component after it gets fixed -->\\n <div [style.display]=\\\"'none'\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"128\\\"\\n height=\\\"128\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n id=\\\"sapIllus-Spot-NoData\\\"\\n >\\n <path\\n d=\\\"M41.6179,32.7174H84.6273a1,1,0,0,1,.723.3092l7.2445,7.5824,7.4817,7.8491a1,1,0,0,1,.2761.69l-.0046,55.6069a4.1038,4.1038,0,0,1-.8787,2.1212A4.0564,4.0564,0,0,1,98.1,107.9631l-56.3858.0313a2.6167,2.6167,0,0,1-3.0812-3.2309l-.0152-69.0594Z\\\"\\n class=\\\"sapIllus_PatternShadow\\\"\\n [style.fill]=\\\"'var(--sapIllus_PatternShadow)'\\\"\\n ></path>\\n <path\\n d=\\\"M35.7928,27.4987H78.8022a1,1,0,0,1,.723.3092L86.77,35.39l7.4816,7.8492a1,1,0,0,1,.2762.69l-.0046,55.6069a3,3,0,0,1-3,3H35.808a2.9946,2.9946,0,0,1-3-2.9913c-.01-12.0564-.0423-57.0116-.0152-69.0595A2.9943,2.9943,0,0,1,35.7928,27.4987Z\\\"\\n class=\\\"sapIllus_ObjectFillColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_ObjectFillColor)'\\\"\\n ></path>\\n <path\\n d=\\\"M93.2978,44.5335H78.8208a.9925.9925,0,0,1-.974-1.01V28.5108a.97.97,0,0,1,1.6628-.7143L93.9865,42.8092A1.0151,1.0151,0,0,1,93.2978,44.5335Z\\\"\\n class=\\\"sapIllus_BrandColorSecondary\\\"\\n [style.fill]=\\\"'var(--sapIllus_BrandColorSecondary)'\\\"\\n ></path>\\n <path\\n d=\\\"M104.608,38.9485l5.9157-1.7721c1.32-.3954.7584-2.5258-.5689-2.1282L104.0392,36.82c-1.32.3953-.7584,2.5258.5688,2.1282Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M85.2973,21.2465l.9718-5.9331c.2154-1.3151-1.777-1.8807-1.9941-.5554l-.9718,5.9332c-.2155,1.3151,1.777,1.8807,1.9941.5553Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M95.3034,29.0015a1.01,1.01,0,0,1-.6837-.267,1.0783,1.0783,0,0,1-.0864-1.4932l5.9511-6.8857a1.01,1.01,0,0,1,1.4538-.0884,1.0785,1.0785,0,0,1,.0865,1.4932l-5.9511,6.8858A1.0164,1.0164,0,0,1,95.3034,29.0015Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M94.8747,42.8861,80.0855,27.4623a1.5152,1.5152,0,0,0-1.0885-.4636H35.807a3.509,3.509,0,0,0-3.5146,3.4836c-.0294,13.2857.0137,66.7559.0157,69.0257a3.5076,3.5076,0,0,0,3.5146,3.4894H91.7709a3.5106,3.5106,0,0,0,3.5146-3.4982l.005-55.5785A1.49,1.49,0,0,0,94.8747,42.8861Zm-16.21-14.8355a1.15,1.15,0,0,1,.2561-.0309,1.04,1.04,0,0,1,.51.2134l14.276,14.8837.0194.02a.5891.5891,0,0,1,.0968.6251c-.1016.1764-.4086.24-.69.24L78.8355,44a.6031.6031,0,0,1-.5472-.6131c-.0087-4.9588-.017-9.9015-.0035-14.8689A.5189.5189,0,0,1,78.6646,28.0506Zm13.1062,73.95H35.8188a2.5045,2.5045,0,0,1-2.5107-2.491c-.002-2.2694-.0451-55.74-.0157-69.0248a2.5054,2.5054,0,0,1,2.5107-2.4861H77.3684a1.49,1.49,0,0,0-.0976.5106V43.4934A1.5145,1.5145,0,0,0,78.7894,45H78.92L94.286,47.9749l-.0046,51.5269A2.5074,2.5074,0,0,1,91.7708,102.0006Z\\\"\\n class=\\\"sapIllus_StrokeDetailColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_StrokeDetailColor)'\\\"\\n ></path>\\n </svg>\\n </div>\\n }\\n }\\n </fd-grid-list>\\n @if (_isEditMode) {\\n <div fd-bar>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeSaveButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n [disabled]=\\\"disableSaveButton\\\"\\n (click)=\\\"_saveEditModeChanges()\\\"\\n ></button>\\n </fd-bar-element>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeExitButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n [disabled]=\\\"disableExitButton\\\"\\n (click)=\\\"_exitEditMode()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n</ng-container>\\n\", styles: [\".fd-scrollbar{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:auto;padding-block:0;padding-inline:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}.fdp-approval-flow__watchers{margin-bottom:.5rem;padding-left:.5rem}.fdp-approval-flow__watchers-title{font-size:.875em;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin:1rem 0 .5rem}.fdp-approval-flow__watchers fd-avatar{margin-right:.5rem;cursor:pointer}.fdp-approval-flow__watchers fd-avatar:focus{outline-offset:.0625rem;outline-width:.0625rem;outline-style:dotted;outline-color:var(--sapContent_FocusColor, #0854a0)}.fdp-approval-flow__watchers .fdp-approval-flow__watchers-input-container{width:17.375rem}[dir=rtl] .fdp-approval-flow__watchers,.fdp-approval-flow__watchers[dir=rtl]{padding-right:.5rem}[dir=rtl] .fdp-approval-flow__watchers fd-avatar,.fdp-approval-flow__watchers[dir=rtl] fd-avatar{margin-left:.5rem;margin-right:0}.fdp-approval-flow__container{max-width:100%;position:relative;padding:0 .5rem}.fdp-approval-flow__container--extra-padding-start{padding-left:2rem}.fdp-approval-flow__container--extra-padding-end{padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start{padding-left:.5rem;padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-end{padding-right:.5rem;padding-left:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end{padding-right:2rem;padding-left:2rem}.fdp-approval-flow__graph-container{position:relative;overflow:auto;padding-top:.5rem;padding-bottom:2rem;padding-left:2rem}.fdp-approval-flow__graph-container--multiple-root-nodes{padding-left:4rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-root-nodes,.fdp-approval-flow__graph-container--multiple-root-nodes[dir=rtl]{padding-right:2rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-final-nodes,.fdp-approval-flow__graph-container--multiple-final-nodes[dir=rtl]{padding-left:0}.fdp-approval-flow-carousel-controls{position:absolute;display:flex;align-items:center;width:100%;height:6.375rem;padding-top:.5rem;left:0}.fdp-approval-flow-carousel-controls--edit-mode{height:8.375rem}.fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--next-slide{position:absolute;border:none;background:transparent;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);display:flex;justify-content:space-between;width:2rem;align-items:center;cursor:pointer}.fdp-approval-flow-carousel-controls__button--prev-slide fd-icon,.fdp-approval-flow-carousel-controls__button--next-slide fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;top:.0625rem}.fdp-approval-flow-carousel-controls__button--prev-slide{left:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--prev-slide[dir=rtl]{left:auto;right:0}.fdp-approval-flow-carousel-controls__button--next-slide{right:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--next-slide,.fdp-approval-flow-carousel-controls__button--next-slide[dir=rtl]{left:0;right:auto}.fdp-approval-flow__graph{display:flex;align-items:flex-start;position:relative;left:0;transition:left .3s}.fdp-approval-flow__graph-column{margin-right:4rem;position:relative}[dir=rtl] .fdp-approval-flow__graph-column:first-child,.fdp-approval-flow__graph-column[dir=rtl]:first-child{margin-right:2rem}.fdp-approval-flow__graph fdp-approval-flow-node+fdp-approval-flow-node:not(:last-child){margin-bottom:1rem}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner{padding:0}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content{margin-left:auto}[dir=rtl] .fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content,.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content[dir=rtl]{margin-left:0;margin-right:auto}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--actions{display:none}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner:not(.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner--edit) .fd-toolbar.fd-grid-list__item-toolbar{display:none}.cdk-overlay-container{z-index:1002!important}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/scrollbar.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"], dependencies: [{ kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: ApprovalFlowMessagesComponent, selector: \"fdp-approval-flow-messages\", inputs: [\"messages\", \"undoLastActionAvailable\"], outputs: [\"messagesChange\", \"undoLastAction\"] }, { kind: \"component\", type: GridListComponent, selector: \"fd-grid-list\", inputs: [\"id\", \"width\", \"ariaLabel\", \"selectionMode\", \"layoutPattern\"], outputs: [\"selectionChange\"] }, { kind: \"component\", type: GridListTitleBarComponent, selector: \"fd-grid-list-title-bar\", inputs: [\"title\"] }, { kind: \"component\", type: GridListTitleBarSpacerComponent, selector: \"fd-grid-list-title-bar-spacer\" }, { kind: \"component\", type: ApprovalFlowToolbarActionsComponent, selector: \"fdp-approval-flow-toolbar-actions\", inputs: [\"graph\", \"graphMetadata\", \"selectedNodes\", \"isEditMode\"], outputs: [\"enterEditMode\", \"addNode\", \"editSelectedNode\", \"deleteSelectedNodes\"] }, { kind: \"component\", type: AvatarComponent, selector: \"fd-avatar\", inputs: [\"class\", \"id\", \"ariaLabel\", \"ariaLabelledby\", \"label\", \"size\", \"font\", \"glyph\", \"zoomGlyph\", \"circle\", \"interactive\", \"transparent\", \"contain\", \"placeholder\", \"tile\", \"border\", \"colorAccent\", \"colorIndication\", \"random\", \"clickable\", \"valueState\", \"image\", \"alterIcon\", \"backupImage\"], outputs: [\"avatarClicked\", \"zoomGlyphClicked\"] }, { kind: \"component\", type: MultiInputComponent, selector: \"fd-multi-input\", inputs: [\"placeholder\", \"disabled\", \"required\", \"compactCollapse\", \"maxHeight\", \"glyph\", \"glyphFont\", \"dropdownValues\", \"openDropdownOnAddOnClicked\", \"addonIconTitle\", \"searchTerm\", \"inputId\", \"highlight\", \"selected\", \"class\", \"filterFn\", \"valueFn\", \"displayFn\", \"newTokenParseFn\", \"optionItemIdentifier\", \"newTokenValidateFn\", \"ariaLabel\", \"ariaLabelledBy\", \"fillControlMode\", \"state\", \"buttonFocusable\", \"allowNewTokens\", \"mobile\", \"showAllButton\", \"bodyMaxWidth\", \"mobileConfig\", \"includes\", \"itemTemplate\", \"title\", \"byline\", \"autoComplete\", \"open\", \"displayAddonButton\", \"addOnButtonAriaLabel\"], outputs: [\"searchTermChange\", \"selectedChange\", \"openChange\", \"addOnButtonClicked\", \"allItemsSelectedChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: ApprovalFlowNodeComponent, selector: \"fdp-approval-flow-node\", inputs: [\"node\", \"meta\", \"renderArrow\", \"checkDueDate\", \"dueDateThreshold\", \"allNodesInColumnApproved\", \"approvalStatusTemplate\", \"statusColorMapping\", \"isEdit\", \"isNextNodeBlank\"], outputs: [\"onAdd\", \"onEdit\", \"onDelete\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: GridListItemComponent, selector: \"fd-grid-list-item\", inputs: [\"id\", \"width\", \"layoutItemPattern\", \"status\", \"counter\", \"value\", \"disableToolbarClick\", \"selected\", \"noPadding\", \"ariaLabel\", \"ariaLabelledBy\", \"type\", \"state\", \"isNavigated\", \"title\", \"titleLevel\", \"description\", \"autoHeight\"], outputs: [\"press\", \"detail\", \"delete\", \"navigate\", \"cardClick\", \"draft\", \"locked\"] }, { kind: \"component\", type: GridListItemToolbarComponent, selector: \"fd-grid-list-item-toolbar\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: GridListItemImageDirective, selector: \"[fd-grid-list-item-image]\" }, { kind: \"directive\", type: GridListItemBodyDirective, selector: \"[fd-grid-list-item-body]\" }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarRightDirective, selector: \"[fd-bar-right]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"component\", type: IllustratedMessageComponent, selector: \"[fd-illustrated-message]\", inputs: [\"type\", \"svgConfig\", \"svgAriaLabel\", \"noSvg\", \"id\", \"class\"] }, { kind: \"component\", type: IllustratedMessageFigcaptionComponent, selector: \"[fd-illustrated-message-figcaption]\" }, { kind: \"directive\", type: IllustratedMessageTitleDirective, selector: \"[fd-illustrated-message-title]\" }, { kind: \"directive\", type: IllustratedMessageTextDirective, selector: \"[fd-illustrated-message-text]\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [ApprovalFlowAddNodeViewService], imports: [\n ContentDensityDirective,\n ApprovalFlowMessagesComponent,\n GridListComponent,\n GridListTitleBarComponent,\n GridListTitleBarSpacerComponent,\n ApprovalFlowToolbarActionsComponent,\n AvatarComponent,\n MultiInputComponent,\n FormsModule,\n IconComponent,\n ApprovalFlowNodeComponent,\n CdkDrag,\n GridListItemComponent,\n GridListItemToolbarComponent,\n NgTemplateOutlet,\n GridListItemImageDirective,\n GridListItemBodyDirective,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n ButtonComponent,\n IllustratedMessageComponent,\n IllustratedMessageFigcaptionComponent,\n IllustratedMessageTitleDirective,\n IllustratedMessageTextDirective,\n FdTranslatePipe\n ], template: \"<ng-container fdCompact>\\n <fdp-approval-flow-messages\\n [(messages)]=\\\"_messages\\\"\\n [undoLastActionAvailable]=\\\"!!_previousApprovalProcess\\\"\\n (undoLastAction)=\\\"_undoLastAction()\\\"\\n ></fdp-approval-flow-messages>\\n <fd-grid-list\\n #gridList\\n class=\\\"fdp-approval-flow__toolbar\\\"\\n [selectionMode]=\\\"_isEditMode ? 'multiSelect' : 'none'\\\"\\n (selectionChange)=\\\"_onNodeSelectionChange($event)\\\"\\n >\\n <fd-grid-list-title-bar [title]=\\\"title || ('platformApprovalFlow.defaultTitle' | fdTranslate)\\\">\\n <fd-grid-list-title-bar-spacer></fd-grid-list-title-bar-spacer>\\n @if (isEditAvailable) {\\n <fdp-approval-flow-toolbar-actions\\n [graph]=\\\"_graph\\\"\\n [selectedNodes]=\\\"_selectedNodes\\\"\\n [graphMetadata]=\\\"_graphMetadata\\\"\\n [isEditMode]=\\\"_isEditMode\\\"\\n (enterEditMode)=\\\"_enterEditMode()\\\"\\n (addNode)=\\\"_addNode($event.node, $event.target)\\\"\\n (editSelectedNode)=\\\"_editNode($event)\\\"\\n (deleteSelectedNodes)=\\\"_deleteSelectedNodes()\\\"\\n ></fdp-approval-flow-toolbar-actions>\\n }\\n </fd-grid-list-title-bar>\\n @if (_approvalProcess.watchers?.length || _isEditMode) {\\n <div class=\\\"fdp-approval-flow__watchers\\\" [attr.aria-label]=\\\"watchersLabel\\\">\\n <p class=\\\"fdp-approval-flow__watchers-title\\\">\\n {{ watchersLabel || ('platformApprovalFlow.defaultWatchersLabel' | fdTranslate) }}\\n </p>\\n @if (!_isEditMode) {\\n @for (watcher of _approvalProcess.watchers; track _trackByFn($index, watcher)) {\\n <fd-avatar\\n size=\\\"xs\\\"\\n [image]=\\\"watcher.imgUrl || ''\\\"\\n [label]=\\\"watcher.name\\\"\\n [clickable]=\\\"true\\\"\\n [circle]=\\\"true\\\"\\n (avatarClicked)=\\\"_onWatcherClick(watcher, $event)\\\"\\n ></fd-avatar>\\n }\\n } @else {\\n <div class=\\\"fdp-approval-flow__watchers-input-container\\\">\\n <fd-multi-input\\n [dropdownValues]=\\\"_usersForWatchersList\\\"\\n [placeholder]=\\\"'platformApprovalFlow.watchersInputPlaceholder' | fdTranslate\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n [valueFn]=\\\"_userValueFn\\\"\\n [showAllButton]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedWatcherIds\\\"\\n (ngModelChange)=\\\"_watchersSelectionChanged($event)\\\"\\n ></fd-multi-input>\\n </div>\\n }\\n </div>\\n }\\n @if (!_graph.errors) {\\n @if (_graph.columns.length) {\\n <div\\n class=\\\"fdp-approval-flow__container\\\"\\n [class.fdp-approval-flow__container--extra-padding-start]=\\\"true\\\"\\n [class.fdp-approval-flow__container--extra-padding-end]=\\\"true\\\"\\n >\\n @if (_scrollDiff > 0) {\\n <div\\n class=\\\"fdp-approval-flow-carousel-controls\\\"\\n [class.fdp-approval-flow-carousel-controls--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @if (_carouselStepsLeft > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--prev-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.prevButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide(-1)\\\"\\n >\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'right' : 'left') + '-arrow'\\\"></fd-icon>\\n {{ _carouselStepsLeft }}\\n </button>\\n }\\n @if (_carouselStepsRight > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--next-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.nextButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide()\\\"\\n >\\n {{ _carouselStepsRight }}\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </button>\\n }\\n </div>\\n }\\n <div\\n class=\\\"fdp-approval-flow__graph-container\\\"\\n [class.fdp-approval-flow__graph-container--multiple-root-nodes]=\\\"_multipleRootNodes\\\"\\n [class.fdp-approval-flow__graph-container--multiple-final-nodes]=\\\"_multipleFinalNodes\\\"\\n [class.fd-scrollbar]=\\\"true\\\"\\n #graphContainerEl\\n >\\n <div\\n class=\\\"fdp-approval-flow__graph\\\"\\n #graphEl\\n [class.fdp-approval-flow__graph--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @for (column of _graph.columns; track column; let columnIndex = $index) {\\n <div class=\\\"fdp-approval-flow__graph-column\\\">\\n @for (\\n node of column.nodes;\\n track _trackByFn(nodeIndex, node);\\n let nodeIndex = $index\\n ) {\\n <fdp-approval-flow-node\\n cdkDrag\\n #approvalFlowNode\\n [cdkDragDisabled]=\\\"_isCdkDragDisabled(node)\\\"\\n [node]=\\\"node\\\"\\n [meta]=\\\"_graphMetadata[node.id]\\\"\\n [isEdit]=\\\"_isEditMode\\\"\\n [isNextNodeBlank]=\\\"_isNextNodeBlank(node, columnIndex, nodeIndex)\\\"\\n [checkDueDate]=\\\"checkDueDate\\\"\\n [dueDateThreshold]=\\\"dueDateThreshold\\\"\\n [renderArrow]=\\\"columnIndex > 0\\\"\\n [allNodesInColumnApproved]=\\\"!!column.allNodesApproved\\\"\\n [approvalStatusTemplate]=\\\"approvalStatusTemplate\\\"\\n [statusColorMapping]=\\\"statusColorMapping\\\"\\n (onAdd)=\\\"_addNode(node, $event)\\\"\\n (onEdit)=\\\"_editNode(node)\\\"\\n (onDelete)=\\\"_onNodeDelete(node)\\\"\\n (keydown)=\\\"_onNodeKeyDown($event, node)\\\"\\n (cdkDragStarted)=\\\"_dragDropInProgress = true\\\"\\n (cdkDragReleased)=\\\"_onNodeDrop(node, $event.source)\\\"\\n (cdkDragMoved)=\\\"_onNodeDragMoved(node)\\\"\\n >\\n <!-- Trick with using projection to make grid list items visible for the grid list -->\\n <fd-grid-list-item\\n type=\\\"active\\\"\\n [value]=\\\"node\\\"\\n [selected]=\\\"!!node.selected\\\"\\n [ariaLabelledBy]=\\\"approvalFlowNode.approvalFlowNodeId\\\"\\n [disableToolbarClick]=\\\"true\\\"\\n class=\\\"fdp-approval-flow__graph-node-inner\\\"\\n [class.fdp-approval-flow__graph-node-inner--edit]=\\\"_isEditMode\\\"\\n (press)=\\\"_onNodeClick(node)\\\"\\n >\\n <fd-grid-list-item-toolbar>\\n @if (_isEditMode) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._overflowMenuButton\\\"\\n ></ng-template>\\n }\\n </fd-grid-list-item-toolbar>\\n <fd-avatar\\n fd-grid-list-item-image\\n [image]=\\\"\\n node.approvers.length === 1 ? node.approvers[0].imgUrl : null\\n \\\"\\n [label]=\\\"node.approvers.length > 1 ? node.description : null\\\"\\n size=\\\"xs\\\"\\n [circle]=\\\"true\\\"\\n ></fd-avatar>\\n <ng-template fd-grid-list-item-body>\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._nodeContent\\\"\\n ></ng-template>\\n </ng-template>\\n </fd-grid-list-item>\\n </fdp-approval-flow-node>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n } @else {\\n <figure fd-illustrated-message type=\\\"spot\\\" [svgConfig]=\\\"_emptyApprovalFlowSpotConfig\\\">\\n <figcaption fd-illustrated-message-figcaption>\\n <h3 fd-illustrated-message-title>\\n {{ 'platformApprovalFlow.emptyTitle' | fdTranslate }}\\n </h3>\\n <p fd-illustrated-message-text>\\n {{ 'platformApprovalFlow.emptyHint' | fdTranslate }}\\n </p>\\n </figcaption>\\n </figure>\\n <!-- TODO #5178: Replace with illustrated image component after it gets fixed -->\\n <div [style.display]=\\\"'none'\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"128\\\"\\n height=\\\"128\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n id=\\\"sapIllus-Spot-NoData\\\"\\n >\\n <path\\n d=\\\"M41.6179,32.7174H84.6273a1,1,0,0,1,.723.3092l7.2445,7.5824,7.4817,7.8491a1,1,0,0,1,.2761.69l-.0046,55.6069a4.1038,4.1038,0,0,1-.8787,2.1212A4.0564,4.0564,0,0,1,98.1,107.9631l-56.3858.0313a2.6167,2.6167,0,0,1-3.0812-3.2309l-.0152-69.0594Z\\\"\\n class=\\\"sapIllus_PatternShadow\\\"\\n [style.fill]=\\\"'var(--sapIllus_PatternShadow)'\\\"\\n ></path>\\n <path\\n d=\\\"M35.7928,27.4987H78.8022a1,1,0,0,1,.723.3092L86.77,35.39l7.4816,7.8492a1,1,0,0,1,.2762.69l-.0046,55.6069a3,3,0,0,1-3,3H35.808a2.9946,2.9946,0,0,1-3-2.9913c-.01-12.0564-.0423-57.0116-.0152-69.0595A2.9943,2.9943,0,0,1,35.7928,27.4987Z\\\"\\n class=\\\"sapIllus_ObjectFillColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_ObjectFillColor)'\\\"\\n ></path>\\n <path\\n d=\\\"M93.2978,44.5335H78.8208a.9925.9925,0,0,1-.974-1.01V28.5108a.97.97,0,0,1,1.6628-.7143L93.9865,42.8092A1.0151,1.0151,0,0,1,93.2978,44.5335Z\\\"\\n class=\\\"sapIllus_BrandColorSecondary\\\"\\n [style.fill]=\\\"'var(--sapIllus_BrandColorSecondary)'\\\"\\n ></path>\\n <path\\n d=\\\"M104.608,38.9485l5.9157-1.7721c1.32-.3954.7584-2.5258-.5689-2.1282L104.0392,36.82c-1.32.3953-.7584,2.5258.5688,2.1282Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M85.2973,21.2465l.9718-5.9331c.2154-1.3151-1.777-1.8807-1.9941-.5554l-.9718,5.9332c-.2155,1.3151,1.777,1.8807,1.9941.5553Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M95.3034,29.0015a1.01,1.01,0,0,1-.6837-.267,1.0783,1.0783,0,0,1-.0864-1.4932l5.9511-6.8857a1.01,1.01,0,0,1,1.4538-.0884,1.0785,1.0785,0,0,1,.0865,1.4932l-5.9511,6.8858A1.0164,1.0164,0,0,1,95.3034,29.0015Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M94.8747,42.8861,80.0855,27.4623a1.5152,1.5152,0,0,0-1.0885-.4636H35.807a3.509,3.509,0,0,0-3.5146,3.4836c-.0294,13.2857.0137,66.7559.0157,69.0257a3.5076,3.5076,0,0,0,3.5146,3.4894H91.7709a3.5106,3.5106,0,0,0,3.5146-3.4982l.005-55.5785A1.49,1.49,0,0,0,94.8747,42.8861Zm-16.21-14.8355a1.15,1.15,0,0,1,.2561-.0309,1.04,1.04,0,0,1,.51.2134l14.276,14.8837.0194.02a.5891.5891,0,0,1,.0968.6251c-.1016.1764-.4086.24-.69.24L78.8355,44a.6031.6031,0,0,1-.5472-.6131c-.0087-4.9588-.017-9.9015-.0035-14.8689A.5189.5189,0,0,1,78.6646,28.0506Zm13.1062,73.95H35.8188a2.5045,2.5045,0,0,1-2.5107-2.491c-.002-2.2694-.0451-55.74-.0157-69.0248a2.5054,2.5054,0,0,1,2.5107-2.4861H77.3684a1.49,1.49,0,0,0-.0976.5106V43.4934A1.5145,1.5145,0,0,0,78.7894,45H78.92L94.286,47.9749l-.0046,51.5269A2.5074,2.5074,0,0,1,91.7708,102.0006Z\\\"\\n class=\\\"sapIllus_StrokeDetailColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_StrokeDetailColor)'\\\"\\n ></path>\\n </svg>\\n </div>\\n }\\n }\\n </fd-grid-list>\\n @if (_isEditMode) {\\n <div fd-bar>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeSaveButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n [disabled]=\\\"disableSaveButton\\\"\\n (click)=\\\"_saveEditModeChanges()\\\"\\n ></button>\\n </fd-bar-element>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeExitButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n [disabled]=\\\"disableExitButton\\\"\\n (click)=\\\"_exitEditMode()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n</ng-container>\\n\", styles: [\".fd-scrollbar{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:auto;padding-block:0;padding-inline:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}.fdp-approval-flow__watchers{margin-bottom:.5rem;padding-left:.5rem}.fdp-approval-flow__watchers-title{font-size:.875em;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin:1rem 0 .5rem}.fdp-approval-flow__watchers fd-avatar{margin-right:.5rem;cursor:pointer}.fdp-approval-flow__watchers fd-avatar:focus{outline-offset:.0625rem;outline-width:.0625rem;outline-style:dotted;outline-color:var(--sapContent_FocusColor, #0854a0)}.fdp-approval-flow__watchers .fdp-approval-flow__watchers-input-container{width:17.375rem}[dir=rtl] .fdp-approval-flow__watchers,.fdp-approval-flow__watchers[dir=rtl]{padding-right:.5rem}[dir=rtl] .fdp-approval-flow__watchers fd-avatar,.fdp-approval-flow__watchers[dir=rtl] fd-avatar{margin-left:.5rem;margin-right:0}.fdp-approval-flow__container{max-width:100%;position:relative;padding:0 .5rem}.fdp-approval-flow__container--extra-padding-start{padding-left:2rem}.fdp-approval-flow__container--extra-padding-end{padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start{padding-left:.5rem;padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-end{padding-right:.5rem;padding-left:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end{padding-right:2rem;padding-left:2rem}.fdp-approval-flow__graph-container{position:relative;overflow:auto;padding-top:.5rem;padding-bottom:2rem;padding-left:2rem}.fdp-approval-flow__graph-container--multiple-root-nodes{padding-left:4rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-root-nodes,.fdp-approval-flow__graph-container--multiple-root-nodes[dir=rtl]{padding-right:2rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-final-nodes,.fdp-approval-flow__graph-container--multiple-final-nodes[dir=rtl]{padding-left:0}.fdp-approval-flow-carousel-controls{position:absolute;display:flex;align-items:center;width:100%;height:6.375rem;padding-top:.5rem;left:0}.fdp-approval-flow-carousel-controls--edit-mode{height:8.375rem}.fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--next-slide{position:absolute;border:none;background:transparent;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);display:flex;justify-content:space-between;width:2rem;align-items:center;cursor:pointer}.fdp-approval-flow-carousel-controls__button--prev-slide fd-icon,.fdp-approval-flow-carousel-controls__button--next-slide fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;top:.0625rem}.fdp-approval-flow-carousel-controls__button--prev-slide{left:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--prev-slide[dir=rtl]{left:auto;right:0}.fdp-approval-flow-carousel-controls__button--next-slide{right:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--next-slide,.fdp-approval-flow-carousel-controls__button--next-slide[dir=rtl]{left:0;right:auto}.fdp-approval-flow__graph{display:flex;align-items:flex-start;position:relative;left:0;transition:left .3s}.fdp-approval-flow__graph-column{margin-right:4rem;position:relative}[dir=rtl] .fdp-approval-flow__graph-column:first-child,.fdp-approval-flow__graph-column[dir=rtl]:first-child{margin-right:2rem}.fdp-approval-flow__graph fdp-approval-flow-node+fdp-approval-flow-node:not(:last-child){margin-bottom:1rem}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner{padding:0}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content{margin-left:auto}[dir=rtl] .fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content,.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content[dir=rtl]{margin-left:0;margin-right:auto}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--actions{display:none}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner:not(.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner--edit) .fd-toolbar.fd-grid-list__item-toolbar{display:none}.cdk-overlay-container{z-index:1002!important}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/scrollbar.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: Map, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATA_PROVIDERS]\n }] }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { title: [{\n type: Input\n }], value: [{\n type: Input\n }], userDataSource: [{\n type: Input\n }], watcherDataSource: [{\n type: Input\n }], teamDataSource: [{\n type: Input\n }], userDetailsTemplate: [{\n type: Input\n }], approvalStatusTemplate: [{\n type: Input\n }], statusColorMapping: [{\n type: Input\n }], checkDueDate: [{\n type: Input\n }], dueDateThreshold: [{\n type: Input\n }], allowSendRemindersForStatuses: [{\n type: Input\n }], isEditAvailable: [{\n type: Input\n }], watchersLabel: [{\n type: Input\n }], allowAddParallelNodes: [{\n type: Input\n }], disableSaveButton: [{\n type: Input\n }], disableExitButton: [{\n type: Input\n }], usersDataProviderEntityKey: [{\n type: Input\n }], teamsDataProviderEntityKey: [{\n type: Input\n }], watchersDataProviderEntityKey: [{\n type: Input\n }], removeSpaceNode: [{\n type: Input\n }], nodeClick: [{\n type: Output\n }], afterNodeAdd: [{\n type: Output\n }], afterNodeEdit: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], sendReminders: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }], _graphContainerEl: [{\n type: ViewChild,\n args: ['graphContainerEl']\n }], _graphEl: [{\n type: ViewChild,\n args: ['graphEl']\n }], _gridList: [{\n type: ViewChild,\n args: ['gridList']\n }], _nodeComponents: [{\n type: ViewChildren,\n args: [ApprovalFlowNodeComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRHLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFB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Z0JBR1AsUUFBUTtzQkFBN0IsU0FBUzt1QkFBQyxTQUFTO2dCQUdHLFNBQVM7c0JBQS9CLFNBQVM7dUJBQUMsVUFBVTtnQkFHb0IsZUFBZTtzQkFBdkQsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtYXBUbywgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEdyaWRMaXN0Q29tcG9uZW50LCBHcmlkTGlzdFNlbGVjdGlvbkV2ZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2dyaWQtbGlzdCc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYXZhdGFyJztcbmltcG9ydCB7IEJhckNvbXBvbmVudCwgQmFyRWxlbWVudERpcmVjdGl2ZSwgQmFyUmlnaHREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgR3JpZExpc3RJdGVtQm9keURpcmVjdGl2ZSxcbiAgICBHcmlkTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgR3JpZExpc3RJdGVtSW1hZ2VEaXJlY3RpdmUsXG4gICAgR3JpZExpc3RJdGVtVG9vbGJhckNvbXBvbmVudCxcbiAgICBHcmlkTGlzdFRpdGxlQmFyQ29tcG9uZW50LFxuICAgIEdyaWRMaXN0VGl0bGVCYXJTcGFjZXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHtcbiAgICBJbGx1c3RyYXRlZE1lc3NhZ2VDb21wb25lbnQsXG4gICAgSWxsdXN0cmF0ZWRNZXNzYWdlRmlnY2FwdGlvbkNvbXBvbmVudCxcbiAgICBJbGx1c3RyYXRlZE1lc3NhZ2VUZXh0RGlyZWN0aXZlLFxuICAgIElsbHVzdHJhdGVkTWVzc2FnZVRpdGxlRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbGx1c3RyYXRlZC1tZXNzYWdlJztcbmltcG9ydCB7IE11bHRpSW5wdXRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbXVsdGktaW5wdXQnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL29iamVjdC1zdGF0dXMnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7XG4gICAgQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2UsXG4gICAgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UsXG4gICAgREFUQV9QUk9WSURFUlMsXG4gICAgRGF0YVByb3ZpZGVyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gICAgQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLFxuICAgIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSxcbiAgICBBZGROb2RlRGlhbG9nUmVmRGF0YSxcbiAgICBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50LFxuICAgIEFwcHJvdmFsRmxvd05vZGVUYXJnZXRcbn0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzQ29tcG9uZW50LFxuICAgIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0RpYWxvZ1JlZkRhdGFcbn0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFwcHJvdmFsRmxvd0dyYXBoLFxuICAgIEFwcHJvdmFsR3JhcGhDb2x1bW4sXG4gICAgQXBwcm92YWxHcmFwaE1ldGFkYXRhLFxuICAgIGdlbmVyYXRlQXBwcm92YWxGbG93R3JhcGgsXG4gICAgZ2VuZXJhdGVBcHByb3ZhbEZsb3dHcmFwaE1ldGFkYXRhXG59IGZyb20gJy4vYXBwcm92YWwtZmxvdy1ncmFwaCc7XG5pbXBvcnQge1xuICAgIEFwcHJvdmFsRmxvd01lc3NhZ2UsXG4gICAgQXBwcm92YWxGbG93TWVzc2FnZVR5cGUsXG4gICAgQXBwcm92YWxGbG93TWVzc2FnZXNDb21wb25lbnRcbn0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzL2FwcHJvdmFsLWZsb3ctbWVzc2FnZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd05vZGVDb21wb25lbnQgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctbm9kZS9hcHByb3ZhbC1mbG93LW5vZGUuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQXBwcm92YWxGbG93U2VsZWN0VHlwZUNvbXBvbmVudCxcbiAgICBTZWxlY3RUeXBlRGlhbG9nRm9ybURhdGFcbn0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlL2FwcHJvdmFsLWZsb3ctc2VsZWN0LXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1Rvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBkaXNwbGF5VXNlckZuLFxuICAgIGdldEJsYW5rQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgZ2V0R3JhcGhOb2RlcyxcbiAgICBpc05vZGVUYXJnZXRzSW5jbHVkZUlkLFxuICAgIHRyYWNrQnlGbixcbiAgICB1c2VyVmFsdWVGblxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgICBBcHByb3ZhbEdyYXBoTm9kZSxcbiAgICBBcHByb3ZhbEdyYXBoTm9kZU1ldGFkYXRhLFxuICAgIEFwcHJvdmFsTm9kZSxcbiAgICBBcHByb3ZhbFByb2Nlc3MsXG4gICAgQXBwcm92YWxTdGF0dXMsXG4gICAgQXBwcm92YWxUZWFtLFxuICAgIEFwcHJvdmFsVXNlcixcbiAgICBTZW5kUmVtaW5kZXJzRGF0YVxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLXZpZXcuc2VydmljZSc7XG5cbmxldCBkZWZhdWx0SWQgPSAwO1xuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWwgRmxvdyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2FwcHJvdmFsLWZsb3cuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBBcHByb3ZhbEZsb3dNZXNzYWdlc0NvbXBvbmVudCxcbiAgICAgICAgR3JpZExpc3RDb21wb25lbnQsXG4gICAgICAgIEdyaWRMaXN0VGl0bGVCYXJDb21wb25lbnQsXG4gICAgICAgIEdyaWRMaXN0VGl0bGVCYXJTcGFjZXJDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1Rvb2xiYXJBY3Rpb25zQ29tcG9uZW50LFxuICAgICAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50LFxuICAgICAgICBDZGtEcmFnLFxuICAgICAgICBHcmlkTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIEdyaWRMaXN0SXRlbVRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEdyaWRMaXN0SXRlbUltYWdlRGlyZWN0aXZlLFxuICAgICAgICBHcmlkTGlzdEl0ZW1Cb2R5RGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIElsbHVzdHJhdGVkTWVzc2FnZUNvbXBvbmVudCxcbiAgICAgICAgSWxsdXN0cmF0ZWRNZXNzYWdlRmlnY2FwdGlvbkNvbXBvbmVudCxcbiAgICAgICAgSWxsdXN0cmF0ZWRNZXNzYWdlVGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIElsbHVzdHJhdGVkTWVzc2FnZVRleHREaXJlY3RpdmUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIFRpdGxlIHdoaWNoIGlzIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBBcHByb3ZhbCBGbG93IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBhcHByb3ZhbCBmbG93IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogQXBwcm92YWxQcm9jZXNzO1xuXG4gICAgLyoqIERhdGEgc291cmNlIGZvciB0aGUgdXNlcnMgb2YgQXBwcm92YWwgRmxvdyBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgdXNlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG5cbiAgICAvKiogRGF0YSBzb3VyY2UgZm9yIHRoZSB3YXRjaGVycyBvZiBBcHByb3ZhbCBGbG93IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSB3YXRjaGVyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcblxuICAgIC8qKiBEYXRhIHNvdXJjZSBmb3IgdGhlIHRlYW1zIG9mIEFwcHJvdmFsIEZsb3cgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpIHRlYW1EYXRhU291cmNlOiBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSB1c2VyIGRldGFpbHMgdGVtcGxhdGUgKi9cbiAgICBASW5wdXQoKSB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSBhcHAgY3VzdG9tIHN0YXR1c2VzICovXG4gICAgQElucHV0KCkgYXBwcm92YWxTdGF0dXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBDdXN0b20gc3RhdHVzIHRvIGNvbG9yIG1hcHBpbmcgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNDb2xvck1hcHBpbmc6IFJlY29yZDxBcHByb3ZhbFN0YXR1cywgT2JqZWN0U3RhdHVzPjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgZHVlIGRhdGUgd2FybmluZyBpbiBzdGF0dXMgKi9cbiAgICBASW5wdXQoKSBjaGVja0R1ZURhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgZHVlIGRhdGUgd2hlbiBzdGF0dXMgY2hhbmdlcyB0byBgd2FybmluZ2Agd2l0aCB0ZXh0ICdEdWUgaW4gWCBkYXlzJy5cbiAgICAgKiAgTm90IHVzZWQgaWYgJ2NoZWNrRHVlRGF0ZScgZXF1YWxzIGZhbHNlICovXG4gICAgQElucHV0KCkgZHVlRGF0ZVRocmVzaG9sZCA9IDc7XG5cbiAgICAvKiogQSBsaXN0IG9mIGFwcHJvdmFsIHN0YXR1c2VzIHRoYXQgYWxsb3cgc2VuZGluZyByZW1pbmRlcnMgdG8gdGhlaXIgYXBwcm92ZXJzICovXG4gICAgQElucHV0KCkgYWxsb3dTZW5kUmVtaW5kZXJzRm9yU3RhdHVzZXM6IEFwcHJvdmFsU3RhdHVzW10gPSBbJ2luIHByb2dyZXNzJywgJ25vdCBzdGFydGVkJ107XG5cbiAgICAvKiogV2hldGhlciB0aGUgYXBwcm92YWwgZmxvdyBpcyBlZGl0YWJsZSAqL1xuICAgIEBJbnB1dCgpIGlzRWRpdEF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRleHQgbGFiZWwgZm9yIHdhdGNoZXJzIGxpc3QgKi9cbiAgICBASW5wdXQoKSB3YXRjaGVyc0xhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRW5hYmxlcyBvciBkaXNhYmxlcyBhYmlsaXR5IHRvIGFkZCBwYXJhbGxlbCBub2RlcyAqL1xuICAgIEBJbnB1dCgpIGFsbG93QWRkUGFyYWxsZWxOb2RlcyA9IHRydWU7XG5cbiAgICAvKiogRGlzYWJsZXMgc2F2ZSBidXR0b24sIHNhdmUgYnV0dG9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKiogRGlzYWJsZXMgZXhpdCBidXR0b24sIGV4aXQgYnV0dG9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVFeGl0QnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBlbnRpdHkgZm9yIHdoaWNoIHVzZXJzIERhdGFQcm92aWRlciB3aWxsIGJlIGxvYWRlZC5cbiAgICAgKiBJbnRlcm5hbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRvIGxvb2t1cCB0byBzb21lIHJlZ2lzdHJ5XG4gICAgICogYW5kIHJldHJpZXZlIHRoZSBiZXN0IG1hdGNoaW5nIERhdGFQcm92aWRlciB0aGF0IGlzIHNldCBvbiBhcHBsaWNhdGlvbiBsZXZlbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHVzZXJzRGF0YVByb3ZpZGVyRW50aXR5S2V5Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZW50aXR5IGZvciB3aGljaCB0ZWFtcyBEYXRhUHJvdmlkZXIgd2lsbCBiZSBsb2FkZWQuXG4gICAgICogSW50ZXJuYWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyBsb29rdXAgdG8gc29tZSByZWdpc3RyeVxuICAgICAqIGFuZCByZXRyaWV2ZSB0aGUgYmVzdCBtYXRjaGluZyBEYXRhUHJvdmlkZXIgdGhhdCBpcyBzZXQgb24gYXBwbGljYXRpb24gbGV2ZWxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZWFtc0RhdGFQcm92aWRlckVudGl0eUtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGVudGl0eSBmb3Igd2hpY2ggYXBwcm92YWwgZmxvdyBEYXRhUHJvdmlkZXIgd2lsbCBiZSBsb2FkZWQuXG4gICAgICogSW50ZXJuYWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyBsb29rdXAgdG8gc29tZSByZWdpc3RyeVxuICAgICAqIGFuZCByZXRyaWV2ZSB0aGUgYmVzdCBtYXRjaGluZyBEYXRhUHJvdmlkZXIgdGhhdCBpcyBzZXQgb24gYXBwbGljYXRpb24gbGV2ZWxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB3YXRjaGVyc0RhdGFQcm92aWRlckVudGl0eUtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCByZW1vdmUgdGhlIHNwYWNlIG5vZGUgZnJvbSB0aGUgZ3JhcGhcbiAgICAgKi9cbiAgICBASW5wdXQoKSByZW1vdmVTcGFjZU5vZGU/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiBhcHByb3ZhbCBmbG93IG5vZGUgY2xpY2suICovXG4gICAgQE91dHB1dCgpIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxOb2RlPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gYXBwcm92YWwgZmxvdyBub2RlIGFkZCAqL1xuICAgIEBPdXRwdXQoKSBhZnRlck5vZGVBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsTm9kZT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIGFwcHJvdmFsIGZsb3cgbm9kZSBlZGl0ICovXG4gICAgQE91dHB1dCgpIGFmdGVyTm9kZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsTm9kZT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW52ZXIgc2F2ZSBpcyBjbGlja2VkIGluIGVkaXQgbW9kZSAgKi9cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsUHJvY2Vzcz4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW5ldmVyIHJlbWluZGVycyBzaG91bGQgYmUgc2VudCAqL1xuICAgIEBPdXRwdXQoKSBzZW5kUmVtaW5kZXJzID0gbmV3IEV2ZW50RW1pdHRlcjxTZW5kUmVtaW5kZXJzRGF0YT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZ3JhcGhDb250YWluZXJFbCcpIF9ncmFwaENvbnRhaW5lckVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZ3JhcGhFbCcpIF9ncmFwaEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZ3JpZExpc3QnKSBfZ3JpZExpc3Q6IEdyaWRMaXN0Q29tcG9uZW50PEFwcHJvdmFsR3JhcGhOb2RlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50KSBfbm9kZUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmFsUHJvY2VzczogQXBwcm92YWxQcm9jZXNzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbEFwcHJvdmFsUHJvY2Vzcz86IEFwcHJvdmFsUHJvY2VzcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ByZXZpb3VzQXBwcm92YWxQcm9jZXNzPzogQXBwcm92YWxQcm9jZXNzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNDYXJvdXNlbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ3JhcGhNZXRhZGF0YTogQXBwcm92YWxHcmFwaE1ldGFkYXRhID0ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc0VkaXRNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2Vyc0ZvcldhdGNoZXJzTGlzdDogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkV2F0Y2hlcklkczogQXBwcm92YWxVc2VyWydpZCddW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VzOiBBcHByb3ZhbEZsb3dNZXNzYWdlW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VtcHR5QXBwcm92YWxGbG93U3BvdENvbmZpZyA9IHtcbiAgICAgICAgc3BvdDogeyB1cmw6ICcnLCBpZDogJ3NhcElsbHVzLVNwb3QtTm9EYXRhJyB9XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX211bHRpcGxlUm9vdE5vZGVzID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tdWx0aXBsZUZpbmFsTm9kZXMgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIFJldHVybnMgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgYW5kIGluaXRpYWwgc3RhdGVzIG9mIGFwcHJvdmFsIHByb2Nlc3MgKi9cbiAgICBnZXQgYXBwcm92YWxQcm9jZXNzKCk6IEFwcHJvdmFsUHJvY2VzcyB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfcnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3NlbGVjdGVkTm9kZXMoKTogQXBwcm92YWxHcmFwaE5vZGVbXSB7XG4gICAgICAgIHJldHVybiBnZXRHcmFwaE5vZGVzKHRoaXMuX2dyYXBoKS5maWx0ZXIoKG5vZGUpID0+IG5vZGUuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlVc2VyRm4gPSBkaXNwbGF5VXNlckZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclZhbHVlRm4gPSB1c2VyVmFsdWVGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgYXBwcm92YWxGbG93VW5pcXVlSWQgPSBgZmRwLWFwcHJvdmFsLWZsb3ctJHsrK2RlZmF1bHRJZH1gO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3RlZFdhdGNoZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lZGl0TW9kZUluaXRTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRBX1BST1ZJREVSUykgcHJpdmF0ZSBwcm92aWRlcnM6IE1hcDxzdHJpbmcsIERhdGFQcm92aWRlcjxhbnk+PixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICBjb25zb2xlLmxvZygnQXBwcm92YWxGbG93Q29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHJlbGVhc2UuJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJEYXRhU291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCB1c2Vyc0RQID0gdGhpcy51c2Vyc0RhdGFQcm92aWRlckVudGl0eUtleSAmJiB0aGlzLnByb3ZpZGVycz8uZ2V0KHRoaXMudXNlcnNEYXRhUHJvdmlkZXJFbnRpdHlLZXkpO1xuICAgICAgICAgICAgaWYgKHVzZXJzRFApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJEYXRhU291cmNlID0gbmV3IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlKHVzZXJzRFApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB1c2VycyBkYXRhIHNvdXJjZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy53YXRjaGVyRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgY29uc3Qgd2F0Y2hlcnNEUCA9XG4gICAgICAgICAgICAgICAgdGhpcy53YXRjaGVyc0RhdGFQcm92aWRlckVudGl0eUtleSAmJiB0aGlzLnByb3ZpZGVycz8uZ2V0KHRoaXMud2F0Y2hlcnNEYXRhUHJvdmlkZXJFbnRpdHlLZXkpO1xuICAgICAgICAgICAgaWYgKHdhdGNoZXJzRFApIHtcbiAgICAgICAgICAgICAgICB0aGlzLndhdGNoZXJEYXRhU291cmNlID0gbmV3IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlKHdhdGNoZXJzRFApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB3YXRjaGVycyBkYXRhIHNvdXJjZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50ZWFtRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgY29uc3QgdGVhbXNEUCA9IHRoaXMudGVhbXNEYXRhUHJvdmlkZXJFbnRpdHlLZXkgJiYgdGhpcy5wcm92aWRlcnM/LmdldCh0aGlzLnRlYW1zRGF0YVByb3ZpZGVyRW50aXR5S2V5KTtcbiAgICAgICAgICAgIGlmICh0ZWFtc0RQKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZWFtRGF0YVNvdXJjZSA9IG5ldyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSh0ZWFtc0RQKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHJlc29sdmUgdGVhbXMgZGF0YSBzb3VyY2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX3NldHVwRGF0YVNvdXJjZVN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2VzcyA9IHRoaXMudmFsdWUgPz8geyB3YXRjaGVyczogW10sIG5vZGVzOiBbXSB9O1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbEFwcHJvdmFsUHJvY2VzcyA9IGNsb25lRGVlcChwcm9jZXNzKTtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkVmlldyhwcm9jZXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnVzZXJEYXRhU291cmNlIHx8IGNoYW5nZXMud2F0Y2hlckRhdGFTb3VyY2UgfHwgY2hhbmdlcy50ZWFtRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQkLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc05leHROb2RlQmxhbmsobm9kZTogQXBwcm92YWxHcmFwaE5vZGUsIGNvbHVtbkluZGV4OiBudW1iZXIsIG5vZGVJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5leHROb2RlID0gdGhpcy5fZ3JhcGguY29sdW1uc1tjb2x1bW5JbmRleCArIDFdPy5ub2Rlc1tub2RlSW5kZXhdO1xuICAgICAgICBjb25zdCBuZXh0Tm9kZUJsYW5rID0gbmV4dE5vZGU/LmJsYW5rO1xuICAgICAgICBjb25zdCBuZXh0Tm9kZVBhcmFsbGVsRW5kID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtuZXh0Tm9kZT8uaWRdPy5wYXJhbGxlbEVuZDtcblxuICAgICAgICByZXR1cm4gIW5vZGUuYmxhbmsgJiYgISFuZXh0Tm9kZUJsYW5rICYmICFuZXh0Tm9kZVBhcmFsbGVsRW5kO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzQ2RrRHJhZ0Rpc2FibGVkKG5vZGU6IEFwcHJvdmFsR3JhcGhOb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5faXNFZGl0TW9kZSB8fCBub2RlLmJsYW5rIHx8IG5vZGUuc3BhY2UgfHwgbm9kZS5zdGF0dXMgIT09ICdub3Qgc3RhcnRlZCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTm9kZSBjbGljayBoYW5kbGVyICovXG4gICAgX29uTm9kZUNsaWNrKG5vZGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZHJhZ0Ryb3BJblByb2dyZXNzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWFsb2cgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48QXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YT4oXG4gICAgICAgICAgICBBcHByb3ZhbEZsb3dBcHByb3ZlckRldGFpbHNDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBhbGxvd1NlbmRSZW1pbmRlcjogdGhpcy5hbGxvd1NlbmRSZW1pbmRlcnNGb3JTdGF0dXNlcy5pbmNsdWRlcyhub2RlLnN0YXR1cyksXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHREaWFsb2dPcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgocmVtaW5kZXJUYXJnZXRzKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZW1pbmRlclRhcmdldHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVtaW5kZXJzLmVtaXQoeyB1c2VyczogcmVtaW5kZXJUYXJnZXRzLCBub2RlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm5vZGVDbGljay5lbWl0KG5vZGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uTm9kZUFkZChub2RlOiBBcHByb3ZhbE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZnRlck5vZGVBZGQuZW1pdChub2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk5vZGVFZGl0KG5vZGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmFmdGVyTm9kZUVkaXQuZW1pdChub2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk5vZGVTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEdyaWRMaXN0U2VsZWN0aW9uRXZlbnQ8QXBwcm92YWxHcmFwaE5vZGU+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyYXBoLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4ubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSAhIWV2ZW50LnNlbGVjdGlvbi5maW5kKChfbm9kZSkgPT4gX25vZGUuaWQgPT09IG5vZGUuaWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFdhdGNoZXIncyBhdmF0YXIgY2xpY2sgaGFuZGxlciAqL1xuICAgIF9vbldhdGNoZXJDbGljayh3YXRjaGVyOiBBcHByb3ZhbFVzZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48QXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YT4oQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgd2F0Y2hlcixcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0RGlhbG9nT3B0aW9uc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogUmV0cml2ZSBtZXRhZGF0YSBieSBub2RlIGlkICovXG4gICAgZ2V0Tm9kZU1ldGFkYXRhQnlOb2RlSWQobm9kZUlkOiBzdHJpbmcpOiBBcHByb3ZhbEdyYXBoTm9kZU1ldGFkYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoTWV0YWRhdGFbbm9kZUlkXTtcbiAgICB9XG5cbiAgICAvKiogU2Nyb2xsIHRvIHRoZSBuZXh0IGhvcml6b250YWwgc2xpZGUgKi9cbiAgICBuZXh0U2xpZGUoZGlyID0gMSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSAxO1xuXG4gICAgICAgIGxldCBwb3M6IG51bWJlcjtcblxuICAgICAgICBpZiAoZGlyID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U3RlcCA9IHRoaXMuX2Nhcm91c2VsU3RlcHNSaWdodCA9PT0gMTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTdGVwID0gdGhpcy5fY2Fyb3VzZWxTdGVwc0NvdW50IC0gdGhpcy5fY2Fyb3VzZWxTdGVwc1JpZ2h0ICsgMTtcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVSaWdodFBvaW50ID0gdGhpcy5fY2Fyb3VzZWxTdGVwU2l6ZSAqIG5leHRTdGVwICsgKGxhc3RTdGVwID8gMCA6IHRocmVzaG9sZCk7XG4gICAgICAgICAgICBwb3MgPSB2aXNpYmxlUmlnaHRQb2ludCAtIHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTdGVwID0gdGhpcy5fY2Fyb3VzZWxTdGVwc0xlZnQgPT09IDE7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuX2Nhcm91c2VsU3RlcHNMZWZ0IC0gMTtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMuX2Nhcm91c2VsU3RlcFNpemUgKiBuZXh0U3RlcCAtIChsYXN0U3RlcCA/IDAgOiB0aHJlc2hvbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0U2Nyb2xsUG9zaXRpb24ocG9zKTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNjcm9sbFBvc2l0aW9uKHBvczogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyYXBoQ29udGFpbmVyRWwubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgICBsZWZ0OiBwb3MsXG4gICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSGFuZGxlIG5vZGUga2V5ZG93biBhbmQgZm9jdXMgb3RoZXIgbm9kZSBiYXNlZCBvbiB3aGljaCBrZXkgaXMgcHJlc3NlZCAqL1xuICAgIF9vbk5vZGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBub2RlOiBBcHByb3ZhbEdyYXBoTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbVVBfQVJST1csIERPV05fQVJST1csIFJJR0hUX0FSUk9XLCBMRUZUX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgbm9kZUluZGV4LCBjb2x1bW5JbmRleCB9ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtub2RlLmlkXTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGxldCBuZXh0Rm9jdXNUYXJnZXQ6IEFwcHJvdmFsR3JhcGhOb2RlIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZUluZGV4ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgY29sdW1uSW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRGb2N1c1RhcmdldCA9IHRoaXMuX2dldE5leHRWZXJ0aWNhbE5vZGUobm9kZUluZGV4LCBjb2x1bW5JbmRleCwgJ3VwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBuZXh0Rm9jdXNUYXJnZXQgPSB0aGlzLl9nZXROZXh0VmVydGljYWxOb2RlKG5vZGVJbmRleCwgY29sdW1uSW5kZXgsICdkb3duJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5leHRGb2N1c1RhcmdldCA9IHRoaXMuX2dldE5leHRIb3Jpem9udGFsTm9kZShub2RlSW5kZXgsIGNvbHVtbkluZGV4LCB0aGlzLl9ydGwgPyAncmlnaHQnIDogJ2xlZnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFJJR0hUX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5leHRGb2N1c1RhcmdldCA9IHRoaXMuX2dldE5leHRIb3Jpem9udGFsTm9kZShub2RlSW5kZXgsIGNvbHVtbkluZGV4LCB0aGlzLl9ydGwgPyAnbGVmdCcgOiAncmlnaHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0Rm9jdXNUYXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzTm9kZShuZXh0Rm9jdXNUYXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRmV0Y2ggYWxsIG5lY2Vzc2FyeSBkYXRhIGFuZCBlbnRlciBlZGl0IG1vZGUgKi9cbiAgICBfZW50ZXJFZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhlcmUncyBubyBzdXBwb3J0IGZvciBzZWFyY2hpbmcgaW4gbXVsdGktaW5wdXQsIHNvIGdyYWJiaW5nIGFsbCB3YXRjaGVyc1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIGluaXRpYWwgbG9hZGluZyBvZiBkYXRhIGluIGRhdGEgc291cmNlc1xuICAgICAgICB0aGlzLndhdGNoZXJEYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIHRoaXMuX2VkaXRNb2RlSW5pdFN1YiA9IHRoaXMud2F0Y2hlckRhdGFTb3VyY2Uub3BlbigpLnN1YnNjcmliZSgod2F0Y2hlcnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJzRm9yV2F0Y2hlcnNMaXN0ID0gd2F0Y2hlcnM7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFdhdGNoZXJzID0gdGhpcy5fYXBwcm92YWxQcm9jZXNzLndhdGNoZXJzO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRXYXRjaGVySWRzID0gdGhpcy5fc2VsZWN0ZWRXYXRjaGVycy5tYXAoKHcpID0+IHcuaWQpO1xuICAgICAgICAgICAgdGhpcy5faXNFZGl0TW9kZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsQXBwcm92YWxQcm9jZXNzID0gY2xvbmVEZWVwKHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fZWRpdE1vZGVJbml0U3ViKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZW5kIHVwZGF0ZSBhcHByb3ZhbCBwcm9jZXNzIGNhbGxzIHRvIERhdGFTb3VyY2UgYW5kIGV4aXQgZWRpdCBtb2RlKi9cbiAgICBfc2F2ZUVkaXRNb2RlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdE1vZGVJbml0U3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndhdGNoZXJEYXRhU291cmNlLmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5faW5pdGlhbEFwcHJvdmFsUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5faXNFZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9hcHByb3ZhbFByb2Nlc3MsXG4gICAgICAgICAgICB3YXRjaGVyczogdGhpcy5fc2VsZWN0ZWRXYXRjaGVyc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2J1aWxkVmlldyh1cGRhdGVkKTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodXBkYXRlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVzdG9yZSBpbml0aWFsIGFwcHJvdmFsIGZsb3cgc3RhdGUgYW5kIGV4aXQgZWRpdCBtb2RlICovXG4gICAgX2V4aXRFZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdE1vZGVJbml0U3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndhdGNoZXJEYXRhU291cmNlLmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzID0gY2xvbmVEZWVwKHRoaXMuX2luaXRpYWxBcHByb3ZhbFByb2Nlc3MhKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbEFwcHJvdmFsUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5faXNFZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3dhdGNoZXJzU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZElkczogQXBwcm92YWxVc2VyWydpZCddW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaWRzU2V0ID0gbmV3IFNldChzZWxlY3RlZElkcyk7XG4gICAgICAgIC8vIHVwZGF0aW5nIHdhdGNoZXJzIHNlbGVjdGlvblxuICAgICAgICAvLyBzaW5jZSBpdCdzIHBvc3NpYmxlIFwiX3VzZXJzRm9yV2F0Y2hlcnNMaXN0XCIgbWlnaHQgbm90IGNvbnRhaW4gYWxsIHNlbGVjdGVkIHZhbHVlcyxcbiAgICAgICAgLy8gZGV0ZXJtaW5lIGN1cnJlbnQgc2VsZWN0aW9uIGJhc2VkIG9uIHdoYXQncyBhbHJlYWR5IHNlbGVjdGVkIGFuZCBcIl91c2Vyc0ZvcldhdGNoZXJzTGlzdFwiXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkV2F0Y2hlcnMgPSB1bmlxQnkoXG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFdhdGNoZXJzLmNvbmNhdCh0aGlzLl91c2Vyc0ZvcldhdGNoZXJzTGlzdCkuZmlsdGVyKCh1c2VyKSA9PiBpZHNTZXQuaGFzKHVzZXIuaWQpKSxcbiAgICAgICAgICAgICh1KSA9PiB1LmlkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVzdG9yZSBwcmV2aW91c2x5IHNhdmVkIGFwcHJvdmFsIHByb2Nlc3Mgc3RhdGUgKi9cbiAgICBfdW5kb0xhc3RBY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2VzcyA9IGNsb25lRGVlcCh0aGlzLl9wcmV2aW91c0FwcHJvdmFsUHJvY2VzcyEpO1xuICAgICAgICB0aGlzLl9wcmV2aW91c0FwcHJvdmFsUHJvY2VzcyA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBPcGVuIGFkZCBub2RlIGRpYWxvZyAqL1xuICAgIF9hZGROb2RlKHNvdXJjZTogQXBwcm92YWxHcmFwaE5vZGUsIHR5cGU6IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2hvd05vZGVUeXBlU2VsZWN0ID0gdHlwZSA9PT0gJ2JlZm9yZScgJiYgIXNvdXJjZS5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlQWRkUGFyYWxsZWw7XG5cbiAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuPEFkZE5vZGVEaWFsb2dSZWZEYXRhPihcbiAgICAgICAgICAgIEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBub2RlVGFyZ2V0OiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICBzaG93Tm9kZVR5cGVTZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IE9iamVjdC5hc3NpZ24oZ2V0QmxhbmtBcHByb3ZhbEdyYXBoTm9kZSgpLCB7IGJsYW5rOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tEdWVEYXRlOiB0aGlzLmNoZWNrRHVlRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmYXVsdERpYWxvZ09wdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5faW5qZWN0b3JcbiAgICAgICAgKTtcblxuICAgICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBBZGROb2RlRGlhbG9nRm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBub2RlLCBub2RlVHlwZSwgdG9OZXh0U2VyaWFsIH0gPSBkYXRhO1xuXG4gICAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhY2hlQ3VycmVudEFwcHJvdmFsUHJvY2VzcygpO1xuXG4gICAgICAgICAgICBub2RlLmlkID0gYHRlbXBJZCR7KE1hdGgucmFuZG9tKCkgKiAxMDAwKS50b0ZpeGVkKCl9YDtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbnRlckVkaXRNb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVUeXBlID09PSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMuU0VSSUFMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhcmdldHMgPSBbc291cmNlLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcGxhY2VUYXJnZXRzKHNvdXJjZS5pZCwgW25vZGUuaWRdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzQWRkaW5nUGFyYWxsZWxOb2RlKG5vZGUsIHNvdXJjZSwgdG9OZXh0U2VyaWFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYmVmb3JlLWFsbCc6XG4gICAgICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0cyA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbMF0ubm9kZXMubWFwKChfbm9kZSkgPT4gX25vZGUuaWQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgbm9kZS50YXJnZXRzID0gc291cmNlLnRhcmdldHM7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZS50YXJnZXRzID0gW25vZGUuaWRdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FmdGVyLWFsbCc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UGFyZW50cyA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbc291cmNlLnRhcmdldHNbMF1dPy5wYXJlbnRzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRQYXJlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnRhcmdldHMgPSBzb3VyY2UudGFyZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcGxhY2VUYXJnZXRzKHNvdXJjZS5pZCwgW25vZGUuaWRdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzID0gdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX25vZGUpID0+IF9ub2RlLmlkICE9PSBzb3VyY2UuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncmFwaC5jb2x1bW5zW3RoaXMuX2dyYXBoLmNvbHVtbnMubGVuZ3RoIC0gMV0ubm9kZXMuZm9yRWFjaCgoX25vZGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX25vZGUudGFyZ2V0cy5wdXNoKG5vZGUuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhcmFsbGVsJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0FkZGluZ1BhcmFsbGVsTm9kZShub2RlLCBzb3VyY2UsIHRvTmV4dFNlcmlhbCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zaG93TWVzc2FnZShub2RlLmFwcHJvdmFsVGVhbUlkID8gJ3RlYW1BZGRTdWNjZXNzJyA6ICdhcHByb3ZlckFkZFN1Y2Nlc3MnKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5wdXNoKG5vZGUpO1xuXG4gICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICAgICAgICAgIHRoaXMuX29uTm9kZUFkZChub2RlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT3BlbiBlZGl0IG5vZGUgZGlhbG9nICovXG4gICAgX2VkaXROb2RlKG5vZGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2cgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48QWRkTm9kZURpYWxvZ1JlZkRhdGE+KFxuICAgICAgICAgICAgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGlzRWRpdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZTogT2JqZWN0LmFzc2lnbih7fSwgbm9kZSksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVlRGF0ZTogdGhpcy5jaGVja0R1ZURhdGUsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHREaWFsb2dPcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBub2RlOiBBcHByb3ZhbE5vZGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZE5vZGUgPSBkYXRhPy5ub2RlO1xuXG4gICAgICAgICAgICBpZiAoIXVwZGF0ZWROb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU5vZGUodXBkYXRlZE5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fc2hvd01lc3NhZ2UoJ25vZGVFZGl0Jyk7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICAgICAgICAgIHRoaXMuX29uTm9kZUVkaXQobm9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFwiRGVsZXRlXCIgYnV0dG9uIGNsaWNrIGhhbmRsZXIgKi9cbiAgICBfb25Ob2RlRGVsZXRlKG5vZGVUb0RlbGV0ZTogQXBwcm92YWxOb2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhY2hlQ3VycmVudEFwcHJvdmFsUHJvY2VzcygpO1xuICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5vZGVUb0RlbGV0ZSk7XG4gICAgICAgIHRoaXMuX3Nob3dNZXNzYWdlKG5vZGVUb0RlbGV0ZS5hcHByb3ZhbFRlYW1JZCA/ICd0ZWFtUmVtb3ZlJyA6ICdub2RlUmVtb3ZlJyk7XG4gICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlbGV0ZVNlbGVjdGVkTm9kZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhY2hlQ3VycmVudEFwcHJvdmFsUHJvY2VzcygpO1xuXG4gICAgICAgIGNvbnN0IG5vZGVzVG9EZWxldGUgPSB0aGlzLl9ub2RlQ29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbHRlcigobm9kZUNvbXBvbmVudCkgPT4gbm9kZUNvbXBvbmVudC5faXNTZWxlY3RlZClcbiAgICAgICAgICAgIC5tYXAoKG5vZGVDb21wb25lbnQpID0+IG5vZGVDb21wb25lbnQubm9kZSk7XG5cbiAgICAgICAgbm9kZXNUb0RlbGV0ZS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRWaWV3KHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3Nob3dNZXNzYWdlKCdub2Rlc1JlbW92ZScpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE5vZGUgZHJhZyBtb3ZlIGhhbmRsZXIsIHVzZWQgdG8gY2hlY2sgaWYgbmVlZCB0byBoaWdobGlnaHQgYSBkcm9wIHpvbmUgcmVjdGFuZ2xlICovXG4gICAgX29uTm9kZURyYWdNb3ZlZChub2RlOiBBcHByb3ZhbEdyYXBoTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnZ2VkTm9kZURpbWVuc2lvbnMgPSB0aGlzLl9ub2RlQ29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbmQoKGNvbXApID0+IGNvbXAubm9kZSA9PT0gbm9kZSlcbiAgICAgICAgICAgID8uX25hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFkcmFnZ2VkTm9kZURpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25vZGVDb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5ub2RlICE9PSBub2RlICYmIEJvb2xlYW4oY29tcG9uZW50Ll9kcm9wWm9uZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5fY2hlY2tJZk5vZGVEcmFnZ2VkSW5Ecm9wWm9uZShkcmFnZ2VkTm9kZURpbWVuc2lvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb2N1c05vZGUobm9kZTogQXBwcm92YWxHcmFwaE5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9kZVRvRm9jdXMgPSB0aGlzLl9ub2RlQ29tcG9uZW50cy5maW5kKChjb21wKSA9PiBjb21wLm5vZGUgPT09IG5vZGUpO1xuXG4gICAgICAgIGlmICghbm9kZVRvRm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3ZlQ29sSW5WaWV3KG5vZGUuY29sSW5kZXggPz8gMCk7XG4gICAgICAgIG5vZGVUb0ZvY3VzLl9mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTm9kZSBkcm9wIGhhbmRsZXIgKi9cbiAgICBfb25Ob2RlRHJvcChub2RlVG9Ecm9wOiBBcHByb3ZhbEdyYXBoTm9kZSwgZHJhZzogQ2RrRHJhZyk6IHZvaWQge1xuICAgICAgICBkcmFnLnJlc2V0KCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5fZHJhZ0Ryb3BJblByb2dyZXNzID0gZmFsc2UpKTtcblxuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gdGhpcy5fbm9kZUNvbXBvbmVudHMuZmluZCgobikgPT4gbi5faXNBbnlEcm9wWm9uZUFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKCFkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTtcblxuICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSBkcm9wVGFyZ2V0Ll9hY3RpdmVEcm9wWm9uZXNbMF0ucGxhY2VtZW50O1xuXG4gICAgICAgIHRoaXMuX25vZGVDb21wb25lbnRzLmZvckVhY2goKG4pID0+IG4uX2RlYWN0aXZhdGVEcm9wWm9uZXMoKSk7XG5cbiAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2FmdGVyJykge1xuICAgICAgICAgICAgdGhpcy5fZGVsZXRlTm9kZShub2RlVG9Ecm9wKTtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuXG4gICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IGdldEdyYXBoTm9kZXModGhpcy5fZ3JhcGgpLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IGRyb3BUYXJnZXQubm9kZS50YXJnZXRzWzBdKTtcblxuICAgICAgICAgICAgaWYgKG5leHROb2RlPy5ibGFuaykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZU5vZGUobmV4dE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlVG9Ecm9wLnRhcmdldHMgPVxuICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBkcm9wVGFyZ2V0Lm5vZGUuaWQpPy50YXJnZXRzID8/IFtdO1xuICAgICAgICAgICAgZHJvcFRhcmdldC5ub2RlLnRhcmdldHMgPSBbbm9kZVRvRHJvcC5pZF07XG5cbiAgICAgICAgICAgIHRoaXMuX2ZpbmlzaERyYWdEcm9wUHJvY2Vzcyhub2RlVG9Ecm9wKTtcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT09ICdiZWZvcmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2cgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oQXBwcm92YWxGbG93U2VsZWN0VHlwZUNvbXBvbmVudCwgdW5kZWZpbmVkLCB0aGlzLl9pbmplY3Rvcik7XG5cbiAgICAgICAgICAgIGRpYWxvZy5hZnRlckNsb3NlZC5zdWJzY3JpYmUoKGRhdGE6IFNlbGVjdFR5cGVEaWFsb2dGb3JtRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlLCB0b05leHRTZXJpYWwgfSA9IGRhdGE7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5vZGVUb0Ryb3ApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVwbGFjZVRhcmdldHMoZHJvcFRhcmdldC5ub2RlLmlkLCBbbm9kZVRvRHJvcC5pZF0pO1xuICAgICAgICAgICAgICAgICAgICBub2RlVG9Ecm9wLnRhcmdldHMgPSBbZHJvcFRhcmdldC5ub2RlLmlkXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NBZGRpbmdQYXJhbGxlbE5vZGUobm9kZVRvRHJvcCwgZHJvcFRhcmdldC5ub2RlLCB0b05leHRTZXJpYWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaERyYWdEcm9wUHJvY2Vzcyhub2RlVG9Ecm9wKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PT0gJ2JlZm9yZS1hbGwnKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5vZGVUb0Ryb3ApO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENvbHVtbk5vZGVzID0gdGhpcy5fZ3JhcGguY29sdW1uc1swXS5ub2RlcztcbiAgICAgICAgICAgIG5vZGVUb0Ryb3AudGFyZ2V0cyA9IGZpcnN0Q29sdW1uTm9kZXMubWFwKChub2RlKSA9PiBub2RlLmlkKTtcblxuICAgICAgICAgICAgdGhpcy5fZmluaXNoRHJhZ0Ryb3BQcm9jZXNzKG5vZGVUb0Ryb3ApO1xuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PT0gJ2FmdGVyLWFsbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGV0ZU5vZGUobm9kZVRvRHJvcCk7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcblxuICAgICAgICAgICAgbm9kZVRvRHJvcC50YXJnZXRzID0gWy4uLmRyb3BUYXJnZXQubm9kZS50YXJnZXRzXTtcblxuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQubm9kZS50YXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RDb2x1bW5Ob2RlcyA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbdGhpcy5fZ3JhcGguY29sdW1ucy5sZW5ndGggLSAxXS5ub2RlcztcbiAgICAgICAgICAgICAgICBsYXN0Q29sdW1uTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS50YXJnZXRzLnB1c2gobm9kZVRvRHJvcC5pZCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMgPSB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobm9kZSkgPT4gbm9kZS5pZCAhPT0gZHJvcFRhcmdldC5ub2RlLmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXBsYWNlVGFyZ2V0cyhkcm9wVGFyZ2V0Lm5vZGUuaWQsIFtub2RlVG9Ecm9wLmlkXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2ZpbmlzaERyYWdEcm9wUHJvY2Vzcyhub2RlVG9Ecm9wKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW92ZUNvbEluVmlldyhjb2xJbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbltjb2xJbmRleF0uZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB4OiBub2RlWCwgd2lkdGggfSA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgZGVsdGEgPSB0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueDtcblxuICAgICAgICBjb25zdCBsZWZ0ID0gbm9kZVggLSBkZWx0YTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG5cbiAgICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArIGxlZnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0ID4gdGhpcy5fZ3JhcGhFbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRTY3JvbGxQb3NpdGlvbihcbiAgICAgICAgICAgICAgICB0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArIHJpZ2h0IC0gdGhpcy5fZ3JhcGhFbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maW5pc2hEcmFnRHJvcFByb2Nlc3Mobm9kZVRvRHJvcDogQXBwcm92YWxHcmFwaE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzLnB1c2gobm9kZVRvRHJvcCk7XG4gICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvd01lc3NhZ2UodHlwZTogQXBwcm92YWxGbG93TWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbeyB0eXBlIH1dO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEJ1aWxkIEFwcHJvdmFsIEZsb3cgZ3JhcGggYW5kIHJlbmRlciBpdCAqL1xuICAgIHByaXZhdGUgX2J1aWxkVmlldyhhcHByb3ZhbFByb2Nlc3M6IEFwcHJvdmFsUHJvY2Vzcyk6IHZvaWQge1xuICAgICAgICBpZiAoIWFwcHJvdmFsUHJvY2Vzcy5ub2Rlcykge1xuICAgICAgICAgICAgYXBwcm92YWxQcm9jZXNzLm5vZGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcHByb3ZhbFByb2Nlc3Mud2F0Y2hlcnMpIHtcbiAgICAgICAgICAgIGFwcHJvdmFsUHJvY2Vzcy53YXRjaGVycyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2VzcyA9IGFwcHJvdmFsUHJvY2VzcztcbiAgICAgICAgdGhpcy5fZ3JhcGggPSBnZW5lcmF0ZUFwcHJvdmFsRmxvd0dyYXBoKHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcyk7XG5cbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlU3BhY2VOb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9ncmFwaC5jb2x1bW5zID0gdGhpcy5yZW1vdmVTcGFjZU5vZGVzRnJvbUNvbHVtbnModGhpcy5fZ3JhcGguY29sdW1ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZ3JhcGguZXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TWVzc2FnZSgnZXJyb3InKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2dyYXBoTWV0YWRhdGEgPSBnZW5lcmF0ZUFwcHJvdmFsRmxvd0dyYXBoTWV0YWRhdGEodGhpcy5fZ3JhcGgpO1xuXG4gICAgICAgIGNvbnN0IG5vZGVzID0gZ2V0R3JhcGhOb2Rlcyh0aGlzLl9ncmFwaCk7XG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2RlcyA9IG5vZGVzLmZpbHRlcigobm9kZSkgPT4gIW5vZGUuc3BhY2UpO1xuICAgICAgICB0aGlzLl9tdWx0aXBsZVJvb3ROb2RlcyA9IG5vZGVzLmZpbHRlcigobm9kZSkgPT4gdGhpcy5fZ3JhcGhNZXRhZGF0YVtub2RlLmlkXS5pc1Jvb3QpLmxlbmd0aCA+IDE7XG4gICAgICAgIHRoaXMuX211bHRpcGxlRmluYWxOb2RlcyA9IG5vZGVzLmZpbHRlcigobm9kZSkgPT4gdGhpcy5fZ3JhcGhNZXRhZGF0YVtub2RlLmlkXS5pc0ZpbmFsKS5sZW5ndGggPiAxO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX2dyaWRMaXN0Py5jbGVhclNlbGVjdGlvbigpO1xuXG4gICAgICAgIGlmICghdGhpcy5faXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2Nyb2xsUG9zaXRpb24oMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gd2luZG93IHJlc2l6ZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgbWVyZ2UoZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLCBmcm9tRXZlbnQodGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJykpXG4gICAgICAgICAgICAgICAgLnBpcGUodGhyb3R0bGVUaW1lKDUwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBVcGRhdGUgbm9kZSBvYmplY3QgaW4gbG9jYWwgYXBwcm92YWwgcHJvY2VzcyBkYXRhIHN0cnVjdHVyZSAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZU5vZGUobm9kZTogQXBwcm92YWxOb2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5maW5kSW5kZXgoKG4pID0+IG4uaWQgPT09IG5vZGUuaWQpO1xuXG4gICAgICAgIGlmIChub2RlSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzW25vZGVJbmRleF0gPSBub2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVsZXRlIG5vZGUgb2JqZWN0IGluIGxvY2FsIGFwcHJvdmFsIHByb2Nlc3MgZGF0YSBzdHJ1Y3R1cmUgKi9cbiAgICBwcml2YXRlIF9kZWxldGVOb2RlKG5vZGVUb0RlbGV0ZTogQXBwcm92YWxOb2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGVzVG9EZWxldGUgPSBbbm9kZVRvRGVsZXRlXTtcbiAgICAgICAgY29uc3QgZ3JhcGhOb2RlcyA9IGdldEdyYXBoTm9kZXModGhpcy5fZ3JhcGgpO1xuICAgICAgICBsZXQgY3Vyck5vZGUgPSBncmFwaE5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IG5vZGVUb0RlbGV0ZS5pZCk7XG4gICAgICAgIGxldCBuZXh0Tm9kZTogQXBwcm92YWxHcmFwaE5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKGN1cnJOb2RlPy50YXJnZXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5leHROb2RlID0gZ3JhcGhOb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBjdXJyTm9kZT8udGFyZ2V0c1swXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGU/LmJsYW5rICYmIHRoaXMuX2dyYXBoTWV0YWRhdGFbbmV4dE5vZGUuaWRdLnBhcmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzVG9EZWxldGUucHVzaChuZXh0Tm9kZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3Vyck5vZGUgPSBuZXh0Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGUgPSBncmFwaE5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IGN1cnJOb2RlPy50YXJnZXRzWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKG5leHROb2RlPy5ibGFuayAmJiB0aGlzLl9ncmFwaE1ldGFkYXRhW25leHROb2RlLmlkXS5wYXJlbnRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtub2RlVG9EZWxldGUuaWRdLnBhcmVudHNbMF07XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IG5vZGVUb0RlbGV0ZS50YXJnZXRzWzBdO1xuICAgICAgICBjb25zdCBpc1BhcmVudFBhcmFsbGVsU3RhcnQgPSB0aGlzLl9ncmFwaE1ldGFkYXRhW3BhcmVudD8uaWRdPy5wYXJhbGxlbFN0YXJ0O1xuICAgICAgICBjb25zdCBpc1RhcmdldFBhcmFsbGVsRW5kID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVt0YXJnZXRdPy5wYXJhbGxlbEVuZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0cyA9XG4gICAgICAgICAgICAoaXNQYXJlbnRQYXJhbGxlbFN0YXJ0ICYmIGlzVGFyZ2V0UGFyYWxsZWxFbmQpIHx8IG5vZGVzVG9EZWxldGUubGVuZ3RoID4gMSA/IFtdIDogKGN1cnJOb2RlPy50YXJnZXRzID8/IFtdKTtcblxuICAgICAgICB0aGlzLl9yZXBsYWNlVGFyZ2V0cyhub2RlVG9EZWxldGUuaWQsIHRhcmdldHMpO1xuXG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2RlcyA9IHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5maWx0ZXIoKG5vZGUpID0+ICFub2Rlc1RvRGVsZXRlLmluY2x1ZGVzKG5vZGUpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZFBhcmFsbGVsVGFyZ2V0cyh0YXJnZXROb2RlSWQ6IHN0cmluZywgbm9kZUlkVG9BZGQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobm9kZSwgdGFyZ2V0Tm9kZUlkKSkge1xuICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0cy5wdXNoKG5vZGVJZFRvQWRkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgXCJpZFRvUmVwbGFjZVwiIGluIGFsbCBub2RlcycgXCJ0YXJnZXRzXCIgd2l0aCBvbmVzIGluIFwicmVwbGFjZVdpdGhcIiBhcnJheSAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VUYXJnZXRzKElkVG9SZXBsYWNlOiBzdHJpbmcsIHJlcGxhY2VXaXRoSWQ6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOb2RlVGFyZ2V0c0luY2x1ZGVJZChuLCBJZFRvUmVwbGFjZSkpIHtcbiAgICAgICAgICAgICAgICBuLnRhcmdldHMgPSBuLnRhcmdldHMuZmlsdGVyKChfaWQpID0+IF9pZCAhPT0gSWRUb1JlcGxhY2UpO1xuICAgICAgICAgICAgICAgIG4udGFyZ2V0cy5wdXNoKC4uLnJlcGxhY2VXaXRoSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTYXZlIGN1cnJlbnQgc3RhdGUgb2YgYXBwcm92YWwgcHJvY2VzcyBkYXRhIHRvIGJlIGFibGUgdG8gdW5kbyBhbiBhY3Rpb24gbWFkZSBpbiBlZGl0IG1vZGUgKi9cbiAgICBwcml2YXRlIF9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQXBwcm92YWxQcm9jZXNzID0gY2xvbmVEZWVwKHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROZXh0SG9yaXpvbnRhbE5vZGUgPSAoXG4gICAgICAgIG5vZGVJbmRleDogbnVtYmVyLFxuICAgICAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgICAgICBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCdcbiAgICApOiBBcHByb3ZhbEdyYXBoTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4RGlmZiA9IGRpcmVjdGlvbiA9PT0gJ3JpZ2h0JyA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgbmV4dENvbHVtbiA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbY29sdW1uSW5kZXggKyBpbmRleERpZmZdO1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IG5leHRDb2x1bW4/Lm5vZGVzW25vZGVJbmRleF07XG5cbiAgICAgICAgaWYgKCFuZXh0Tm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0Tm9kZS5ibGFuayB8fCBuZXh0Tm9kZS5zcGFjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldE5leHRIb3Jpem9udGFsTm9kZShub2RlSW5kZXgsIGNvbHVtbkluZGV4ICsgaW5kZXhEaWZmLCBkaXJlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5leHRWZXJ0aWNhbE5vZGUgPSAoXG4gICAgICAgIG5vZGVJbmRleDogbnVtYmVyLFxuICAgICAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgICAgICBkaXJlY3Rpb246ICd1cCcgfCAnZG93bidcbiAgICApOiBBcHByb3ZhbEdyYXBoTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4RGlmZiA9IGRpcmVjdGlvbiA9PT0gJ2Rvd24nID8gMSA6IC0xO1xuICAgICAgICBjb25zdCBjdXJyQ29sdW1uID0gdGhpcy5fZ3JhcGguY29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGNvbnN0IG5leHROb2RlID0gY3VyckNvbHVtbi5ub2Rlc1tub2RlSW5kZXggKyBpbmRleERpZmZdO1xuXG4gICAgICAgIGlmICghbmV4dE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dE5vZGUuYmxhbmsgfHwgbmV4dE5vZGUuc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXROZXh0VmVydGljYWxOb2RlKG5vZGVJbmRleCArIGluZGV4RGlmZiwgY29sdW1uSW5kZXgsIGRpcmVjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dE5vZGU7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2Nhcm91c2VsU3RlcFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCAvIHRoaXMuX2Nhcm91c2VsU3RlcHNDb3VudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2Nyb2xsRGlmZigpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuX2dyYXBoRWwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFwaEVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGggLSB0aGlzLl9ncmFwaEVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2Nhcm91c2VsU3RlcHNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGhFbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfY2Fyb3VzZWxTdGVwc0xlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCAvIHRoaXMuX2Nhcm91c2VsU3RlcFNpemUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9jYXJvdXNlbFN0ZXBzUmlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChcbiAgICAgICAgICAgICh0aGlzLl9zY3JvbGxEaWZmIC0gTWF0aC5yb3VuZCh0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCkpIC8gdGhpcy5fY2Fyb3VzZWxTdGVwU2l6ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2RlZmF1bHREaWFsb2dPcHRpb25zKCk6IERlZmF1bHREaWFsb2dPcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRlYW1EYXRhU291cmNlOiB0aGlzLnRlYW1EYXRhU291cmNlLFxuICAgICAgICAgICAgdXNlckRhdGFTb3VyY2U6IHRoaXMudXNlckRhdGFTb3VyY2UsXG4gICAgICAgICAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiB0aGlzLnVzZXJEZXRhaWxzVGVtcGxhdGUsXG4gICAgICAgICAgICBydGw6IHRoaXMuX3J0bFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluZFNlcmlhbE5vZGUoeUluZGV4PzogbnVtYmVyLCB0YXJnZXRzPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHRhcmdldElzUGFyZW50ID1cbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoeUluZGV4KSAmJlxuICAgICAgICAgICAgdGFyZ2V0cz8uc29tZSgodGFyZ2V0SWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlSW5kZXggPSB0aGlzLl9ncmFwaE1ldGFkYXRhW3RhcmdldElkXT8ubm9kZUluZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG5vZGVJbmRleCkgJiYgbm9kZUluZGV4ISA8PSB5SW5kZXghIC0gMTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXRJc1BhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldHMgPz8gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IHRhcmdldHM/LlswXSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kU2VyaWFsTm9kZSh5SW5kZXgsIHRhcmdldE5vZGU/LnRhcmdldHMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0FkZGluZ1BhcmFsbGVsTm9kZShcbiAgICAgICAgYWRkZWROb2RlOiBBcHByb3ZhbEdyYXBoTm9kZSxcbiAgICAgICAgc291cmNlTm9kZTogQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgICAgIHRvTmV4dFNlcmlhbCA9IGZhbHNlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGFkZGVkTm9kZS50YXJnZXRzID0gc291cmNlTm9kZS50YXJnZXRzO1xuXG4gICAgICAgIHRoaXMuX2FkZFBhcmFsbGVsVGFyZ2V0cyhzb3VyY2VOb2RlLmlkLCBhZGRlZE5vZGUuaWQpO1xuXG4gICAgICAgIGlmICh0b05leHRTZXJpYWwpIHtcbiAgICAgICAgICAgIGxldCB5SW5kZXggPSB0aGlzLl9ncmFwaE1ldGFkYXRhW3NvdXJjZU5vZGUuaWRdLm5vZGVJbmRleDtcbiAgICAgICAgICAgIGxldCB0YXJnZXRzID0gc291cmNlTm9kZS50YXJnZXRzO1xuXG4gICAgICAgICAgICBpZiAoeUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlTm9kZU1ldGFkYXRhID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtzb3VyY2VOb2RlLmlkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5Ob2RlcyA9IHRoaXMuX2dyYXBoLmNvbHVtbnM/Lltzb3VyY2VOb2RlTWV0YWRhdGEuY29sdW1uSW5kZXghXT8ubm9kZXM7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFBhcmFsbGVsTm9kZSA9IGNvbHVtbk5vZGVzLmZpbmQoKG5vZGUsIGluZGV4KSA9PiBpbmRleCA+IDAgJiYgIW5vZGUuc3BhY2UpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5leHRQYXJhbGxlbE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeUluZGV4ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtuZXh0UGFyYWxsZWxOb2RlLmlkXS5jb2x1bW5JbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cyA9IG5leHRQYXJhbGxlbE5vZGUudGFyZ2V0cztcblxuICAgICAgICAgICAgICAgICAgICBhZGRlZE5vZGUudGFyZ2V0cyA9IHRoaXMuX2ZpbmRTZXJpYWxOb2RlKHlJbmRleCwgdGFyZ2V0cyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhZGRlZE5vZGUudGFyZ2V0cyA9IHNvdXJjZU5vZGUudGFyZ2V0cztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZGVkTm9kZS50YXJnZXRzID0gdGhpcy5fZmluZFNlcmlhbE5vZGUoeUluZGV4LCB0YXJnZXRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBEYXRhU291cmNlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdWIgPSB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nU3RhdGVzID0gW3RoaXMudGVhbURhdGFTb3VyY2UsIHRoaXMudXNlckRhdGFTb3VyY2UsIHRoaXMud2F0Y2hlckRhdGFTb3VyY2VdXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChkcykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZShkcy5vbkRhdGFSZXF1ZXN0ZWQoKS5waXBlKG1hcFRvKHRydWUpKSwgZHMub25EYXRhUmVjZWl2ZWQoKS5waXBlKG1hcFRvKGZhbHNlKSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChkcy5pc0RhdGFMb2FkaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGxvYWRpbmdTdGF0ZXMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgobG9hZGluZ1N0YXRlcykgPT4gbG9hZGluZ1N0YXRlcy5zb21lKEJvb2xlYW4pKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzb21lTG9hZGluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzb21lTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlcXVlc3RlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWNlaXZlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHN1Yik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlbW92ZVNwYWNlTm9kZXNGcm9tQ29sdW1ucyhjb2x1bW5zOiBBcHByb3ZhbEdyYXBoQ29sdW1uW10pOiBBcHByb3ZhbEdyYXBoQ29sdW1uW10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnM6IEFwcHJvdmFsR3JhcGhDb2x1bW5bXSA9IFtdO1xuXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE5vZGVzID0gY29sdW1uLm5vZGVzLmZpbHRlcigobm9kZSkgPT4gIW5vZGUuc3BhY2UpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29sdW1uID0ge1xuICAgICAgICAgICAgICAgIC4uLmNvbHVtbiwgLy8gUHJlc2VydmUgb3RoZXIgcHJvcGVydGllcyBvZiB0aGUgY29sdW1uXG4gICAgICAgICAgICAgICAgbm9kZXM6IGZpbHRlcmVkTm9kZXMgLy8gVXNlIHRoZSBmaWx0ZXJlZCBsaXN0IG9mIG5vZGVzXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmaWx0ZXJlZENvbHVtbnMucHVzaCh1cGRhdGVkQ29sdW1uKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkQ29sdW1ucztcbiAgICB9XG59XG5cbmludGVyZmFjZSBEZWZhdWx0RGlhbG9nT3B0aW9ucyB7XG4gICAgdGVhbURhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlPEFwcHJvdmFsVGVhbT47XG4gICAgdXNlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG4gICAgdXNlckRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBydGw6IGJvb2xlYW47XG59XG4iLCI8bmctY29udGFpbmVyIGZkQ29tcGFjdD5cbiAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctbWVzc2FnZXNcbiAgICAgICAgWyhtZXNzYWdlcyldPVwiX21lc3NhZ2VzXCJcbiAgICAgICAgW3VuZG9MYXN0QWN0aW9uQXZhaWxhYmxlXT1cIiEhX3ByZXZpb3VzQXBwcm92YWxQcm9jZXNzXCJcbiAgICAgICAgKHVuZG9MYXN0QWN0aW9uKT1cIl91bmRvTGFzdEFjdGlvbigpXCJcbiAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy1tZXNzYWdlcz5cbiAgICA8ZmQtZ3JpZC1saXN0XG4gICAgICAgICNncmlkTGlzdFxuICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X190b29sYmFyXCJcbiAgICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiX2lzRWRpdE1vZGUgPyAnbXVsdGlTZWxlY3QnIDogJ25vbmUnXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJfb25Ob2RlU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGZkLWdyaWQtbGlzdC10aXRsZS1iYXIgW3RpdGxlXT1cInRpdGxlIHx8ICgncGxhdGZvcm1BcHByb3ZhbEZsb3cuZGVmYXVsdFRpdGxlJyB8IGZkVHJhbnNsYXRlKVwiPlxuICAgICAgICAgICAgPGZkLWdyaWQtbGlzdC10aXRsZS1iYXItc3BhY2VyPjwvZmQtZ3JpZC1saXN0LXRpdGxlLWJhci1zcGFjZXI+XG4gICAgICAgICAgICBAaWYgKGlzRWRpdEF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgW2dyYXBoXT1cIl9ncmFwaFwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE5vZGVzXT1cIl9zZWxlY3RlZE5vZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW2dyYXBoTWV0YWRhdGFdPVwiX2dyYXBoTWV0YWRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFZGl0TW9kZV09XCJfaXNFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIChlbnRlckVkaXRNb2RlKT1cIl9lbnRlckVkaXRNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICAoYWRkTm9kZSk9XCJfYWRkTm9kZSgkZXZlbnQubm9kZSwgJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAgICAgICAgICAgICAoZWRpdFNlbGVjdGVkTm9kZSk9XCJfZWRpdE5vZGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkZWxldGVTZWxlY3RlZE5vZGVzKT1cIl9kZWxldGVTZWxlY3RlZE5vZGVzKClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1ncmlkLWxpc3QtdGl0bGUtYmFyPlxuICAgICAgICBAaWYgKF9hcHByb3ZhbFByb2Nlc3Mud2F0Y2hlcnM/Lmxlbmd0aCB8fCBfaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X193YXRjaGVyc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwid2F0Y2hlcnNMYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3dfX3dhdGNoZXJzLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHdhdGNoZXJzTGFiZWwgfHwgKCdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5kZWZhdWx0V2F0Y2hlcnNMYWJlbCcgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgQGlmICghX2lzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAod2F0Y2hlciBvZiBfYXBwcm92YWxQcm9jZXNzLndhdGNoZXJzOyB0cmFjayBfdHJhY2tCeUZuKCRpbmRleCwgd2F0Y2hlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCJ3YXRjaGVyLmltZ1VybCB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIndhdGNoZXIubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2lyY2xlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdmF0YXJDbGlja2VkKT1cIl9vbldhdGNoZXJDbGljayh3YXRjaGVyLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3dfX3dhdGNoZXJzLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl91c2Vyc0ZvcldhdGNoZXJzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy53YXRjaGVyc0lucHV0UGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlVc2VyRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZuXT1cIl91c2VyVmFsdWVGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRXYXRjaGVySWRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfd2F0Y2hlcnNTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtbXVsdGktaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIV9ncmFwaC5lcnJvcnMpIHtcbiAgICAgICAgICAgIEBpZiAoX2dyYXBoLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X19jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3dfX2NvbnRhaW5lci0tZXh0cmEtcGFkZGluZy1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93X19jb250YWluZXItLWV4dHJhLXBhZGRpbmctZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfc2Nyb2xsRGlmZiA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LWNhcm91c2VsLWNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctY2Fyb3VzZWwtY29udHJvbHMtLWVkaXQtbW9kZV09XCJfaXNFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfY2Fyb3VzZWxTdGVwc0xlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctY2Fyb3VzZWwtY29udHJvbHNfX2J1dHRvbi0tcHJldi1zbGlkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5wcmV2QnV0dG9uQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0U2xpZGUoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIiduYXZpZ2F0aW9uLScgKyAoX3J0bCA/ICdyaWdodCcgOiAnbGVmdCcpICsgJy1hcnJvdydcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfY2Fyb3VzZWxTdGVwc0xlZnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2Nhcm91c2VsU3RlcHNSaWdodCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1jYXJvdXNlbC1jb250cm9sc19fYnV0dG9uLS1uZXh0LXNsaWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5leHRCdXR0b25BcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTbGlkZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX2Nhcm91c2VsU3RlcHNSaWdodCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIiduYXZpZ2F0aW9uLScgKyAoX3J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpICsgJy1hcnJvdydcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3dfX2dyYXBoLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3dfX2dyYXBoLWNvbnRhaW5lci0tbXVsdGlwbGUtcm9vdC1ub2Rlc109XCJfbXVsdGlwbGVSb290Tm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC1jb250YWluZXItLW11bHRpcGxlLWZpbmFsLW5vZGVzXT1cIl9tdWx0aXBsZUZpbmFsTm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNjcm9sbGJhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNncmFwaENvbnRhaW5lckVsXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X19ncmFwaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2dyYXBoRWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3dfX2dyYXBoLS1lZGl0LW1vZGVdPVwiX2lzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiBfZ3JhcGguY29sdW1uczsgdHJhY2sgY29sdW1uOyBsZXQgY29sdW1uSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgb2YgY29sdW1uLm5vZGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIF90cmFja0J5Rm4obm9kZUluZGV4LCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZUluZGV4ID0gJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhcHByb3ZhbEZsb3dOb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiX2lzQ2RrRHJhZ0Rpc2FibGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttZXRhXT1cIl9ncmFwaE1ldGFkYXRhW25vZGUuaWRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRWRpdF09XCJfaXNFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc05leHROb2RlQmxhbmtdPVwiX2lzTmV4dE5vZGVCbGFuayhub2RlLCBjb2x1bW5JbmRleCwgbm9kZUluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja0R1ZURhdGVdPVwiY2hlY2tEdWVEYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2R1ZURhdGVUaHJlc2hvbGRdPVwiZHVlRGF0ZVRocmVzaG9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW5kZXJBcnJvd109XCJjb2x1bW5JbmRleCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTm9kZXNJbkNvbHVtbkFwcHJvdmVkXT1cIiEhY29sdW1uLmFsbE5vZGVzQXBwcm92ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwcm92YWxTdGF0dXNUZW1wbGF0ZV09XCJhcHByb3ZhbFN0YXR1c1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c0NvbG9yTWFwcGluZ109XCJzdGF0dXNDb2xvck1hcHBpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BZGQpPVwiX2FkZE5vZGUobm9kZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkVkaXQpPVwiX2VkaXROb2RlKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRGVsZXRlKT1cIl9vbk5vZGVEZWxldGUobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25Ob2RlS2V5RG93bigkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIl9kcmFnRHJvcEluUHJvZ3Jlc3MgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJfb25Ob2RlRHJvcChub2RlLCAkZXZlbnQuc291cmNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwiX29uTm9kZURyYWdNb3ZlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRyaWNrIHdpdGggdXNpbmcgcHJvamVjdGlvbiB0byBtYWtlIGdyaWQgbGlzdCBpdGVtcyB2aXNpYmxlIGZvciB0aGUgZ3JpZCBsaXN0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtZ3JpZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIiEhbm9kZS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXBwcm92YWxGbG93Tm9kZS5hcHByb3ZhbEZsb3dOb2RlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sYmFyQ2xpY2tdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC1ub2RlLWlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvd19fZ3JhcGgtbm9kZS1pbm5lci0tZWRpdF09XCJfaXNFZGl0TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlc3MpPVwiX29uTm9kZUNsaWNrKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWdyaWQtbGlzdC1pdGVtLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFwcHJvdmFsRmxvd05vZGUuX292ZXJmbG93TWVudUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZ3JpZC1saXN0LWl0ZW0tdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1ncmlkLWxpc3QtaXRlbS1pbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5hcHByb3ZlcnMubGVuZ3RoID09PSAxID8gbm9kZS5hcHByb3ZlcnNbMF0uaW1nVXJsIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm5vZGUuYXBwcm92ZXJzLmxlbmd0aCA+IDEgPyBub2RlLmRlc2NyaXB0aW9uIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2lyY2xlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZkLWdyaWQtbGlzdC1pdGVtLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFwcHJvdmFsRmxvd05vZGUuX25vZGVDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtZ3JpZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZHAtYXBwcm92YWwtZmxvdy1ub2RlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZmlndXJlIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UgdHlwZT1cInNwb3RcIiBbc3ZnQ29uZmlnXT1cIl9lbXB0eUFwcHJvdmFsRmxvd1Nwb3RDb25maWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZpZ2NhcHRpb24gZmQtaWxsdXN0cmF0ZWQtbWVzc2FnZS1maWdjYXB0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmVtcHR5VGl0bGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC1pbGx1c3RyYXRlZC1tZXNzYWdlLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmVtcHR5SGludCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2ZpZ2NhcHRpb24+XG4gICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgPCEtLSBUT0RPICM1MTc4OiBSZXBsYWNlIHdpdGggaWxsdXN0cmF0ZWQgaW1hZ2UgY29tcG9uZW50IGFmdGVyIGl0IGdldHMgZml4ZWQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEyOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMjggMTI4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2FwSWxsdXMtU3BvdC1Ob0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNDEuNjE3OSwzMi43MTc0SDg0LjYyNzNhMSwxLDAsMCwxLC43MjMuMzA5Mmw3LjI0NDUsNy41ODI0LDcuNDgxNyw3Ljg0OTFhMSwxLDAsMCwxLC4yNzYxLjY5bC0uMDA0Niw1NS42MDY5YTQuMTAzOCw0LjEwMzgsMCwwLDEtLjg3ODcsMi4xMjEyQTQuMDU2NCw0LjA1NjQsMCwwLDEsOTguMSwxMDcuOTYzMWwtNTYuMzg1OC4wMzEzYTIuNjE2NywyLjYxNjcsMCwwLDEtMy4wODEyLTMuMjMwOWwtLjAxNTItNjkuMDU5NFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2FwSWxsdXNfUGF0dGVyblNoYWRvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZpbGxdPVwiJ3ZhcigtLXNhcElsbHVzX1BhdHRlcm5TaGFkb3cpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1Ljc5MjgsMjcuNDk4N0g3OC44MDIyYTEsMSwwLDAsMSwuNzIzLjMwOTJMODYuNzcsMzUuMzlsNy40ODE2LDcuODQ5MmExLDEsMCwwLDEsLjI3NjIuNjlsLS4wMDQ2LDU1LjYwNjlhMywzLDAsMCwxLTMsM0gzNS44MDhhMi45OTQ2LDIuOTk0NiwwLDAsMS0zLTIuOTkxM2MtLjAxLTEyLjA1NjQtLjA0MjMtNTcuMDExNi0uMDE1Mi02OS4wNTk1QTIuOTk0MywyLjk5NDMsMCwwLDEsMzUuNzkyOCwyNy40OTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXBJbGx1c19PYmplY3RGaWxsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5maWxsXT1cIid2YXIoLS1zYXBJbGx1c19PYmplY3RGaWxsQ29sb3IpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkzLjI5NzgsNDQuNTMzNUg3OC44MjA4YS45OTI1Ljk5MjUsMCwwLDEtLjk3NC0xLjAxVjI4LjUxMDhhLjk3Ljk3LDAsMCwxLDEuNjYyOC0uNzE0M0w5My45ODY1LDQyLjgwOTJBMS4wMTUxLDEuMDE1MSwwLDAsMSw5My4yOTc4LDQ0LjUzMzVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhcElsbHVzX0JyYW5kQ29sb3JTZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5maWxsXT1cIid2YXIoLS1zYXBJbGx1c19CcmFuZENvbG9yU2Vjb25kYXJ5KSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMDQuNjA4LDM4Ljk0ODVsNS45MTU3LTEuNzcyMWMxLjMyLS4zOTU0Ljc1ODQtMi41MjU4LS41Njg5LTIuMTI4MkwxMDQuMDM5MiwzNi44MmMtMS4zMi4zOTUzLS43NTg0LDIuNTI1OC41Njg4LDIuMTI4MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2FwSWxsdXNfTGF5ZXJpbmcxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZmlsbF09XCIndmFyKC0tc2FwSWxsdXNfTGF5ZXJpbmcxKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04NS4yOTczLDIxLjI0NjVsLjk3MTgtNS45MzMxYy4yMTU0LTEuMzE1MS0xLjc3Ny0xLjg4MDctMS45OTQxLS41NTU0bC0uOTcxOCw1LjkzMzJjLS4yMTU1LDEuMzE1MSwxLjc3NywxLjg4MDcsMS45OTQxLjU1NTNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhcElsbHVzX0xheWVyaW5nMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZpbGxdPVwiJ3ZhcigtLXNhcElsbHVzX0xheWVyaW5nMSknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOTUuMzAzNCwyOS4wMDE1YTEuMDEsMS4wMSwwLDAsMS0uNjgzNy0uMjY3LDEuMDc4MywxLjA3ODMsMCwwLDEtLjA4NjQtMS40OTMybDUuOTUxMS02Ljg4NTdhMS4wMSwxLjAxLDAsMCwxLDEuNDUzOC0uMDg4NCwxLjA3ODUsMS4wNzg1LDAsMCwxLC4wODY1LDEuNDkzMmwtNS45NTExLDYuODg1OEExLjAxNjQsMS4wMTY0LDAsMCwxLDk1LjMwMzQsMjkuMDAxNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2FwSWxsdXNfTGF5ZXJpbmcxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZmlsbF09XCIndmFyKC0tc2FwSWxsdXNfTGF5ZXJpbmcxKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05NC44NzQ3LDQyLjg4NjEsODAuMDg1NSwyNy40NjIzYTEuNTE1MiwxLjUxNTIsMCwwLDAtMS4wODg1LS40NjM2SDM1LjgwN2EzLjUwOSwzLjUwOSwwLDAsMC0zLjUxNDYsMy40ODM2Yy0uMDI5NCwxMy4yODU3LjAxMzcsNjYuNzU1OS4wMTU3LDY5LjAyNTdhMy41MDc2LDMuNTA3NiwwLDAsMCwzLjUxNDYsMy40ODk0SDkxLjc3MDlhMy41MTA2LDMuNTEwNiwwLDAsMCwzLjUxNDYtMy40OTgybC4wMDUtNTUuNTc4NUExLjQ5LDEuNDksMCwwLDAsOTQuODc0Nyw0Mi44ODYxWm0tMTYuMjEtMTQuODM1NWExLjE1LDEuMTUsMCwwLDEsLjI1NjEtLjAzMDksMS4wNCwxLjA0LDAsMCwxLC41MS4yMTM0bDE0LjI3NiwxNC44ODM3LjAxOTQuMDJhLjU4OTEuNTg5MSwwLDAsMSwuMDk2OC42MjUxYy0uMTAxNi4xNzY0LS40MDg2LjI0LS42OS4yNEw3OC44MzU1LDQ0YS42MDMxLjYwMzEsMCwwLDEtLjU0NzItLjYxMzFjLS4wMDg3LTQuOTU4OC0uMDE3LTkuOTAxNS0uMDAzNS0xNC44Njg5QS41MTg5LjUxODksMCwwLDEsNzguNjY0NiwyOC4wNTA2Wm0xMy4xMDYyLDczLjk1SDM1LjgxODhhMi41MDQ1LDIuNTA0NSwwLDAsMS0yLjUxMDctMi40OTFjLS4wMDItMi4yNjk0LS4wNDUxLTU1Ljc0LS4wMTU3LTY5LjAyNDhhMi41MDU0LDIuNTA1NCwwLDAsMSwyLjUxMDctMi40ODYxSDc3LjM2ODRhMS40OSwxLjQ5LDAsMCwwLS4wOTc2LjUxMDZWNDMuNDkzNEExLjUxNDUsMS41MTQ1LDAsMCwwLDc4Ljc4OTQsNDVINzguOTJMOTQuMjg2LDQ3Ljk3NDlsLS4wMDQ2LDUxLjUyNjlBMi41MDc0LDIuNTA3NCwwLDAsMSw5MS43NzA4LDEwMi4wMDA2WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXBJbGx1c19TdHJva2VEZXRhaWxDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZpbGxdPVwiJ3ZhcigtLXNhcElsbHVzX1N0cm9rZURldGFpbENvbG9yKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2ZkLWdyaWQtbGlzdD5cbiAgICBAaWYgKF9pc0VkaXRNb2RlKSB7XG4gICAgICAgIDxkaXYgZmQtYmFyPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuZWRpdE1vZGVTYXZlQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVNhdmVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zYXZlRWRpdE1vZGVDaGFuZ2VzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5lZGl0TW9kZUV4aXRCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUV4aXRCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0RWRpdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPlxuIl19","import { NgModule } from '@angular/core';\nimport { ApprovalFlowAddNodeComponent } from './approval-flow-add-node/approval-flow-add-node.component';\nimport { ApprovalFlowApproverDetailsComponent } from './approval-flow-approver-details/approval-flow-approver-details.component';\nimport { ApprovalFlowMessagesComponent } from './approval-flow-messages/approval-flow-messages.component';\nimport { ApprovalFlowDropZoneDirective } from './approval-flow-node/approval-flow-drop-zone.directive';\nimport { ApprovalFlowNodeComponent } from './approval-flow-node/approval-flow-node.component';\nimport { ApprovalFlowSelectTypeComponent } from './approval-flow-select-type/approval-flow-select-type.component';\nimport { ApprovalFlowTeamListComponent } from './approval-flow-team-list/approval-flow-team-list.component';\nimport { ApprovalFlowToolbarActionsComponent } from './approval-flow-toolbar-actions/approval-flow-toolbar-actions.component';\nimport { ApprovalFlowUserDetailsComponent } from './approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from './approval-flow-user-list/approval-flow-user-list.component';\nimport { ApprovalFlowComponent } from './approval-flow.component';\nimport * as i0 from \"@angular/core\";\nexport class PlatformApprovalFlowModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, imports: [ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowDropZoneDirective,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent], exports: [ApprovalFlowComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, imports: [ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowDropZoneDirective,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent\n ],\n exports: [ApprovalFlowComponent]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN2RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFrQmxFLE1BQU0sT0FBTywwQkFBMEI7OEdBQTFCLDBCQUEwQjsrR0FBMUIsMEJBQTBCLFlBZC9CLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsb0NBQW9DO1lBQ3BDLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0IsZ0NBQWdDO1lBQ2hDLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLDZCQUE2QjtZQUM3QixtQ0FBbUMsYUFFN0IscUJBQXFCOytHQUV0QiwwQkFBMEIsWUFkL0IscUJBQXFCO1lBQ3JCLHlCQUF5QjtZQUN6QixvQ0FBb0M7WUFDcEMsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixnQ0FBZ0M7WUFFaEMsNkJBQTZCO1lBQzdCLCtCQUErQjtZQUMvQiw2QkFBNkI7WUFDN0IsbUNBQW1DOzsyRkFJOUIsMEJBQTBCO2tCQWhCdEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLG9DQUFvQzt3QkFDcEMsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLCtCQUErQjt3QkFDL0IsNkJBQTZCO3dCQUM3QixtQ0FBbUM7cUJBQ3RDO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dNZXNzYWdlc0NvbXBvbmVudCB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy1tZXNzYWdlcy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy1ub2RlL2FwcHJvdmFsLWZsb3ctZHJvcC16b25lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dTZWxlY3RUeXBlQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlL2FwcHJvdmFsLWZsb3ctc2VsZWN0LXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93VG9vbGJhckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMvYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBBcHByb3ZhbEZsb3dDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd05vZGVDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1NlbGVjdFR5cGVDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd01lc3NhZ2VzQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9uc0NvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW0FwcHJvdmFsRmxvd0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1BcHByb3ZhbEZsb3dNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLWFwcHJvdmFsLWZsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLWFwcHJvdmFsLWZsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1","i2.ApprovalFlowAddNodeViewService","i3","defaultId","i2"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-approval-flow.mjs","sources":["../tmp-esm2022/approval-flow/helpers/index.js","../tmp-esm2022/approval-flow/approval-flow-graph.js","../tmp-esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.js","../tmp-esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.js","../tmp-esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.js","../tmp-esm2022/approval-flow/services/approval-flow-add-node-view.service.js","../tmp-esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.js","../tmp-esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.js","../tmp-esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.js","../tmp-esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.js","../tmp-esm2022/approval-flow/approval-flow-node/approval-flow-node.component.js","../tmp-esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.js","../tmp-esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.js","../tmp-esm2022/approval-flow/approval-flow.component.js","../tmp-esm2022/approval-flow/approval-flow.module.js","../tmp-esm2022/approval-flow/fundamental-ngx-platform-approval-flow.js"],"sourcesContent":["/** @hidden */\nexport function isNodeApproved(node) {\n return node.status === 'approved';\n}\n/** @hidden */\nexport function isNodeStarted(node) {\n return node.status !== 'not started';\n}\n/** @hidden */\nexport function displayTeamFn(team) {\n return team?.name;\n}\n/** @hidden */\nexport function displayUserFn(user) {\n return user?.name;\n}\n/** @hidden */\nexport function userValueFn(user) {\n return user?.id;\n}\n/** @hidden */\nexport function filterByName(obj, searchString) {\n return obj.name.toLowerCase().indexOf(searchString.toLowerCase()) > -1;\n}\n/** @hidden */\nexport function trackByFn(index, item) {\n return item?.id ?? index;\n}\n/** @hidden */\nexport function getGraphNodes(graph) {\n return graph.columns.reduce((acc, column) => acc.concat(column.nodes), []);\n}\n/** @hidden */\nexport function getParentNodes(node, nodes) {\n return nodes.filter((_node) => isNodeTargetsIncludeId(_node, node.id));\n}\n/** @hidden */\nexport function getBlankApprovalGraphNode() {\n return {\n id: `blankId${(Math.random() * 1000).toFixed()}`,\n name: '',\n targets: [],\n approvers: [],\n status: 'not started',\n blank: true\n };\n}\n/** @hidden */\nexport function getSpaceApprovalGraphNode() {\n return {\n id: `spaceId${(Math.random() * 1000).toFixed()}`,\n name: '',\n targets: [],\n approvers: [],\n status: 'not started',\n space: true\n };\n}\n/** @hidden */\nexport function isNodeTargetsIncludeId(node, id) {\n return node.targets.includes(id);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxjQUFjO0FBQ2QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFrQjtJQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFrQjtJQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDO0FBQ3pDLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFrQjtJQUM1QyxPQUFPLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEIsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWtCO0lBQzVDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQztBQUN0QixDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBa0I7SUFDMUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFxQixFQUFFLFlBQW9CO0lBQ3BFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFvQjtJQUN6RCxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDO0FBQzdCLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUF3QjtJQUNsRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQXVCLEVBQUUsQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFrQixFQUFFLEtBQXFCO0lBQ3BFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLHlCQUF5QjtJQUNyQyxPQUFPO1FBQ0gsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxFQUFFLEVBQUU7UUFDUixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsTUFBTSxFQUFFLGFBQWE7UUFDckIsS0FBSyxFQUFFLElBQUk7S0FDZCxDQUFDO0FBQ04sQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUseUJBQXlCO0lBQ3JDLE9BQU87UUFDSCxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNoRCxJQUFJLEVBQUUsRUFBRTtRQUNSLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLEVBQUU7UUFDYixNQUFNLEVBQUUsYUFBYTtRQUNyQixLQUFLLEVBQUUsSUFBSTtLQUNkLENBQUM7QUFDTixDQUFDO0FBRUQsY0FBYztBQUNkLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFrQixFQUFFLEVBQVU7SUFDakUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwcm92YWxGbG93R3JhcGggfSBmcm9tICcuLi9hcHByb3ZhbC1mbG93LWdyYXBoJztcbmltcG9ydCB7IEFwcHJvdmFsR3JhcGhOb2RlLCBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlQXBwcm92ZWQobm9kZTogQXBwcm92YWxOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuc3RhdHVzID09PSAnYXBwcm92ZWQnO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVN0YXJ0ZWQobm9kZTogQXBwcm92YWxOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuc3RhdHVzICE9PSAnbm90IHN0YXJ0ZWQnO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlUZWFtRm4odGVhbTogQXBwcm92YWxUZWFtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGVhbT8ubmFtZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5VXNlckZuKHVzZXI6IEFwcHJvdmFsVXNlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVzZXI/Lm5hbWU7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlclZhbHVlRm4odXNlcjogQXBwcm92YWxVc2VyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXNlcj8uaWQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlOYW1lKG9iajogeyBuYW1lOiBzdHJpbmcgfSwgc2VhcmNoU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSA+IC0xO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmcgfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkID8/IGluZGV4O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdyYXBoTm9kZXMoZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoKTogQXBwcm92YWxHcmFwaE5vZGVbXSB7XG4gICAgcmV0dXJuIGdyYXBoLmNvbHVtbnMucmVkdWNlKChhY2MsIGNvbHVtbikgPT4gYWNjLmNvbmNhdChjb2x1bW4ubm9kZXMpLCA8QXBwcm92YWxHcmFwaE5vZGVbXT5bXSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZXMobm9kZTogQXBwcm92YWxOb2RlLCBub2RlczogQXBwcm92YWxOb2RlW10pOiBBcHByb3ZhbE5vZGVbXSB7XG4gICAgcmV0dXJuIG5vZGVzLmZpbHRlcigoX25vZGUpID0+IGlzTm9kZVRhcmdldHNJbmNsdWRlSWQoX25vZGUsIG5vZGUuaWQpKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCbGFua0FwcHJvdmFsR3JhcGhOb2RlKCk6IEFwcHJvdmFsR3JhcGhOb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogYGJsYW5rSWQkeyhNYXRoLnJhbmRvbSgpICogMTAwMCkudG9GaXhlZCgpfWAsXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICB0YXJnZXRzOiBbXSxcbiAgICAgICAgYXBwcm92ZXJzOiBbXSxcbiAgICAgICAgc3RhdHVzOiAnbm90IHN0YXJ0ZWQnLFxuICAgICAgICBibGFuazogdHJ1ZVxuICAgIH07XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BhY2VBcHByb3ZhbEdyYXBoTm9kZSgpOiBBcHByb3ZhbEdyYXBoTm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGBzcGFjZUlkJHsoTWF0aC5yYW5kb20oKSAqIDEwMDApLnRvRml4ZWQoKX1gLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgdGFyZ2V0czogW10sXG4gICAgICAgIGFwcHJvdmVyczogW10sXG4gICAgICAgIHN0YXR1czogJ25vdCBzdGFydGVkJyxcbiAgICAgICAgc3BhY2U6IHRydWVcbiAgICB9O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobm9kZTogQXBwcm92YWxOb2RlLCBpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUudGFyZ2V0cy5pbmNsdWRlcyhpZCk7XG59XG4iXX0=","import { getBlankApprovalGraphNode, getGraphNodes, getParentNodes, getSpaceApprovalGraphNode, isNodeApproved, isNodeStarted, isNodeTargetsIncludeId } from './helpers';\n/** Algorithm in short:\n * 1. Find all possible paths (longest path length = amount of the columns in the graph)\n * 2. Trim paths (remove blank nodes at the end of the paths)\n * 3. Make all paths the same length (= longest path length) to make every unique node be present at the same index across all paths\n * 4. Sort paths by their likeness between each other to avoid paths crossing\n * 5. Remove \"duplicate\" nodes in paths (make every unique node be present only once across all paths)\n * 6. Remove empty paths\n * 7. Transform paths into the columns\n * 8. Trim columns (remove space nodes at the end of columns)\n * 9. Remove columns which contain only blank and empty nodes\n * 10. Transform columns into the graph columns\n */\nexport function generateApprovalFlowGraph(nodes) {\n const graph = { columns: [], errors: false };\n if (!nodes.length) {\n return graph;\n }\n const rootNodes = findRootNodes(nodes);\n const finalNodes = findFinalNodes(nodes);\n if (!rootNodes.length || !finalNodes.length) {\n console.warn(`Err: Not possible to build graph because root or final nodes aren't present!`);\n graph.errors = true;\n return graph;\n }\n const paths = getPaths(rootNodes, nodes);\n if (!paths.length) {\n console.warn('Err: Not possible to build graph!');\n graph.errors = true;\n return graph;\n }\n const trimmedPaths = trimPaths(paths);\n const sameLengthPaths = makePathsSameLength(trimmedPaths);\n const pathsBySimilarity = sortPaths(sameLengthPaths);\n const pathsWithUniqueNodes = removeDuplicateNodes(pathsBySimilarity);\n const notEmptyPaths = removeEmptyPaths(pathsWithUniqueNodes);\n const columns = getColumnsFromPaths(notEmptyPaths);\n const trimmedColumns = trimColumns(columns);\n const notEmptyColumns = removeEmptyColumns(trimmedColumns);\n graph.columns = getGraphColumnsFromPaths(notEmptyColumns);\n return graph;\n}\n/** Generate graph metadata */\nexport function generateApprovalFlowGraphMetadata(graph) {\n const nodes = getGraphNodes(graph);\n const metadata = {};\n graph.columns.forEach((column, columnIndex) => {\n column.nodes.forEach((node, nodeIndex) => {\n const parents = getParentNodes(node, nodes);\n const parentsApproved = parents.length ? parents.every((_node) => isNodeApproved(_node)) : false;\n const isRoot = !parents.length && !node.space;\n const isFinal = !node.targets.length && !node.space;\n const parallelEnd = parents.length > 1;\n const firstOfMultipleRootNodes = columnIndex === 0 && column.nodes.length > 1 && nodeIndex === 0;\n const firstOfMultipleFinalNodes = columnIndex === graph.columns.length - 1 && column.nodes.length > 1 && nodeIndex === 0;\n metadata[node.id] = {\n parents,\n isRoot,\n isFinal,\n parallelStart: node.targets.length > 1,\n parallelEnd,\n columnIndex,\n nodeIndex,\n canAddNodeBefore: !isNodeStarted(node) && !parentsApproved,\n canAddNodeBeforeAll: isRoot && firstOfMultipleRootNodes,\n canAddNodeAfter: !isNodeApproved(node),\n canAddNodeAfterAll: !isNodeApproved(node) && ((isFinal && firstOfMultipleFinalNodes) || (parallelEnd && node.blank)),\n canAddParallel: !isNodeApproved(node),\n isVerticalLineBeforeSolid: node.space && graph.columns[columnIndex - 1]?.allNodesApproved,\n isVerticalLineAfterSolid: node.space && column.allNodesApproved,\n firstOfMultipleRootNodes,\n firstOfMultipleFinalNodes,\n rootNodesApproved: columnIndex === 0 && column.allNodesApproved\n };\n });\n });\n /* Some flags can be calculated only on the second run, when all nodes already have base metadata */\n graph.columns.forEach((column) => {\n column.nodes.forEach((node, nodeIndex) => {\n const nodeMetadata = metadata[node.id];\n nodeMetadata.isLastInParallel = metadata[node.targets[0]]?.parallelEnd;\n nodeMetadata.isFirstInParallel = metadata[nodeMetadata.parents[0]?.id]?.parallelStart;\n const columnIndex = column.index;\n const graphPrevColumn = columnIndex ? graph.columns[columnIndex - 1] : undefined;\n const graphNextColumn = columnIndex ? graph.columns[columnIndex + 1] : undefined;\n const prevHNode = graphPrevColumn?.nodes[nodeIndex];\n const nextHNode = graphNextColumn?.nodes[nodeIndex];\n nodeMetadata.renderAddNodeAfterButton =\n nodeMetadata.canAddNodeAfter &&\n (nodeMetadata.isFinal ||\n nodeMetadata.parallelStart ||\n nodeMetadata.isLastInParallel ||\n nextHNode?.blank);\n const nextColumnNodes = graphNextColumn?.nodes;\n if (nodeMetadata.parallelStart && nextColumnNodes) {\n const children = nextColumnNodes.filter((_node) => node.targets.includes(_node.id));\n const firstChildIndex = nextColumnNodes.findIndex((_node) => _node.id === children[0].id);\n const lastChildIndex = nextColumnNodes.findIndex((_node) => _node.id === children[children.length - 1].id);\n for (let i = firstChildIndex + 1; i <= lastChildIndex; i++) {\n metadata[nextColumnNodes[i].id].renderVerticalLineBefore = true;\n }\n }\n const prevColumnNodes = graphPrevColumn?.nodes;\n if (nodeMetadata.parallelEnd && prevColumnNodes) {\n const firstParentIndex = prevColumnNodes.findIndex((_node) => _node.id === nodeMetadata.parents[0].id);\n const lastParentIndex = prevColumnNodes.findIndex((_node) => _node.id === nodeMetadata.parents[nodeMetadata.parents.length - 1].id);\n for (let i = firstParentIndex + 1; i <= lastParentIndex; i++) {\n metadata[prevColumnNodes[i].id].renderVerticalLineAfter = true;\n }\n }\n nodeMetadata.renderVerticalLineBefore = !nodeMetadata.renderVerticalLineBefore\n ? nodeIndex > 0 && !prevHNode\n : true;\n nodeMetadata.renderVerticalLineAfter = !nodeMetadata.renderVerticalLineAfter\n ? nodeIndex > 0 && !nextHNode\n : true;\n });\n });\n return metadata;\n}\nfunction findRootNodes(nodes) {\n return nodes.filter((node) => nodes.every((n) => !isNodeTargetsIncludeId(n, node.id)));\n}\nfunction findFinalNodes(nodes) {\n return nodes.filter((node) => !node.targets.length);\n}\n/** Find all possible paths (longest path length = amount of the columns in the graph) */\nfunction getPaths(rootNodes, nodes) {\n const paths = [];\n const queue = [];\n for (let i = 0; i < rootNodes.length; i++) {\n queue.push([rootNodes[i]]);\n while (queue.length) {\n const path = queue.pop();\n let lastNodeInPath;\n if (path) {\n lastNodeInPath = path[path.length - 1];\n }\n /** Indicates about an error */\n if (!lastNodeInPath) {\n return [];\n }\n if (!lastNodeInPath.targets.length) {\n paths.push(path);\n }\n else {\n lastNodeInPath.targets.forEach((targetId) => {\n const targetNode = nodes.find((node) => node.id === targetId);\n if (!targetNode) {\n return;\n }\n const newPath = [...path, targetNode];\n queue.push(newPath);\n });\n }\n }\n }\n return paths;\n}\n/** Trim paths (remove blank nodes at the end of the paths) */\nfunction trimPaths(paths) {\n const processedPaths = [];\n paths.forEach((path) => {\n let indexToSlice = path.length - 1;\n for (let i = path.length - 1; i > 0; --i) {\n if (path[i].blank) {\n indexToSlice = i - 1;\n }\n else {\n break;\n }\n }\n path[indexToSlice].targets = [];\n processedPaths.push(path.slice(0, indexToSlice + 1));\n });\n return processedPaths;\n}\n/** Make all paths the same length (= longest path length) to make every unique node be present at the same index across all paths */\nfunction makePathsSameLength(paths) {\n const processedPaths = [];\n const pathLengths = paths.map((path) => path.length);\n const longestPathLength = Math.max(...pathLengths);\n paths.forEach((path) => {\n if (path.length === longestPathLength) {\n processedPaths.push(path);\n return;\n }\n path.forEach((node, nodeIndex) => {\n /** Try to get blank nodes from already processed paths as paths may be the same within some part */\n let blankNodes = getBlankNodesAfterNode(node, processedPaths);\n if (blankNodes.length && blankNodes[0].id !== path[nodeIndex + 1]?.id) {\n path.splice(nodeIndex + 1, 0, ...blankNodes);\n return;\n }\n const nodeIndexInPaths = paths.map((_path) => _path.indexOf(node));\n const mostFarNodeIndexInPaths = Math.max(...nodeIndexInPaths);\n if (nodeIndex < mostFarNodeIndexInPaths) {\n blankNodes = getBlankNodes(mostFarNodeIndexInPaths - nodeIndex, path[nodeIndex - 1].status);\n blankNodes[blankNodes.length - 1].targets = [node.id];\n path[nodeIndex - 1].targets = [blankNodes[0].id];\n path.splice(nodeIndex, 0, ...blankNodes);\n return;\n }\n if (nodeIndex === mostFarNodeIndexInPaths && nodeIndex === path.length - 1) {\n blankNodes = getBlankNodes(longestPathLength - path.length, path[nodeIndex].status);\n path[nodeIndex].targets = [blankNodes[0].id];\n path.splice(nodeIndex + 1, 0, ...blankNodes);\n return;\n }\n });\n processedPaths.push(path);\n });\n return processedPaths;\n}\n/** Try to get blank nodes from already processed paths as paths may be the same within some part */\nfunction getBlankNodesAfterNode(node, paths) {\n const blankNodes = [];\n const pathWithBlankNodeAfter = paths.find((path) => {\n const nodeIndex = path.indexOf(node);\n return nodeIndex > -1 && path[nodeIndex + 1]?.blank;\n });\n if (pathWithBlankNodeAfter) {\n const nodeIndex = pathWithBlankNodeAfter.indexOf(node) + 1;\n const nextNotBlankNodeIndex = pathWithBlankNodeAfter.findIndex((_node, _index) => _index > nodeIndex && !_node.blank);\n blankNodes.push(...pathWithBlankNodeAfter.slice(nodeIndex, nextNotBlankNodeIndex > 0 ? nextNotBlankNodeIndex : undefined));\n }\n return blankNodes;\n}\n/** Generate blank nodes sequential */\nfunction getBlankNodes(count, status) {\n const nodes = [];\n let node;\n let nodeId;\n for (let i = count; i > 0; i--) {\n node = Object.assign({}, getBlankApprovalGraphNode(), { targets: nodeId ? [nodeId] : [], status });\n nodeId = node.id;\n nodes.unshift(node);\n }\n return nodes;\n}\n/** Sort paths by their likeness (= count of the same nodes relatively to the other paths) between each other to avoid paths crossing */\nfunction sortPaths(paths) {\n if (paths.length === 1) {\n return paths;\n }\n /** [pathIndex, relativeToPathIndex, sameNodesCount][] */\n let similarities = [];\n let pathSimilarity = 0;\n paths.forEach((path, index) => {\n for (let i = 0; i < paths.length; i++) {\n if (index !== i && !similarities.some((likely) => index === likely[1] && i === likely[0])) {\n pathSimilarity = 0;\n for (let j = 0; j < path.length; j++) {\n if (path[j].id === paths[i][j].id) {\n pathSimilarity++;\n }\n }\n similarities.push([index, i, pathSimilarity]);\n }\n }\n });\n similarities = similarities.sort((a, b) => (a[2] > b[2] ? -1 : 1));\n const usedPathIndexes = [];\n const processedPaths = [];\n similarities.forEach((similarity) => {\n if (!usedPathIndexes.some((i) => i === similarity[0])) {\n processedPaths.push(paths[similarity[0]]);\n usedPathIndexes.push(similarity[0]);\n }\n if (!usedPathIndexes.some((i) => i === similarity[1])) {\n processedPaths.push(paths[similarity[1]]);\n usedPathIndexes.push(similarity[1]);\n }\n });\n return processedPaths;\n}\n/** Remove \"duplicate\" nodes in paths (make every unique node be present only once across all paths) */\nfunction removeDuplicateNodes(paths) {\n const processedPaths = [];\n paths.forEach((path, index) => {\n path.forEach((node) => {\n paths.forEach((_path, _index) => {\n const isNodeInPath = _index !== index && _path.indexOf(node) > -1;\n if (isNodeInPath) {\n /** Instead of node place space node */\n _path.splice(_path.indexOf(node), 1, getSpaceApprovalGraphNode());\n }\n });\n });\n processedPaths.push(path);\n });\n return processedPaths;\n}\n/** Remove empty paths (which contains only empty nodes) */\nfunction removeEmptyPaths(paths) {\n return paths.reduce((acc, path) => {\n if (!path.every((node) => node.space)) {\n acc.push(path);\n }\n return acc;\n }, []);\n}\n/** Transform paths into the columns (it's possible as they're all the same length) */\nfunction getColumnsFromPaths(paths) {\n const columns = [];\n let column = [];\n for (let i = 0; i < paths[0].length; i++) {\n column = [];\n for (let v = 0; v < paths.length; v++) {\n column.push(paths[v][i]);\n }\n columns.push(column);\n }\n return columns;\n}\n/** Trim space nodes at the end of the columns. */\nfunction trimColumns(columns) {\n const processedColumns = [];\n columns.forEach((column) => {\n let lastNotSpaceNodeIndex;\n for (let i = column.length - 1; i >= 0; i--) {\n if (!column[i].space) {\n lastNotSpaceNodeIndex = i;\n break;\n }\n }\n if (lastNotSpaceNodeIndex < column.length) {\n processedColumns.push(column.slice(0, lastNotSpaceNodeIndex + 1));\n }\n else {\n processedColumns.push(column);\n }\n });\n return processedColumns;\n}\n/** Remove empty columns (where every node is a blank node) */\nfunction removeEmptyColumns(columns) {\n const processedColumns = [];\n columns.forEach((column) => {\n const areAllNodesEmpty = column.every((node) => node.blank || node.space);\n if (areAllNodesEmpty) {\n column.forEach((node) => {\n if (node.blank) {\n /** Connect previous column to the next column, omitting current column. */\n replaceTargets(node.id, node.targets, columns);\n }\n });\n }\n else {\n processedColumns.push(column);\n }\n });\n return processedColumns;\n}\nfunction replaceTargets(replaceId, replaceWithId, columns) {\n columns.forEach((column) => {\n column.forEach((n) => {\n if (isNodeTargetsIncludeId(n, replaceId)) {\n n.targets = n.targets.filter((_id) => _id !== replaceId);\n n.targets.push(...replaceWithId);\n }\n });\n });\n}\n/** Transform columns into the graph columns (with additional metadata). */\nfunction getGraphColumnsFromPaths(columns) {\n const graphColumns = [];\n columns.forEach((column, index) => {\n column.forEach((node) => (node.colIndex = index));\n graphColumns.push({\n nodes: column,\n index,\n allNodesApproved: column.every((node) => isNodeApproved(node))\n });\n });\n return graphColumns;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsYUFBYSxFQUNiLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsRUFDekIsTUFBTSxXQUFXLENBQUM7QUFpQm5COzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQTBCO0lBQ2hFLE1BQU0sS0FBSyxHQUFzQixFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRWhFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1FBQzdGLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXpDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxNQUFN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LEtBQUssRUFBRSxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxELFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUs7WUFDTCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwcm92YWxHcmFwaE5vZGUsIEFwcHJvdmFsR3JhcGhOb2RlTWV0YWRhdGEsIEFwcHJvdmFsTm9kZSwgQXBwcm92YWxTdGF0dXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICAgIGdldEJsYW5rQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgZ2V0R3JhcGhOb2RlcyxcbiAgICBnZXRQYXJlbnROb2RlcyxcbiAgICBnZXRTcGFjZUFwcHJvdmFsR3JhcGhOb2RlLFxuICAgIGlzTm9kZUFwcHJvdmVkLFxuICAgIGlzTm9kZVN0YXJ0ZWQsXG4gICAgaXNOb2RlVGFyZ2V0c0luY2x1ZGVJZFxufSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmFsRmxvd0dyYXBoIHtcbiAgICBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoQ29sdW1uW107XG4gICAgZXJyb3JzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEdyYXBoQ29sdW1uIHtcbiAgICBub2RlczogQXBwcm92YWxHcmFwaE5vZGVbXTtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBhbGxOb2Rlc0FwcHJvdmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEdyYXBoTWV0YWRhdGEge1xuICAgIFtrZXk6IHN0cmluZ106IEFwcHJvdmFsR3JhcGhOb2RlTWV0YWRhdGE7XG59XG5cbi8qKiBBbGdvcml0aG0gaW4gc2hvcnQ6XG4gKiAxLiBGaW5kIGFsbCBwb3NzaWJsZSBwYXRocyAobG9uZ2VzdCBwYXRoIGxlbmd0aCA9IGFtb3VudCBvZiB0aGUgY29sdW1ucyBpbiB0aGUgZ3JhcGgpXG4gKiAyLiBUcmltIHBhdGhzIChyZW1vdmUgYmxhbmsgbm9kZXMgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aHMpXG4gKiAzLiBNYWtlIGFsbCBwYXRocyB0aGUgc2FtZSBsZW5ndGggKD0gbG9uZ2VzdCBwYXRoIGxlbmd0aCkgdG8gbWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IGF0IHRoZSBzYW1lIGluZGV4IGFjcm9zcyBhbGwgcGF0aHNcbiAqIDQuIFNvcnQgcGF0aHMgYnkgdGhlaXIgbGlrZW5lc3MgYmV0d2VlbiBlYWNoIG90aGVyIHRvIGF2b2lkIHBhdGhzIGNyb3NzaW5nXG4gKiA1LiBSZW1vdmUgXCJkdXBsaWNhdGVcIiBub2RlcyBpbiBwYXRocyAobWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IG9ubHkgb25jZSBhY3Jvc3MgYWxsIHBhdGhzKVxuICogNi4gUmVtb3ZlIGVtcHR5IHBhdGhzXG4gKiA3LiBUcmFuc2Zvcm0gcGF0aHMgaW50byB0aGUgY29sdW1uc1xuICogOC4gVHJpbSBjb2x1bW5zIChyZW1vdmUgc3BhY2Ugbm9kZXMgYXQgdGhlIGVuZCBvZiBjb2x1bW5zKVxuICogOS4gUmVtb3ZlIGNvbHVtbnMgd2hpY2ggY29udGFpbiBvbmx5IGJsYW5rIGFuZCBlbXB0eSBub2Rlc1xuICogMTAuIFRyYW5zZm9ybSBjb2x1bW5zIGludG8gdGhlIGdyYXBoIGNvbHVtbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQXBwcm92YWxGbG93R3JhcGgobm9kZXM6IEFwcHJvdmFsR3JhcGhOb2RlW10pOiBBcHByb3ZhbEZsb3dHcmFwaCB7XG4gICAgY29uc3QgZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoID0geyBjb2x1bW5zOiBbXSwgZXJyb3JzOiBmYWxzZSB9O1xuXG4gICAgaWYgKCFub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGdyYXBoO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3ROb2RlcyA9IGZpbmRSb290Tm9kZXMobm9kZXMpO1xuICAgIGNvbnN0IGZpbmFsTm9kZXMgPSBmaW5kRmluYWxOb2Rlcyhub2Rlcyk7XG5cbiAgICBpZiAoIXJvb3ROb2Rlcy5sZW5ndGggfHwgIWZpbmFsTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRXJyOiBOb3QgcG9zc2libGUgdG8gYnVpbGQgZ3JhcGggYmVjYXVzZSByb290IG9yIGZpbmFsIG5vZGVzIGFyZW4ndCBwcmVzZW50IWApO1xuICAgICAgICBncmFwaC5lcnJvcnMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZ3JhcGg7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aHMgPSBnZXRQYXRocyhyb290Tm9kZXMsIG5vZGVzKTtcblxuICAgIGlmICghcGF0aHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRXJyOiBOb3QgcG9zc2libGUgdG8gYnVpbGQgZ3JhcGghJyk7XG4gICAgICAgIGdyYXBoLmVycm9ycyA9IHRydWU7XG4gICAgICAgIHJldHVybiBncmFwaDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmltbWVkUGF0aHMgPSB0cmltUGF0aHMocGF0aHMpO1xuICAgIGNvbnN0IHNhbWVMZW5ndGhQYXRocyA9IG1ha2VQYXRoc1NhbWVMZW5ndGgodHJpbW1lZFBhdGhzKTtcbiAgICBjb25zdCBwYXRoc0J5U2ltaWxhcml0eSA9IHNvcnRQYXRocyhzYW1lTGVuZ3RoUGF0aHMpO1xuICAgIGNvbnN0IHBhdGhzV2l0aFVuaXF1ZU5vZGVzID0gcmVtb3ZlRHVwbGljYXRlTm9kZXMocGF0aHNCeVNpbWlsYXJpdHkpO1xuICAgIGNvbnN0IG5vdEVtcHR5UGF0aHMgPSByZW1vdmVFbXB0eVBhdGhzKHBhdGhzV2l0aFVuaXF1ZU5vZGVzKTtcbiAgICBjb25zdCBjb2x1bW5zID0gZ2V0Q29sdW1uc0Zyb21QYXRocyhub3RFbXB0eVBhdGhzKTtcbiAgICBjb25zdCB0cmltbWVkQ29sdW1ucyA9IHRyaW1Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IG5vdEVtcHR5Q29sdW1ucyA9IHJlbW92ZUVtcHR5Q29sdW1ucyh0cmltbWVkQ29sdW1ucyk7XG4gICAgZ3JhcGguY29sdW1ucyA9IGdldEdyYXBoQ29sdW1uc0Zyb21QYXRocyhub3RFbXB0eUNvbHVtbnMpO1xuXG4gICAgcmV0dXJuIGdyYXBoO1xufVxuXG4vKiogR2VuZXJhdGUgZ3JhcGggbWV0YWRhdGEgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFwcHJvdmFsRmxvd0dyYXBoTWV0YWRhdGEoZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoKTogQXBwcm92YWxHcmFwaE1ldGFkYXRhIHtcbiAgICBjb25zdCBub2RlcyA9IGdldEdyYXBoTm9kZXMoZ3JhcGgpO1xuICAgIGNvbnN0IG1ldGFkYXRhOiBBcHByb3ZhbEdyYXBoTWV0YWRhdGEgPSB7fTtcblxuICAgIGdyYXBoLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICBjb2x1bW4ubm9kZXMuZm9yRWFjaCgobm9kZSwgbm9kZUluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRzID0gZ2V0UGFyZW50Tm9kZXMobm9kZSwgbm9kZXMpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50c0FwcHJvdmVkID0gcGFyZW50cy5sZW5ndGggPyBwYXJlbnRzLmV2ZXJ5KChfbm9kZSkgPT4gaXNOb2RlQXBwcm92ZWQoX25vZGUpKSA6IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgaXNSb290ID0gIXBhcmVudHMubGVuZ3RoICYmICFub2RlLnNwYWNlO1xuICAgICAgICAgICAgY29uc3QgaXNGaW5hbCA9ICFub2RlLnRhcmdldHMubGVuZ3RoICYmICFub2RlLnNwYWNlO1xuICAgICAgICAgICAgY29uc3QgcGFyYWxsZWxFbmQgPSBwYXJlbnRzLmxlbmd0aCA+IDE7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9mTXVsdGlwbGVSb290Tm9kZXMgPSBjb2x1bW5JbmRleCA9PT0gMCAmJiBjb2x1bW4ubm9kZXMubGVuZ3RoID4gMSAmJiBub2RlSW5kZXggPT09IDA7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzID1cbiAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCA9PT0gZ3JhcGguY29sdW1ucy5sZW5ndGggLSAxICYmIGNvbHVtbi5ub2Rlcy5sZW5ndGggPiAxICYmIG5vZGVJbmRleCA9PT0gMDtcblxuICAgICAgICAgICAgbWV0YWRhdGFbbm9kZS5pZF0gPSB7XG4gICAgICAgICAgICAgICAgcGFyZW50cyxcbiAgICAgICAgICAgICAgICBpc1Jvb3QsXG4gICAgICAgICAgICAgICAgaXNGaW5hbCxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbFN0YXJ0OiBub2RlLnRhcmdldHMubGVuZ3RoID4gMSxcbiAgICAgICAgICAgICAgICBwYXJhbGxlbEVuZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICBub2RlSW5kZXgsXG4gICAgICAgICAgICAgICAgY2FuQWRkTm9kZUJlZm9yZTogIWlzTm9kZVN0YXJ0ZWQobm9kZSkgJiYgIXBhcmVudHNBcHByb3ZlZCxcbiAgICAgICAgICAgICAgICBjYW5BZGROb2RlQmVmb3JlQWxsOiBpc1Jvb3QgJiYgZmlyc3RPZk11bHRpcGxlUm9vdE5vZGVzLFxuICAgICAgICAgICAgICAgIGNhbkFkZE5vZGVBZnRlcjogIWlzTm9kZUFwcHJvdmVkKG5vZGUpLFxuICAgICAgICAgICAgICAgIGNhbkFkZE5vZGVBZnRlckFsbDpcbiAgICAgICAgICAgICAgICAgICAgIWlzTm9kZUFwcHJvdmVkKG5vZGUpICYmICgoaXNGaW5hbCAmJiBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzKSB8fCAocGFyYWxsZWxFbmQgJiYgbm9kZS5ibGFuaykpLFxuICAgICAgICAgICAgICAgIGNhbkFkZFBhcmFsbGVsOiAhaXNOb2RlQXBwcm92ZWQobm9kZSksXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbExpbmVCZWZvcmVTb2xpZDogbm9kZS5zcGFjZSAmJiBncmFwaC5jb2x1bW5zW2NvbHVtbkluZGV4IC0gMV0/LmFsbE5vZGVzQXBwcm92ZWQsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbExpbmVBZnRlclNvbGlkOiBub2RlLnNwYWNlICYmIGNvbHVtbi5hbGxOb2Rlc0FwcHJvdmVkLFxuICAgICAgICAgICAgICAgIGZpcnN0T2ZNdWx0aXBsZVJvb3ROb2RlcyxcbiAgICAgICAgICAgICAgICBmaXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzLFxuICAgICAgICAgICAgICAgIHJvb3ROb2Rlc0FwcHJvdmVkOiBjb2x1bW5JbmRleCA9PT0gMCAmJiBjb2x1bW4uYWxsTm9kZXNBcHByb3ZlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKiBTb21lIGZsYWdzIGNhbiBiZSBjYWxjdWxhdGVkIG9ubHkgb24gdGhlIHNlY29uZCBydW4sIHdoZW4gYWxsIG5vZGVzIGFscmVhZHkgaGF2ZSBiYXNlIG1ldGFkYXRhICovXG4gICAgZ3JhcGguY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29sdW1uLm5vZGVzLmZvckVhY2goKG5vZGUsIG5vZGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU1ldGFkYXRhID0gbWV0YWRhdGFbbm9kZS5pZF07XG5cbiAgICAgICAgICAgIG5vZGVNZXRhZGF0YS5pc0xhc3RJblBhcmFsbGVsID0gbWV0YWRhdGFbbm9kZS50YXJnZXRzWzBdXT8ucGFyYWxsZWxFbmQ7XG4gICAgICAgICAgICBub2RlTWV0YWRhdGEuaXNGaXJzdEluUGFyYWxsZWwgPSBtZXRhZGF0YVtub2RlTWV0YWRhdGEucGFyZW50c1swXT8uaWRdPy5wYXJhbGxlbFN0YXJ0O1xuXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IGNvbHVtbi5pbmRleDtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoUHJldkNvbHVtbiA9IGNvbHVtbkluZGV4ID8gZ3JhcGguY29sdW1uc1tjb2x1bW5JbmRleCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZ3JhcGhOZXh0Q29sdW1uID0gY29sdW1uSW5kZXggPyBncmFwaC5jb2x1bW5zW2NvbHVtbkluZGV4ICsgMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHByZXZITm9kZSA9IGdyYXBoUHJldkNvbHVtbj8ubm9kZXNbbm9kZUluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRITm9kZSA9IGdyYXBoTmV4dENvbHVtbj8ubm9kZXNbbm9kZUluZGV4XTtcblxuICAgICAgICAgICAgbm9kZU1ldGFkYXRhLnJlbmRlckFkZE5vZGVBZnRlckJ1dHRvbiA9XG4gICAgICAgICAgICAgICAgbm9kZU1ldGFkYXRhLmNhbkFkZE5vZGVBZnRlciAmJlxuICAgICAgICAgICAgICAgIChub2RlTWV0YWRhdGEuaXNGaW5hbCB8fFxuICAgICAgICAgICAgICAgICAgICBub2RlTWV0YWRhdGEucGFyYWxsZWxTdGFydCB8fFxuICAgICAgICAgICAgICAgICAgICBub2RlTWV0YWRhdGEuaXNMYXN0SW5QYXJhbGxlbCB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0SE5vZGU/LmJsYW5rKTtcblxuICAgICAgICAgICAgY29uc3QgbmV4dENvbHVtbk5vZGVzID0gZ3JhcGhOZXh0Q29sdW1uPy5ub2RlcztcbiAgICAgICAgICAgIGlmIChub2RlTWV0YWRhdGEucGFyYWxsZWxTdGFydCAmJiBuZXh0Q29sdW1uTm9kZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG5leHRDb2x1bW5Ob2Rlcy5maWx0ZXIoKF9ub2RlKSA9PiBub2RlLnRhcmdldHMuaW5jbHVkZXMoX25vZGUuaWQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENoaWxkSW5kZXggPSBuZXh0Q29sdW1uTm9kZXMuZmluZEluZGV4KChfbm9kZSkgPT4gX25vZGUuaWQgPT09IGNoaWxkcmVuWzBdLmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGRJbmRleCA9IG5leHRDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChfbm9kZSkgPT4gX25vZGUuaWQgPT09IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLmlkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBmaXJzdENoaWxkSW5kZXggKyAxOyBpIDw9IGxhc3RDaGlsZEluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbbmV4dENvbHVtbk5vZGVzW2ldLmlkXS5yZW5kZXJWZXJ0aWNhbExpbmVCZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJldkNvbHVtbk5vZGVzID0gZ3JhcGhQcmV2Q29sdW1uPy5ub2RlcztcbiAgICAgICAgICAgIGlmIChub2RlTWV0YWRhdGEucGFyYWxsZWxFbmQgJiYgcHJldkNvbHVtbk5vZGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJlbnRJbmRleCA9IHByZXZDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoKF9ub2RlKSA9PiBfbm9kZS5pZCA9PT0gbm9kZU1ldGFkYXRhLnBhcmVudHNbMF0uaWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RQYXJlbnRJbmRleCA9IHByZXZDb2x1bW5Ob2Rlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChfbm9kZSkgPT4gX25vZGUuaWQgPT09IG5vZGVNZXRhZGF0YS5wYXJlbnRzW25vZGVNZXRhZGF0YS5wYXJlbnRzLmxlbmd0aCAtIDFdLmlkXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBmaXJzdFBhcmVudEluZGV4ICsgMTsgaSA8PSBsYXN0UGFyZW50SW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVtwcmV2Q29sdW1uTm9kZXNbaV0uaWRdLnJlbmRlclZlcnRpY2FsTGluZUFmdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5vZGVNZXRhZGF0YS5yZW5kZXJWZXJ0aWNhbExpbmVCZWZvcmUgPSAhbm9kZU1ldGFkYXRhLnJlbmRlclZlcnRpY2FsTGluZUJlZm9yZVxuICAgICAgICAgICAgICAgID8gbm9kZUluZGV4ID4gMCAmJiAhcHJldkhOb2RlXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICAgICAgbm9kZU1ldGFkYXRhLnJlbmRlclZlcnRpY2FsTGluZUFmdGVyID0gIW5vZGVNZXRhZGF0YS5yZW5kZXJWZXJ0aWNhbExpbmVBZnRlclxuICAgICAgICAgICAgICAgID8gbm9kZUluZGV4ID4gMCAmJiAhbmV4dEhOb2RlXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRhZGF0YTtcbn1cblxuZnVuY3Rpb24gZmluZFJvb3ROb2Rlcyhub2RlczogQXBwcm92YWxOb2RlW10pOiBBcHByb3ZhbE5vZGVbXSB7XG4gICAgcmV0dXJuIG5vZGVzLmZpbHRlcigobm9kZSkgPT4gbm9kZXMuZXZlcnkoKG4pID0+ICFpc05vZGVUYXJnZXRzSW5jbHVkZUlkKG4sIG5vZGUuaWQpKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRGaW5hbE5vZGVzKG5vZGVzOiBBcHByb3ZhbE5vZGVbXSk6IEFwcHJvdmFsTm9kZVtdIHtcbiAgICByZXR1cm4gbm9kZXMuZmlsdGVyKChub2RlKSA9PiAhbm9kZS50YXJnZXRzLmxlbmd0aCk7XG59XG5cbi8qKiBGaW5kIGFsbCBwb3NzaWJsZSBwYXRocyAobG9uZ2VzdCBwYXRoIGxlbmd0aCA9IGFtb3VudCBvZiB0aGUgY29sdW1ucyBpbiB0aGUgZ3JhcGgpICovXG5mdW5jdGlvbiBnZXRQYXRocyhyb290Tm9kZXM6IEFwcHJvdmFsR3JhcGhOb2RlW10sIG5vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBwYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdID0gW107XG4gICAgY29uc3QgcXVldWU6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb290Tm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcXVldWUucHVzaChbcm9vdE5vZGVzW2ldXSk7XG5cbiAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICAgICAgbGV0IGxhc3ROb2RlSW5QYXRoOiBBcHByb3ZhbEdyYXBoTm9kZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGVJblBhdGggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKiBJbmRpY2F0ZXMgYWJvdXQgYW4gZXJyb3IgKi9cbiAgICAgICAgICAgIGlmICghbGFzdE5vZGVJblBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbGFzdE5vZGVJblBhdGgudGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHBhdGghKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGVJblBhdGgudGFyZ2V0cy5mb3JFYWNoKCh0YXJnZXRJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gbm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gdGFyZ2V0SWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gWy4uLnBhdGghLCB0YXJnZXROb2RlXTtcblxuICAgICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKG5ld1BhdGgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhzO1xufVxuXG4vKiogVHJpbSBwYXRocyAocmVtb3ZlIGJsYW5rIG5vZGVzIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGhzKSAqL1xuZnVuY3Rpb24gdHJpbVBhdGhzKHBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10ge1xuICAgIGNvbnN0IHByb2Nlc3NlZFBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcblxuICAgIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgbGV0IGluZGV4VG9TbGljZSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgICAgICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID4gMDsgLS1pKSB7XG4gICAgICAgICAgICBpZiAocGF0aFtpXS5ibGFuaykge1xuICAgICAgICAgICAgICAgIGluZGV4VG9TbGljZSA9IGkgLSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGhbaW5kZXhUb1NsaWNlXS50YXJnZXRzID0gW107XG4gICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aC5zbGljZSgwLCBpbmRleFRvU2xpY2UgKyAxKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBNYWtlIGFsbCBwYXRocyB0aGUgc2FtZSBsZW5ndGggKD0gbG9uZ2VzdCBwYXRoIGxlbmd0aCkgdG8gbWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IGF0IHRoZSBzYW1lIGluZGV4IGFjcm9zcyBhbGwgcGF0aHMgKi9cbmZ1bmN0aW9uIG1ha2VQYXRoc1NhbWVMZW5ndGgocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkUGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuICAgIGNvbnN0IHBhdGhMZW5ndGhzID0gcGF0aHMubWFwKChwYXRoKSA9PiBwYXRoLmxlbmd0aCk7XG4gICAgY29uc3QgbG9uZ2VzdFBhdGhMZW5ndGggPSBNYXRoLm1heCguLi5wYXRoTGVuZ3Rocyk7XG5cbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gbG9uZ2VzdFBhdGhMZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYXRoLmZvckVhY2goKG5vZGUsIG5vZGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIFRyeSB0byBnZXQgYmxhbmsgbm9kZXMgZnJvbSBhbHJlYWR5IHByb2Nlc3NlZCBwYXRocyBhcyBwYXRocyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIHNvbWUgcGFydCAqL1xuICAgICAgICAgICAgbGV0IGJsYW5rTm9kZXMgPSBnZXRCbGFua05vZGVzQWZ0ZXJOb2RlKG5vZGUsIHByb2Nlc3NlZFBhdGhzKTtcbiAgICAgICAgICAgIGlmIChibGFua05vZGVzLmxlbmd0aCAmJiBibGFua05vZGVzWzBdLmlkICE9PSBwYXRoW25vZGVJbmRleCArIDFdPy5pZCkge1xuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKG5vZGVJbmRleCArIDEsIDAsIC4uLmJsYW5rTm9kZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZUluZGV4SW5QYXRocyA9IHBhdGhzLm1hcCgoX3BhdGgpID0+IF9wYXRoLmluZGV4T2Yobm9kZSkpO1xuICAgICAgICAgICAgY29uc3QgbW9zdEZhck5vZGVJbmRleEluUGF0aHMgPSBNYXRoLm1heCguLi5ub2RlSW5kZXhJblBhdGhzKTtcblxuICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA8IG1vc3RGYXJOb2RlSW5kZXhJblBhdGhzKSB7XG4gICAgICAgICAgICAgICAgYmxhbmtOb2RlcyA9IGdldEJsYW5rTm9kZXMobW9zdEZhck5vZGVJbmRleEluUGF0aHMgLSBub2RlSW5kZXgsIHBhdGhbbm9kZUluZGV4IC0gMV0uc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgIGJsYW5rTm9kZXNbYmxhbmtOb2Rlcy5sZW5ndGggLSAxXS50YXJnZXRzID0gW25vZGUuaWRdO1xuICAgICAgICAgICAgICAgIHBhdGhbbm9kZUluZGV4IC0gMV0udGFyZ2V0cyA9IFtibGFua05vZGVzWzBdLmlkXTtcblxuICAgICAgICAgICAgICAgIHBhdGguc3BsaWNlKG5vZGVJbmRleCwgMCwgLi4uYmxhbmtOb2Rlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZUluZGV4ID09PSBtb3N0RmFyTm9kZUluZGV4SW5QYXRocyAmJiBub2RlSW5kZXggPT09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGJsYW5rTm9kZXMgPSBnZXRCbGFua05vZGVzKGxvbmdlc3RQYXRoTGVuZ3RoIC0gcGF0aC5sZW5ndGgsIHBhdGhbbm9kZUluZGV4XS5zdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgcGF0aFtub2RlSW5kZXhdLnRhcmdldHMgPSBbYmxhbmtOb2Rlc1swXS5pZF07XG5cbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZShub2RlSW5kZXggKyAxLCAwLCAuLi5ibGFua05vZGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb2Nlc3NlZFBhdGhzLnB1c2gocGF0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBUcnkgdG8gZ2V0IGJsYW5rIG5vZGVzIGZyb20gYWxyZWFkeSBwcm9jZXNzZWQgcGF0aHMgYXMgcGF0aHMgbWF5IGJlIHRoZSBzYW1lIHdpdGhpbiBzb21lIHBhcnQgKi9cbmZ1bmN0aW9uIGdldEJsYW5rTm9kZXNBZnRlck5vZGUobm9kZTogQXBwcm92YWxHcmFwaE5vZGUsIHBhdGhzOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdIHtcbiAgICBjb25zdCBibGFua05vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBjb25zdCBwYXRoV2l0aEJsYW5rTm9kZUFmdGVyID0gcGF0aHMuZmluZCgocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBub2RlSW5kZXggPSBwYXRoLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlSW5kZXggPiAtMSAmJiBwYXRoW25vZGVJbmRleCArIDFdPy5ibGFuaztcbiAgICB9KTtcblxuICAgIGlmIChwYXRoV2l0aEJsYW5rTm9kZUFmdGVyKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IHBhdGhXaXRoQmxhbmtOb2RlQWZ0ZXIuaW5kZXhPZihub2RlKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHROb3RCbGFua05vZGVJbmRleCA9IHBhdGhXaXRoQmxhbmtOb2RlQWZ0ZXIuZmluZEluZGV4KFxuICAgICAgICAgICAgKF9ub2RlLCBfaW5kZXgpID0+IF9pbmRleCA+IG5vZGVJbmRleCAmJiAhX25vZGUuYmxhbmtcbiAgICAgICAgKTtcblxuICAgICAgICBibGFua05vZGVzLnB1c2goXG4gICAgICAgICAgICAuLi5wYXRoV2l0aEJsYW5rTm9kZUFmdGVyLnNsaWNlKG5vZGVJbmRleCwgbmV4dE5vdEJsYW5rTm9kZUluZGV4ID4gMCA/IG5leHROb3RCbGFua05vZGVJbmRleCA6IHVuZGVmaW5lZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxhbmtOb2Rlcztcbn1cblxuLyoqIEdlbmVyYXRlIGJsYW5rIG5vZGVzIHNlcXVlbnRpYWwgKi9cbmZ1bmN0aW9uIGdldEJsYW5rTm9kZXMoY291bnQ6IG51bWJlciwgc3RhdHVzOiBBcHByb3ZhbFN0YXR1cyk6IEFwcHJvdmFsR3JhcGhOb2RlW10ge1xuICAgIGNvbnN0IG5vZGVzOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBsZXQgbm9kZTogQXBwcm92YWxHcmFwaE5vZGU7XG4gICAgbGV0IG5vZGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChsZXQgaSA9IGNvdW50OyBpID4gMDsgaS0tKSB7XG4gICAgICAgIG5vZGUgPSBPYmplY3QuYXNzaWduKHt9LCBnZXRCbGFua0FwcHJvdmFsR3JhcGhOb2RlKCksIHsgdGFyZ2V0czogbm9kZUlkID8gW25vZGVJZF0gOiBbXSwgc3RhdHVzIH0pO1xuICAgICAgICBub2RlSWQgPSBub2RlLmlkO1xuXG4gICAgICAgIG5vZGVzLnVuc2hpZnQobm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xufVxuXG4vKiogU29ydCBwYXRocyBieSB0aGVpciBsaWtlbmVzcyAoPSBjb3VudCBvZiB0aGUgc2FtZSBub2RlcyByZWxhdGl2ZWx5IHRvIHRoZSBvdGhlciBwYXRocykgYmV0d2VlbiBlYWNoIG90aGVyIHRvIGF2b2lkIHBhdGhzIGNyb3NzaW5nICovXG5mdW5jdGlvbiBzb3J0UGF0aHMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcGF0aHM7XG4gICAgfVxuXG4gICAgLyoqIFtwYXRoSW5kZXgsIHJlbGF0aXZlVG9QYXRoSW5kZXgsIHNhbWVOb2Rlc0NvdW50XVtdICovXG4gICAgbGV0IHNpbWlsYXJpdGllczogbnVtYmVyW11bXSA9IFtdO1xuICAgIGxldCBwYXRoU2ltaWxhcml0eSA9IDA7XG5cbiAgICBwYXRocy5mb3JFYWNoKChwYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IGkgJiYgIXNpbWlsYXJpdGllcy5zb21lKChsaWtlbHkpID0+IGluZGV4ID09PSBsaWtlbHlbMV0gJiYgaSA9PT0gbGlrZWx5WzBdKSkge1xuICAgICAgICAgICAgICAgIHBhdGhTaW1pbGFyaXR5ID0gMDtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcGF0aC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGF0aFtqXS5pZCA9PT0gcGF0aHNbaV1bal0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhTaW1pbGFyaXR5Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzaW1pbGFyaXRpZXMucHVzaChbaW5kZXgsIGksIHBhdGhTaW1pbGFyaXR5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHNpbWlsYXJpdGllcyA9IHNpbWlsYXJpdGllcy5zb3J0KChhLCBiKSA9PiAoYVsyXSA+IGJbMl0gPyAtMSA6IDEpKTtcblxuICAgIGNvbnN0IHVzZWRQYXRoSW5kZXhlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBwcm9jZXNzZWRQYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdID0gW107XG5cbiAgICBzaW1pbGFyaXRpZXMuZm9yRWFjaCgoc2ltaWxhcml0eSkgPT4ge1xuICAgICAgICBpZiAoIXVzZWRQYXRoSW5kZXhlcy5zb21lKChpKSA9PiBpID09PSBzaW1pbGFyaXR5WzBdKSkge1xuICAgICAgICAgICAgcHJvY2Vzc2VkUGF0aHMucHVzaChwYXRoc1tzaW1pbGFyaXR5WzBdXSk7XG4gICAgICAgICAgICB1c2VkUGF0aEluZGV4ZXMucHVzaChzaW1pbGFyaXR5WzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdXNlZFBhdGhJbmRleGVzLnNvbWUoKGkpID0+IGkgPT09IHNpbWlsYXJpdHlbMV0pKSB7XG4gICAgICAgICAgICBwcm9jZXNzZWRQYXRocy5wdXNoKHBhdGhzW3NpbWlsYXJpdHlbMV1dKTtcbiAgICAgICAgICAgIHVzZWRQYXRoSW5kZXhlcy5wdXNoKHNpbWlsYXJpdHlbMV0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkUGF0aHM7XG59XG5cbi8qKiBSZW1vdmUgXCJkdXBsaWNhdGVcIiBub2RlcyBpbiBwYXRocyAobWFrZSBldmVyeSB1bmlxdWUgbm9kZSBiZSBwcmVzZW50IG9ubHkgb25jZSBhY3Jvc3MgYWxsIHBhdGhzKSAqL1xuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlTm9kZXMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkUGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgcGF0aC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBwYXRocy5mb3JFYWNoKChfcGF0aCwgX2luZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOb2RlSW5QYXRoID0gX2luZGV4ICE9PSBpbmRleCAmJiBfcGF0aC5pbmRleE9mKG5vZGUpID4gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlSW5QYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBJbnN0ZWFkIG9mIG5vZGUgcGxhY2Ugc3BhY2Ugbm9kZSAqL1xuICAgICAgICAgICAgICAgICAgICBfcGF0aC5zcGxpY2UoX3BhdGguaW5kZXhPZihub2RlKSwgMSwgZ2V0U3BhY2VBcHByb3ZhbEdyYXBoTm9kZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc2VkUGF0aHMucHVzaChwYXRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9jZXNzZWRQYXRocztcbn1cblxuLyoqIFJlbW92ZSBlbXB0eSBwYXRocyAod2hpY2ggY29udGFpbnMgb25seSBlbXB0eSBub2RlcykgKi9cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5UGF0aHMocGF0aHM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSk6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSB7XG4gICAgcmV0dXJuIHBhdGhzLnJlZHVjZSgoYWNjLCBwYXRoKSA9PiB7XG4gICAgICAgIGlmICghcGF0aC5ldmVyeSgobm9kZSkgPT4gbm9kZS5zcGFjZSkpIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKHBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBBcHByb3ZhbEdyYXBoTm9kZVtdW10pO1xufVxuXG4vKiogVHJhbnNmb3JtIHBhdGhzIGludG8gdGhlIGNvbHVtbnMgKGl0J3MgcG9zc2libGUgYXMgdGhleSdyZSBhbGwgdGhlIHNhbWUgbGVuZ3RoKSAqL1xuZnVuY3Rpb24gZ2V0Q29sdW1uc0Zyb21QYXRocyhwYXRoczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcbiAgICBsZXQgY29sdW1uOiBBcHByb3ZhbEdyYXBoTm9kZVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzWzBdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbHVtbiA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcGF0aHMubGVuZ3RoOyB2KyspIHtcbiAgICAgICAgICAgIGNvbHVtbi5wdXNoKHBhdGhzW3ZdW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5zO1xufVxuXG4vKiogVHJpbSBzcGFjZSBub2RlcyBhdCB0aGUgZW5kIG9mIHRoZSBjb2x1bW5zLiAqL1xuZnVuY3Rpb24gdHJpbUNvbHVtbnMoY29sdW1uczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaE5vZGVbXVtdIHtcbiAgICBjb25zdCBwcm9jZXNzZWRDb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10gPSBbXTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGxldCBsYXN0Tm90U3BhY2VOb2RlSW5kZXg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbHVtbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW5baV0uc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm90U3BhY2VOb2RlSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxhc3ROb3RTcGFjZU5vZGVJbmRleCA8IGNvbHVtbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZENvbHVtbnMucHVzaChjb2x1bW4uc2xpY2UoMCwgbGFzdE5vdFNwYWNlTm9kZUluZGV4ICsgMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzc2VkQ29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9jZXNzZWRDb2x1bW5zO1xufVxuXG4vKiogUmVtb3ZlIGVtcHR5IGNvbHVtbnMgKHdoZXJlIGV2ZXJ5IG5vZGUgaXMgYSBibGFuayBub2RlKSAgKi9cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5Q29sdW1ucyhjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10ge1xuICAgIGNvbnN0IHByb2Nlc3NlZENvbHVtbnM6IEFwcHJvdmFsR3JhcGhOb2RlW11bXSA9IFtdO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgYXJlQWxsTm9kZXNFbXB0eSA9IGNvbHVtbi5ldmVyeSgobm9kZSkgPT4gbm9kZS5ibGFuayB8fCBub2RlLnNwYWNlKTtcblxuICAgICAgICBpZiAoYXJlQWxsTm9kZXNFbXB0eSkge1xuICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5ibGFuaykge1xuICAgICAgICAgICAgICAgICAgICAvKiogQ29ubmVjdCBwcmV2aW91cyBjb2x1bW4gdG8gdGhlIG5leHQgY29sdW1uLCBvbWl0dGluZyBjdXJyZW50IGNvbHVtbi4gKi9cbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVRhcmdldHMobm9kZS5pZCwgbm9kZS50YXJnZXRzLCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3NlZENvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkQ29sdW1ucztcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVRhcmdldHMocmVwbGFjZUlkOiBzdHJpbmcsIHJlcGxhY2VXaXRoSWQ6IHN0cmluZ1tdLCBjb2x1bW5zOiBBcHByb3ZhbEdyYXBoTm9kZVtdW10pOiB2b2lkIHtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBjb2x1bW4uZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobiwgcmVwbGFjZUlkKSkge1xuICAgICAgICAgICAgICAgIG4udGFyZ2V0cyA9IG4udGFyZ2V0cy5maWx0ZXIoKF9pZCkgPT4gX2lkICE9PSByZXBsYWNlSWQpO1xuICAgICAgICAgICAgICAgIG4udGFyZ2V0cy5wdXNoKC4uLnJlcGxhY2VXaXRoSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuLyoqIFRyYW5zZm9ybSBjb2x1bW5zIGludG8gdGhlIGdyYXBoIGNvbHVtbnMgKHdpdGggYWRkaXRpb25hbCBtZXRhZGF0YSkuICovXG5mdW5jdGlvbiBnZXRHcmFwaENvbHVtbnNGcm9tUGF0aHMoY29sdW1uczogQXBwcm92YWxHcmFwaE5vZGVbXVtdKTogQXBwcm92YWxHcmFwaENvbHVtbltdIHtcbiAgICBjb25zdCBncmFwaENvbHVtbnM6IEFwcHJvdmFsR3JhcGhDb2x1bW5bXSA9IFtdO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbHVtbi5mb3JFYWNoKChub2RlKSA9PiAobm9kZS5jb2xJbmRleCA9IGluZGV4KSk7XG5cbiAgICAgICAgZ3JhcGhDb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgbm9kZXM6IGNvbHVtbixcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgYWxsTm9kZXNBcHByb3ZlZDogY29sdW1uLmV2ZXJ5KChub2RlKSA9PiBpc05vZGVBcHByb3ZlZChub2RlKSlcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhcGhDb2x1bW5zO1xufVxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { FormGroupComponent, FormItemComponent } from '@fundamental-ngx/core/form';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ListComponent, StandardListItemComponent } from '@fundamental-ngx/platform/list';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * @deprecated\n * ApprovalFlowTeamList component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowTeamListComponent {\n constructor() {\n /** Approval flow teams */\n this.teams = [];\n /** Whether in RTL mode */\n this.isRtl = false;\n /** Event emitted on team click */\n this.onTeamClick = new EventEmitter();\n /** Event emitted on team selection change */\n this.onTeamRadioClick = new EventEmitter();\n /** @hidden */\n this._trackByFn = trackByFn;\n }\n /** @hidden */\n _showTeamDetails(team) {\n this.onTeamClick.emit(team);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowTeamListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowTeamListComponent, isStandalone: true, selector: \"fdp-approval-flow-team-list\", inputs: { teams: \"teams\", isRtl: \"isRtl\", selectedTeamId: \"selectedTeamId\" }, outputs: { onTeamClick: \"onTeamClick\", onTeamRadioClick: \"onTeamRadioClick\" }, host: { classAttribute: \"fdp-approval-flow-team-list\" }, ngImport: i0, template: \"<fdp-list [hasByLine]=\\\"true\\\" fdCompact>\\n <fd-form-group>\\n @for (team of teams; track _trackByFn(i, team); let i = $index) {\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"team.id\\\"\\n [attr.id]=\\\"'team-radio' + i\\\"\\n [name]=\\\"'team-radio' + i\\\"\\n [(ngModel)]=\\\"selectedTeamId\\\"\\n (click)=\\\"onTeamRadioClick.emit(team)\\\"\\n >\\n </fd-radio-button>\\n <fdp-standard-list-item\\n [attr.id]=\\\"'approval-team-' + team.id\\\"\\n [avatar]=\\\"{ image: '', ariaLabel: team.name }\\\"\\n [description]=\\\"team.description || team.members.length + ' members'\\\"\\n [title]=\\\"team.name\\\"\\n (click)=\\\"_showTeamDetails(team)\\\"\\n >\\n </fdp-standard-list-item>\\n <fd-icon [glyph]=\\\"'navigation-' + (isRtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </div>\\n }\\n </fd-form-group>\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-team-list .fd-form-item{position:relative;margin-bottom:0}.fdp-approval-flow-team-list .fd-form-item fd-radio-button{position:absolute;z-index:1;top:1.4rem}.fdp-approval-flow-team-list .fd-form-item .fd-list__item{padding-left:2rem!important;cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-icon{position:absolute;right:1rem;top:2rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-avatar{color:#fff;color:var(--sapBaseColor, #fff)}[dir=rtl] .fdp-approval-flow-team-list .fd-form-item fd-icon,.fdp-approval-flow-team-list[dir=rtl] .fd-form-item fd-icon{right:auto;left:1rem}[dir=rtl] .fdp-approval-flow-team-list .fd-list__item,.fdp-approval-flow-team-list[dir=rtl] .fd-list__item{padding-right:2rem!important;padding-left:0!important}\\n\"], dependencies: [{ kind: \"component\", type: ListComponent, selector: \"fdp-list\", inputs: [\"selectedItems\", \"ariaSetsize\", \"ariaMultiselectable\", \"loadTitle\", \"loadingLabel\", \"delayTime\", \"itemSize\", \"loadMore\", \"loadOnScroll\", \"role\", \"listType\", \"maxHeight\", \"noBorder\", \"scrollOffsetPercentage\", \"selection\", \"selectionMode\", \"value\", \"rowSelection\", \"dataSource\", \"navigated\", \"navigationIndicator\", \"hasByLine\", \"hasObject\", \"unreadIndicator\", \"interceptTabKey\"], outputs: [\"selectedItemChange\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: FormGroupComponent, selector: \"fd-form-group\", inputs: [\"isInline\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: RadioButtonComponent, selector: \"fd-radio-button\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"tabIndex\", \"state\", \"disabled\", \"readOnly\", \"selectedValue\", \"name\", \"id\", \"value\", \"required\", \"standalone\", \"wrapLabel\", \"valignLabel\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: StandardListItemComponent, selector: \"fdp-standard-list-item\" }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowTeamListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-team-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-team-list'\n }, imports: [\n ListComponent,\n ContentDensityDirective,\n FormGroupComponent,\n FormItemComponent,\n RadioButtonComponent,\n FormsModule,\n StandardListItemComponent,\n IconComponent\n ], template: \"<fdp-list [hasByLine]=\\\"true\\\" fdCompact>\\n <fd-form-group>\\n @for (team of teams; track _trackByFn(i, team); let i = $index) {\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"team.id\\\"\\n [attr.id]=\\\"'team-radio' + i\\\"\\n [name]=\\\"'team-radio' + i\\\"\\n [(ngModel)]=\\\"selectedTeamId\\\"\\n (click)=\\\"onTeamRadioClick.emit(team)\\\"\\n >\\n </fd-radio-button>\\n <fdp-standard-list-item\\n [attr.id]=\\\"'approval-team-' + team.id\\\"\\n [avatar]=\\\"{ image: '', ariaLabel: team.name }\\\"\\n [description]=\\\"team.description || team.members.length + ' members'\\\"\\n [title]=\\\"team.name\\\"\\n (click)=\\\"_showTeamDetails(team)\\\"\\n >\\n </fdp-standard-list-item>\\n <fd-icon [glyph]=\\\"'navigation-' + (isRtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </div>\\n }\\n </fd-form-group>\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-team-list .fd-form-item{position:relative;margin-bottom:0}.fdp-approval-flow-team-list .fd-form-item fd-radio-button{position:absolute;z-index:1;top:1.4rem}.fdp-approval-flow-team-list .fd-form-item .fd-list__item{padding-left:2rem!important;cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-icon{position:absolute;right:1rem;top:2rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);cursor:pointer}.fdp-approval-flow-team-list .fd-form-item fd-avatar{color:#fff;color:var(--sapBaseColor, #fff)}[dir=rtl] .fdp-approval-flow-team-list .fd-form-item fd-icon,.fdp-approval-flow-team-list[dir=rtl] .fd-form-item fd-icon{right:auto;left:1rem}[dir=rtl] .fdp-approval-flow-team-list .fd-list__item,.fdp-approval-flow-team-list[dir=rtl] .fd-list__item{padding-right:2rem!important;padding-left:0!important}\\n\"] }]\n }], propDecorators: { teams: [{\n type: Input\n }], isRtl: [{\n type: Input\n }], selectedTeamId: [{\n type: Input\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTeamClick: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTeamRadioClick: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUd2Qzs7O0dBR0c7QUFxQkgsTUFBTSxPQUFPLDZCQUE2QjtJQXBCMUM7UUFxQkksMEJBQTBCO1FBRTFCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTNCLDBCQUEwQjtRQUUxQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBTWQsa0NBQWtDO1FBR2xDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFL0MsNkNBQTZDO1FBRzdDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRXBELGNBQWM7UUFDZCxlQUFVLEdBQUcsU0FBUyxDQUFDO0tBTTFCO0lBSkcsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBN0JRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDZTQ3BDMUMsd2xDQXlCQSwrM0JEQ1EsYUFBYSx5ZEFDYix1QkFBdUIsb2RBQ3ZCLGtCQUFrQixnRkFDbEIsaUJBQWlCLCtGQUNqQixvQkFBb0IsMlFBQ3BCLFdBQVcsK1ZBQ1gseUJBQXlCLG1FQUN6QixhQUFhOzsyRkFHUiw2QkFBNkI7a0JBcEJ6QyxTQUFTOytCQUNJLDZCQUE2QixtQkFHdEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsNkJBQTZCO3FCQUN2QyxXQUNRO3dCQUNMLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsYUFBYTtxQkFDaEI7OEJBS0QsS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7O1FBS04sK0RBQStEO1FBQy9ELFdBQVc7c0JBRlYsTUFBTTs7UUFNUCwrREFBK0Q7UUFDL0QsZ0JBQWdCO3NCQUZmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50LCBGb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9yYWRpbyc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7IHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxUZWFtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd1RlYW1MaXN0IGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0J1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgUmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB7XG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgdGVhbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgaW4gUlRMIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzUnRsID0gZmFsc2U7XG5cbiAgICAvKiogU2VsZWN0ZWQgdGVhbSBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRUZWFtSWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiB0ZWFtIGNsaWNrICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25UZWFtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVGVhbT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIHRlYW0gc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uVGVhbVJhZGlvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVGVhbT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dUZWFtRGV0YWlscyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRlYW1DbGljay5lbWl0KHRlYW0pO1xuICAgIH1cbn1cbiIsIjxmZHAtbGlzdCBbaGFzQnlMaW5lXT1cInRydWVcIiBmZENvbXBhY3Q+XG4gICAgPGZkLWZvcm0tZ3JvdXA+XG4gICAgICAgIEBmb3IgKHRlYW0gb2YgdGVhbXM7IHRyYWNrIF90cmFja0J5Rm4oaSwgdGVhbSk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0ZWFtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ3RlYW0tcmFkaW8nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIid0ZWFtLXJhZGlvJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGVhbUlkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGVhbVJhZGlvQ2xpY2suZW1pdCh0ZWFtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidhcHByb3ZhbC10ZWFtLScgKyB0ZWFtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F2YXRhcl09XCJ7IGltYWdlOiAnJywgYXJpYUxhYmVsOiB0ZWFtLm5hbWUgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJ0ZWFtLmRlc2NyaXB0aW9uIHx8IHRlYW0ubWVtYmVycy5sZW5ndGggKyAnIG1lbWJlcnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInRlYW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2hvd1RlYW1EZXRhaWxzKHRlYW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCInbmF2aWdhdGlvbi0nICsgKGlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JykgKyAnLWFycm93J1wiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9mZC1mb3JtLWdyb3VwPlxuPC9mZHAtbGlzdD5cbiJdfQ==","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowUserDetails component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowUserDetailsComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowUserDetailsComponent, isStandalone: true, selector: \"fdp-approval-flow-user-details\", inputs: { user: \"user\", details: \"details\", detailsTemplate: \"detailsTemplate\" }, host: { classAttribute: \"fdp-approval-flow-user-details\" }, ngImport: i0, template: \"<div class=\\\"fdp-approval-flow-user-details__user-info\\\">\\n <fd-avatar [image]=\\\"user.imgUrl\\\" size=\\\"s\\\"> </fd-avatar>\\n <div>\\n <div class=\\\"fdp-approval-flow-user-details__name\\\">{{ user.name }}</div>\\n <div class=\\\"fdp-approval-flow-user-details__description\\\">{{ user.description }}</div>\\n </div>\\n</div>\\n@if (detailsTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"detailsTemplate\\\" [ngTemplateOutletContext]=\\\"{ data: details | async }\\\">\\n </ng-template>\\n}\\n\", styles: [\".fdp-approval-flow-user-details__user-info{display:flex;align-items:center;margin-bottom:1rem}.fdp-approval-flow-user-details__name{font-size:1rem}.fdp-approval-flow-user-details__description{color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70)}\\n\"], dependencies: [{ kind: \"component\", type: AvatarComponent, selector: \"fd-avatar\", inputs: [\"class\", \"id\", \"ariaLabel\", \"ariaLabelledby\", \"label\", \"size\", \"font\", \"glyph\", \"zoomGlyph\", \"circle\", \"interactive\", \"transparent\", \"contain\", \"placeholder\", \"tile\", \"border\", \"colorAccent\", \"colorIndication\", \"random\", \"clickable\", \"valueState\", \"image\", \"alterIcon\", \"backupImage\"], outputs: [\"avatarClicked\", \"zoomGlyphClicked\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserDetailsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-user-details', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-user-details'\n }, imports: [AvatarComponent, NgTemplateOutlet, AsyncPipe], template: \"<div class=\\\"fdp-approval-flow-user-details__user-info\\\">\\n <fd-avatar [image]=\\\"user.imgUrl\\\" size=\\\"s\\\"> </fd-avatar>\\n <div>\\n <div class=\\\"fdp-approval-flow-user-details__name\\\">{{ user.name }}</div>\\n <div class=\\\"fdp-approval-flow-user-details__description\\\">{{ user.description }}</div>\\n </div>\\n</div>\\n@if (detailsTemplate) {\\n <ng-template [ngTemplateOutlet]=\\\"detailsTemplate\\\" [ngTemplateOutletContext]=\\\"{ data: details | async }\\\">\\n </ng-template>\\n}\\n\", styles: [\".fdp-approval-flow-user-details__user-info{display:flex;align-items:center;margin-bottom:1rem}.fdp-approval-flow-user-details__name{font-size:1rem}.fdp-approval-flow-user-details__description{color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70)}\\n\"] }]\n }], propDecorators: { user: [{\n type: Input\n }], details: [{\n type: Input\n }], detailsTemplate: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHL0Q7OztHQUdHO0FBWUgsTUFBTSxPQUFPLGdDQUFnQzs4R0FBaEMsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msd09DdkI3QyxtZkFXQSxzVERVYyxlQUFlLDZZQUFFLGdCQUFnQiwrSUFBRSxTQUFTOzsyRkFFN0MsZ0NBQWdDO2tCQVg1QyxTQUFTOytCQUNJLGdDQUFnQyxpQkFHM0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsZ0NBQWdDO3FCQUMxQyxXQUNRLENBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQzs4QkFLdkQsSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9hdmF0YXInO1xuaW1wb3J0IHsgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW0F2YXRhckNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldCwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB7XG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlcjogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciBkZXRhaWxzICovXG4gICAgQElucHV0KClcbiAgICBkZXRhaWxzOiBOdWxsYWJsZTxPYnNlcnZhYmxlPGFueT4+O1xuXG4gICAgLyoqIEFwcHJvdmFsIEZsb3cgdXNlciBkZXRhaWxzIHRlbXBsYXRlICovXG4gICAgQElucHV0KClcbiAgICBkZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzX191c2VyLWluZm9cIj5cbiAgICA8ZmQtYXZhdGFyIFtpbWFnZV09XCJ1c2VyLmltZ1VybFwiIHNpemU9XCJzXCI+IDwvZmQtYXZhdGFyPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHNfX25hbWVcIj57eyB1c2VyLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc19fZGVzY3JpcHRpb25cIj57eyB1c2VyLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoZGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRldGFpbHNUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6IGRldGFpbHMgfCBhc3luYyB9XCI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, inject, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ListComponent, StandardListItemComponent } from '@fundamental-ngx/platform/list';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nconst ITEMS_RENDERED_AT_ONCE = 100;\nconst INTERVAL_IN_MS = 10;\n/**\n * @deprecated\n * ApprovalFlowUserList component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowUserListComponent {\n /** @hidden */\n constructor(_cdr) {\n this._cdr = _cdr;\n /** Approval flow users */\n this.users = [];\n /** Approval flow selected users */\n this.selectedUsers = [];\n /** Whether the list is selectable */\n this.isSelectable = true;\n /** Event emitted on user click */\n this.onUserClick = new EventEmitter();\n /** Event emitted on selection change */\n this.onSelectionChange = new EventEmitter();\n /** @hidden */\n this._selectedItems = [];\n /** @hidden */\n this._idPrefix = 'approval-node-user-';\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this._displayUsers = [];\n /** @hidden */\n this._allSelectedUsers = [];\n /** @hidden */\n this._destroyed$ = inject(DestroyRef);\n /** @hidden */\n this._dontCallSelection = false;\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.selectedUsers.length) {\n this._selectItems(this.selectedUsers);\n this._allSelectedUsers = [...this.selectedUsers];\n this._cdr.markForCheck();\n }\n if (this.isSelectable) {\n this._listenToListItemChange();\n }\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (changes.users) {\n this._collectDataProgressive();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._killInterval();\n }\n /** @hidden */\n _onSelect(event) {\n if (!this._dontCallSelection) {\n this._selectedItems = event.selectedItems;\n if (event.removed) {\n const ids = event.removed.map((item) => item.id);\n this._allSelectedUsers = this._allSelectedUsers.filter((user) => !ids.includes(`${this._idPrefix + user.id}`));\n }\n if (event.added) {\n this._allSelectedUsers.push(...this._getUsersFromSelectedItems(event.added));\n }\n this.onSelectionChange.emit(this._allSelectedUsers);\n this._cdr.detectChanges();\n }\n }\n /** @hidden */\n _getUsersFromSelectedItems(items) {\n return items\n .map((item) => this.users.find((user) => `${this._idPrefix + user.id}` === item.id))\n .filter((u) => !!u);\n }\n /** @hidden */\n _collectDataProgressive() {\n this._killInterval();\n this._displayUsers = [];\n if (!this.users?.length) {\n return;\n }\n const collectionTracker = { currentIndex: 0 };\n this._userCollectorIntervalFn(collectionTracker);\n this._intervalID = window.setInterval(this._userCollectorIntervalFn.bind(this), INTERVAL_IN_MS, collectionTracker);\n }\n /** @hidden */\n _userCollectorIntervalFn(tracker) {\n const nextIndex = tracker.currentIndex + ITEMS_RENDERED_AT_ONCE;\n const collectedUsers = [];\n for (let i = tracker.currentIndex; i <= nextIndex; i++) {\n if (i >= this.users.length) {\n this._killInterval();\n break;\n }\n collectedUsers.push(this.users[i]);\n }\n tracker.currentIndex += ITEMS_RENDERED_AT_ONCE;\n this._displayUsers.push(...collectedUsers);\n this._cdr.markForCheck();\n }\n /** @hidden */\n _killInterval() {\n if (this._intervalID) {\n clearInterval(this._intervalID);\n }\n }\n /** @hidden */\n _listenToListItemChange() {\n this.listItems.changes.pipe(takeUntilDestroyed(this._destroyed$)).subscribe(() => {\n this._selectItems(this._allSelectedUsers);\n this._cdr.detectChanges();\n });\n }\n /** @hidden */\n _selectItems(users) {\n this._dontCallSelection = true;\n const allSelectedUserNames = users.map((user) => this._idPrefix + user.id);\n const currentSelectedList = this.listItems.filter((item) => allSelectedUserNames.includes(item.id));\n this.list._clearSelection();\n this._selectedItems = [...currentSelectedList];\n this._selectedItems.forEach((item) => {\n item._selected = true;\n this.list._selectItem(item);\n });\n this._dontCallSelection = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowUserListComponent, isStandalone: true, selector: \"fdp-approval-flow-user-list\", inputs: { users: \"users\", selectedUsers: \"selectedUsers\", isSelectable: \"isSelectable\" }, outputs: { onUserClick: \"onUserClick\", onSelectionChange: \"onSelectionChange\" }, host: { classAttribute: \"fdp-approval-flow-user-list\" }, viewQueries: [{ propertyName: \"list\", first: true, predicate: ListComponent, descendants: true }, { propertyName: \"listItems\", predicate: StandardListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"@if (_allSelectedUsers.length) {\\n <div class=\\\"fdp-approval-flow-user-list__selected-count\\\">\\n @if (_allSelectedUsers.length === 1) {\\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\\n } @else {\\n {{\\n 'platformApprovalFlow.userListSelectedItemsCountPlural'\\n | fdTranslate: { count: _allSelectedUsers.length }\\n }}\\n }\\n </div>\\n}\\n<fdp-list\\n [selectionMode]=\\\"isSelectable ? 'multi' : 'none'\\\"\\n [selection]=\\\"isSelectable\\\"\\n [navigationIndicator]=\\\"true\\\"\\n [hasByLine]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedItems\\\"\\n [selectedItems]=\\\"_selectedItems\\\"\\n (selectedItemChange)=\\\"_onSelect($event)\\\"\\n>\\n @for (_user of _displayUsers; track _trackByFn($index, _user)) {\\n <fdp-standard-list-item\\n [attr.id]=\\\"_idPrefix + _user.id\\\"\\n [id]=\\\"_idPrefix + _user.id\\\"\\n [avatar]=\\\"{ image: _user.imgUrl, ariaLabel: _user.name }\\\"\\n [description]=\\\"_user.description\\\"\\n [ariaLabel]=\\\"_user.name\\\"\\n [title]=\\\"_user.name\\\"\\n (click)=\\\"$event.stopPropagation(); onUserClick.emit(_user)\\\"\\n ></fdp-standard-list-item>\\n }\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\\n\"], dependencies: [{ kind: \"component\", type: ListComponent, selector: \"fdp-list\", inputs: [\"selectedItems\", \"ariaSetsize\", \"ariaMultiselectable\", \"loadTitle\", \"loadingLabel\", \"delayTime\", \"itemSize\", \"loadMore\", \"loadOnScroll\", \"role\", \"listType\", \"maxHeight\", \"noBorder\", \"scrollOffsetPercentage\", \"selection\", \"selectionMode\", \"value\", \"rowSelection\", \"dataSource\", \"navigated\", \"navigationIndicator\", \"hasByLine\", \"hasObject\", \"unreadIndicator\", \"interceptTabKey\"], outputs: [\"selectedItemChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: StandardListItemComponent, selector: \"fdp-standard-list-item\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowUserListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-user-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-user-list'\n }, imports: [ListComponent, FormsModule, StandardListItemComponent, FdTranslatePipe], template: \"@if (_allSelectedUsers.length) {\\n <div class=\\\"fdp-approval-flow-user-list__selected-count\\\">\\n @if (_allSelectedUsers.length === 1) {\\n {{ 'platformApprovalFlow.userListSelectedItemsCountSingular' | fdTranslate }}\\n } @else {\\n {{\\n 'platformApprovalFlow.userListSelectedItemsCountPlural'\\n | fdTranslate: { count: _allSelectedUsers.length }\\n }}\\n }\\n </div>\\n}\\n<fdp-list\\n [selectionMode]=\\\"isSelectable ? 'multi' : 'none'\\\"\\n [selection]=\\\"isSelectable\\\"\\n [navigationIndicator]=\\\"true\\\"\\n [hasByLine]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedItems\\\"\\n [selectedItems]=\\\"_selectedItems\\\"\\n (selectedItemChange)=\\\"_onSelect($event)\\\"\\n>\\n @for (_user of _displayUsers; track _trackByFn($index, _user)) {\\n <fdp-standard-list-item\\n [attr.id]=\\\"_idPrefix + _user.id\\\"\\n [id]=\\\"_idPrefix + _user.id\\\"\\n [avatar]=\\\"{ image: _user.imgUrl, ariaLabel: _user.name }\\\"\\n [description]=\\\"_user.description\\\"\\n [ariaLabel]=\\\"_user.name\\\"\\n [title]=\\\"_user.name\\\"\\n (click)=\\\"$event.stopPropagation(); onUserClick.emit(_user)\\\"\\n ></fdp-standard-list-item>\\n }\\n</fdp-list>\\n\", styles: [\".fdp-approval-flow-user-list{display:block;margin-top:-1rem}.fdp-approval-flow-user-list__selected-count{line-height:2rem;margin:0 -1rem;padding:0 1rem;background:#f2f2f2;background:var(--sapList_HeaderBackground, #f2f2f2)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { users: [{\n type: Input\n }], selectedUsers: [{\n type: Input\n }], isSelectable: [{\n type: Input\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onUserClick: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelectionChange: [{\n type: Output\n }], list: [{\n type: ViewChild,\n args: [ListComponent]\n }], listItems: [{\n type: ViewChildren,\n args: [StandardListItemComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBRUgsYUFBYSxFQUViLHlCQUF5QixFQUM1QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUd2QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUI7OztHQUdHO0FBWUgsTUFBTSxPQUFPLDZCQUE2QjtJQXVEdEMsY0FBYztJQUNkLFlBQW9CLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBdkQzQywwQkFBMEI7UUFFMUIsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0IsbUNBQW1DO1FBRW5DLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyxxQ0FBcUM7UUFFckMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIsa0NBQWtDO1FBR2xDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFL0Msd0NBQXdDO1FBR3hDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBVXZELGNBQWM7UUFDZCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEMsY0FBYztRQUNkLGNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUVsQyxjQUFjO1FBQ2QsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUV2QixjQUFjO1FBQ2Qsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLGNBQWM7UUFDZCxzQkFBaUIsR0FBbUIsRUFBRSxDQUFDO1FBS3ZDLGNBQWM7UUFDTixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6QyxjQUFjO1FBQ04sdUJBQWtCLEdBQUcsS0FBSyxDQUFDO0lBR1csQ0FBQztJQUUvQyxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUEyQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBRTFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQ2xELENBQUMsSUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDdkUsQ0FBQztZQUNOLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sMEJBQTBCLENBQUMsS0FBcUI7UUFDcEQsT0FBTyxLQUFLO2FBQ1AsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbkYsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN4QyxjQUFjLEVBQ2QsaUJBQWlCLENBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QixDQUFDLE9BQWlDO1FBQzlELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUM7UUFFaEUsTUFBTSxjQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUUxQyxLQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsTUFBTTtZQUNWLENBQUM7WUFFRCxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxDQUFDLFlBQVksSUFBSSxzQkFBc0IsQ0FBQztRQUUvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWSxDQUFDLEtBQXFCO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7OEdBbExRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGlXQXdCM0IsYUFBYSwrREFJVix5QkFBeUIscUVDN0UzQyw0dkNBaUNBLDJSRGNjLGFBQWEsd2RBQUUsV0FBVywrVkFBRSx5QkFBeUIsOERBQUUsZUFBZTs7MkZBRXZFLDZCQUE2QjtrQkFYekMsU0FBUzsrQkFDSSw2QkFBNkIsaUJBR3hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLDZCQUE2QjtxQkFDdkMsV0FDUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxDQUFDO3NGQUtqRixLQUFLO3NCQURKLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSzs7UUFLTiwrREFBK0Q7UUFDL0QsV0FBVztzQkFGVixNQUFNOztRQU1QLCtEQUErRDtRQUMvRCxpQkFBaUI7c0JBRmhCLE1BQU07Z0JBTVAsSUFBSTtzQkFESCxTQUFTO3VCQUFDLGFBQWE7Z0JBS3hCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICAgIFN0YW5kYXJkTGlzdEl0ZW1Db21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7IHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IElURU1TX1JFTkRFUkVEX0FUX09OQ0UgPSAxMDA7XG5jb25zdCBJTlRFUlZBTF9JTl9NUyA9IDEwO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dVc2VyTGlzdCBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdCdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtMaXN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgU3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudCwgRmRUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogQXBwcm92YWwgZmxvdyB1c2VycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQXBwcm92YWwgZmxvdyBzZWxlY3RlZCB1c2VycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGlzIHNlbGVjdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU2VsZWN0YWJsZSA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiB1c2VyIGNsaWNrICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25Vc2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsVXNlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIHNlbGVjdGlvbiBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxVc2VyW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0OiBMaXN0Q29tcG9uZW50PEFwcHJvdmFsVXNlcj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oU3RhbmRhcmRMaXN0SXRlbUNvbXBvbmVudClcbiAgICBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxTdGFuZGFyZExpc3RJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkSXRlbXM6IEJhc2VMaXN0SXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pZFByZWZpeCA9ICdhcHByb3ZhbC1ub2RlLXVzZXItJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FsbFNlbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ludGVydmFsSUQ/OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCQgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RvbnRDYWxsU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW1zKHRoaXMuc2VsZWN0ZWRVc2Vycyk7XG4gICAgICAgICAgICB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzID0gWy4uLnRoaXMuc2VsZWN0ZWRVc2Vyc107XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvTGlzdEl0ZW1DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy51c2Vycykge1xuICAgICAgICAgICAgdGhpcy5fY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWxlY3QoZXZlbnQ6IFNlbGVjdGlvbkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZG9udENhbGxTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBldmVudC5zZWxlY3RlZEl0ZW1zO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQucmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IGV2ZW50LnJlbW92ZWQubWFwKChpdGVtOiBCYXNlTGlzdEl0ZW0pID0+IGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FsbFNlbGVjdGVkVXNlcnMgPSB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHVzZXI6IEFwcHJvdmFsVXNlcikgPT4gIWlkcy5pbmNsdWRlcyhgJHt0aGlzLl9pZFByZWZpeCArIHVzZXIuaWR9YClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWRkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hbGxTZWxlY3RlZFVzZXJzLnB1c2goLi4udGhpcy5fZ2V0VXNlcnNGcm9tU2VsZWN0ZWRJdGVtcyhldmVudC5hZGRlZCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fYWxsU2VsZWN0ZWRVc2Vycyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRVc2Vyc0Zyb21TZWxlY3RlZEl0ZW1zKGl0ZW1zOiBCYXNlTGlzdEl0ZW1bXSk6IEFwcHJvdmFsVXNlcltdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiB0aGlzLnVzZXJzLmZpbmQoKHVzZXIpID0+IGAke3RoaXMuX2lkUHJlZml4ICsgdXNlci5pZH1gID09PSBpdGVtLmlkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHUpOiB1IGlzIEFwcHJvdmFsVXNlciA9PiAhIXUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29sbGVjdERhdGFQcm9ncmVzc2l2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2lsbEludGVydmFsKCk7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlVc2VycyA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy51c2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uVHJhY2tlciA9IHsgY3VycmVudEluZGV4OiAwIH07XG5cbiAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4oY29sbGVjdGlvblRyYWNrZXIpO1xuICAgICAgICB0aGlzLl9pbnRlcnZhbElEID0gd2luZG93LnNldEludGVydmFsKFxuICAgICAgICAgICAgdGhpcy5fdXNlckNvbGxlY3RvckludGVydmFsRm4uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIElOVEVSVkFMX0lOX01TLFxuICAgICAgICAgICAgY29sbGVjdGlvblRyYWNrZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VzZXJDb2xsZWN0b3JJbnRlcnZhbEZuKHRyYWNrZXI6IHsgY3VycmVudEluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSB0cmFja2VyLmN1cnJlbnRJbmRleCArIElURU1TX1JFTkRFUkVEX0FUX09OQ0U7XG5cbiAgICAgICAgY29uc3QgY29sbGVjdGVkVXNlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRyYWNrZXIuY3VycmVudEluZGV4OyBpIDw9IG5leHRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSB0aGlzLnVzZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tpbGxJbnRlcnZhbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRVc2Vycy5wdXNoKHRoaXMudXNlcnNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhY2tlci5jdXJyZW50SW5kZXggKz0gSVRFTVNfUkVOREVSRURfQVRfT05DRTtcblxuICAgICAgICB0aGlzLl9kaXNwbGF5VXNlcnMucHVzaCguLi5jb2xsZWN0ZWRVc2Vycyk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tpbGxJbnRlcnZhbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2ludGVydmFsSUQpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJRCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTGlzdEl0ZW1DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtcyh0aGlzLl9hbGxTZWxlY3RlZFVzZXJzKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0SXRlbXModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYWxsU2VsZWN0ZWRVc2VyTmFtZXMgPSB1c2Vycy5tYXAoKHVzZXIpID0+IHRoaXMuX2lkUHJlZml4ICsgdXNlci5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZExpc3QgPSB0aGlzLmxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGFsbFNlbGVjdGVkVXNlck5hbWVzLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICAgICAgdGhpcy5saXN0Ll9jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gWy4uLmN1cnJlbnRTZWxlY3RlZExpc3RdO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5fc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2RvbnRDYWxsU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgfVxufVxuIiwiQGlmIChfYWxsU2VsZWN0ZWRVc2Vycy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0X19zZWxlY3RlZC1jb3VudFwiPlxuICAgICAgICBAaWYgKF9hbGxTZWxlY3RlZFVzZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJMaXN0U2VsZWN0ZWRJdGVtc0NvdW50U2luZ3VsYXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy51c2VyTGlzdFNlbGVjdGVkSXRlbXNDb3VudFBsdXJhbCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyBjb3VudDogX2FsbFNlbGVjdGVkVXNlcnMubGVuZ3RoIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbjxmZHAtbGlzdFxuICAgIFtzZWxlY3Rpb25Nb2RlXT1cImlzU2VsZWN0YWJsZSA/ICdtdWx0aScgOiAnbm9uZSdcIlxuICAgIFtzZWxlY3Rpb25dPVwiaXNTZWxlY3RhYmxlXCJcbiAgICBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgICBbaGFzQnlMaW5lXT1cInRydWVcIlxuICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkSXRlbXNcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cIl9zZWxlY3RlZEl0ZW1zXCJcbiAgICAoc2VsZWN0ZWRJdGVtQ2hhbmdlKT1cIl9vblNlbGVjdCgkZXZlbnQpXCJcbj5cbiAgICBAZm9yIChfdXNlciBvZiBfZGlzcGxheVVzZXJzOyB0cmFjayBfdHJhY2tCeUZuKCRpbmRleCwgX3VzZXIpKSB7XG4gICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfaWRQcmVmaXggKyBfdXNlci5pZFwiXG4gICAgICAgICAgICBbaWRdPVwiX2lkUHJlZml4ICsgX3VzZXIuaWRcIlxuICAgICAgICAgICAgW2F2YXRhcl09XCJ7IGltYWdlOiBfdXNlci5pbWdVcmwsIGFyaWFMYWJlbDogX3VzZXIubmFtZSB9XCJcbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJfdXNlci5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIl91c2VyLm5hbWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIl91c2VyLm5hbWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25Vc2VyQ2xpY2suZW1pdChfdXNlcilcIlxuICAgICAgICA+PC9mZHAtc3RhbmRhcmQtbGlzdC1pdGVtPlxuICAgIH1cbjwvZmRwLWxpc3Q+XG4iXX0=","import { EventEmitter, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport var VIEW_MODES;\n(function (VIEW_MODES) {\n VIEW_MODES[\"SELECT_TEAM\"] = \"SELECT_TEAM\";\n VIEW_MODES[\"SELECT_USER\"] = \"SELECT_USER\";\n VIEW_MODES[\"VIEW_TEAM_MEMBERS\"] = \"VIEW_TEAM_MEMBERS\";\n VIEW_MODES[\"USER_DETAILS\"] = \"USER_DETAILS\";\n})(VIEW_MODES || (VIEW_MODES = {}));\nexport class ApprovalFlowAddNodeViewService {\n constructor() {\n /** @hidden */\n this.onViewChange = new EventEmitter();\n }\n /** @hidden */\n get isUserDetailsMode() {\n return this.currentView === VIEW_MODES.USER_DETAILS;\n }\n /** @hidden */\n get isTeamMembersMode() {\n return this.currentView === VIEW_MODES.VIEW_TEAM_MEMBERS;\n }\n /** @hidden */\n get isSelectUserMode() {\n return this.currentView === VIEW_MODES.SELECT_USER;\n }\n /** @hidden */\n get isSelectTeamMode() {\n return this.currentView === VIEW_MODES.SELECT_TEAM;\n }\n /** @hidden */\n get team() {\n return this.selectedTeam;\n }\n /** @hidden */\n setCurrentView(view) {\n this.currentView = view;\n this.onViewChange.emit();\n }\n /** @hidden */\n resetView() {\n this.currentView = undefined;\n this.onViewChange.emit();\n }\n /** @hidden */\n selectTeam(team) {\n this.selectedTeam = team;\n }\n /** @hidden */\n resetTeam() {\n this.selectedTeam = undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeViewService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pELE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDbEIseUNBQTJCLENBQUE7SUFDM0IseUNBQTJCLENBQUE7SUFDM0IscURBQXVDLENBQUE7SUFDdkMsMkNBQTZCLENBQUE7QUFDakMsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBR0QsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUVJLGNBQWM7UUFDZCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FxRHJDO0lBOUNHLGNBQWM7SUFDZCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUM7SUFDN0QsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYyxDQUFDLElBQWdCO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFrQjtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVM7UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDOzhHQXREUSw4QkFBOEI7a0hBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwcm92YWxUZWFtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBlbnVtIFZJRVdfTU9ERVMge1xuICAgIFNFTEVDVF9URUFNID0gJ1NFTEVDVF9URUFNJyxcbiAgICBTRUxFQ1RfVVNFUiA9ICdTRUxFQ1RfVVNFUicsXG4gICAgVklFV19URUFNX01FTUJFUlMgPSAnVklFV19URUFNX01FTUJFUlMnLFxuICAgIFVTRVJfREVUQUlMUyA9ICdVU0VSX0RFVEFJTFMnXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2Uge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25WaWV3Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGN1cnJlbnRWaWV3PzogVklFV19NT0RFUztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRUZWFtPzogQXBwcm92YWxUZWFtO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNVc2VyRGV0YWlsc01vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWaWV3ID09PSBWSUVXX01PREVTLlVTRVJfREVUQUlMUztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc1RlYW1NZW1iZXJzTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTZWxlY3RVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNTZWxlY3RUZWFtTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXcgPT09IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdGVhbSgpOiBBcHByb3ZhbFRlYW0gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRlYW07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRDdXJyZW50Vmlldyh2aWV3OiBWSUVXX01PREVTKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB2aWV3O1xuICAgICAgICB0aGlzLm9uVmlld0NoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZXNldFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25WaWV3Q2hhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlc2V0VGVhbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlYW0gPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { FdDate } from '@fundamental-ngx/core/datetime';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DatePickerComponent } from '@fundamental-ngx/core/date-picker';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { FormItemComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { MultiInputComponent } from '@fundamental-ngx/core/multi-input';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { ApprovalFlowTeamListComponent } from '../approval-flow-team-list/approval-flow-team-list.component';\nimport { ApprovalFlowUserDetailsComponent } from '../approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from '../approval-flow-user-list/approval-flow-user-list.component';\nimport { displayTeamFn, displayUserFn, filterByName, trackByFn } from '../helpers';\nimport { ApprovalFlowAddNodeViewService, VIEW_MODES } from '../services/approval-flow-add-node-view.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"../services/approval-flow-add-node-view.service\";\nimport * as i3 from \"@angular/forms\";\nexport var APPROVAL_FLOW_NODE_TYPES;\n(function (APPROVAL_FLOW_NODE_TYPES) {\n APPROVAL_FLOW_NODE_TYPES[\"SERIAL\"] = \"SERIAL\";\n APPROVAL_FLOW_NODE_TYPES[\"PARALLEL\"] = \"PARALLEL\";\n})(APPROVAL_FLOW_NODE_TYPES || (APPROVAL_FLOW_NODE_TYPES = {}));\nexport var APPROVAL_FLOW_APPROVER_TYPES;\n(function (APPROVAL_FLOW_APPROVER_TYPES) {\n APPROVAL_FLOW_APPROVER_TYPES[\"SINGLE_USER\"] = \"SINGLE_USER\";\n APPROVAL_FLOW_APPROVER_TYPES[\"ANYONE\"] = \"ANYONE\";\n APPROVAL_FLOW_APPROVER_TYPES[\"EVERYONE\"] = \"EVERYONE\";\n})(APPROVAL_FLOW_APPROVER_TYPES || (APPROVAL_FLOW_APPROVER_TYPES = {}));\n/**\n * @deprecated\n * ApprovalFlowAddNode component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowAddNodeComponent {\n /** @hidden */\n constructor(dialogRef, viewService, _cdr) {\n this.dialogRef = dialogRef;\n this.viewService = viewService;\n this._cdr = _cdr;\n /** @hidden */\n this._nodeType = APPROVAL_FLOW_NODE_TYPES.SERIAL;\n /** @hidden */\n this._nodeTypes = APPROVAL_FLOW_NODE_TYPES;\n /** @hidden */\n this._nodeTypesArray = Object.keys(APPROVAL_FLOW_NODE_TYPES);\n /** @hidden */\n this._approverType = APPROVAL_FLOW_APPROVER_TYPES.SINGLE_USER;\n /** @hidden */\n this._approverTypes = APPROVAL_FLOW_APPROVER_TYPES;\n /** @hidden */\n this._approverTypesArray = Object.keys(APPROVAL_FLOW_APPROVER_TYPES);\n /** @hidden */\n this._dueDate = FdDate.getNow();\n /** @hidden */\n this._selectMode = false;\n /** @hidden */\n this._approvers = [];\n /** @hidden */\n this._teams = [];\n /** @hidden */\n this._selectedApprovers = [];\n /** @hidden */\n this._selectedTeamArray = [];\n /** @hidden */\n this._selectedTeamMembers = [];\n /** @hidden */\n this._filteredTeamMembers = [];\n /** @hidden */\n this._checkDueDate = false;\n /** @hidden */\n this._displayUserFn = displayUserFn;\n /** @hidden */\n this._displayTeamFn = displayTeamFn;\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this._addToNextSerial = false;\n /** @hidden */\n this._searchInput = '';\n }\n /** @hidden */\n get _data() {\n return this.dialogRef.data;\n }\n /** @hidden */\n get _isSingleUserMode() {\n return this._approverType === this._approverTypes.SINGLE_USER;\n }\n /** @hidden */\n get _isMainSubmitButtonDisabled() {\n const approvers = this._isSingleUserMode ? this._selectedApprovers : this._selectedTeamArray;\n return !approvers.length || (this._checkDueDate && !this._dueDate);\n }\n /** @hidden */\n get _headerArrowGlyph() {\n return 'navigation-' + (this._data.rtl ? 'right' : 'left') + '-arrow';\n }\n /** @hidden */\n ngOnInit() {\n // triggering initial loading of data in data sources.\n this._data.teamDataSource.match();\n this._data.userDataSource.match();\n const teams$ = this._data.teamDataSource.open();\n const approvers$ = this._data.userDataSource.open();\n this._dataSourceSub = combineLatest([teams$, approvers$]).subscribe(([teams, approvers]) => {\n this._teams = teams;\n this._approvers = approvers;\n if (this._data.isEdit) {\n this._checkDueDate = !!this._data.checkDueDate;\n if (this._checkDueDate && this._data.node?.dueDate) {\n this._dueDate = FdDate.getFdDateByDate(new Date(this._data.node.dueDate));\n }\n this._selectedApprovers = [...(this._data.node?.approvers ?? [])];\n const team = this._data.node?.approvalTeamId &&\n this._teams.find((t) => t.id === this._data.node?.approvalTeamId);\n if (team) {\n this.viewService.selectTeam(team);\n this._selectedTeam = team;\n this._selectedTeamArray = [team];\n this._approverType = this._data.node?.isEveryoneApprovalNeeded\n ? this._approverTypes.EVERYONE\n : this._approverTypes.ANYONE;\n }\n }\n this._cdr.detectChanges();\n });\n this._viewChangeSub = this.viewService.onViewChange.subscribe(() => {\n this._cdr.detectChanges();\n });\n switch (this._data.nodeTarget) {\n case 'empty':\n case 'before':\n case 'after':\n this._nodeType = this._nodeTypes.SERIAL;\n break;\n case 'parallel':\n this._nodeType = this._nodeTypes.PARALLEL;\n break;\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._viewChangeSub.unsubscribe();\n this._dataSourceSub.unsubscribe();\n this._data.userDataSource.close();\n this._data.teamDataSource.close();\n }\n /** @hidden */\n _goToSelectMode() {\n this._selectMode = true;\n this.viewService.setCurrentView(this._isSingleUserMode ? VIEW_MODES.SELECT_USER : VIEW_MODES.SELECT_TEAM);\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitSelectMode() {\n this._searchInput = '';\n this._onSearchStringChange('');\n this._selectedApprovers = this._data.node?.approvers?.length ? [...this._data.node.approvers] : [];\n if (!this._data.isEdit && !this._data.node?.approvalTeamId) {\n this.viewService.resetTeam();\n }\n this._selectMode = false;\n this.viewService.resetView();\n this._cdr.detectChanges();\n }\n /** @hidden */\n _setSelectedApprovers(approvers) {\n this._selectedApprovers = approvers;\n this._confirmSelectedApprovers();\n }\n /** @hidden */\n _confirmSelectedApprovers() {\n if (!this._data.node) {\n return;\n }\n this._data.node.approvers = this._selectedApprovers;\n this._data.node.variousTeams = this._data.node.approvers.some((u) => u.teamId !== this._data.node.approvers[0].teamId);\n this._data.node.description = this._data.node.variousTeams ? '' : this._selectedApprovers[0]?.description;\n delete this._data.node.approvalTeamId;\n delete this._data.node.isEveryoneApprovalNeeded;\n this._exitSelectMode();\n }\n /** @hidden */\n _setSelectedTeam(team) {\n this.viewService.selectTeam(team);\n }\n /** @hidden */\n _confirmSelectedTeam() {\n if (!this.viewService.team) {\n return;\n }\n this._selectedTeam = this.viewService.team;\n this._selectedTeamArray = [this.viewService.team];\n if (this._data.node) {\n this._data.node.variousTeams = false;\n this._data.node.approvalTeamId = this.viewService.team.id;\n this._data.node.description = this.viewService.team.name;\n this._data.node.isEveryoneApprovalNeeded = this._approverType === APPROVAL_FLOW_APPROVER_TYPES.EVERYONE;\n }\n this._exitSelectMode();\n }\n /** @hidden */\n _seeUserDetails(user) {\n this.viewService.setCurrentView(VIEW_MODES.USER_DETAILS);\n this._userToShowDetails = user;\n this._userToShowDetailsData$ = this._data.userDataSource.dataProvider.getOne(new Map([['id', user.id]]));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitUserDetailsMode() {\n this.viewService.setCurrentView(this.viewService.team ? VIEW_MODES.VIEW_TEAM_MEMBERS : VIEW_MODES.SELECT_USER);\n this._userToShowDetails = undefined;\n this._userToShowDetailsData$ = undefined;\n this._cdr.detectChanges();\n }\n /** @hidden */\n _viewTeamMembers(team) {\n this.viewService.selectTeam(team);\n this.viewService.setCurrentView(VIEW_MODES.VIEW_TEAM_MEMBERS);\n this._selectedTeamMembers = team.members;\n this._setFilteredTeamMembers(this._selectedTeamMembers); // applying local filtering\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitTeamMembersMode() {\n this.viewService.setCurrentView(VIEW_MODES.SELECT_TEAM);\n this.viewService.resetTeam();\n this._selectedTeamMembers = [];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _submit() {\n if (this._data.node && !this._isSingleUserMode && this._selectedTeam) {\n this._data.node.approvers = [...this._selectedTeam.members];\n }\n if (this._data.node && this._checkDueDate) {\n this._data.node.dueDate = this._dueDate.toDate();\n }\n this.dialogRef.close({\n node: this._data.node,\n nodeType: this._nodeType,\n toNextSerial: this._addToNextSerial\n });\n }\n /** @hidden */\n _onSearchStringChange(searchString = '') {\n this._searchInput = searchString;\n const params = new Map([['query', searchString]]);\n if (this.viewService.isSelectUserMode) {\n this._data.userDataSource.match(params);\n }\n else if (this.viewService.isSelectTeamMode) {\n this._data.teamDataSource.match(params);\n }\n else if (this.viewService.isTeamMembersMode) {\n this._setFilteredTeamMembers(this._selectedTeamMembers.filter((user) => filterByName(user, searchString)));\n }\n }\n /** @hidden */\n _setFilteredTeamMembers(users) {\n this._filteredTeamMembers = [...users];\n this._cdr.detectChanges();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: \"fdp-approval-flow-add-node\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-add-node\" }, ngImport: i0, template: \"<fd-dialog fdCompact>\\n <fd-dialog-header [class.show-search]=\\\"_selectMode && !_userToShowDetails\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (!_selectMode && !_data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\\n }\\n @if (!_selectMode && _data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\\n }\\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitTeamMembersMode()\\\"></fd-icon>\\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitUserDetailsMode()\\\"></fd-icon>\\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\\n }\\n </p>\\n @if (_selectMode && !_userToShowDetails) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n [suggestions]=\\\"[]\\\"\\n [inputText]=\\\"_searchInput\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\\\"viewService.isUserDetailsMode\\\">\\n @if (!_selectMode) {\\n @if (_data.showNodeTypeSelect) {\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_nodeType\\\">\\n @for (option of _nodeTypesArray; track option) {\\n @switch (option) {\\n @case (_nodeTypes.SERIAL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\\n </li>\\n }\\n @case (_nodeTypes.PARALLEL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n }\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_approverType\\\">\\n @for (option of _approverTypesArray; track option) {\\n @switch (option) {\\n @case (_approverTypes.SINGLE_USER) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.ANYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.EVERYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\\n @if (_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedApprovers\\\"\\n [(ngModel)]=\\\"_selectedApprovers\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n (selectedChange)=\\\"_setSelectedApprovers($event)\\\"\\n ></fd-multi-input>\\n }\\n @if (!_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedTeamArray\\\"\\n [(ngModel)]=\\\"_selectedTeamArray\\\"\\n [displayFn]=\\\"_displayTeamFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n ></fd-multi-input>\\n }\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_addToNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n @if (_checkDueDate) {\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\\n <fd-date-picker type=\\\"single\\\" [state]=\\\"!this._dueDate ? 'error' : null\\\" [(ngModel)]=\\\"_dueDate\\\">\\n </fd-date-picker>\\n </div>\\n }\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectTeamMode) {\\n @if (!_data.teamDataSource.isDataLoading) {\\n <fdp-approval-flow-team-list\\n [isRtl]=\\\"_data.rtl\\\"\\n [teams]=\\\"_teams\\\"\\n [selectedTeamId]=\\\"_selectedTeam?.id\\\"\\n (onTeamClick)=\\\"_viewTeamMembers($event)\\\"\\n (onTeamRadioClick)=\\\"_setSelectedTeam($event)\\\"\\n ></fdp-approval-flow-team-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\\\"\\n [isSelectable]=\\\"viewService.isSelectUserMode\\\"\\n [selectedUsers]=\\\"_selectedApprovers\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedApprovers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer>\\n @if (!_selectMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"_isMainSubmitButtonDisabled\\\"\\n (click)=\\\"_submit()\\\"\\n >\\n </fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close()\\\"\\n ></fd-button-bar>\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectUserMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedApprovers.length\\\"\\n (click)=\\\"_confirmSelectedApprovers()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isSelectTeamMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedTeam && !viewService.team\\\"\\n (click)=\\\"_confirmSelectedTeam()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitTeamMembersMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-button-bar>\\n }\\n }\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: FormLabelComponent, selector: \"[fd-form-label]\", inputs: [\"required\", \"colon\", \"alignLabelEnd\", \"inlineHelpContent\", \"inlineHelpGlyph\", \"inlineHelpTriggers\", \"inlineHelpBodyPlacement\", \"inlineHelpPlacement\", \"allowWrap\", \"inlineHelpLabel\", \"id\"] }, { kind: \"component\", type: SelectComponent, selector: \"fd-select\", inputs: [\"extendedBodyTemplate\", \"scrollStrategy\", \"textOverflow\", \"controlId\", \"state\", \"mobile\", \"stateMessage\", \"disabled\", \"required\", \"readonly\", \"placeholder\", \"value\", \"maxHeight\", \"glyph\", \"glyphFont\", \"closeOnOutsideClick\", \"fillControlMode\", \"controlTemplate\", \"appendTo\", \"unselectMissingOption\", \"typeaheadDebounceInterval\", \"ariaLabelledBy\", \"ariaLabel\", \"mobileConfig\", \"inline\", \"selectControlClass\", \"selectDropdownButtonClass\", \"advancedStateMessage\", \"tabOutStrategy\", \"compareWith\"], outputs: [\"isOpenChange\", \"valueChange\"] }, { kind: \"component\", type: OptionComponent, selector: \"[fd-option], fd-option\", inputs: [\"id\", \"value\", \"disabled\"], outputs: [\"selectionChange\"] }, { kind: \"component\", type: MultiInputComponent, selector: \"fd-multi-input\", inputs: [\"placeholder\", \"disabled\", \"required\", \"compactCollapse\", \"maxHeight\", \"glyph\", \"glyphFont\", \"dropdownValues\", \"openDropdownOnAddOnClicked\", \"addonIconTitle\", \"searchTerm\", \"inputId\", \"highlight\", \"selected\", \"class\", \"filterFn\", \"valueFn\", \"displayFn\", \"newTokenParseFn\", \"optionItemIdentifier\", \"newTokenValidateFn\", \"ariaLabel\", \"ariaLabelledBy\", \"fillControlMode\", \"state\", \"buttonFocusable\", \"allowNewTokens\", \"mobile\", \"showAllButton\", \"bodyMaxWidth\", \"mobileConfig\", \"includes\", \"itemTemplate\", \"title\", \"byline\", \"autoComplete\", \"open\", \"displayAddonButton\", \"addOnButtonAriaLabel\"], outputs: [\"searchTermChange\", \"selectedChange\", \"openChange\", \"addOnButtonClicked\", \"allItemsSelectedChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"component\", type: DatePickerComponent, selector: \"fd-date-picker\", inputs: [\"type\", \"placeholder\", \"inputId\", \"required\", \"customDateTimeFormat\", \"message\", \"messageTriggers\", \"selectedDate\", \"selectedMultipleDates\", \"selectedRangeDate\", \"selectedMultipleDateRanges\", \"startingDayOfWeek\", \"rangeHoverEffect\", \"useValidation\", \"allowNull\", \"activeView\", \"placement\", \"appendTo\", \"disabled\", \"closeOnDateChoose\", \"showTodayButton\", \"todayButtonLabel\", \"previousButtonDisableFunction\", \"nextButtonDisableFunction\", \"state\", \"buttonFocusable\", \"specialDaysRules\", \"yearGrid\", \"aggregatedYearGrid\", \"markWeekends\", \"showWeekNumbers\", \"allowMultipleSelection\", \"isOpen\", \"inline\", \"ariaLabelledBy\", \"processInputOnBlur\", \"preventScrollOnFocus\", \"mobile\", \"mobileConfig\", \"mobileLandscape\", \"mobilePortrait\", \"dateRangeFormat\", \"disableFunction\", \"disableRangeStartFunction\", \"disableRangeEndFunction\"], outputs: [\"isOpenChange\", \"selectedDateChange\", \"selectedMultipleDatesChange\", \"selectedRangeDateChange\", \"selectedMultipleDateRangesChange\", \"activeViewChange\"] }, { kind: \"component\", type: ApprovalFlowTeamListComponent, selector: \"fdp-approval-flow-team-list\", inputs: [\"teams\", \"isRtl\", \"selectedTeamId\"], outputs: [\"onTeamClick\", \"onTeamRadioClick\"] }, { kind: \"component\", type: ApprovalFlowUserListComponent, selector: \"fdp-approval-flow-user-list\", inputs: [\"users\", \"selectedUsers\", \"isSelectable\"], outputs: [\"onUserClick\", \"onSelectionChange\"] }, { kind: \"component\", type: ApprovalFlowUserDetailsComponent, selector: \"fdp-approval-flow-user-details\", inputs: [\"user\", \"details\", \"detailsTemplate\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"component\", type: BusyIndicatorComponent, selector: \"fd-busy-indicator\", inputs: [\"loading\", \"size\", \"block\", \"ariaLabel\", \"ariaValueText\", \"title\", \"label\", \"ariaLive\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'\n }, imports: [\n DialogComponent,\n ContentDensityDirective,\n DialogHeaderComponent,\n TemplateDirective,\n IconComponent,\n SearchFieldComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n FormItemComponent,\n FormLabelComponent,\n SelectComponent,\n OptionComponent,\n MultiInputComponent,\n FormsModule,\n CheckboxComponent,\n DatePickerComponent,\n ApprovalFlowTeamListComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog fdCompact>\\n <fd-dialog-header [class.show-search]=\\\"_selectMode && !_userToShowDetails\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (!_selectMode && !_data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\\n }\\n @if (!_selectMode && _data.isEdit) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\\n }\\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitTeamMembersMode()\\\"></fd-icon>\\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-icon [glyph]=\\\"_headerArrowGlyph\\\" (click)=\\\"_exitUserDetailsMode()\\\"></fd-icon>\\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\\n }\\n </p>\\n @if (_selectMode && !_userToShowDetails) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n [suggestions]=\\\"[]\\\"\\n [inputText]=\\\"_searchInput\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\\\"viewService.isUserDetailsMode\\\">\\n @if (!_selectMode) {\\n @if (_data.showNodeTypeSelect) {\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_nodeType\\\">\\n @for (option of _nodeTypesArray; track option) {\\n @switch (option) {\\n @case (_nodeTypes.SERIAL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\\n </li>\\n }\\n @case (_nodeTypes.PARALLEL) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n }\\n <div fd-form-item>\\n <label fd-form-label>\\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\\n </label>\\n <fd-select [(value)]=\\\"_approverType\\\">\\n @for (option of _approverTypesArray; track option) {\\n @switch (option) {\\n @case (_approverTypes.SINGLE_USER) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.ANYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\\n </li>\\n }\\n @case (_approverTypes.EVERYONE) {\\n <li fd-option [value]=\\\"option\\\">\\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\\n </li>\\n }\\n }\\n }\\n </fd-select>\\n </div>\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\\n @if (_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedApprovers\\\"\\n [(ngModel)]=\\\"_selectedApprovers\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n (selectedChange)=\\\"_setSelectedApprovers($event)\\\"\\n ></fd-multi-input>\\n }\\n @if (!_isSingleUserMode) {\\n <fd-multi-input\\n [showAllButton]=\\\"false\\\"\\n [dropdownValues]=\\\"_selectedTeamArray\\\"\\n [(ngModel)]=\\\"_selectedTeamArray\\\"\\n [displayFn]=\\\"_displayTeamFn\\\"\\n (openChange)=\\\"_goToSelectMode()\\\"\\n ></fd-multi-input>\\n }\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_addToNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n @if (_checkDueDate) {\\n <div fd-form-item>\\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\\n <fd-date-picker type=\\\"single\\\" [state]=\\\"!this._dueDate ? 'error' : null\\\" [(ngModel)]=\\\"_dueDate\\\">\\n </fd-date-picker>\\n </div>\\n }\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectTeamMode) {\\n @if (!_data.teamDataSource.isDataLoading) {\\n <fdp-approval-flow-team-list\\n [isRtl]=\\\"_data.rtl\\\"\\n [teams]=\\\"_teams\\\"\\n [selectedTeamId]=\\\"_selectedTeam?.id\\\"\\n (onTeamClick)=\\\"_viewTeamMembers($event)\\\"\\n (onTeamRadioClick)=\\\"_setSelectedTeam($event)\\\"\\n ></fdp-approval-flow-team-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\\\"\\n [isSelectable]=\\\"viewService.isSelectUserMode\\\"\\n [selectedUsers]=\\\"_selectedApprovers\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedApprovers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n } @else {\\n <fd-busy-indicator [loading]=\\\"true\\\" [block]=\\\"true\\\"> </fd-busy-indicator>\\n }\\n }\\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer>\\n @if (!_selectMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"_isMainSubmitButtonDisabled\\\"\\n (click)=\\\"_submit()\\\"\\n >\\n </fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close()\\\"\\n ></fd-button-bar>\\n }\\n @if (_selectMode) {\\n @if (viewService.isSelectUserMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedApprovers.length\\\"\\n (click)=\\\"_confirmSelectedApprovers()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isSelectTeamMode) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_selectedTeam && !viewService.team\\\"\\n (click)=\\\"_confirmSelectedTeam()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitSelectMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isTeamMembersMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitTeamMembersMode()\\\"\\n ></fd-button-bar>\\n }\\n @if (viewService.isUserDetailsMode) {\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-button-bar>\\n }\\n }\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUNILG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUN4QixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUN0SCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRW5GLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7QUF3QjdHLE1BQU0sQ0FBTixJQUFZLHdCQUdYO0FBSEQsV0FBWSx3QkFBd0I7SUFDaEMsNkNBQWlCLENBQUE7SUFDakIsaURBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUhXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFHbkM7QUFFRCxNQUFNLENBQU4sSUFBWSw0QkFJWDtBQUpELFdBQVksNEJBQTRCO0lBQ3BDLDJEQUEyQixDQUFBO0lBQzNCLGlEQUFpQixDQUFBO0lBQ2pCLHFEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFKVyw0QkFBNEIsS0FBNUIsNEJBQTRCLFFBSXZDO0FBRUQ7OztHQUdHO0FBcUNILE1BQU0sT0FBTyw0QkFBNEI7SUE0RXJDLGNBQWM7SUFDZCxZQUNXLFNBQTBDLEVBQzFDLFdBQTJDLEVBQzFDLElBQXVCO1FBRnhCLGNBQVMsR0FBVCxTQUFTLENBQWlDO1FBQzFDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQztRQUMxQyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQS9FbkMsY0FBYztRQUNkLGNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7UUFFNUMsY0FBYztRQUNkLGVBQVUsR0FBRyx3QkFBd0IsQ0FBQztRQUV0QyxjQUFjO1FBQ2Qsb0JBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNkLGtCQUFhLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDO1FBRXpELGNBQWM7UUFDZCxtQkFBYyxHQUFHLDRCQUE0QixDQUFDO1FBRTlDLGNBQWM7UUFDZCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFaEUsY0FBYztRQUNkLGFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0IsY0FBYztRQUNkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGNBQWM7UUFDZCxlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUVoQyxjQUFjO1FBQ2QsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFFNUIsY0FBYztRQUNkLHVCQUFrQixHQUFtQixFQUFFLENBQUM7UUFLeEMsY0FBYztRQUNkLHVCQUFrQixHQUFtQixFQUFFLENBQUM7UUFFeEMsY0FBYztRQUNkLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFFMUMsY0FBYztRQUNkLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFRMUMsY0FBYztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGNBQWM7UUFDZCxtQkFBYyxHQUFHLGFBQWEsQ0FBQztRQUUvQixjQUFjO1FBQ2QsbUJBQWMsR0FBRyxhQUFhLENBQUM7UUFFL0IsY0FBYztRQUNkLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFFdkIsY0FBYztRQUNkLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixjQUFjO1FBQ2QsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFhZixDQUFDO0lBRUosY0FBYztJQUNkLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDbEUsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLDJCQUEyQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRTdGLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFFLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDdkYsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFFcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFFNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFFL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDOUUsQ0FBQztnQkFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWxFLE1BQU0sSUFBSSxHQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWM7b0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsd0JBQXdCO3dCQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRO3dCQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLE9BQU87Z0JBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDeEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUMxQyxNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbkcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QscUJBQXFCLENBQUMsU0FBeUI7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUVwQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNkLHlCQUF5QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3pELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzNELENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUM7UUFFMUcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUVoRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7SUFDZCxnQkFBZ0IsQ0FBQyxJQUFrQjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLG9CQUFvQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSyw0QkFBNEIsQ0FBQyxRQUFRLENBQUM7UUFDNUcsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWUsQ0FBQyxJQUFrQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRXpDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtRQUNwRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUNiLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztJQUNkLHFCQUFxQixDQUFDLFlBQVksR0FBRyxFQUFFO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0csQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsdUJBQXVCLENBQUMsS0FBcUI7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBeFRRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHVLQ3JIekMsMDVWQTROQSwyK0REaklRLGVBQWUsc0dBQ2YsdUJBQXVCLG9kQUN2QixxQkFBcUIsNkRBQ3JCLGlCQUFpQixtRkFDakIsYUFBYSwwSUFDYixvQkFBb0Isa2JBR3BCLG1CQUFtQix3RkFDbkIsaUJBQWlCLCtGQUNqQixrQkFBa0Isa1FBQ2xCLGVBQWUsdWxCQUNmLGVBQWUsc0lBQ2YsbUJBQW1CLGt3QkFDbkIsV0FBVywrVkFDWCxpQkFBaUIsb1dBQ2pCLG1CQUFtQiw0aENBQ25CLDZCQUE2QixvS0FDN0IsNkJBQTZCLDJLQUM3QixnQ0FBZ0MsMkhBQ2hDLHFCQUFxQiw2REFDckIsa0JBQWtCLDRIQUNsQixzQkFBc0IsMkpBQ3RCLGVBQWU7OzJGQUdWLDRCQUE0QjtrQkFwQ3hDLFNBQVM7K0JBQ0ksNEJBQTRCLGlCQUd2QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxxREFBcUQ7cUJBQy9ELFdBQ1E7d0JBQ0wsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3QixnQ0FBZ0M7d0JBQ2hDLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUl0ZW1Db21wb25lbnQsXG4gICAgICAgIEZvcm1MYWJlbENvbXBvbmVudCxcbiAgICAgICAgU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoSW5wdXQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0NoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8QWRkTm9kZURpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwdWJsaWMgdmlld1NlcnZpY2U6IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9kYXRhKCk6IEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2luZ2xlVXNlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHByb3ZlclR5cGUgPT09IHRoaXMuX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzTWFpblN1Ym1pdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgOiB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheTtcblxuICAgICAgICByZXR1cm4gIWFwcHJvdmVycy5sZW5ndGggfHwgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiAhdGhpcy5fZHVlRGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2hlYWRlckFycm93R2x5cGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICduYXZpZ2F0aW9uLScgKyAodGhpcy5fZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHRyaWdnZXJpbmcgaW5pdGlhbCBsb2FkaW5nIG9mIGRhdGEgaW4gZGF0YSBzb3VyY2VzLlxuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgY29uc3QgdGVhbXMkID0gdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1YiA9IGNvbWJpbmVMYXRlc3QoW3RlYW1zJCwgYXBwcm92ZXJzJF0pLnN1YnNjcmliZSgoW3RlYW1zLCBhcHByb3ZlcnNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90ZWFtcyA9IHRlYW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9hcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrRHVlRGF0ZSA9ICEhdGhpcy5fZGF0YS5jaGVja0R1ZURhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tEdWVEYXRlICYmIHRoaXMuX2RhdGEubm9kZT8uZHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdWVEYXRlID0gRmREYXRlLmdldEZkRGF0ZUJ5RGF0ZShuZXcgRGF0ZSh0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gWy4uLih0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyA/PyBbXSldO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVhbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRlYW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RlYW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZlclR5cGUgPSB0aGlzLl9kYXRhLm5vZGU/LmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FwcHJvdmVyVHlwZXMuQU5ZT05FO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIgPSB0aGlzLnZpZXdTZXJ2aWNlLm9uVmlld0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhLm5vZGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuU0VSSUFMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncGFyYWxsZWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlBBUkFMTEVMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dvVG9TZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyBWSUVXX01PREVTLlNFTEVDVF9VU0VSIDogVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaElucHV0ID0gJyc7XG4gICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycz8ubGVuZ3RoID8gWy4uLnRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnNdIDogW107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlYXJjaElucHV0ID0gc2VhcmNoU3RyaW5nO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgTWFwKFtbJ3F1ZXJ5Jywgc2VhcmNoU3RyaW5nXV0pO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh1c2VyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWRUZWFtTWVtYmVycyA9IFsuLi51c2Vyc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBmZENvbXBhY3Q+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKF9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiX3NlYXJjaElucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9vblNlYXJjaFN0cmluZ0NoYW5nZSgkZXZlbnQudGV4dClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keSBbY2xhc3MuZmQtZGlhbG9nX19ib2R5LS1hdXRvLWhlaWdodF09XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgQGlmIChfZGF0YS5zaG93Tm9kZVR5cGVTZWxlY3QpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX25vZGVUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgX25vZGVUeXBlc0FycmF5OyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9ub2RlVHlwZXMuU0VSSUFMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlUGFyYWxsZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0IFsodmFsdWUpXT1cIl9hcHByb3ZlclR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIF9hcHByb3ZlclR5cGVzQXJyYXk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVVc2VyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5BTllPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1BbnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9hcHByb3ZlclR5cGVzLkVWRVJZT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtRXZlcnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dVc2VyT3JUZWFtJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKF9pc1NpbmdsZVVzZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJfc2V0U2VsZWN0ZWRBcHByb3ZlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKCFfaXNTaW5nbGVVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVRlYW1GblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJfZ29Ub1NlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChfbm9kZVR5cGUgPT09IF9ub2RlVHlwZXMuUEFSQUxMRUwpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiX2FkZFRvTmV4dFNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBZGRUb05leHQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0R1ZURhdGUnIHwgZmRUcmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtZGF0ZS1waWNrZXIgdHlwZT1cInNpbmdsZVwiIFtzdGF0ZV09XCIhdGhpcy5fZHVlRGF0ZSA/ICdlcnJvcicgOiBudWxsXCIgWyhuZ01vZGVsKV09XCJfZHVlRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgIEBpZiAoIV9kYXRhLnRlYW1EYXRhU291cmNlLmlzRGF0YUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cIl9kYXRhLnJ0bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGVhbXNdPVwiX3RlYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRlYW1JZF09XCJfc2VsZWN0ZWRUZWFtPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25UZWFtQ2xpY2spPVwiX3ZpZXdUZWFtTWVtYmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblRlYW1SYWRpb0NsaWNrKT1cIl9zZXRTZWxlY3RlZFRlYW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cInRydWVcIiBbYmxvY2tdPVwidHJ1ZVwiPiA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCB2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCAhX2RhdGEudXNlckRhdGFTb3VyY2UuaXNEYXRhTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdXNlcnNdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSA/IF9hcHByb3ZlcnMgOiBfZmlsdGVyZWRUZWFtTWVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNTZWxlY3RhYmxlXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVXNlcnNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblVzZXJDbGljayk9XCJfc2VlVXNlckRldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdGVkQXBwcm92ZXJzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSAmJiBfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzVGVtcGxhdGVdPVwiX2RhdGEudXNlckRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXRhaWxzXT1cIl91c2VyVG9TaG93RGV0YWlsc0RhdGEkXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBZGRBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zdWJtaXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCJcbiAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFwcHJvdmVyU2VsZWN0aW9uQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX3NlbGVjdGVkVGVhbSAmJiAhdmlld1NlcnZpY2UudGVhbVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkVGVhbSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFwcHJvdmVyU2VsZWN0aW9uQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQXBwcm92ZXJPclRlYW1EZXRhaWxzQ2xvc2VBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { ApprovalFlowUserDetailsComponent } from '../approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from '../approval-flow-user-list/approval-flow-user-list.component';\nimport { filterByName } from '../helpers';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\n/**\n * @deprecated\n * ApprovalFlowApproverDetails component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowApproverDetailsComponent {\n /** @hidden */\n constructor(dialogRef, _cdr) {\n this.dialogRef = dialogRef;\n this._cdr = _cdr;\n /** @hidden */\n this._isListMode = false;\n /** @hidden */\n this._listItems = [];\n /** @hidden */\n this._selectedUsers = [];\n }\n /** @hidden */\n get _data() {\n return this.dialogRef.data;\n }\n /** @hidden */\n ngOnInit() {\n this._isListMode = (this._data.node?.approvers.length ?? 0) > 1;\n if (this._isListMode) {\n this._setListItems(this._data.node?.approvers ?? []);\n }\n else {\n const user = this._data.watcher || this._data.node?.approvers[0];\n if (user) {\n this._seeUserDetails(user);\n }\n else {\n this.dialogRef.close();\n }\n }\n }\n /** @hidden */\n _setListItems(items = []) {\n this._listItems = [...items];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _exitUserDetailsMode() {\n this._userToShowDetails = undefined;\n this._isListMode = true;\n }\n /** @hidden */\n _seeUserDetails(user) {\n this._userToShowDetails = user;\n this._userToShowDetailsData$ = this._data.userDataSource.dataProvider.getOne(new Map([['id', user.id]]));\n this._isListMode = false;\n this._selectedUsers = [];\n this._cdr.detectChanges();\n }\n /** @hidden */\n _sendReminder() {\n const reminderTargets = this._isListMode ? this._selectedUsers : this._data.node?.approvers;\n this.dialogRef.close(reminderTargets);\n }\n /** @hidden */\n _onSearchStringChange(searchString) {\n if (!searchString) {\n this._setListItems(this._data.node?.approvers);\n return;\n }\n this._setListItems(this._data.node?.approvers.filter((user) => filterByName(user, searchString)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, deps: [{ token: i1.DialogRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowApproverDetailsComponent, isStandalone: true, selector: \"fdp-approval-flow-approver-details\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-approver-details\" }, ngImport: i0, template: \"<fd-dialog>\\n <fd-dialog-header [class.show-search]=\\\"!_userToShowDetails && _isListMode\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1) {\\n <fd-icon\\n [glyph]=\\\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"button\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.space)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.enter)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-icon>\\n }\\n @if (_isListMode && !_userToShowDetails) {\\n {{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})\\n } @else {\\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\\n }\\n </p>\\n @if (!_userToShowDetails && _isListMode) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n fdCompact\\n [suggestions]=\\\"[]\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body>\\n @if (_userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n @if (_isListMode) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"_listItems\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedUsers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n @if (_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\\\"\\n (click)=\\\"_sendReminder()\\\"\\n ></fd-button-bar>\\n }\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close('Cancel')\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: SearchFieldComponent, selector: \"fdp-search-field\", inputs: [\"categoryMode\", \"appearance\", \"placeholder\", \"mobile\", \"mobileConfig\", \"disableRefresh\", \"disableSearch\", \"suggestions\", \"dataSource\", \"inputText\", \"categories\", \"currentCategory\", \"categoryLabel\", \"hideCategoryLabel\", \"isLoading\", \"forceSearchButton\", \"disableSuggestionsFoundAnnouncer\"], outputs: [\"inputChange\", \"searchSubmit\", \"cancelSearch\", \"isOpenChange\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"component\", type: ApprovalFlowUserDetailsComponent, selector: \"fdp-approval-flow-user-details\", inputs: [\"user\", \"details\", \"detailsTemplate\"] }, { kind: \"component\", type: ApprovalFlowUserListComponent, selector: \"fdp-approval-flow-user-list\", inputs: [\"users\", \"selectedUsers\", \"isSelectable\"], outputs: [\"onUserClick\", \"onSelectionChange\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-approver-details', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-approver-details'\n }, imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n IconComponent,\n SearchFieldComponent,\n ContentDensityDirective,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowUserListComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog>\\n <fd-dialog-header [class.show-search]=\\\"!_userToShowDetails && _isListMode\\\">\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>\\n @if (_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1) {\\n <fd-icon\\n [glyph]=\\\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"button\\\"\\n (click)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.space)=\\\"_exitUserDetailsMode()\\\"\\n (keyup.enter)=\\\"_exitUserDetailsMode()\\\"\\n ></fd-icon>\\n }\\n @if (_isListMode && !_userToShowDetails) {\\n {{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})\\n } @else {\\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\\n }\\n </p>\\n @if (!_userToShowDetails && _isListMode) {\\n <fdp-search-field\\n [placeholder]=\\\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\\\"\\n fdCompact\\n [suggestions]=\\\"[]\\\"\\n (inputChange)=\\\"_onSearchStringChange($event.text)\\\"\\n ></fdp-search-field>\\n }\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body>\\n @if (_userToShowDetails) {\\n <fdp-approval-flow-user-details\\n [user]=\\\"_userToShowDetails\\\"\\n [detailsTemplate]=\\\"_data.userDetailsTemplate\\\"\\n [details]=\\\"_userToShowDetailsData$\\\"\\n ></fdp-approval-flow-user-details>\\n }\\n @if (_isListMode) {\\n <fdp-approval-flow-user-list\\n [users]=\\\"_listItems\\\"\\n (onUserClick)=\\\"_seeUserDetails($event)\\\"\\n (onSelectionChange)=\\\"_selectedUsers = $event\\\"\\n ></fdp-approval-flow-user-list>\\n }\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n @if (_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)) {\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\\\"\\n [disabled]=\\\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\\\"\\n (click)=\\\"_sendReminder()\\\"\\n ></fd-button-bar>\\n }\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\\\"\\n (click)=\\\"dialogRef.close('Cancel')\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9C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Z3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmaWx0ZXJCeU5hbWUgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEFwcHJvdmFsTm9kZSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YSB7XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICB3YXRjaGVyPzogQXBwcm92YWxVc2VyO1xuICAgIGFsbG93U2VuZFJlbWluZGVyPzogYm9vbGVhbjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHJ0bD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlscyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi4vc3R5bGVzL2FwcHJvdmFsLWZsb3ctZGlhbG9nLnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNMaXN0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbGlzdEl0ZW1zOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRVc2VyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0RpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTGlzdE1vZGUgPSAodGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMubGVuZ3RoID8/IDApID4gMTtcblxuICAgICAgICBpZiAodGhpcy5faXNMaXN0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1zKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl9kYXRhLndhdGNoZXIgfHwgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnNbMF07XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlZVVzZXJEZXRhaWxzKHVzZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0TGlzdEl0ZW1zKGl0ZW1zOiBBcHByb3ZhbFVzZXJbXSA9IFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtcyA9IFsuLi5pdGVtc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2lzTGlzdE1vZGUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuICAgICAgICB0aGlzLl9pc0xpc3RNb2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVXNlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZW5kUmVtaW5kZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlbWluZGVyVGFyZ2V0cyA9IHRoaXMuX2lzTGlzdE1vZGUgPyB0aGlzLl9zZWxlY3RlZFVzZXJzIDogdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlbWluZGVyVGFyZ2V0cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldExpc3RJdGVtcyh0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZXRMaXN0SXRlbXModGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2c+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIiFfdXNlclRvU2hvd0RldGFpbHMgJiYgX2lzTGlzdE1vZGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKF91c2VyVG9TaG93RGV0YWlscyAmJiBfZGF0YS5ub2RlPy5hcHByb3ZlcnMgJiYgX2RhdGEubm9kZSEuYXBwcm92ZXJzIS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ25hdmlnYXRpb24tJyArIChfZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChfaXNMaXN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IF9kYXRhLm5vZGU/LmRlc2NyaXB0aW9uIH19ICh7eyBfZGF0YS5ub2RlPy5hcHByb3ZlcnM/Lmxlbmd0aCA/PyAwIH19KVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cudXNlckRldGFpbHNIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKCFfdXNlclRvU2hvd0RldGFpbHMgJiYgX2lzTGlzdE1vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkQ29tcGFjdFxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCRldmVudC50ZXh0KVwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICBAaWYgKF91c2VyVG9TaG93RGV0YWlscykge1xuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfaXNMaXN0TW9kZSkge1xuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdFxuICAgICAgICAgICAgICAgIFt1c2Vyc109XCJfbGlzdEl0ZW1zXCJcbiAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRVc2VycyA9ICRldmVudFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3Q+XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyIGZkQ29tcGFjdD5cbiAgICAgICAgQGlmIChfaXNMaXN0TW9kZSB8fCAoX3VzZXJUb1Nob3dEZXRhaWxzICYmIF9kYXRhLm5vZGU/LmFwcHJvdmVycz8ubGVuZ3RoID09PSAxKSkge1xuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnVzZXJEZXRhaWxzU2VuZFJlbWluZGVyQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX2RhdGEuYWxsb3dTZW5kUmVtaW5kZXIgfHwgKF9pc0xpc3RNb2RlICYmICFfc2VsZWN0ZWRVc2Vycy5sZW5ndGgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbmRSZW1pbmRlcigpXCJcbiAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIH1cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy51c2VyRGV0YWlsc0NhbmNlbEJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoJ0NhbmNlbCcpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MessageStripComponent } from '@fundamental-ngx/core/message-strip';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { trackByFn } from '../helpers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowMessages component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowMessagesComponent {\n constructor() {\n /** Array of messages */\n this.messages = [];\n /** Whether undo action is available */\n this.undoLastActionAvailable = false;\n /** Event emitted when messages array change */\n this.messagesChange = new EventEmitter();\n /** Event emitted when user click undo button */\n this.undoLastAction = new EventEmitter();\n /** @hidden */\n this._trackByFn = trackByFn;\n }\n /** @hidden */\n _dismissMessage(messageIndex) {\n this.messages.splice(messageIndex, 1);\n }\n /** @hidden */\n _undoLastAction(messageIndex, event) {\n event.preventDefault();\n this._dismissMessage(messageIndex);\n this.undoLastAction.emit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowMessagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowMessagesComponent, isStandalone: true, selector: \"fdp-approval-flow-messages\", inputs: { messages: \"messages\", undoLastActionAvailable: \"undoLastActionAvailable\" }, outputs: { messagesChange: \"messagesChange\", undoLastAction: \"undoLastAction\" }, host: { classAttribute: \"fdp-approval-flow-messages\" }, ngImport: i0, template: \"@for (message of messages; track message; let i = $index) {\\n <fd-message-strip\\n class=\\\"fdp-approval-flow-messages__item\\\"\\n [type]=\\\"message.type === 'error' ? 'error' : 'success'\\\"\\n [dismissible]=\\\"message.type !== 'error'\\\"\\n (onDismiss)=\\\"_dismissMessage(i)\\\"\\n >\\n <bdi>\\n <span>\\n @switch (message.type) {\\n @case ('approverAddSuccess') {\\n {{ 'platformApprovalFlow.messagesApproverAddedSuccess' | fdTranslate }}\\n }\\n @case ('teamAddSuccess') {\\n {{ 'platformApprovalFlow.messagesTeamAddedSuccess' | fdTranslate }}\\n }\\n @case ('nodeEdit') {\\n {{ 'platformApprovalFlow.messagesNodeEdited' | fdTranslate }}\\n }\\n @case ('nodeRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedSingular' | fdTranslate }}\\n }\\n @case ('nodesRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedPlural' | fdTranslate }}\\n }\\n @case ('teamRemove') {\\n {{ 'platformApprovalFlow.messagesTeamRemoved' | fdTranslate }}\\n }\\n @case ('error') {\\n {{ 'platformApprovalFlow.messagesErrorBuildGraph' | fdTranslate }}\\n }\\n }\\n </span>\\n @if (undoLastActionAvailable) {\\n <a\\n href=\\\"#\\\"\\n (click)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.enter)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.space)=\\\"_undoLastAction(i, $event)\\\"\\n >\\n {{ 'platformApprovalFlow.messagesUndoAction' | fdTranslate }}\\n </a>\\n }\\n </bdi>\\n </fd-message-strip>\\n}\\n\", styles: [\".fdp-approval-flow-messages__item:not(:last-child){margin-bottom:1rem}\\n\"], dependencies: [{ kind: \"component\", type: MessageStripComponent, selector: \"fd-message-strip\", inputs: [\"class\", \"dismissible\", \"ariaLabelledBy\", \"dismissBtnTitle\", \"noIcon\", \"type\", \"id\", \"ariaLabel\", \"width\", \"minWidth\", \"marginBottom\", \"indicationColor\"], outputs: [\"onDismiss\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowMessagesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-messages', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-messages'\n }, imports: [MessageStripComponent, FdTranslatePipe], template: \"@for (message of messages; track message; let i = $index) {\\n <fd-message-strip\\n class=\\\"fdp-approval-flow-messages__item\\\"\\n [type]=\\\"message.type === 'error' ? 'error' : 'success'\\\"\\n [dismissible]=\\\"message.type !== 'error'\\\"\\n (onDismiss)=\\\"_dismissMessage(i)\\\"\\n >\\n <bdi>\\n <span>\\n @switch (message.type) {\\n @case ('approverAddSuccess') {\\n {{ 'platformApprovalFlow.messagesApproverAddedSuccess' | fdTranslate }}\\n }\\n @case ('teamAddSuccess') {\\n {{ 'platformApprovalFlow.messagesTeamAddedSuccess' | fdTranslate }}\\n }\\n @case ('nodeEdit') {\\n {{ 'platformApprovalFlow.messagesNodeEdited' | fdTranslate }}\\n }\\n @case ('nodeRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedSingular' | fdTranslate }}\\n }\\n @case ('nodesRemove') {\\n {{ 'platformApprovalFlow.messagesNodeRemovedPlural' | fdTranslate }}\\n }\\n @case ('teamRemove') {\\n {{ 'platformApprovalFlow.messagesTeamRemoved' | fdTranslate }}\\n }\\n @case ('error') {\\n {{ 'platformApprovalFlow.messagesErrorBuildGraph' | fdTranslate }}\\n }\\n }\\n </span>\\n @if (undoLastActionAvailable) {\\n <a\\n href=\\\"#\\\"\\n (click)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.enter)=\\\"_undoLastAction(i, $event)\\\"\\n (keyup.space)=\\\"_undoLastAction(i, $event)\\\"\\n >\\n {{ 'platformApprovalFlow.messagesUndoAction' | fdTranslate }}\\n </a>\\n }\\n </bdi>\\n </fd-message-strip>\\n}\\n\", styles: [\".fdp-approval-flow-messages__item:not(:last-child){margin-bottom:1rem}\\n\"] }]\n }], propDecorators: { messages: [{\n type: Input\n }], undoLastActionAvailable: [{\n type: Input\n }], messagesChange: [{\n type: Output\n }], undoLastAction: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1tZXNzYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1tZXNzYWdlcy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzL2FwcHJvdmFsLWZsb3ctbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFnQnZDOzs7R0FHRztBQVlILE1BQU0sT0FBTyw2QkFBNkI7SUFYMUM7UUFZSSx3QkFBd0I7UUFFeEIsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFFckMsdUNBQXVDO1FBRXZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQywrQ0FBK0M7UUFFL0MsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUUzRCxnREFBZ0Q7UUFFaEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFDZCxlQUFVLEdBQUcsU0FBUyxDQUFDO0tBYzFCO0lBWkcsY0FBYztJQUNkLGVBQWUsQ0FBQyxZQUFvQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlLENBQUMsWUFBb0IsRUFBRSxLQUFZO1FBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0EvQlEsNkJBQTZCO2tHQUE3Qiw2QkFBNkIscVRDbkMxQyxtK0RBOENBLGtJRGJjLHFCQUFxQixvUEFBRSxlQUFlOzsyRkFFdkMsNkJBQTZCO2tCQVh6QyxTQUFTOytCQUNJLDRCQUE0QixpQkFHdkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsNEJBQTRCO3FCQUN0QyxXQUNRLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDOzhCQUtqRCxRQUFRO3NCQURQLEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lc3NhZ2VTdHJpcENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZXNzYWdlLXN0cmlwJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyB0cmFja0J5Rm4gfSBmcm9tICcuLi9oZWxwZXJzJztcblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93TWVzc2FnZVR5cGUgPVxuICAgIHwgJ3dhdGNoZXJzQ2hhbmdlU3VjY2VzcydcbiAgICB8ICdhcHByb3ZlckFkZFN1Y2Nlc3MnXG4gICAgfCAndGVhbUFkZFN1Y2Nlc3MnXG4gICAgfCAnbm9kZUVkaXQnXG4gICAgfCAnbm9kZVJlbW92ZSdcbiAgICB8ICdub2Rlc1JlbW92ZSdcbiAgICB8ICd0ZWFtUmVtb3ZlJ1xuICAgIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbEZsb3dNZXNzYWdlIHtcbiAgICB0eXBlOiBBcHByb3ZhbEZsb3dNZXNzYWdlVHlwZTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93TWVzc2FnZXMgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1tZXNzYWdlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1tZXNzYWdlcydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtNZXNzYWdlU3RyaXBDb21wb25lbnQsIEZkVHJhbnNsYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93TWVzc2FnZXNDb21wb25lbnQge1xuICAgIC8qKiBBcnJheSBvZiBtZXNzYWdlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWVzc2FnZXM6IEFwcHJvdmFsRmxvd01lc3NhZ2VbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdW5kbyBhY3Rpb24gaXMgYXZhaWxhYmxlICovXG4gICAgQElucHV0KClcbiAgICB1bmRvTGFzdEFjdGlvbkF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBtZXNzYWdlcyBhcnJheSBjaGFuZ2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBtZXNzYWdlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxGbG93TWVzc2FnZVtdPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrIHVuZG8gYnV0dG9uICovXG4gICAgQE91dHB1dCgpXG4gICAgdW5kb0xhc3RBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNtaXNzTWVzc2FnZShtZXNzYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShtZXNzYWdlSW5kZXgsIDEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VuZG9MYXN0QWN0aW9uKG1lc3NhZ2VJbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0aGlzLl9kaXNtaXNzTWVzc2FnZShtZXNzYWdlSW5kZXgpO1xuICAgICAgICB0aGlzLnVuZG9MYXN0QWN0aW9uLmVtaXQoKTtcbiAgICB9XG59XG4iLCJAZm9yIChtZXNzYWdlIG9mIG1lc3NhZ2VzOyB0cmFjayBtZXNzYWdlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxmZC1tZXNzYWdlLXN0cmlwXG4gICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbWVzc2FnZXNfX2l0ZW1cIlxuICAgICAgICBbdHlwZV09XCJtZXNzYWdlLnR5cGUgPT09ICdlcnJvcicgPyAnZXJyb3InIDogJ3N1Y2Nlc3MnXCJcbiAgICAgICAgW2Rpc21pc3NpYmxlXT1cIm1lc3NhZ2UudHlwZSAhPT0gJ2Vycm9yJ1wiXG4gICAgICAgIChvbkRpc21pc3MpPVwiX2Rpc21pc3NNZXNzYWdlKGkpXCJcbiAgICA+XG4gICAgICAgIDxiZGk+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdhcHByb3ZlckFkZFN1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNBcHByb3ZlckFkZGVkU3VjY2VzcycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgndGVhbUFkZFN1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNUZWFtQWRkZWRTdWNjZXNzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdub2RlRWRpdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5tZXNzYWdlc05vZGVFZGl0ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ25vZGVSZW1vdmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubWVzc2FnZXNOb2RlUmVtb3ZlZFNpbmd1bGFyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdub2Rlc1JlbW92ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5tZXNzYWdlc05vZGVSZW1vdmVkUGx1cmFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0ZWFtUmVtb3ZlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzVGVhbVJlbW92ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzRXJyb3JCdWlsZEdyYXBoJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAaWYgKHVuZG9MYXN0QWN0aW9uQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiX3VuZG9MYXN0QWN0aW9uKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm1lc3NhZ2VzVW5kb0FjdGlvbicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9iZGk+XG4gICAgPC9mZC1tZXNzYWdlLXN0cmlwPlxufVxuIl19","import { Directive, ElementRef, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ApprovalFlowDropZoneDirective {\n /** @hidden */\n constructor(elRef) {\n this.elRef = elRef;\n /** Whether drop zone is active (pointer with dragged node over the drop zone) */\n this.active = false;\n }\n /** @hidden */\n _checkIfNodeDraggedInDropZone(nodeRect) {\n this.active = false;\n const dropZoneRect = this.elRef.nativeElement.getBoundingClientRect();\n if (dropZoneRect.top + dropZoneRect.height > nodeRect.top &&\n dropZoneRect.left + dropZoneRect.width > nodeRect.left &&\n dropZoneRect.bottom - dropZoneRect.height < nodeRect.bottom &&\n dropZoneRect.right - dropZoneRect.width < nodeRect.right) {\n this.active = true;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowDropZoneDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ApprovalFlowDropZoneDirective, isStandalone: true, selector: \"[fdp-approval-flow-drop-zone]\", inputs: { placement: \"placement\" }, exportAs: [\"fdp-approval-flow-drop-zone\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowDropZoneDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fdp-approval-flow-drop-zone]',\n exportAs: 'fdp-approval-flow-drop-zone',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { placement: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1kcm9wLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctbm9kZS9hcHByb3ZhbC1mbG93LWRyb3Atem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVU3RCxNQUFNLE9BQU8sNkJBQTZCO0lBUXRDLGNBQWM7SUFDZCxZQUE2QixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBSjlDLGlGQUFpRjtRQUNqRixXQUFNLEdBQUcsS0FBSyxDQUFDO0lBR2tDLENBQUM7SUFFbEQsY0FBYztJQUNkLDZCQUE2QixDQUFDLFFBQWlCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFdEUsSUFDSSxZQUFZLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDckQsWUFBWSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJO1lBQ3RELFlBQVksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTTtZQUMzRCxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFDMUQsQ0FBQztZQUNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDOzhHQXpCUSw2QkFBNkI7a0dBQTdCLDZCQUE2Qjs7MkZBQTdCLDZCQUE2QjtrQkFOekMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFJRyxTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgfSBmcm9tICcuLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZHAtYXBwcm92YWwtZmxvdy1kcm9wLXpvbmVdJyxcbiAgICBleHBvcnRBczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRyb3Atem9uZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSB7XG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgbmV3IG5vZGUgcGxhY2VtZW50ICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZW1lbnQ6IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQ7XG5cbiAgICAvKiogV2hldGhlciBkcm9wIHpvbmUgaXMgYWN0aXZlIChwb2ludGVyIHdpdGggZHJhZ2dlZCBub2RlIG92ZXIgdGhlIGRyb3Agem9uZSkgKi9cbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrSWZOb2RlRHJhZ2dlZEluRHJvcFpvbmUobm9kZVJlY3Q6IERPTVJlY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBkcm9wWm9uZVJlY3QgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZHJvcFpvbmVSZWN0LnRvcCArIGRyb3Bab25lUmVjdC5oZWlnaHQgPiBub2RlUmVjdC50b3AgJiZcbiAgICAgICAgICAgIGRyb3Bab25lUmVjdC5sZWZ0ICsgZHJvcFpvbmVSZWN0LndpZHRoID4gbm9kZVJlY3QubGVmdCAmJlxuICAgICAgICAgICAgZHJvcFpvbmVSZWN0LmJvdHRvbSAtIGRyb3Bab25lUmVjdC5oZWlnaHQgPCBub2RlUmVjdC5ib3R0b20gJiZcbiAgICAgICAgICAgIGRyb3Bab25lUmVjdC5yaWdodCAtIGRyb3Bab25lUmVjdC53aWR0aCA8IG5vZGVSZWN0LnJpZ2h0XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { GridListItemComponent } from '@fundamental-ngx/core/grid-list';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { MenuInteractiveComponent, MenuItemComponent, MenuTitleDirective, MenuTriggerDirective } from '@fundamental-ngx/core/menu';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ObjectStatusComponent, PlatformObjectStatusTextDirective } from '@fundamental-ngx/platform/object-status';\nimport { isNodeApproved, isNodeStarted } from '../helpers';\nimport { ApprovalFlowDropZoneDirective } from './approval-flow-drop-zone.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/cdk/utils\";\nconst NODE_STATUS_CLASS_MAP = {\n approved: 'positive',\n rejected: 'negative',\n 'in progress': 'informative',\n 'not started': ''\n};\nconst DAY_IN_MILLISECONDS = 1000 * 60 * 60 * 24;\nlet defaultId = 0;\n/**\n * @deprecated\n * ApprovalFlowNode component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowNodeComponent {\n /** @hidden */\n get _blank() {\n return !!this.node?.blank;\n }\n /** @hidden */\n get _space() {\n return !!this.node?.space;\n }\n /** @hidden */\n get _isRoot() {\n return this.meta?.isRoot;\n }\n /** @hidden */\n get _isFinal() {\n return this.meta?.isFinal;\n }\n /** @hidden */\n get _renderLineBefore() {\n return !this.node?.blank;\n }\n /** @hidden */\n get _renderLineAfter() {\n return !this.node?.blank || this._isFinal;\n }\n /** @hidden */\n get _isApproved() {\n return this.node && isNodeApproved(this.node);\n }\n /** @hidden */\n get _isParentApproved() {\n if (!this.meta?.parents?.length) {\n return !!this.meta?.rootNodesApproved;\n }\n return this.meta.parents.every((node) => isNodeApproved(node));\n }\n /** @hidden */\n get _isNodeSelected() {\n return this.isEdit && this._isSelected;\n }\n /** @hidden */\n get _isParallelStart() {\n return Boolean(this.meta?.parallelStart);\n }\n /** @hidden */\n get _isParallelEnd() {\n return Boolean(this.meta?.parallelEnd);\n }\n /** @hidden */\n get _isFirstInParallel() {\n return Boolean(this.meta?.isFirstInParallel);\n }\n /** @hidden */\n get _isLastInParallel() {\n return Boolean(this.meta?.isLastInParallel);\n }\n /** Whether the node is blank and the final */\n get _lastBlank() {\n return this._blank && this.node.targets.length === 0;\n }\n /** @hidden */\n get _isSelected() {\n return !!this.node.selected;\n }\n /** @hidden */\n constructor(_elRef, _cdr, _rtlService) {\n this._elRef = _elRef;\n this._cdr = _cdr;\n this._rtlService = _rtlService;\n /** Whether node element has arrow on the left side pointing to the node */\n this.renderArrow = false;\n /** Whether to display due date warning in status */\n this.checkDueDate = false;\n /** Number of days before due date when status changes to `warning` with text 'Due in X days'.\n * Not used if 'checkDueDate' equals false */\n this.dueDateThreshold = 7;\n /** Whether nodes in column in which current node placed are approved\n * Used to render appropriate vertical line after (dashed/solid)\n */\n this.allNodesInColumnApproved = false;\n /** Event emitted on add node button clicked, value is the placement for the new node */\n this.onAdd = new EventEmitter();\n /** Event emitted on edit node button clicked */\n this.onEdit = new EventEmitter();\n /** Event emitted on delete node button clicked */\n this.onDelete = new EventEmitter();\n /** @hidden */\n this._showDueDateWarning = false;\n /** @hidden */\n this._dueIn = 0;\n /** @hidden */\n this.approvalFlowNodeId = 'fdp-approval-flow-node-' + defaultId++;\n /** @hidden */\n this._subscriptions = new Subscription();\n }\n /** @hidden */\n get _nativeElement() {\n return this._elRef.nativeElement;\n }\n /** @hidden */\n get _isNotStarted() {\n return !isNodeStarted(this.node);\n }\n /** @hidden */\n get _isEditActionsAvailable() {\n return this.node.status === 'approved' || this.node.status === 'rejected';\n }\n /** @hidden */\n get _activeDropZones() {\n return this._dropZones.filter((z) => z.active);\n }\n /** @hidden */\n get _isAnyDropZoneActive() {\n return this._activeDropZones.length > 0;\n }\n /** @hidden */\n get _isVerticalLineBeforeSolid() {\n if (!this.meta?.parents.length) {\n return !!this.meta?.isVerticalLineBeforeSolid;\n }\n return this.meta.parents.every((parentNode) => isNodeApproved(parentNode));\n }\n /** @hidden */\n get _isVerticalLineAfterSolid() {\n if (!this.node?.targets.length) {\n return !!this.meta?.isVerticalLineAfterSolid;\n }\n return this._isVerticalLineBeforeSolid && this.allNodesInColumnApproved;\n }\n /** @hidden */\n get _showAddButton() {\n return this.isEdit && !this._blank && !this._space && !this.node?.disableActions;\n }\n /** @hidden */\n get _showAfterAllAddButton() {\n return this.isEdit && !this._space && !this.node?.disableActions;\n }\n /** @hidden */\n _dropZonePartial(placement) {\n return ((!this._blank && (!this.isNextNodeBlank || placement === 'before')) ||\n (this._lastBlank && placement === 'after-all'));\n }\n /** @hidden */\n ngOnInit() {\n this._checkNodeStatus();\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._cdr.markForCheck()));\n }\n /** @hidden */\n ngOnChanges() {\n this._checkNodeStatus();\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n _onMenuOpen() {\n this._menu.refreshPosition();\n }\n /** @hidden */\n _focus(options) {\n this._gridListItem?.focus(options);\n }\n /** @hidden */\n _deactivateDropZones() {\n this._dropZones.forEach((dropZone) => (dropZone.active = false));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _checkIfNodeDraggedInDropZone(nodeRect) {\n this._dropZones.forEach((dropZone) => dropZone._checkIfNodeDraggedInDropZone(nodeRect));\n this._cdr.detectChanges();\n }\n /** @hidden */\n _checkNodeStatus() {\n if (!this.node) {\n return;\n }\n if (this.checkDueDate && this.node.dueDate) {\n const dueThreshold = Number(new Date(this.node.dueDate)) - this.dueDateThreshold * DAY_IN_MILLISECONDS;\n const nowAndDueDiff = Date.now() - dueThreshold;\n this._dueIn = Math.round(nowAndDueDiff / DAY_IN_MILLISECONDS);\n this._showDueDateWarning = !isNodeApproved(this.node) && dueThreshold < Date.now();\n this._objectStatus = this._showDueDateWarning ? 'critical' : this._getNodeStatusClass();\n this._cdr.detectChanges();\n return;\n }\n this._objectStatus = this._getNodeStatusClass();\n this._cdr.detectChanges();\n }\n /** @hidden */\n _getNodeStatusClass() {\n return (this.statusColorMapping\n ? this.statusColorMapping[this.node.status]\n : NODE_STATUS_CLASS_MAP[this.node.status]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowNodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowNodeComponent, isStandalone: true, selector: \"fdp-approval-flow-node\", inputs: { node: \"node\", meta: \"meta\", renderArrow: \"renderArrow\", checkDueDate: \"checkDueDate\", dueDateThreshold: \"dueDateThreshold\", allNodesInColumnApproved: \"allNodesInColumnApproved\", approvalStatusTemplate: \"approvalStatusTemplate\", statusColorMapping: \"statusColorMapping\", isEdit: \"isEdit\", isNextNodeBlank: \"isNextNodeBlank\" }, outputs: { onAdd: \"onAdd\", onEdit: \"onEdit\", onDelete: \"onDelete\" }, host: { properties: { \"class.fdp-approval-flow-node--first-root\": \"meta?.firstOfMultipleRootNodes\", \"class.fdp-approval-flow-node--first-final\": \"meta?.firstOfMultipleFinalNodes\", \"class.fdp-approval-flow-node--edit-mode\": \"this.isEdit\", \"class.fdp-approval-flow-node--next-blank\": \"this.isNextNodeBlank\", \"class.fdp-approval-flow-node--blank\": \"this._blank\", \"class.fdp-approval-flow-node--space\": \"this._space\", \"class.fdp-approval-flow-node--root\": \"this._isRoot\", \"class.fdp-approval-flow-node--final\": \"this._isFinal\", \"class.fdp-approval-flow-node--line-before\": \"this._renderLineBefore\", \"class.fdp-approval-flow-node--line-after\": \"this._renderLineAfter\", \"class.fdp-approval-flow-node--approved\": \"this._isApproved\", \"class.fdp-approval-flow-node--parent-approved\": \"this._isParentApproved\", \"class.fdp-approval-flow-node--selected\": \"this._isNodeSelected\", \"class.fdp-approval-flow-node--parallel-start\": \"this._isParallelStart\", \"class.fdp-approval-flow-node--parallel-end\": \"this._isParallelEnd\", \"class.fdp-approval-flow-node--first-in-parallel\": \"this._isFirstInParallel\", \"class.fdp-approval-flow-node--last-in-parallel\": \"this._isLastInParallel\", \"class.fdp-approval-flow-node--last-blank\": \"this._lastBlank\" }, classAttribute: \"fdp-approval-flow-node\" }, queries: [{ propertyName: \"_gridListItem\", first: true, predicate: GridListItemComponent, descendants: true }], viewQueries: [{ propertyName: \"_menu\", first: true, predicate: MenuComponent, descendants: true }, { propertyName: \"_overflowMenuButton\", first: true, predicate: [\"overflowMenuButton\"], descendants: true }, { propertyName: \"_nodeContent\", first: true, predicate: [\"nodeContent\"], descendants: true }, { propertyName: \"_dropZones\", predicate: ApprovalFlowDropZoneDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"@if (meta?.renderVerticalLineBefore) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-before\\\"\\n [class.fdp-approval-flow-node__vertical-line-before-solid]=\\\"_isVerticalLineBeforeSolid\\\"\\n ></div>\\n}\\n@if (meta?.renderVerticalLineAfter) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-after\\\"\\n [class.fdp-approval-flow-node__vertical-line-after-solid]=\\\"_isVerticalLineAfterSolid\\\"\\n ></div>\\n}\\n@if (!_blank && !_space) {\\n @if (renderArrow) {\\n <div class=\\\"fdp-approval-flow-node__arrow\\\"></div>\\n }\\n @if (_isRoot && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-start-marker\\\"></div>\\n }\\n @if (_isFinal && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-end-marker\\\"></div>\\n }\\n <ng-content></ng-content>\\n}\\n<ng-template #overflowMenuButton>\\n <!-- Actually just the fd-grid-item action button but with some hardcode to be used as menu trigger -->\\n @if (!node?.disableActions) {\\n <button\\n class=\\\"fdp-approval-flow-node__menu-button\\\"\\n fd-button\\n fdType=\\\"transparent\\\"\\n tabindex=\\\"0\\\"\\n glyph=\\\"overflow\\\"\\n [title]=\\\"'platformApprovalFlow.nodeMenuButtonTitle' | fdTranslate\\\"\\n fdCompact\\n [fdMenuTrigger]=\\\"menu\\\"\\n [disabled]=\\\"_isEditActionsAvailable\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></button>\\n }\\n</ng-template>\\n<ng-template #nodeContent>\\n <div class=\\\"fdp-approval-flow-node__info\\\">\\n <div\\n class=\\\"fdp-approval-flow-node__name\\\"\\n [class.fdp-approval-flow-node__name--members-count]=\\\"node.approvers.length > 1\\\"\\n [id]=\\\"approvalFlowNodeId\\\"\\n >\\n @if (node.approvers.length === 1) {\\n {{ node.approvers[0].name }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeMembersCount' | fdTranslate: { count: node.approvers.length } }}\\n }\\n </div>\\n <div class=\\\"fdp-approval-flow-node__description\\\">\\n @if (!node.variousTeams) {\\n {{\\n node.approvers.length > 1\\n ? node.description\\n : node.approvers.length\\n ? node.approvers[0].description\\n : ''\\n }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }}\\n }\\n <ng-template #variousTeams> {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }} </ng-template>\\n </div>\\n <fdp-object-status [status]=\\\"_objectStatus\\\" [inverted]=\\\"true\\\">\\n <ng-template fdpObjectStatusText>\\n @if (approvalStatusTemplate) {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @if (approvalStatusTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalStatusTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ node: node }\\\"\\n >\\n </ng-template>\\n }\\n }\\n } @else {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @switch (node.status) {\\n @case ('approved') {\\n {{ 'platformApprovalFlow.statusApproved' | fdTranslate }}\\n }\\n @case ('rejected') {\\n {{ 'platformApprovalFlow.statusRejected' | fdTranslate }}\\n }\\n @case ('in progress') {\\n {{ 'platformApprovalFlow.statusInProgress' | fdTranslate }}\\n }\\n @case ('not started') {\\n {{ 'platformApprovalFlow.statusNotStarted' | fdTranslate }}\\n }\\n }\\n }\\n }\\n @if (checkDueDate && _showDueDateWarning) {\\n @if (_dueIn === dueDateThreshold) {\\n {{ 'platformApprovalFlow.nodeStatusDueToday' | fdTranslate }}\\n }\\n @if (_dueIn < dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusDueInXDays'\\n | fdTranslate: { count: dueDateThreshold - _dueIn }\\n }}\\n }\\n @if (_dueIn > dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusXDaysOverdue'\\n | fdTranslate: { count: _dueIn - dueDateThreshold }\\n }}\\n }\\n }\\n </ng-template>\\n </fdp-object-status>\\n </div>\\n</ng-template>\\n@if (_showAddButton && meta?.canAddNodeBeforeAll && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'before-all' }\\\"\\n ></ng-template>\\n}\\n@if (_showAddButton && meta?.canAddNodeBefore && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'before' }\\\"></ng-template>\\n}\\n@if (\\n _showAddButton && meta?.canAddNodeAfter && meta?.renderAddNodeAfterButton && !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'after' }\\\"></ng-template>\\n}\\n@if (\\n _showAfterAllAddButton &&\\n meta?.canAddNodeAfterAll &&\\n meta?.renderAddNodeAfterButton &&\\n !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'after-all' }\\\"\\n ></ng-template>\\n}\\n<ng-template #addNodeButton let-placement=\\\"placement\\\">\\n @if (node.status !== 'approved') {\\n <button\\n fd-button\\n glyph=\\\"add\\\"\\n [title]=\\\"'platformApprovalFlow.addNodeButtonTitle' | fdTranslate\\\"\\n fdCompact\\n class=\\\"fdp-approval-flow-node__add\\\"\\n [class.fdp-approval-flow-node__add--blank]=\\\"this._blank\\\"\\n [class.fdp-approval-flow-node__add--before]=\\\"\\n !this._blank && (placement === 'before' || placement === 'before-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--before-all]=\\\"!this._blank && placement === 'before-all'\\\"\\n [class.fdp-approval-flow-node__add--after]=\\\"\\n !this._blank && (placement === 'after' || placement === 'after-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--after-all]=\\\"placement === 'after-all'\\\"\\n [style.visibility]=\\\"dropZone.active ? 'hidden' : ''\\\"\\n (click)=\\\"onAdd.emit(placement)\\\"\\n ></button>\\n }\\n <div\\n #dropZone=\\\"fdp-approval-flow-drop-zone\\\"\\n fdp-approval-flow-drop-zone\\n [placement]=\\\"placement\\\"\\n class=\\\"fdp-approval-flow-node__drop-zone\\\"\\n [class.fdp-approval-flow-node__drop-zone--active]=\\\"dropZone.active\\\"\\n [class.fdp-approval-flow-node__drop-zone--blank]=\\\"isNextNodeBlank\\\"\\n [class.fdp-approval-flow-node__drop-zone--partial]=\\\"_dropZonePartial(placement)\\\"\\n ></div>\\n</ng-template>\\n<fd-menu #menu fdContentDensity placement=\\\"bottom-end\\\" (isOpenChange)=\\\"_onMenuOpen()\\\">\\n @if (meta?.canAddNodeBefore && !this.node?.actionsConfig?.disableAddBefore) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('before')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversBefore' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddNodeAfter && !this.node?.actionsConfig?.disableAddAfter) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('after')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversAfter' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddParallel && !this.node?.actionsConfig?.disableAddParallel) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('parallel')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversParallel' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (_isNotStarted && !this.node?.actionsConfig?.disableEdit) {\\n <li fd-menu-item (click)=\\\"menu.close(); onEdit.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionEditApprover' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (!this.node?.actionsConfig?.disableRemove) {\\n <li fd-menu-item (click)=\\\"menu.close(); onDelete.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionRemove' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n</fd-menu>\\n\", styles: [\".fdp-approval-flow-node{display:block;box-sizing:border-box;position:relative;width:17.375rem;height:5.875rem;margin-bottom:1rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode{height:7.875rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-after:after{top:-4.9375rem;height:8.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{content:\\\"\\\";display:block;position:absolute;top:-3.9375rem;height:6.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before{left:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before-solid:before{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{right:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after-solid:after{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-before:before{left:auto;right:-2.0625rem}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-after:after{right:auto;left:-2.0625rem}.fdp-approval-flow-node .fdp-approval-flow-node__add{position:absolute;z-index:10;margin:calc(3.4375rem - 1px) auto auto;inset:0;border-radius:100%;min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem}.fdp-approval-flow-node .fdp-approval-flow-node__add fd-icon{line-height:1rem;font-size:.7rem;font-weight:900}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before{left:-2.5rem;right:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-2.8rem}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after{right:-2.5rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-2.8rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone{border-radius:.25rem;position:absolute;height:100%;z-index:1}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa);border:.125rem solid #0854a0;border:.125rem solid var(--sapButton_IconColor, #0854a0)}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--blank{width:100%;top:0}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--partial{width:10%;left:0;top:0}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank{background:transparent;box-shadow:none;pointer-events:none;cursor:default}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:before{content:\\\"\\\";display:block;position:absolute;width:calc(100% + 4rem);height:0;left:-2rem;top:calc(50% - .0625rem);border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{width:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:not(.fdp-approval-flow-node--last-blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{width:100%}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{content:\\\"\\\";width:2rem;height:0;display:block;position:absolute;top:calc(50% - .0625rem);bottom:0;pointer-events:none;border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{right:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--blank:before{border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parent-approved.fdp-approval-flow-node--line-before:before{left:-2rem;border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode.fdp-approval-flow-node--blank{pointer-events:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-end-marker{top:3.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__arrow{display:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{right:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{right:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{left:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{left:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{left:19.875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{right:-12.6875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:calc(100% + 4rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{width:4rem;left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{width:4rem;right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__add,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-after{visibility:hidden}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name{font-size:1rem;line-height:1.25rem;margin-bottom:.1rem;color:#32363a;color:var(--sapTextColor, #32363a)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__description{font-size:.875rem;line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin-bottom:.4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow{width:0;height:0;border-style:solid;border-width:.375rem 0 .375rem .5rem;border-color:transparent transparent transparent #d9d9d9;border-color:transparent transparent transparent var(--sapGroup_TitleBorderColor, #d9d9d9);position:absolute;left:-.5rem;top:0;bottom:0;margin:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{z-index:1;background:#d9d9d9;background:var(--sapGroup_TitleBorderColor, #d9d9d9);display:block;position:absolute;width:.25rem;height:1rem;top:2.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__arrow{left:auto;right:-.5rem;border-width:.375rem .5rem .375rem 0;border-color:transparent #d9d9d9 transparent transparent;border-color:transparent var(--sapGroup_TitleBorderColor, #d9d9d9) transparent transparent}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-before:before{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-after:after{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count{direction:ltr;text-align:right}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before{right:-2.5rem;left:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-2.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after{left:-2.5rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-2.8rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{left:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{left:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{right:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{right:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{right:19.875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:calc(100% + 2rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{left:-12.6875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:calc(100% + 4rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{left:0}\\n\"], dependencies: [{ kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"directive\", type: MenuTriggerDirective, selector: \"[fdMenuTrigger]\", inputs: [\"fdMenuTrigger\"] }, { kind: \"component\", type: ObjectStatusComponent, selector: \"fdp-object-status\", inputs: [\"status\", \"glyph\", \"glyphFont\", \"indicationColor\", \"secondaryIndication\", \"clickable\", \"inverted\", \"large\", \"label\", \"ariaLabel\", \"title\"], outputs: [\"objectStatusClick\"] }, { kind: \"directive\", type: PlatformObjectStatusTextDirective, selector: \"[fdpObjectStatusText]\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: ApprovalFlowDropZoneDirective, selector: \"[fdp-approval-flow-drop-zone]\", inputs: [\"placement\"], exportAs: [\"fdp-approval-flow-drop-zone\"] }, { kind: \"component\", type: MenuComponent, selector: \"fd-menu\", inputs: [\"mobile\", \"disabled\", \"focusTrapped\", \"focusAutoCapture\", \"openOnHoverTime\", \"mobileConfig\", \"ariaLabel\", \"ariaLabelledby\", \"id\"], outputs: [\"activePath\"] }, { kind: \"component\", type: MenuItemComponent, selector: \"li[fd-menu-item]\", inputs: [\"disabled\", \"itemId\", \"submenu\", \"parentSubmenu\", \"hasSeparator\"], outputs: [\"onSelect\"], exportAs: [\"fd-menu-item\"] }, { kind: \"component\", type: MenuInteractiveComponent, selector: \"[fd-menu-interactive]\" }, { kind: \"directive\", type: MenuTitleDirective, selector: \"[fd-menu-title]\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowNodeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-node', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-node',\n '[class.fdp-approval-flow-node--first-root]': 'meta?.firstOfMultipleRootNodes',\n '[class.fdp-approval-flow-node--first-final]': 'meta?.firstOfMultipleFinalNodes'\n }, imports: [\n ButtonComponent,\n ContentDensityDirective,\n MenuTriggerDirective,\n ObjectStatusComponent,\n PlatformObjectStatusTextDirective,\n NgTemplateOutlet,\n ApprovalFlowDropZoneDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n MenuTitleDirective,\n FdTranslatePipe\n ], template: \"@if (meta?.renderVerticalLineBefore) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-before\\\"\\n [class.fdp-approval-flow-node__vertical-line-before-solid]=\\\"_isVerticalLineBeforeSolid\\\"\\n ></div>\\n}\\n@if (meta?.renderVerticalLineAfter) {\\n <div\\n class=\\\"fdp-approval-flow-node__vertical-line-after\\\"\\n [class.fdp-approval-flow-node__vertical-line-after-solid]=\\\"_isVerticalLineAfterSolid\\\"\\n ></div>\\n}\\n@if (!_blank && !_space) {\\n @if (renderArrow) {\\n <div class=\\\"fdp-approval-flow-node__arrow\\\"></div>\\n }\\n @if (_isRoot && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-start-marker\\\"></div>\\n }\\n @if (_isFinal && meta?.nodeIndex === 0) {\\n <div class=\\\"fdp-approval-flow-node__carousel-end-marker\\\"></div>\\n }\\n <ng-content></ng-content>\\n}\\n<ng-template #overflowMenuButton>\\n <!-- Actually just the fd-grid-item action button but with some hardcode to be used as menu trigger -->\\n @if (!node?.disableActions) {\\n <button\\n class=\\\"fdp-approval-flow-node__menu-button\\\"\\n fd-button\\n fdType=\\\"transparent\\\"\\n tabindex=\\\"0\\\"\\n glyph=\\\"overflow\\\"\\n [title]=\\\"'platformApprovalFlow.nodeMenuButtonTitle' | fdTranslate\\\"\\n fdCompact\\n [fdMenuTrigger]=\\\"menu\\\"\\n [disabled]=\\\"_isEditActionsAvailable\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></button>\\n }\\n</ng-template>\\n<ng-template #nodeContent>\\n <div class=\\\"fdp-approval-flow-node__info\\\">\\n <div\\n class=\\\"fdp-approval-flow-node__name\\\"\\n [class.fdp-approval-flow-node__name--members-count]=\\\"node.approvers.length > 1\\\"\\n [id]=\\\"approvalFlowNodeId\\\"\\n >\\n @if (node.approvers.length === 1) {\\n {{ node.approvers[0].name }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeMembersCount' | fdTranslate: { count: node.approvers.length } }}\\n }\\n </div>\\n <div class=\\\"fdp-approval-flow-node__description\\\">\\n @if (!node.variousTeams) {\\n {{\\n node.approvers.length > 1\\n ? node.description\\n : node.approvers.length\\n ? node.approvers[0].description\\n : ''\\n }}\\n } @else {\\n {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }}\\n }\\n <ng-template #variousTeams> {{ 'platformApprovalFlow.nodeVariousTeams' | fdTranslate }} </ng-template>\\n </div>\\n <fdp-object-status [status]=\\\"_objectStatus\\\" [inverted]=\\\"true\\\">\\n <ng-template fdpObjectStatusText>\\n @if (approvalStatusTemplate) {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @if (approvalStatusTemplate) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalStatusTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ node: node }\\\"\\n >\\n </ng-template>\\n }\\n }\\n } @else {\\n @if (!checkDueDate || !_showDueDateWarning) {\\n @switch (node.status) {\\n @case ('approved') {\\n {{ 'platformApprovalFlow.statusApproved' | fdTranslate }}\\n }\\n @case ('rejected') {\\n {{ 'platformApprovalFlow.statusRejected' | fdTranslate }}\\n }\\n @case ('in progress') {\\n {{ 'platformApprovalFlow.statusInProgress' | fdTranslate }}\\n }\\n @case ('not started') {\\n {{ 'platformApprovalFlow.statusNotStarted' | fdTranslate }}\\n }\\n }\\n }\\n }\\n @if (checkDueDate && _showDueDateWarning) {\\n @if (_dueIn === dueDateThreshold) {\\n {{ 'platformApprovalFlow.nodeStatusDueToday' | fdTranslate }}\\n }\\n @if (_dueIn < dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusDueInXDays'\\n | fdTranslate: { count: dueDateThreshold - _dueIn }\\n }}\\n }\\n @if (_dueIn > dueDateThreshold) {\\n {{\\n 'platformApprovalFlow.nodeStatusXDaysOverdue'\\n | fdTranslate: { count: _dueIn - dueDateThreshold }\\n }}\\n }\\n }\\n </ng-template>\\n </fdp-object-status>\\n </div>\\n</ng-template>\\n@if (_showAddButton && meta?.canAddNodeBeforeAll && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'before-all' }\\\"\\n ></ng-template>\\n}\\n@if (_showAddButton && meta?.canAddNodeBefore && !node?.actionsConfig?.disableAddBefore) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'before' }\\\"></ng-template>\\n}\\n@if (\\n _showAddButton && meta?.canAddNodeAfter && meta?.renderAddNodeAfterButton && !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template [ngTemplateOutlet]=\\\"addNodeButton\\\" [ngTemplateOutletContext]=\\\"{ placement: 'after' }\\\"></ng-template>\\n}\\n@if (\\n _showAfterAllAddButton &&\\n meta?.canAddNodeAfterAll &&\\n meta?.renderAddNodeAfterButton &&\\n !node?.actionsConfig?.disableAddAfter\\n) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"addNodeButton\\\"\\n [ngTemplateOutletContext]=\\\"{ placement: 'after-all' }\\\"\\n ></ng-template>\\n}\\n<ng-template #addNodeButton let-placement=\\\"placement\\\">\\n @if (node.status !== 'approved') {\\n <button\\n fd-button\\n glyph=\\\"add\\\"\\n [title]=\\\"'platformApprovalFlow.addNodeButtonTitle' | fdTranslate\\\"\\n fdCompact\\n class=\\\"fdp-approval-flow-node__add\\\"\\n [class.fdp-approval-flow-node__add--blank]=\\\"this._blank\\\"\\n [class.fdp-approval-flow-node__add--before]=\\\"\\n !this._blank && (placement === 'before' || placement === 'before-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--before-all]=\\\"!this._blank && placement === 'before-all'\\\"\\n [class.fdp-approval-flow-node__add--after]=\\\"\\n !this._blank && (placement === 'after' || placement === 'after-all')\\n \\\"\\n [class.fdp-approval-flow-node__add--after-all]=\\\"placement === 'after-all'\\\"\\n [style.visibility]=\\\"dropZone.active ? 'hidden' : ''\\\"\\n (click)=\\\"onAdd.emit(placement)\\\"\\n ></button>\\n }\\n <div\\n #dropZone=\\\"fdp-approval-flow-drop-zone\\\"\\n fdp-approval-flow-drop-zone\\n [placement]=\\\"placement\\\"\\n class=\\\"fdp-approval-flow-node__drop-zone\\\"\\n [class.fdp-approval-flow-node__drop-zone--active]=\\\"dropZone.active\\\"\\n [class.fdp-approval-flow-node__drop-zone--blank]=\\\"isNextNodeBlank\\\"\\n [class.fdp-approval-flow-node__drop-zone--partial]=\\\"_dropZonePartial(placement)\\\"\\n ></div>\\n</ng-template>\\n<fd-menu #menu fdContentDensity placement=\\\"bottom-end\\\" (isOpenChange)=\\\"_onMenuOpen()\\\">\\n @if (meta?.canAddNodeBefore && !this.node?.actionsConfig?.disableAddBefore) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('before')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversBefore' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddNodeAfter && !this.node?.actionsConfig?.disableAddAfter) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('after')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversAfter' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (meta?.canAddParallel && !this.node?.actionsConfig?.disableAddParallel) {\\n <li fd-menu-item (click)=\\\"menu.close(); onAdd.emit('parallel')\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title>{{ 'platformApprovalFlow.nodeActionAddApproversParallel' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (_isNotStarted && !this.node?.actionsConfig?.disableEdit) {\\n <li fd-menu-item (click)=\\\"menu.close(); onEdit.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionEditApprover' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n @if (!this.node?.actionsConfig?.disableRemove) {\\n <li fd-menu-item (click)=\\\"menu.close(); onDelete.emit()\\\">\\n <div fd-menu-interactive>\\n <span fd-menu-title> {{ 'platformApprovalFlow.nodeActionRemove' | fdTranslate }}</span>\\n </div>\\n </li>\\n }\\n</fd-menu>\\n\", styles: [\".fdp-approval-flow-node{display:block;box-sizing:border-box;position:relative;width:17.375rem;height:5.875rem;margin-bottom:1rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode{height:7.875rem}.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node.fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__vertical-line-after:after{top:-4.9375rem;height:8.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{content:\\\"\\\";display:block;position:absolute;top:-3.9375rem;height:6.875rem}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before{left:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before-solid:before{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after{right:-2.0625rem;border-right:.125rem dashed #d9d9d9;border-right:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after-solid:after{border-right:.125rem solid #d9d9d9;border-right:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-before:before,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-before:before{left:auto;right:-2.0625rem}[dir=rtl] .fdp-approval-flow-node .fdp-approval-flow-node__vertical-line-after:after,.fdp-approval-flow-node[dir=rtl] .fdp-approval-flow-node__vertical-line-after:after{right:auto;left:-2.0625rem}.fdp-approval-flow-node .fdp-approval-flow-node__add{position:absolute;z-index:10;margin:calc(3.4375rem - 1px) auto auto;inset:0;border-radius:100%;min-width:1rem;max-width:1rem;min-height:1rem;max-height:1rem}.fdp-approval-flow-node .fdp-approval-flow-node__add fd-icon{line-height:1rem;font-size:.7rem;font-weight:900}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before{left:-2.5rem;right:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-2.8rem}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after{right:-2.5rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__add.fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-2.8rem;left:auto}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone{border-radius:.25rem;position:absolute;height:100%;z-index:1}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa);border:.125rem solid #0854a0;border:.125rem solid var(--sapButton_IconColor, #0854a0)}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--blank{width:100%;top:0}.fdp-approval-flow-node .fdp-approval-flow-node__drop-zone.fdp-approval-flow-node__drop-zone--partial{width:10%;left:0;top:0}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank{background:transparent;box-shadow:none;pointer-events:none;cursor:default}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:before{content:\\\"\\\";display:block;position:absolute;width:calc(100% + 4rem);height:0;left:-2rem;top:calc(50% - .0625rem);border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{width:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank:not(.fdp-approval-flow-node--last-blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{width:100%}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{content:\\\"\\\";width:2rem;height:0;display:block;position:absolute;top:calc(50% - .0625rem);bottom:0;pointer-events:none;border-top:.125rem dashed #d9d9d9;border-top:.125rem dashed var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:url(\\\"data:image/svg+xml,%3Csvg width='8' height='8' viewBox='0 0 8 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' y='3' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='6' width='2' height='2' fill='%23C4C4C4'/%3E%3Crect x='3' width='2' height='2' fill='%23C4C4C4'/%3E%3C/svg%3E%0A\\\") 2 round}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after{right:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--approved.fdp-approval-flow-node--blank:before{border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parent-approved.fdp-approval-flow-node--line-before:before{left:-2rem;border-top:.125rem solid #d9d9d9;border-top:.125rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);border-image:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode.fdp-approval-flow-node--blank{pointer-events:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__carousel-end-marker{top:3.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--edit-mode .fdp-approval-flow-node__arrow{display:none}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{right:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{right:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{left:-1.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{left:-1.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{left:-3.5rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{left:19.875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:calc(100% + 2rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{right:-12.6875rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:calc(100% + 4rem)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{width:4rem;left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{width:4rem;right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:-4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__add,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space).cdk-drag-dragging .fdp-approval-flow-node__vertical-line-after{visibility:hidden}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name{font-size:1rem;line-height:1.25rem;margin-bottom:.1rem;color:#32363a;color:var(--sapTextColor, #32363a)}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__description{font-size:.875rem;line-height:1rem;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin-bottom:.4rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow{width:0;height:0;border-style:solid;border-width:.375rem 0 .375rem .5rem;border-color:transparent transparent transparent #d9d9d9;border-color:transparent transparent transparent var(--sapGroup_TitleBorderColor, #d9d9d9);position:absolute;left:-.5rem;top:0;bottom:0;margin:auto}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{z-index:1;background:#d9d9d9;background:var(--sapGroup_TitleBorderColor, #d9d9d9);display:block;position:absolute;width:.25rem;height:1rem;top:2.4375rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker{left:-2rem}.fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker{right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__arrow,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__arrow{left:auto;right:-.5rem;border-width:.375rem .5rem .375rem 0;border-color:transparent #d9d9d9 transparent transparent;border-color:transparent var(--sapGroup_TitleBorderColor, #d9d9d9) transparent transparent}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-before:before{left:auto;right:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--line-after:after{right:auto;left:-2rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__name.fdp-approval-flow-node__name--members-count{direction:ltr;text-align:right}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before{right:-2.5rem;left:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-2.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after{left:-2.5rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space) .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl] .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-2.8rem;right:auto}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after{left:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{left:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all{left:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-in-parallel:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-start:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--final:not(.fdp-approval-flow-node--blank) .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{left:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before{right:-1.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before+.fdp-approval-flow-node__drop-zone{right:-1.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all{right:-3.5rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-in-parallel .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--parallel-end .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--root .fdp-approval-flow-node__add--before-all+.fdp-approval-flow-node__drop-zone{right:-3.8rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all{right:19.875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--last-blank .fdp-approval-flow-node__add--after-all+.fdp-approval-flow-node__drop-zone{right:calc(100% + 2rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after{left:-12.6875rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--next-blank .fdp-approval-flow-node__add--after+.fdp-approval-flow-node__drop-zone{right:calc(100% + 4rem)}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root.fdp-approval-flow-node--line-before:before{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-root .fdp-approval-flow-node__carousel-start-marker{left:auto;right:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final.fdp-approval-flow-node--line-after:after{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--first-final .fdp-approval-flow-node__carousel-end-marker{right:auto;left:-4rem}[dir=rtl] .fdp-approval-flow-node:not(.fdp-approval-flow-node--space).fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before,.fdp-approval-flow-node:not(.fdp-approval-flow-node--space)[dir=rtl].fdp-approval-flow-node--blank.fdp-approval-flow-node--first-final:before{left:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { node: [{\n type: Input\n }], meta: [{\n type: Input\n }], renderArrow: [{\n type: Input\n }], checkDueDate: [{\n type: Input\n }], dueDateThreshold: [{\n type: Input\n }], allNodesInColumnApproved: [{\n type: Input\n }], approvalStatusTemplate: [{\n type: Input\n }], statusColorMapping: [{\n type: Input\n }], isEdit: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--edit-mode']\n }], isNextNodeBlank: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--next-blank']\n }], _blank: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--blank']\n }], _space: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--space']\n }], _isRoot: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--root']\n }], _isFinal: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--final']\n }], _renderLineBefore: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--line-before']\n }], _renderLineAfter: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--line-after']\n }], _isApproved: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--approved']\n }], _isParentApproved: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parent-approved']\n }], _isNodeSelected: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--selected']\n }], _isParallelStart: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parallel-start']\n }], _isParallelEnd: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--parallel-end']\n }], _isFirstInParallel: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--first-in-parallel']\n }], _isLastInParallel: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--last-in-parallel']\n }], _lastBlank: [{\n type: HostBinding,\n args: ['class.fdp-approval-flow-node--last-blank']\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onAdd: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onEdit: [{\n type: Output\n }], \n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onDelete: [{\n type: Output\n }], _menu: [{\n type: ViewChild,\n args: [MenuComponent]\n }], _overflowMenuButton: [{\n type: ViewChild,\n args: ['overflowMenuButton']\n }], _nodeContent: [{\n type: ViewChild,\n args: ['nodeContent']\n }], _dropZones: [{\n type: ViewChildren,\n args: [ApprovalFlowDropZoneDirective]\n }], _gridListItem: [{\n type: ContentChild,\n args: [GridListItemComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUs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RCxjQUFjO3NCQURqQixXQUFXO3VCQUFDLDRDQUE0QztnQkFPckQsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLGlEQUFpRDtnQkFPMUQsaUJBQWlCO3NCQURwQixXQUFXO3VCQUFDLGdEQUFnRDtnQkFPekQsVUFBVTtzQkFEYixXQUFXO3VCQUFDLDBDQUEwQzs7UUFZdkQsK0RBQStEO1FBQy9ELEtBQUs7c0JBRkosTUFBTTs7UUFNUCwrREFBK0Q7UUFDL0QsTUFBTTtzQkFGTCxNQUFNOztRQU1QLCtEQUErRDtRQUMvRCxRQUFRO3NCQUZQLE1BQU07Z0JBTVAsS0FBSztzQkFESixTQUFTO3VCQUFDLGFBQWE7Z0JBS3hCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBSy9CLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixVQUFVO3NCQURULFlBQVk7dUJBQUMsNkJBQTZCO2dCQUszQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgR3JpZExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL29iamVjdC1zdGF0dXMnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1lbnVUaXRsZURpcmVjdGl2ZSxcbiAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT2JqZWN0U3RhdHVzQ29tcG9uZW50LCBQbGF0Zm9ybU9iamVjdFN0YXR1c1RleHREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL29iamVjdC1zdGF0dXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93Tm9kZVRhcmdldCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOb2RlQXBwcm92ZWQsIGlzTm9kZVN0YXJ0ZWQgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEFwcHJvdmFsR3JhcGhOb2RlLCBBcHByb3ZhbEdyYXBoTm9kZU1ldGFkYXRhLCBBcHByb3ZhbFN0YXR1cyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93RHJvcFpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctZHJvcC16b25lLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IE5PREVfU1RBVFVTX0NMQVNTX01BUCA9IHtcbiAgICBhcHByb3ZlZDogJ3Bvc2l0aXZlJyxcbiAgICByZWplY3RlZDogJ25lZ2F0aXZlJyxcbiAgICAnaW4gcHJvZ3Jlc3MnOiAnaW5mb3JtYXRpdmUnLFxuICAgICdub3Qgc3RhcnRlZCc6ICcnXG59O1xuXG5jb25zdCBEQVlfSU5fTUlMTElTRUNPTkRTID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxubGV0IGRlZmF1bHRJZCA9IDA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd05vZGUgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlJyxcbiAgICAgICAgJ1tjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1maXJzdC1yb290XSc6ICdtZXRhPy5maXJzdE9mTXVsdGlwbGVSb290Tm9kZXMnLFxuICAgICAgICAnW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpcnN0LWZpbmFsXSc6ICdtZXRhPy5maXJzdE9mTXVsdGlwbGVGaW5hbE5vZGVzJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZSxcbiAgICAgICAgT2JqZWN0U3RhdHVzQ29tcG9uZW50LFxuICAgICAgICBQbGF0Zm9ybU9iamVjdFN0YXR1c1RleHREaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBNZW51VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93Tm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBBcHByb3ZhbCBmbG93IGdyYXBoIG5vZGUgKi9cbiAgICBASW5wdXQoKSBub2RlOiBBcHByb3ZhbEdyYXBoTm9kZTtcblxuICAgIC8qKiBOb2RlIG1ldGFkYXRhICovXG4gICAgQElucHV0KCkgbWV0YTogQXBwcm92YWxHcmFwaE5vZGVNZXRhZGF0YTtcblxuICAgIC8qKiBXaGV0aGVyIG5vZGUgZWxlbWVudCBoYXMgYXJyb3cgb24gdGhlIGxlZnQgc2lkZSBwb2ludGluZyB0byB0aGUgbm9kZSAqL1xuICAgIEBJbnB1dCgpIHJlbmRlckFycm93ID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGR1ZSBkYXRlIHdhcm5pbmcgaW4gc3RhdHVzICovXG4gICAgQElucHV0KCkgY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogTnVtYmVyIG9mIGRheXMgYmVmb3JlIGR1ZSBkYXRlIHdoZW4gc3RhdHVzIGNoYW5nZXMgdG8gYHdhcm5pbmdgIHdpdGggdGV4dCAnRHVlIGluIFggZGF5cycuXG4gICAgICogIE5vdCB1c2VkIGlmICdjaGVja0R1ZURhdGUnIGVxdWFscyBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIGR1ZURhdGVUaHJlc2hvbGQgPSA3O1xuXG4gICAgLyoqIFdoZXRoZXIgbm9kZXMgaW4gY29sdW1uIGluIHdoaWNoIGN1cnJlbnQgbm9kZSBwbGFjZWQgYXJlIGFwcHJvdmVkXG4gICAgICogIFVzZWQgdG8gcmVuZGVyIGFwcHJvcHJpYXRlIHZlcnRpY2FsIGxpbmUgYWZ0ZXIgKGRhc2hlZC9zb2xpZClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxOb2Rlc0luQ29sdW1uQXBwcm92ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgYXBwIGN1c3RvbSBzdGF0dXNlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwcm92YWxTdGF0dXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBDdXN0b20gc3RhdHVzIHRvIGNvbG9yIG1hcHBpbmcgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNDb2xvck1hcHBpbmc6IFJlY29yZDxBcHByb3ZhbFN0YXR1cywgT2JqZWN0U3RhdHVzPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGlzIGluIGVkaXQgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1lZGl0LW1vZGUnKVxuICAgIGlzRWRpdDogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGFmdGVyIGlzIGJsYW5rICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLW5leHQtYmxhbmsnKVxuICAgIGlzTmV4dE5vZGVCbGFuazogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1ibGFuaycpXG4gICAgZ2V0IF9ibGFuaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5ub2RlPy5ibGFuaztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tc3BhY2UnKVxuICAgIGdldCBfc3BhY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubm9kZT8uc3BhY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXJvb3QnKVxuICAgIGdldCBfaXNSb290KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhPy5pc1Jvb3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpbmFsJylcbiAgICBnZXQgX2lzRmluYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGE/LmlzRmluYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWxpbmUtYmVmb3JlJylcbiAgICBnZXQgX3JlbmRlckxpbmVCZWZvcmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2RlPy5ibGFuaztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tbGluZS1hZnRlcicpXG4gICAgZ2V0IF9yZW5kZXJMaW5lQWZ0ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2RlPy5ibGFuayB8fCB0aGlzLl9pc0ZpbmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1hcHByb3ZlZCcpXG4gICAgZ2V0IF9pc0FwcHJvdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlICYmIGlzTm9kZUFwcHJvdmVkKHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXBhcmVudC1hcHByb3ZlZCcpXG4gICAgZ2V0IF9pc1BhcmVudEFwcHJvdmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubWV0YT8ucGFyZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm1ldGE/LnJvb3ROb2Rlc0FwcHJvdmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YS5wYXJlbnRzLmV2ZXJ5KChub2RlKSA9PiBpc05vZGVBcHByb3ZlZChub2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLXNlbGVjdGVkJylcbiAgICBnZXQgX2lzTm9kZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgdGhpcy5faXNTZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tcGFyYWxsZWwtc3RhcnQnKVxuICAgIGdldCBfaXNQYXJhbGxlbFN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LnBhcmFsbGVsU3RhcnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlLS1wYXJhbGxlbC1lbmQnKVxuICAgIGdldCBfaXNQYXJhbGxlbEVuZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5tZXRhPy5wYXJhbGxlbEVuZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWZpcnN0LWluLXBhcmFsbGVsJylcbiAgICBnZXQgX2lzRmlyc3RJblBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LmlzRmlyc3RJblBhcmFsbGVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZS0tbGFzdC1pbi1wYXJhbGxlbCcpXG4gICAgZ2V0IF9pc0xhc3RJblBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLm1ldGE/LmlzTGFzdEluUGFyYWxsZWwpO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBub2RlIGlzIGJsYW5rIGFuZCB0aGUgZmluYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGUtLWxhc3QtYmxhbmsnKVxuICAgIGdldCBfbGFzdEJsYW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmxhbmsgJiYgdGhpcy5ub2RlLnRhcmdldHMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5vZGUuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gYWRkIG5vZGUgYnV0dG9uIGNsaWNrZWQsIHZhbHVlIGlzIHRoZSBwbGFjZW1lbnQgZm9yIHRoZSBuZXcgbm9kZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIG9uQWRkID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZWRpdCBub2RlIGJ1dHRvbiBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25FZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZGVsZXRlIG5vZGUgYnV0dG9uIGNsaWNrZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBvbkRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChNZW51Q29tcG9uZW50KVxuICAgIF9tZW51OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdvdmVyZmxvd01lbnVCdXR0b24nKVxuICAgIF9vdmVyZmxvd01lbnVCdXR0b246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ25vZGVDb250ZW50JylcbiAgICBfbm9kZUNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQXBwcm92YWxGbG93RHJvcFpvbmVEaXJlY3RpdmUpXG4gICAgX2Ryb3Bab25lczogUXVlcnlMaXN0PEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChHcmlkTGlzdEl0ZW1Db21wb25lbnQpXG4gICAgX2dyaWRMaXN0SXRlbTogR3JpZExpc3RJdGVtQ29tcG9uZW50PEFwcHJvdmFsR3JhcGhOb2RlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29iamVjdFN0YXR1czogT2JqZWN0U3RhdHVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2hvd0R1ZURhdGVXYXJuaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kdWVJbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGFwcHJvdmFsRmxvd05vZGVJZCA9ICdmZHAtYXBwcm92YWwtZmxvdy1ub2RlLScgKyBkZWZhdWx0SWQrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX25hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNOb3RTdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWlzTm9kZVN0YXJ0ZWQodGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNFZGl0QWN0aW9uc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgfHwgdGhpcy5ub2RlLnN0YXR1cyA9PT0gJ3JlamVjdGVkJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfYWN0aXZlRHJvcFpvbmVzKCk6IEFwcHJvdmFsRmxvd0Ryb3Bab25lRGlyZWN0aXZlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcFpvbmVzLmZpbHRlcigoeikgPT4gei5hY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc0FueURyb3Bab25lQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRHJvcFpvbmVzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzVmVydGljYWxMaW5lQmVmb3JlU29saWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tZXRhPy5wYXJlbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5tZXRhPy5pc1ZlcnRpY2FsTGluZUJlZm9yZVNvbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YS5wYXJlbnRzLmV2ZXJ5KChwYXJlbnROb2RlKSA9PiBpc05vZGVBcHByb3ZlZChwYXJlbnROb2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGU/LnRhcmdldHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm1ldGE/LmlzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZlcnRpY2FsTGluZUJlZm9yZVNvbGlkICYmIHRoaXMuYWxsTm9kZXNJbkNvbHVtbkFwcHJvdmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgIXRoaXMuX2JsYW5rICYmICF0aGlzLl9zcGFjZSAmJiAhdGhpcy5ub2RlPy5kaXNhYmxlQWN0aW9ucztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2hvd0FmdGVyQWxsQWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0VkaXQgJiYgIXRoaXMuX3NwYWNlICYmICF0aGlzLm5vZGU/LmRpc2FibGVBY3Rpb25zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Ryb3Bab25lUGFydGlhbChwbGFjZW1lbnQ6IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICghdGhpcy5fYmxhbmsgJiYgKCF0aGlzLmlzTmV4dE5vZGVCbGFuayB8fCBwbGFjZW1lbnQgPT09ICdiZWZvcmUnKSkgfHxcbiAgICAgICAgICAgICh0aGlzLl9sYXN0QmxhbmsgJiYgcGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGVja05vZGVTdGF0dXMoKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoZWNrTm9kZVN0YXR1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk1lbnVPcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51LnJlZnJlc2hQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3JpZExpc3RJdGVtPy5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kZWFjdGl2YXRlRHJvcFpvbmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kcm9wWm9uZXMuZm9yRWFjaCgoZHJvcFpvbmUpID0+IChkcm9wWm9uZS5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrSWZOb2RlRHJhZ2dlZEluRHJvcFpvbmUobm9kZVJlY3Q6IERPTVJlY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHJvcFpvbmVzLmZvckVhY2goKGRyb3Bab25lKSA9PiBkcm9wWm9uZS5fY2hlY2tJZk5vZGVEcmFnZ2VkSW5Ecm9wWm9uZShub2RlUmVjdCkpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tOb2RlU3RhdHVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tEdWVEYXRlICYmIHRoaXMubm9kZS5kdWVEYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkdWVUaHJlc2hvbGQgPSBOdW1iZXIobmV3IERhdGUodGhpcy5ub2RlLmR1ZURhdGUpKSAtIHRoaXMuZHVlRGF0ZVRocmVzaG9sZCAqIERBWV9JTl9NSUxMSVNFQ09ORFM7XG4gICAgICAgICAgICBjb25zdCBub3dBbmREdWVEaWZmID0gRGF0ZS5ub3coKSAtIGR1ZVRocmVzaG9sZDtcblxuICAgICAgICAgICAgdGhpcy5fZHVlSW4gPSBNYXRoLnJvdW5kKG5vd0FuZER1ZURpZmYgLyBEQVlfSU5fTUlMTElTRUNPTkRTKTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dEdWVEYXRlV2FybmluZyA9ICFpc05vZGVBcHByb3ZlZCh0aGlzLm5vZGUpICYmIGR1ZVRocmVzaG9sZCA8IERhdGUubm93KCk7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RTdGF0dXMgPSB0aGlzLl9zaG93RHVlRGF0ZVdhcm5pbmcgPyAnY3JpdGljYWwnIDogdGhpcy5fZ2V0Tm9kZVN0YXR1c0NsYXNzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29iamVjdFN0YXR1cyA9IHRoaXMuX2dldE5vZGVTdGF0dXNDbGFzcygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Tm9kZVN0YXR1c0NsYXNzKCk6IE9iamVjdFN0YXR1cyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnN0YXR1c0NvbG9yTWFwcGluZ1xuICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0dXNDb2xvck1hcHBpbmdbdGhpcy5ub2RlLnN0YXR1c11cbiAgICAgICAgICAgICAgICA6IE5PREVfU1RBVFVTX0NMQVNTX01BUFt0aGlzLm5vZGUuc3RhdHVzXVxuICAgICAgICApIGFzIE9iamVjdFN0YXR1cztcbiAgICB9XG59XG4iLCJAaWYgKG1ldGE/LnJlbmRlclZlcnRpY2FsTGluZUJlZm9yZSkge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWJlZm9yZVwiXG4gICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWJlZm9yZS1zb2xpZF09XCJfaXNWZXJ0aWNhbExpbmVCZWZvcmVTb2xpZFwiXG4gICAgPjwvZGl2PlxufVxuQGlmIChtZXRhPy5yZW5kZXJWZXJ0aWNhbExpbmVBZnRlcikge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX192ZXJ0aWNhbC1saW5lLWFmdGVyXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX3ZlcnRpY2FsLWxpbmUtYWZ0ZXItc29saWRdPVwiX2lzVmVydGljYWxMaW5lQWZ0ZXJTb2xpZFwiXG4gICAgPjwvZGl2PlxufVxuQGlmICghX2JsYW5rICYmICFfc3BhY2UpIHtcbiAgICBAaWYgKHJlbmRlckFycm93KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hcnJvd1wiPjwvZGl2PlxuICAgIH1cbiAgICBAaWYgKF9pc1Jvb3QgJiYgbWV0YT8ubm9kZUluZGV4ID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19jYXJvdXNlbC1zdGFydC1tYXJrZXJcIj48L2Rpdj5cbiAgICB9XG4gICAgQGlmIChfaXNGaW5hbCAmJiBtZXRhPy5ub2RlSW5kZXggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Nhcm91c2VsLWVuZC1tYXJrZXJcIj48L2Rpdj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxufVxuPG5nLXRlbXBsYXRlICNvdmVyZmxvd01lbnVCdXR0b24+XG4gICAgPCEtLSBBY3R1YWxseSBqdXN0IHRoZSBmZC1ncmlkLWl0ZW0gYWN0aW9uIGJ1dHRvbiBidXQgd2l0aCBzb21lIGhhcmRjb2RlIHRvIGJlIHVzZWQgYXMgbWVudSB0cmlnZ2VyIC0tPlxuICAgIEBpZiAoIW5vZGU/LmRpc2FibGVBY3Rpb25zKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbWVudS1idXR0b25cIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgZ2x5cGg9XCJvdmVyZmxvd1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVNZW51QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgZmRDb21wYWN0XG4gICAgICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNFZGl0QWN0aW9uc0F2YWlsYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vZGVDb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19pbmZvXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbmFtZVwiXG4gICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fbmFtZS0tbWVtYmVycy1jb3VudF09XCJub2RlLmFwcHJvdmVycy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgIFtpZF09XCJhcHByb3ZhbEZsb3dOb2RlSWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKG5vZGUuYXBwcm92ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHt7IG5vZGUuYXBwcm92ZXJzWzBdLm5hbWUgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlTWVtYmVyc0NvdW50JyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBub2RlLmFwcHJvdmVycy5sZW5ndGggfSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKCFub2RlLnZhcmlvdXNUZWFtcykge1xuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwcm92ZXJzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub2RlLmFwcHJvdmVycy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBub2RlLmFwcHJvdmVyc1swXS5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlVmFyaW91c1RlYW1zJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhcmlvdXNUZWFtcz4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVWYXJpb3VzVGVhbXMnIHwgZmRUcmFuc2xhdGUgfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxmZHAtb2JqZWN0LXN0YXR1cyBbc3RhdHVzXT1cIl9vYmplY3RTdGF0dXNcIiBbaW52ZXJ0ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZkcE9iamVjdFN0YXR1c1RleHQ+XG4gICAgICAgICAgICAgICAgQGlmIChhcHByb3ZhbFN0YXR1c1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoZWNrRHVlRGF0ZSB8fCAhX3Nob3dEdWVEYXRlV2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhcHByb3ZhbFN0YXR1c1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFwcHJvdmFsU3RhdHVzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBub2RlOiBub2RlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoZWNrRHVlRGF0ZSB8fCAhX3Nob3dEdWVEYXRlV2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAobm9kZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2FwcHJvdmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc3RhdHVzQXBwcm92ZWQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdyZWplY3RlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnN0YXR1c1JlamVjdGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW4gcHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zdGF0dXNJblByb2dyZXNzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnbm90IHN0YXJ0ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zdGF0dXNOb3RTdGFydGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY2hlY2tEdWVEYXRlICYmIF9zaG93RHVlRGF0ZVdhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChfZHVlSW4gPT09IGR1ZURhdGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlU3RhdHVzRHVlVG9kYXknIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKF9kdWVJbiA8IGR1ZURhdGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVTdGF0dXNEdWVJblhEYXlzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkdWVEYXRlVGhyZXNob2xkIC0gX2R1ZUluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfZHVlSW4gPiBkdWVEYXRlVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5ub2RlU3RhdHVzWERheXNPdmVyZHVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBfZHVlSW4gLSBkdWVEYXRlVGhyZXNob2xkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkcC1vYmplY3Qtc3RhdHVzPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbkBpZiAoX3Nob3dBZGRCdXR0b24gJiYgbWV0YT8uY2FuQWRkTm9kZUJlZm9yZUFsbCAmJiAhbm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEJlZm9yZSkge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGROb2RlQnV0dG9uXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcGxhY2VtZW50OiAnYmVmb3JlLWFsbCcgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKF9zaG93QWRkQnV0dG9uICYmIG1ldGE/LmNhbkFkZE5vZGVCZWZvcmUgJiYgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRCZWZvcmUpIHtcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkTm9kZUJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBsYWNlbWVudDogJ2JlZm9yZScgfVwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKFxuICAgIF9zaG93QWRkQnV0dG9uICYmIG1ldGE/LmNhbkFkZE5vZGVBZnRlciAmJiBtZXRhPy5yZW5kZXJBZGROb2RlQWZ0ZXJCdXR0b24gJiYgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRBZnRlclxuKSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZE5vZGVCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBwbGFjZW1lbnQ6ICdhZnRlcicgfVwiPjwvbmctdGVtcGxhdGU+XG59XG5AaWYgKFxuICAgIF9zaG93QWZ0ZXJBbGxBZGRCdXR0b24gJiZcbiAgICBtZXRhPy5jYW5BZGROb2RlQWZ0ZXJBbGwgJiZcbiAgICBtZXRhPy5yZW5kZXJBZGROb2RlQWZ0ZXJCdXR0b24gJiZcbiAgICAhbm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEFmdGVyXG4pIHtcbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkTm9kZUJ1dHRvblwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBsYWNlbWVudDogJ2FmdGVyLWFsbCcgfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG59XG48bmctdGVtcGxhdGUgI2FkZE5vZGVCdXR0b24gbGV0LXBsYWNlbWVudD1cInBsYWNlbWVudFwiPlxuICAgIEBpZiAobm9kZS5zdGF0dXMgIT09ICdhcHByb3ZlZCcpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBnbHlwaD1cImFkZFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBmZENvbXBhY3RcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fYWRkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hZGQtLWJsYW5rXT1cInRoaXMuX2JsYW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvdy1ub2RlX19hZGQtLWJlZm9yZV09XCJcbiAgICAgICAgICAgICAgICAhdGhpcy5fYmxhbmsgJiYgKHBsYWNlbWVudCA9PT0gJ2JlZm9yZScgfHwgcGxhY2VtZW50ID09PSAnYmVmb3JlLWFsbCcpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2FkZC0tYmVmb3JlLWFsbF09XCIhdGhpcy5fYmxhbmsgJiYgcGxhY2VtZW50ID09PSAnYmVmb3JlLWFsbCdcIlxuICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2FkZC0tYWZ0ZXJdPVwiXG4gICAgICAgICAgICAgICAgIXRoaXMuX2JsYW5rICYmIChwbGFjZW1lbnQgPT09ICdhZnRlcicgfHwgcGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fYWRkLS1hZnRlci1hbGxdPVwicGxhY2VtZW50ID09PSAnYWZ0ZXItYWxsJ1wiXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJkcm9wWm9uZS5hY3RpdmUgPyAnaGlkZGVuJyA6ICcnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFkZC5lbWl0KHBsYWNlbWVudClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIDxkaXZcbiAgICAgICAgI2Ryb3Bab25lPVwiZmRwLWFwcHJvdmFsLWZsb3ctZHJvcC16b25lXCJcbiAgICAgICAgZmRwLWFwcHJvdmFsLWZsb3ctZHJvcC16b25lXG4gICAgICAgIFtwbGFjZW1lbnRdPVwicGxhY2VtZW50XCJcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1ub2RlX19kcm9wLXpvbmVcIlxuICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3ctbm9kZV9fZHJvcC16b25lLS1hY3RpdmVdPVwiZHJvcFpvbmUuYWN0aXZlXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Ryb3Atem9uZS0tYmxhbmtdPVwiaXNOZXh0Tm9kZUJsYW5rXCJcbiAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LW5vZGVfX2Ryb3Atem9uZS0tcGFydGlhbF09XCJfZHJvcFpvbmVQYXJ0aWFsKHBsYWNlbWVudClcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48ZmQtbWVudSAjbWVudSBmZENvbnRlbnREZW5zaXR5IHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiAoaXNPcGVuQ2hhbmdlKT1cIl9vbk1lbnVPcGVuKClcIj5cbiAgICBAaWYgKG1ldGE/LmNhbkFkZE5vZGVCZWZvcmUgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZEJlZm9yZSkge1xuICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJtZW51LmNsb3NlKCk7IG9uQWRkLmVtaXQoJ2JlZm9yZScpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubm9kZUFjdGlvbkFkZEFwcHJvdmVyc0JlZm9yZScgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKG1ldGE/LmNhbkFkZE5vZGVBZnRlciAmJiAhdGhpcy5ub2RlPy5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlQWRkQWZ0ZXIpIHtcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBvbkFkZC5lbWl0KCdhZnRlcicpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cubm9kZUFjdGlvbkFkZEFwcHJvdmVyc0FmdGVyJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuICAgIEBpZiAobWV0YT8uY2FuQWRkUGFyYWxsZWwgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZFBhcmFsbGVsKSB7XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgb25BZGQuZW1pdCgncGFyYWxsZWwnKVwiPlxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25BZGRBcHByb3ZlcnNQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgIH1cbiAgICBAaWYgKF9pc05vdFN0YXJ0ZWQgJiYgIXRoaXMubm9kZT8uYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUVkaXQpIHtcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBvbkVkaXQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25FZGl0QXBwcm92ZXInIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICB9XG4gICAgQGlmICghdGhpcy5ub2RlPy5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlUmVtb3ZlKSB7XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm1lbnUuY2xvc2UoKTsgb25EZWxldGUuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT4ge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93Lm5vZGVBY3Rpb25SZW1vdmUnIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICB9XG48L2ZkLW1lbnU+XG4iXX0=","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { DialogRef } from '@fundamental-ngx/core/dialog';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';\nimport { FormGroupComponent, FormItemComponent } from '@fundamental-ngx/core/form';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { APPROVAL_FLOW_NODE_TYPES } from '../approval-flow-add-node/approval-flow-add-node.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@angular/forms\";\n/**\n * @deprecated\n * ApprovalFlowSelectType component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowSelectTypeComponent {\n /** @hidden */\n constructor(_dialogRef) {\n this._dialogRef = _dialogRef;\n /** @hidden */\n this._nodeType = APPROVAL_FLOW_NODE_TYPES.SERIAL;\n /** @hidden */\n this._nodeTypes = APPROVAL_FLOW_NODE_TYPES;\n /** @hidden */\n this._toNextSerial = false;\n }\n /** @hidden */\n _submit() {\n this._dialogRef.close({ type: this._nodeType, toNextSerial: this._toNextSerial });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowSelectTypeComponent, deps: [{ token: i1.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowSelectTypeComponent, isStandalone: true, selector: \"fdp-approval-flow-select-type\", host: { classAttribute: \"fdp-approval-flow-dialog fdp-approval-flow-select-type\" }, ngImport: i0, template: \"<fd-dialog>\\n <fd-dialog-header>\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>{{ 'platformApprovalFlow.selectTypeDialogMoveApproverAs' | fdTranslate }}</p>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body fdCompact>\\n <span class=\\\"fd-form-label\\\">\\n {{ 'platformApprovalFlow.selectTypeDialogParallelOrSerial' | fdTranslate }}\\n </span>\\n <fd-form-group class=\\\"fdp-approval-flow-select-type__form\\\">\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.PARALLEL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-parallel\\\"\\n name=\\\"select-type-parallel\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeParallel' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.SERIAL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-serial\\\"\\n name=\\\"select-type-serial\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeSerial' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_toNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n </fd-form-group>\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogConfirmButton' | fdTranslate\\\"\\n (click)=\\\"_submit()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogCancelButton' | fdTranslate\\\"\\n (click)=\\\"_dialogRef.close()\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-select-type .fd-dialog__body{width:24rem}.fdp-approval-flow-select-type .fd-dialog__body .fd-form-item{margin-bottom:0}\\n\"], dependencies: [{ kind: \"component\", type: DialogComponent, selector: \"fd-dialog\", inputs: [\"class\", \"dialogRef\", \"dialogConfig\"] }, { kind: \"component\", type: DialogHeaderComponent, selector: \"fd-dialog-header\" }, { kind: \"directive\", type: TemplateDirective, selector: \"[fdkTemplate]\", inputs: [\"fdkTemplate\"] }, { kind: \"component\", type: DialogBodyComponent, selector: \"fd-dialog-body\", inputs: [\"disablePaddings\"] }, { kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: FormGroupComponent, selector: \"fd-form-group\", inputs: [\"isInline\"] }, { kind: \"component\", type: FormItemComponent, selector: \"[fd-form-item]\", inputs: [\"isInline\", \"horizontal\"] }, { kind: \"component\", type: RadioButtonComponent, selector: \"fd-radio-button\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"tabIndex\", \"state\", \"disabled\", \"readOnly\", \"selectedValue\", \"name\", \"id\", \"value\", \"required\", \"standalone\", \"wrapLabel\", \"valignLabel\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: CheckboxComponent, selector: \"fd-checkbox\", inputs: [\"wrapLabel\", \"valignLabel\", \"ariaLabel\", \"role\", \"value\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"title\", \"inputId\", \"state\", \"name\", \"label\", \"disabled\", \"readonly\", \"tristate\", \"tristateSelectable\", \"labelClass\", \"required\", \"displayOnly\", \"values\", \"standalone\"], outputs: [\"focusChange\"] }, { kind: \"component\", type: DialogFooterComponent, selector: \"fd-dialog-footer\" }, { kind: \"component\", type: ButtonBarComponent, selector: \"fd-button-bar\", inputs: [\"fullWidth\", \"fdType\", \"title\", \"ariaLabelledby\", \"id\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowSelectTypeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-select-type', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fdp-approval-flow-dialog fdp-approval-flow-select-type'\n }, imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n ContentDensityDirective,\n FormGroupComponent,\n FormItemComponent,\n RadioButtonComponent,\n FormsModule,\n CheckboxComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n FdTranslatePipe\n ], template: \"<fd-dialog>\\n <fd-dialog-header>\\n <ng-template fdkTemplate=\\\"header\\\">\\n <p>{{ 'platformApprovalFlow.selectTypeDialogMoveApproverAs' | fdTranslate }}</p>\\n </ng-template>\\n </fd-dialog-header>\\n <fd-dialog-body fdCompact>\\n <span class=\\\"fd-form-label\\\">\\n {{ 'platformApprovalFlow.selectTypeDialogParallelOrSerial' | fdTranslate }}\\n </span>\\n <fd-form-group class=\\\"fdp-approval-flow-select-type__form\\\">\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.PARALLEL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-parallel\\\"\\n name=\\\"select-type-parallel\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeParallel' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n <div fd-form-item>\\n <fd-radio-button\\n [value]=\\\"_nodeTypes.SERIAL\\\"\\n [(ngModel)]=\\\"_nodeType\\\"\\n id=\\\"select-type-serial\\\"\\n name=\\\"select-type-serial\\\"\\n >\\n {{ 'platformApprovalFlow.selectTypeDialogNodeTypeSerial' | fdTranslate }}\\n </fd-radio-button>\\n </div>\\n @if (_nodeType === _nodeTypes.PARALLEL) {\\n <div fd-form-item>\\n <fd-checkbox [(ngModel)]=\\\"_toNextSerial\\\">\\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\\n </fd-checkbox>\\n </div>\\n }\\n </fd-form-group>\\n </fd-dialog-body>\\n <fd-dialog-footer fdCompact>\\n <fd-button-bar\\n fdType=\\\"emphasized\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogConfirmButton' | fdTranslate\\\"\\n (click)=\\\"_submit()\\\"\\n ></fd-button-bar>\\n <fd-button-bar\\n fdkInitialFocus\\n fdType=\\\"transparent\\\"\\n [label]=\\\"'platformApprovalFlow.selectTypeDialogCancelButton' | fdTranslate\\\"\\n (click)=\\\"_dialogRef.close()\\\"\\n ></fd-button-bar>\\n </fd-dialog-footer>\\n</fd-dialog>\\n\", styles: [\".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\\n\", \".fdp-approval-flow-select-type .fd-dialog__body{width:24rem}.fdp-approval-flow-select-type .fd-dialog__body .fd-form-item{margin-bottom:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlL2FwcHJvdmFsLWZsb3ctc2VsZWN0LXR5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOzs7O0FBT3RHOzs7R0FHRztBQTRCSCxNQUFNLE9BQU8sK0JBQStCO0lBVXhDLGNBQWM7SUFDZCxZQUE0QixVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBVmpELGNBQWM7UUFDZCxjQUFTLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDO1FBRTVDLGNBQWM7UUFDZCxlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFFdEMsY0FBYztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRzhCLENBQUM7SUFFckQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUE4QixDQUFDLENBQUM7SUFDbEgsQ0FBQzs4R0FoQlEsK0JBQStCO2tHQUEvQiwrQkFBK0IsNktDM0Q1Qyw2c0VBc0RBLHkrRERaUSxlQUFlLHNHQUNmLHFCQUFxQiw2REFDckIsaUJBQWlCLG1GQUdqQixtQkFBbUIsd0ZBQ25CLHVCQUF1QixvZEFDdkIsa0JBQWtCLGdGQUNsQixpQkFBaUIsK0ZBQ2pCLG9CQUFvQiwyUUFDcEIsV0FBVywrVkFDWCxpQkFBaUIsb1dBQ2pCLHFCQUFxQiw2REFDckIsa0JBQWtCLHVIQUNsQixlQUFlOzsyRkFHViwrQkFBK0I7a0JBM0IzQyxTQUFTOytCQUNJLCtCQUErQixtQkFHeEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsd0RBQXdEO3FCQUNsRSxXQUNRO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUdyb3VwQ29tcG9uZW50LCBGb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFR5cGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgdHlwZTogQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuICAgIHRvTmV4dFNlcmlhbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93U2VsZWN0VHlwZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZSdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBGb3JtR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkJhckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dTZWxlY3RUeXBlQ29tcG9uZW50IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b05leHRTZXJpYWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IF9kaWFsb2dSZWY6IERpYWxvZ1JlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHsgdHlwZTogdGhpcy5fbm9kZVR5cGUsIHRvTmV4dFNlcmlhbDogdGhpcy5fdG9OZXh0U2VyaWFsIH0gYXMgU2VsZWN0VHlwZURpYWxvZ0Zvcm1EYXRhKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxwPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nTW92ZUFwcHJvdmVyQXMnIHwgZmRUcmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keSBmZENvbXBhY3Q+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtZm9ybS1sYWJlbFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LnNlbGVjdFR5cGVEaWFsb2dQYXJhbGxlbE9yU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGZkLWZvcm0tZ3JvdXAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZV9fZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX25vZGVUeXBlcy5QQVJBTExFTFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX25vZGVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3QtdHlwZS1wYXJhbGxlbFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3QtdHlwZS1wYXJhbGxlbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc2VsZWN0VHlwZURpYWxvZ05vZGVUeXBlUGFyYWxsZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX25vZGVUeXBlcy5TRVJJQUxcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9ub2RlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LXR5cGUtc2VyaWFsXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdC10eXBlLXNlcmlhbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuc2VsZWN0VHlwZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl90b05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQWRkVG9OZXh0JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZm9ybS1ncm91cD5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyIGZkQ29tcGFjdD5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nQ29uZmlybUJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX3N1Ym1pdCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5zZWxlY3RUeXBlRGlhbG9nQ2FuY2VsQnV0dG9uJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfZGlhbG9nUmVmLmNsb3NlKClcIlxuICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { isNodeApproved } from '../helpers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ApprovalFlowToolbarActions component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowToolbarActionsComponent {\n constructor() {\n /** Whether approval flow in the edit mode */\n this.isEditMode = false;\n /** Event emitted when edit mode toggled */\n this.enterEditMode = new EventEmitter();\n /** Event emitted when node added */\n this.addNode = new EventEmitter();\n /** Event emitted when selected node edited */\n this.editSelectedNode = new EventEmitter();\n /** Event emitted when selected nodes deleted (bulk) */\n this.deleteSelectedNodes = new EventEmitter();\n /** @hidden */\n this._canRemoveSelectedNodes = false;\n /** @hidden */\n this._selectedNodes = [];\n }\n /** Array of selected approval flow graph nodes */\n set selectedNodes(value) {\n this._selectedNodes = value;\n this._canRemoveSelectedNodes =\n !!this.selectedNodes.length &&\n this.selectedNodes.every((node) => !node.disableActions && !node.actionsConfig?.disableRemove);\n }\n get selectedNodes() {\n return this._selectedNodes;\n }\n /** @hidden */\n get _notApprovedSelectedNode() {\n if (this.selectedNodes.length !== 1) {\n return null;\n }\n return !isNodeApproved(this.selectedNodes[0]) ? this.selectedNodes[0] : null;\n }\n /** @hidden */\n get _canAddBefore() {\n const node = this._notApprovedSelectedNode;\n return (!!node &&\n !node.disableActions &&\n !node.actionsConfig?.disableAddBefore &&\n !!this.graphMetadata[node.id].canAddNodeBefore);\n }\n /** @hidden */\n get _canAddAfter() {\n const node = this._notApprovedSelectedNode;\n return (!!node &&\n !node.disableActions &&\n !node.actionsConfig?.disableAddAfter &&\n !!this.graphMetadata[node.id].canAddNodeAfter);\n }\n /** @hidden */\n get _canAddParallel() {\n const node = this._notApprovedSelectedNode;\n return (!!this._notApprovedSelectedNode &&\n !node?.disableActions &&\n !node?.actionsConfig?.disableAddParallel &&\n !!this.graphMetadata[node.id].canAddParallel);\n }\n /** @hidden */\n get _canEditNode() {\n const node = this._notApprovedSelectedNode;\n return !!node && !node.disableActions && !node.actionsConfig?.disableEdit;\n }\n /** @hidden */\n _addNode(target) {\n const node = this.selectedNodes[0];\n this.addNode.emit({ node, target });\n }\n /** @hidden */\n _editSelectedNode() {\n const node = this.selectedNodes[0];\n this.editSelectedNode.emit(node);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowToolbarActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowToolbarActionsComponent, isStandalone: true, selector: \"fdp-approval-flow-toolbar-actions\", inputs: { graph: \"graph\", graphMetadata: \"graphMetadata\", selectedNodes: \"selectedNodes\", isEditMode: \"isEditMode\" }, outputs: { enterEditMode: \"enterEditMode\", addNode: \"addNode\", editSelectedNode: \"editSelectedNode\", deleteSelectedNodes: \"deleteSelectedNodes\" }, host: { classAttribute: \"fdp-approval-flow-toolbar-actions\" }, ngImport: i0, template: \"<ng-container fdCompact>\\n @if (!graph?.columns?.length && !graph?.errors) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddStepButton' | fdTranslate\\\"\\n (click)=\\\"_addNode('empty')\\\"\\n ></button>\\n }\\n @if (!!graph?.columns?.length && !isEditMode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditButton' | fdTranslate\\\"\\n (click)=\\\"enterEditMode.emit()\\\"\\n ></button>\\n }\\n @if (isEditMode) {\\n @if (_canAddBefore) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversBefore' | fdTranslate\\\"\\n (click)=\\\"_addNode('before')\\\"\\n ></button>\\n }\\n @if (_canAddAfter) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversAfter' | fdTranslate\\\"\\n (click)=\\\"_addNode('after')\\\"\\n ></button>\\n }\\n @if (_canAddParallel) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversParallel' | fdTranslate\\\"\\n (click)=\\\"_addNode('parallel')\\\"\\n ></button>\\n }\\n @if (_canRemoveSelectedNodes) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarRemove' | fdTranslate\\\"\\n (click)=\\\"deleteSelectedNodes.emit()\\\"\\n ></button>\\n }\\n @if (_canEditNode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditApprover' | fdTranslate\\\"\\n (click)=\\\"_editSelectedNode()\\\"\\n ></button>\\n }\\n }\\n</ng-container>\\n\", styles: [\".fdp-approval-flow-toolbar-actions .fd-button:not(:last-child){margin-right:.5rem}[dir=rtl] .fdp-approval-flow-toolbar-actions .fd-button:not(:last-child),.fdp-approval-flow-toolbar-actions[dir=rtl] .fd-button:not(:last-child){margin-right:0;margin-left:.5rem}\\n\"], dependencies: [{ kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowToolbarActionsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow-toolbar-actions', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n class: 'fdp-approval-flow-toolbar-actions'\n }, imports: [ContentDensityDirective, ButtonComponent, FdTranslatePipe], template: \"<ng-container fdCompact>\\n @if (!graph?.columns?.length && !graph?.errors) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddStepButton' | fdTranslate\\\"\\n (click)=\\\"_addNode('empty')\\\"\\n ></button>\\n }\\n @if (!!graph?.columns?.length && !isEditMode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditButton' | fdTranslate\\\"\\n (click)=\\\"enterEditMode.emit()\\\"\\n ></button>\\n }\\n @if (isEditMode) {\\n @if (_canAddBefore) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversBefore' | fdTranslate\\\"\\n (click)=\\\"_addNode('before')\\\"\\n ></button>\\n }\\n @if (_canAddAfter) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversAfter' | fdTranslate\\\"\\n (click)=\\\"_addNode('after')\\\"\\n ></button>\\n }\\n @if (_canAddParallel) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarAddApproversParallel' | fdTranslate\\\"\\n (click)=\\\"_addNode('parallel')\\\"\\n ></button>\\n }\\n @if (_canRemoveSelectedNodes) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarRemove' | fdTranslate\\\"\\n (click)=\\\"deleteSelectedNodes.emit()\\\"\\n ></button>\\n }\\n @if (_canEditNode) {\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.toolbarEditApprover' | fdTranslate\\\"\\n (click)=\\\"_editSelectedNode()\\\"\\n ></button>\\n }\\n }\\n</ng-container>\\n\", styles: [\".fdp-approval-flow-toolbar-actions .fd-button:not(:last-child){margin-right:.5rem}[dir=rtl] .fdp-approval-flow-toolbar-actions .fd-button:not(:last-child),.fdp-approval-flow-toolbar-actions[dir=rtl] .fd-button:not(:last-child){margin-right:0;margin-left:.5rem}\\n\"] }]\n }], propDecorators: { graph: [{\n type: Input\n }], graphMetadata: [{\n type: Input\n }], selectedNodes: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], enterEditMode: [{\n type: Output\n }], addNode: [{\n type: Output\n }], editSelectedNode: [{\n type: Output\n }], deleteSelectedNodes: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9hcHByb3ZhbC1mbG93L2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy9hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHNUM7OztHQUdHO0FBWUgsTUFBTSxPQUFPLG1DQUFtQztJQVhoRDtRQWlDSSw2Q0FBNkM7UUFFN0MsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQiwyQ0FBMkM7UUFFM0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpDLG9DQUFvQztRQUVwQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQStELENBQUM7UUFFMUYsOENBQThDO1FBRTlDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRXpELHVEQUF1RDtRQUV2RCx3QkFBbUIsR0FBRyxJQUFJLFlBQVks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O1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBOUdRLG1DQUFtQztrR0FBbkMsbUNBQW1DLHFhQ3pCaEQsbXpEQXFEQSxnVUQ5QmMsdUJBQXVCLG9kQUFFLGVBQWUsMElBQUUsZUFBZTs7MkZBRTFELG1DQUFtQztrQkFYL0MsU0FBUzsrQkFDSSxtQ0FBbUMsaUJBRzlCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLG1DQUFtQztxQkFDN0MsV0FDUSxDQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUM7OEJBS3BFLEtBQUs7c0JBREosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS0YsYUFBYTtzQkFEaEIsS0FBSztnQkFjTixVQUFVO3NCQURULEtBQUs7Z0JBS04sYUFBYTtzQkFEWixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxtQkFBbUI7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dHcmFwaCwgQXBwcm92YWxHcmFwaE1ldGFkYXRhIH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy1ncmFwaCc7XG5pbXBvcnQgeyBpc05vZGVBcHByb3ZlZCB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxHcmFwaE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FwcHJvdmFsLW5vZGUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9ucyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LXRvb2xiYXItYWN0aW9ucydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtDb250ZW50RGVuc2l0eURpcmVjdGl2ZSwgQnV0dG9uQ29tcG9uZW50LCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd1Rvb2xiYXJBY3Rpb25zQ29tcG9uZW50IHtcbiAgICAvKiogQXBwcm92YWwgZmxvdyBncmFwaCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JhcGg6IEFwcHJvdmFsRmxvd0dyYXBoO1xuXG4gICAgLyoqIEFwcHJvdmFsIGZsb3cgZ3JhcGggbWV0YWRhdGEgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyYXBoTWV0YWRhdGE6IEFwcHJvdmFsR3JhcGhNZXRhZGF0YTtcblxuICAgIC8qKiBBcnJheSBvZiBzZWxlY3RlZCBhcHByb3ZhbCBmbG93IGdyYXBoIG5vZGVzICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWROb2Rlcyh2YWx1ZTogQXBwcm92YWxHcmFwaE5vZGVbXSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fY2FuUmVtb3ZlU2VsZWN0ZWROb2RlcyA9XG4gICAgICAgICAgICAhIXRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5ldmVyeSgobm9kZSkgPT4gIW5vZGUuZGlzYWJsZUFjdGlvbnMgJiYgIW5vZGUuYWN0aW9uc0NvbmZpZz8uZGlzYWJsZVJlbW92ZSk7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZE5vZGVzKCk6IEFwcHJvdmFsR3JhcGhOb2RlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROb2RlcztcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBhcHByb3ZhbCBmbG93IGluIHRoZSBlZGl0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzRWRpdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZWRpdCBtb2RlIHRvZ2dsZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlbnRlckVkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBub2RlIGFkZGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgYWRkTm9kZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBub2RlOiBBcHByb3ZhbEdyYXBoTm9kZTsgdGFyZ2V0OiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0IH0+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHNlbGVjdGVkIG5vZGUgZWRpdGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgZWRpdFNlbGVjdGVkTm9kZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXBwcm92YWxHcmFwaE5vZGU+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHNlbGVjdGVkIG5vZGVzIGRlbGV0ZWQgKGJ1bGspICovXG4gICAgQE91dHB1dCgpXG4gICAgZGVsZXRlU2VsZWN0ZWROb2RlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhblJlbW92ZVNlbGVjdGVkTm9kZXMgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlczogQXBwcm92YWxHcmFwaE5vZGVbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX25vdEFwcHJvdmVkU2VsZWN0ZWROb2RlKCk6IEFwcHJvdmFsR3JhcGhOb2RlIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhaXNOb2RlQXBwcm92ZWQodGhpcy5zZWxlY3RlZE5vZGVzWzBdKSA/IHRoaXMuc2VsZWN0ZWROb2Rlc1swXSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZEJlZm9yZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuX25vdEFwcHJvdmVkU2VsZWN0ZWROb2RlO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIW5vZGUgJiZcbiAgICAgICAgICAgICFub2RlLmRpc2FibGVBY3Rpb25zICYmXG4gICAgICAgICAgICAhbm9kZS5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlQWRkQmVmb3JlICYmXG4gICAgICAgICAgICAhIXRoaXMuZ3JhcGhNZXRhZGF0YVtub2RlLmlkXS5jYW5BZGROb2RlQmVmb3JlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZEFmdGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhbm9kZSAmJlxuICAgICAgICAgICAgIW5vZGUuZGlzYWJsZUFjdGlvbnMgJiZcbiAgICAgICAgICAgICFub2RlLmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRBZnRlciAmJlxuICAgICAgICAgICAgISF0aGlzLmdyYXBoTWV0YWRhdGFbbm9kZS5pZF0uY2FuQWRkTm9kZUFmdGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkFkZFBhcmFsbGVsKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGUgJiZcbiAgICAgICAgICAgICFub2RlPy5kaXNhYmxlQWN0aW9ucyAmJlxuICAgICAgICAgICAgIW5vZGU/LmFjdGlvbnNDb25maWc/LmRpc2FibGVBZGRQYXJhbGxlbCAmJlxuICAgICAgICAgICAgISF0aGlzLmdyYXBoTWV0YWRhdGFbbm9kZSEuaWRdLmNhbkFkZFBhcmFsbGVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NhbkVkaXROb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5fbm90QXBwcm92ZWRTZWxlY3RlZE5vZGU7XG5cbiAgICAgICAgcmV0dXJuICEhbm9kZSAmJiAhbm9kZS5kaXNhYmxlQWN0aW9ucyAmJiAhbm9kZS5hY3Rpb25zQ29uZmlnPy5kaXNhYmxlRWRpdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGROb2RlKHRhcmdldDogQXBwcm92YWxGbG93Tm9kZVRhcmdldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdO1xuICAgICAgICB0aGlzLmFkZE5vZGUuZW1pdCh7IG5vZGUsIHRhcmdldCB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9lZGl0U2VsZWN0ZWROb2RlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGVzWzBdO1xuICAgICAgICB0aGlzLmVkaXRTZWxlY3RlZE5vZGUuZW1pdChub2RlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIGZkQ29tcGFjdD5cbiAgICBAaWYgKCFncmFwaD8uY29sdW1ucz8ubGVuZ3RoICYmICFncmFwaD8uZXJyb3JzKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyQWRkU3RlcEJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2FkZE5vZGUoJ2VtcHR5JylcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoISFncmFwaD8uY29sdW1ucz8ubGVuZ3RoICYmICFpc0VkaXRNb2RlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyRWRpdEJ1dHRvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZW50ZXJFZGl0TW9kZS5lbWl0KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoaXNFZGl0TW9kZSkge1xuICAgICAgICBAaWYgKF9jYW5BZGRCZWZvcmUpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnRvb2xiYXJBZGRBcHByb3ZlcnNCZWZvcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTm9kZSgnYmVmb3JlJylcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX2NhbkFkZEFmdGVyKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyQWRkQXBwcm92ZXJzQWZ0ZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTm9kZSgnYWZ0ZXInKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfY2FuQWRkUGFyYWxsZWwpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LnRvb2xiYXJBZGRBcHByb3ZlcnNQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9hZGROb2RlKCdwYXJhbGxlbCcpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9jYW5SZW1vdmVTZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyUmVtb3ZlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWROb2Rlcy5lbWl0KClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX2NhbkVkaXROb2RlKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy50b29sYmFyRWRpdEFwcHJvdmVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2VkaXRTZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICB9XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { CdkDrag } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Injector, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { Subject, Subscription, combineLatest, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, map, mapTo, startWith, switchMap, throttleTime } from 'rxjs/operators';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { GridListComponent } from '@fundamental-ngx/core/grid-list';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { uniqBy } from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { BarComponent, BarElementDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { GridListItemBodyDirective, GridListItemComponent, GridListItemImageDirective, GridListItemToolbarComponent, GridListTitleBarComponent, GridListTitleBarSpacerComponent } from '@fundamental-ngx/core/grid-list';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IllustratedMessageComponent, IllustratedMessageFigcaptionComponent, IllustratedMessageTextDirective, IllustratedMessageTitleDirective } from '@fundamental-ngx/core/illustrated-message';\nimport { MultiInputComponent } from '@fundamental-ngx/core/multi-input';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ApprovalFlowTeamDataSource, ApprovalFlowUserDataSource, DATA_PROVIDERS } from '@fundamental-ngx/platform/shared';\nimport { APPROVAL_FLOW_NODE_TYPES, ApprovalFlowAddNodeComponent } from './approval-flow-add-node/approval-flow-add-node.component';\nimport { ApprovalFlowApproverDetailsComponent } from './approval-flow-approver-details/approval-flow-approver-details.component';\nimport { generateApprovalFlowGraph, generateApprovalFlowGraphMetadata } from './approval-flow-graph';\nimport { ApprovalFlowMessagesComponent } from './approval-flow-messages/approval-flow-messages.component';\nimport { ApprovalFlowNodeComponent } from './approval-flow-node/approval-flow-node.component';\nimport { ApprovalFlowSelectTypeComponent } from './approval-flow-select-type/approval-flow-select-type.component';\nimport { ApprovalFlowToolbarActionsComponent } from './approval-flow-toolbar-actions/approval-flow-toolbar-actions.component';\nimport { displayUserFn, getBlankApprovalGraphNode, getGraphNodes, isNodeTargetsIncludeId, trackByFn, userValueFn } from './helpers';\nimport { ApprovalFlowAddNodeViewService } from './services/approval-flow-add-node-view.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/dialog\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nimport * as i3 from \"@angular/forms\";\nlet defaultId = 0;\n/**\n * @deprecated\n * Approval Flow component is deprecated since version 0.40.0\n */\nexport class ApprovalFlowComponent {\n /** Returns snapshot of the current and initial states of approval process */\n get approvalProcess() {\n return structuredClone(this._approvalProcess);\n }\n /** @hidden */\n get _rtl() {\n return this._rtlService?.rtl.getValue();\n }\n /** @hidden */\n get _selectedNodes() {\n return getGraphNodes(this._graph).filter((node) => node.selected);\n }\n /** @hidden */\n constructor(_dialogService, _cdr, _injector, providers, _rtlService) {\n this._dialogService = _dialogService;\n this._cdr = _cdr;\n this._injector = _injector;\n this.providers = providers;\n this._rtlService = _rtlService;\n /** Whether to display due date warning in status */\n this.checkDueDate = false;\n /** Number of days before due date when status changes to `warning` with text 'Due in X days'.\n * Not used if 'checkDueDate' equals false */\n this.dueDateThreshold = 7;\n /** A list of approval statuses that allow sending reminders to their approvers */\n this.allowSendRemindersForStatuses = ['in progress', 'not started'];\n /** Whether the approval flow is editable */\n this.isEditAvailable = false;\n /** Enables or disables ability to add parallel nodes */\n this.allowAddParallelNodes = true;\n /** Disables save button, save button is enabled by default */\n this.disableSaveButton = false;\n /** Disables exit button, exit button is enabled by default */\n this.disableExitButton = false;\n /**\n * Should remove the space node from the graph\n */\n this.removeSpaceNode = false;\n /** Event emitted on approval flow node click. */\n this.nodeClick = new EventEmitter();\n /** Event emitted on approval flow node add */\n this.afterNodeAdd = new EventEmitter();\n /** Event emitted on approval flow node edit */\n this.afterNodeEdit = new EventEmitter();\n /** Event emitted whenver save is clicked in edit mode */\n this.valueChange = new EventEmitter();\n /** Event emitted whenever reminders should be sent */\n this.sendReminders = new EventEmitter();\n /** Event emitted when data loading is started. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onDataReceived = new EventEmitter();\n /** @hidden */\n this._isCarousel = false;\n /** @hidden */\n this._graphMetadata = {};\n /** @hidden */\n this._isEditMode = false;\n /** @hidden */\n this._usersForWatchersList = [];\n /** @hidden */\n this._selectedWatcherIds = [];\n /** @hidden */\n this._messages = [];\n /** @hidden */\n this._emptyApprovalFlowSpotConfig = {\n spot: { url: '', id: 'sapIllus-Spot-NoData' }\n };\n /** @hidden */\n this._multipleRootNodes = false;\n /** @hidden */\n this._multipleFinalNodes = false;\n /** @hidden */\n this._dragDropInProgress = false;\n /** @hidden */\n this._displayUserFn = displayUserFn;\n /** @hidden */\n this._userValueFn = userValueFn;\n /** @hidden */\n this._trackByFn = trackByFn;\n /** @hidden */\n this.approvalFlowUniqueId = `fdp-approval-flow-${++defaultId}`;\n /** @hidden */\n this._selectedWatchers = [];\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this._dataSourceChanged$ = new Subject();\n /** @hidden */\n this._getNextHorizontalNode = (nodeIndex, columnIndex, direction) => {\n const indexDiff = direction === 'right' ? 1 : -1;\n const nextColumn = this._graph.columns[columnIndex + indexDiff];\n const nextNode = nextColumn?.nodes[nodeIndex];\n if (!nextNode) {\n return undefined;\n }\n if (nextNode.blank || nextNode.space) {\n return this._getNextHorizontalNode(nodeIndex, columnIndex + indexDiff, direction);\n }\n return nextNode;\n };\n /** @hidden */\n this._getNextVerticalNode = (nodeIndex, columnIndex, direction) => {\n const indexDiff = direction === 'down' ? 1 : -1;\n const currColumn = this._graph.columns[columnIndex];\n const nextNode = currColumn.nodes[nodeIndex + indexDiff];\n if (!nextNode) {\n return undefined;\n }\n if (nextNode.blank || nextNode.space) {\n return this._getNextVerticalNode(nodeIndex + indexDiff, columnIndex, direction);\n }\n return nextNode;\n };\n console.log('ApprovalFlowComponent is deprecated and will be removed in next release.');\n }\n /** @hidden */\n ngOnInit() {\n if (!this.userDataSource) {\n const usersDP = this.usersDataProviderEntityKey && this.providers?.get(this.usersDataProviderEntityKey);\n if (usersDP) {\n this.userDataSource = new ApprovalFlowUserDataSource(usersDP);\n }\n else {\n console.error('Could not resolve users data source');\n }\n }\n if (!this.watcherDataSource) {\n const watchersDP = this.watchersDataProviderEntityKey && this.providers?.get(this.watchersDataProviderEntityKey);\n if (watchersDP) {\n this.watcherDataSource = new ApprovalFlowUserDataSource(watchersDP);\n }\n else {\n console.error('Could not resolve watchers data source');\n }\n }\n if (!this.teamDataSource) {\n const teamsDP = this.teamsDataProviderEntityKey && this.providers?.get(this.teamsDataProviderEntityKey);\n if (teamsDP) {\n this.teamDataSource = new ApprovalFlowTeamDataSource(teamsDP);\n }\n else {\n console.error('Could not resolve teams data source');\n }\n }\n this._listenOnResize();\n this._setupDataSourceSubscription();\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (changes.value) {\n const process = this.value ?? { watchers: [], nodes: [] };\n this._initialApprovalProcess = structuredClone(process);\n this._buildView(process);\n }\n if (changes.userDataSource || changes.watcherDataSource || changes.teamDataSource) {\n this._dataSourceChanged$.next();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n _isNextNodeBlank(node, columnIndex, nodeIndex) {\n const nextNode = this._graph.columns[columnIndex + 1]?.nodes[nodeIndex];\n const nextNodeBlank = nextNode?.blank;\n const nextNodeParallelEnd = this._graphMetadata[nextNode?.id]?.parallelEnd;\n return !node.blank && !!nextNodeBlank && !nextNodeParallelEnd;\n }\n /** @hidden */\n _isCdkDragDisabled(node) {\n return !this._isEditMode || node.blank || node.space || node.status !== 'not started';\n }\n /** @hidden Node click handler */\n _onNodeClick(node) {\n if (this._dragDropInProgress) {\n return;\n }\n const dialog = this._dialogService.open(ApprovalFlowApproverDetailsComponent, {\n data: {\n node,\n allowSendReminder: this.allowSendRemindersForStatuses.includes(node.status),\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((reminderTargets) => {\n if (Array.isArray(reminderTargets)) {\n this.sendReminders.emit({ users: reminderTargets, node });\n }\n });\n this.nodeClick.emit(node);\n }\n /** @hidden */\n _onNodeAdd(node) {\n this.afterNodeAdd.emit(node);\n }\n /** @hidden */\n _onNodeEdit(node) {\n this.afterNodeEdit.emit(node);\n }\n /** @hidden */\n _onNodeSelectionChange(event) {\n this._graph.columns.forEach((column) => {\n column.nodes.forEach((node) => {\n node.selected = !!event.selection.find((_node) => _node.id === node.id);\n });\n });\n }\n /** @hidden Watcher's avatar click handler */\n _onWatcherClick(watcher, event) {\n event.preventDefault();\n this._dialogService.open(ApprovalFlowApproverDetailsComponent, {\n data: {\n watcher,\n ...this._defaultDialogOptions\n }\n });\n }\n /** Retrive metadata by node id */\n getNodeMetadataByNodeId(nodeId) {\n return this._graphMetadata[nodeId];\n }\n /** Scroll to the next horizontal slide */\n nextSlide(dir = 1) {\n const threshold = 1;\n let pos;\n if (dir === 1) {\n const lastStep = this._carouselStepsRight === 1;\n const nextStep = this._carouselStepsCount - this._carouselStepsRight + 1;\n const visibleRightPoint = this._carouselStepSize * nextStep + (lastStep ? 0 : threshold);\n pos = visibleRightPoint - this._graphEl.nativeElement.clientWidth;\n }\n else {\n const lastStep = this._carouselStepsLeft === 1;\n const nextStep = this._carouselStepsLeft - 1;\n pos = this._carouselStepSize * nextStep - (lastStep ? 0 : threshold);\n }\n this._setScrollPosition(pos);\n this._cdr.detectChanges();\n }\n /** @hidden */\n _setScrollPosition(pos) {\n this._graphContainerEl.nativeElement.scrollTo({\n left: pos,\n behavior: 'smooth'\n });\n }\n /** @hidden Handle node keydown and focus other node based on which key is pressed */\n _onNodeKeyDown(event, node) {\n if (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW])) {\n return;\n }\n const { nodeIndex, columnIndex } = this._graphMetadata[node.id];\n event.preventDefault();\n let nextFocusTarget;\n if (typeof nodeIndex === 'number' && typeof columnIndex === 'number') {\n if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (nodeIndex > 0) {\n nextFocusTarget = this._getNextVerticalNode(nodeIndex, columnIndex, 'up');\n }\n }\n else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n nextFocusTarget = this._getNextVerticalNode(nodeIndex, columnIndex, 'down');\n }\n else if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n nextFocusTarget = this._getNextHorizontalNode(nodeIndex, columnIndex, this._rtl ? 'right' : 'left');\n }\n else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n nextFocusTarget = this._getNextHorizontalNode(nodeIndex, columnIndex, this._rtl ? 'left' : 'right');\n }\n }\n if (nextFocusTarget) {\n this._focusNode(nextFocusTarget);\n }\n }\n /** @hidden Fetch all necessary data and enter edit mode */\n _enterEditMode() {\n // there's no support for searching in multi-input, so grabbing all watchers\n // triggering initial loading of data in data sources\n this.watcherDataSource.match();\n this._editModeInitSub = this.watcherDataSource.open().subscribe((watchers) => {\n this._usersForWatchersList = watchers;\n this._selectedWatchers = this._approvalProcess.watchers;\n this._selectedWatcherIds = this._selectedWatchers.map((w) => w.id);\n this._isEditMode = true;\n this._initialApprovalProcess = structuredClone(this._approvalProcess);\n this._cdr.detectChanges();\n });\n this._subscriptions.add(this._editModeInitSub);\n }\n /** @hidden Send update approval process calls to DataSource and exit edit mode*/\n _saveEditModeChanges() {\n this._editModeInitSub?.unsubscribe();\n this.watcherDataSource.close();\n this._initialApprovalProcess = undefined;\n this._isEditMode = false;\n this._messages = [];\n const updated = {\n ...this._approvalProcess,\n watchers: this._selectedWatchers\n };\n this._buildView(updated);\n this.valueChange.emit(updated);\n }\n /** @hidden Restore initial approval flow state and exit edit mode */\n _exitEditMode() {\n this._editModeInitSub?.unsubscribe();\n this.watcherDataSource.close();\n this._approvalProcess = structuredClone(this._initialApprovalProcess);\n this._initialApprovalProcess = undefined;\n this._isEditMode = false;\n this._messages = [];\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _watchersSelectionChanged(selectedIds) {\n const idsSet = new Set(selectedIds);\n // updating watchers selection\n // since it's possible \"_usersForWatchersList\" might not contain all selected values,\n // determine current selection based on what's already selected and \"_usersForWatchersList\"\n this._selectedWatchers = uniqBy(this._selectedWatchers.concat(this._usersForWatchersList).filter((user) => idsSet.has(user.id)), (u) => u.id);\n }\n /** @hidden Restore previously saved approval process state */\n _undoLastAction() {\n this._approvalProcess = structuredClone(this._previousApprovalProcess);\n this._previousApprovalProcess = undefined;\n this._buildView(this._approvalProcess);\n }\n /** @hidden Open add node dialog */\n _addNode(source, type) {\n const showNodeTypeSelect = type === 'before' && !source.actionsConfig?.disableAddParallel;\n const dialog = this._dialogService.open(ApprovalFlowAddNodeComponent, {\n data: {\n nodeTarget: type,\n showNodeTypeSelect,\n node: Object.assign(getBlankApprovalGraphNode(), { blank: false }),\n checkDueDate: this.checkDueDate,\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((data) => {\n if (!data) {\n return;\n }\n const { node, nodeType, toNextSerial } = data;\n if (!node) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n node.id = `tempId${(Math.random() * 1000).toFixed()}`;\n switch (type) {\n case 'empty':\n this._enterEditMode();\n break;\n case 'before':\n if (nodeType === APPROVAL_FLOW_NODE_TYPES.SERIAL) {\n node.targets = [source.id];\n this._replaceTargets(source.id, [node.id]);\n }\n if (nodeType === APPROVAL_FLOW_NODE_TYPES.PARALLEL) {\n this._processAddingParallelNode(node, source, toNextSerial);\n }\n break;\n case 'before-all':\n node.targets = this._graph.columns[0].nodes.map((_node) => _node.id);\n break;\n case 'after':\n node.targets = source.targets;\n source.targets = [node.id];\n break;\n case 'after-all': {\n const targetParents = this._graphMetadata[source.targets[0]]?.parents;\n if (targetParents) {\n node.targets = source.targets;\n this._replaceTargets(source.id, [node.id]);\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((_node) => _node.id !== source.id);\n }\n else {\n this._graph.columns[this._graph.columns.length - 1].nodes.forEach((_node) => _node.targets.push(node.id));\n }\n break;\n }\n case 'parallel':\n this._processAddingParallelNode(node, source, toNextSerial);\n break;\n }\n this._showMessage(node.approvalTeamId ? 'teamAddSuccess' : 'approverAddSuccess');\n this._approvalProcess.nodes.push(node);\n this._buildView(this._approvalProcess);\n this._onNodeAdd(node);\n });\n }\n /** @hidden Open edit node dialog */\n _editNode(node) {\n const dialog = this._dialogService.open(ApprovalFlowAddNodeComponent, {\n data: {\n isEdit: true,\n node: Object.assign({}, node),\n checkDueDate: this.checkDueDate,\n ...this._defaultDialogOptions\n }\n }, this._injector);\n dialog.afterClosed.subscribe((data) => {\n const updatedNode = data?.node;\n if (!updatedNode) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n this._updateNode(updatedNode);\n this._showMessage('nodeEdit');\n this._buildView(this._approvalProcess);\n this._onNodeEdit(node);\n });\n }\n /** @hidden \"Delete\" button click handler */\n _onNodeDelete(nodeToDelete) {\n this._cacheCurrentApprovalProcess();\n this._deleteNode(nodeToDelete);\n this._showMessage(nodeToDelete.approvalTeamId ? 'teamRemove' : 'nodeRemove');\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _deleteSelectedNodes() {\n this._cacheCurrentApprovalProcess();\n const nodesToDelete = this._nodeComponents\n .filter((nodeComponent) => nodeComponent._isSelected)\n .map((nodeComponent) => nodeComponent.node);\n nodesToDelete.forEach((node) => {\n this._deleteNode(node);\n this._buildView(this._approvalProcess);\n });\n this._showMessage('nodesRemove');\n }\n /** @hidden Node drag move handler, used to check if need to highlight a drop zone rectangle */\n _onNodeDragMoved(node) {\n const draggedNodeDimensions = this._nodeComponents\n .find((comp) => comp.node === node)\n ?._nativeElement.getBoundingClientRect();\n if (!draggedNodeDimensions) {\n return;\n }\n this._nodeComponents.forEach((component) => {\n if (component.node !== node && Boolean(component._dropZones.length)) {\n component._checkIfNodeDraggedInDropZone(draggedNodeDimensions);\n }\n });\n }\n /** @hidden */\n _focusNode(node) {\n const nodeToFocus = this._nodeComponents.find((comp) => comp.node === node);\n if (!nodeToFocus) {\n return;\n }\n this._moveColInView(node.colIndex ?? 0);\n nodeToFocus._focus({ preventScroll: true });\n }\n /** @hidden Node drop handler */\n _onNodeDrop(nodeToDrop, drag) {\n drag.reset();\n setTimeout(() => (this._dragDropInProgress = false));\n const dropTarget = this._nodeComponents.find((n) => n._isAnyDropZoneActive);\n if (!dropTarget) {\n return;\n }\n this._cacheCurrentApprovalProcess();\n const placement = dropTarget._activeDropZones[0].placement;\n this._nodeComponents.forEach((n) => n._deactivateDropZones());\n if (placement === 'after') {\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n const nextNode = getGraphNodes(this._graph).find((node) => node.id === dropTarget.node.targets[0]);\n if (nextNode?.blank) {\n this._deleteNode(nextNode);\n this._buildView(this._approvalProcess);\n }\n nodeToDrop.targets =\n this._approvalProcess.nodes.find((node) => node.id === dropTarget.node.id)?.targets ?? [];\n dropTarget.node.targets = [nodeToDrop.id];\n this._finishDragDropProcess(nodeToDrop);\n }\n else if (placement === 'before') {\n const dialog = this._dialogService.open(ApprovalFlowSelectTypeComponent, undefined, this._injector);\n dialog.afterClosed.subscribe((data) => {\n if (!data) {\n return;\n }\n const { type, toNextSerial } = data;\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n if (type === APPROVAL_FLOW_NODE_TYPES.SERIAL) {\n this._replaceTargets(dropTarget.node.id, [nodeToDrop.id]);\n nodeToDrop.targets = [dropTarget.node.id];\n }\n if (type === APPROVAL_FLOW_NODE_TYPES.PARALLEL) {\n this._processAddingParallelNode(nodeToDrop, dropTarget.node, toNextSerial);\n }\n this._finishDragDropProcess(nodeToDrop);\n });\n }\n else if (placement === 'before-all') {\n this._deleteNode(nodeToDrop);\n const firstColumnNodes = this._graph.columns[0].nodes;\n nodeToDrop.targets = firstColumnNodes.map((node) => node.id);\n this._finishDragDropProcess(nodeToDrop);\n }\n else if (placement === 'after-all') {\n this._deleteNode(nodeToDrop);\n this._buildView(this._approvalProcess);\n nodeToDrop.targets = [...dropTarget.node.targets];\n if (dropTarget.node.targets.length === 0) {\n const lastColumnNodes = this._graph.columns[this._graph.columns.length - 1].nodes;\n lastColumnNodes.forEach((node) => node.targets.push(nodeToDrop.id));\n }\n else {\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((node) => node.id !== dropTarget.node.id);\n this._replaceTargets(dropTarget.node.id, [nodeToDrop.id]);\n }\n this._finishDragDropProcess(nodeToDrop);\n }\n }\n /** @hidden */\n _moveColInView(colIndex) {\n const node = this._graphEl.nativeElement.children[colIndex].firstElementChild;\n if (!node) {\n return;\n }\n const { x: nodeX, width } = node.getBoundingClientRect();\n const delta = this._graphContainerEl.nativeElement.getBoundingClientRect().x;\n const left = nodeX - delta;\n const right = left + width;\n if (left < 0) {\n this._setScrollPosition(this._graphContainerEl.nativeElement.scrollLeft + left);\n }\n else if (right > this._graphEl.nativeElement.clientWidth) {\n this._setScrollPosition(this._graphContainerEl.nativeElement.scrollLeft + right - this._graphEl.nativeElement.clientWidth);\n }\n }\n /** @hidden */\n _finishDragDropProcess(nodeToDrop) {\n this._approvalProcess.nodes.push(nodeToDrop);\n this._buildView(this._approvalProcess);\n }\n /** @hidden */\n _showMessage(type) {\n this._messages = [{ type }];\n }\n /** @hidden Build Approval Flow graph and render it */\n _buildView(approvalProcess) {\n if (!approvalProcess.nodes) {\n approvalProcess.nodes = [];\n }\n if (!approvalProcess.watchers) {\n approvalProcess.watchers = [];\n }\n this._approvalProcess = approvalProcess;\n this._graph = generateApprovalFlowGraph(this._approvalProcess.nodes);\n if (this.removeSpaceNode) {\n this._graph.columns = this.removeSpaceNodesFromColumns(this._graph.columns);\n }\n if (this._graph.errors) {\n this._showMessage('error');\n return;\n }\n this._graphMetadata = generateApprovalFlowGraphMetadata(this._graph);\n const nodes = getGraphNodes(this._graph);\n this._approvalProcess.nodes = nodes.filter((node) => !node.space);\n this._multipleRootNodes = nodes.filter((node) => this._graphMetadata[node.id].isRoot).length > 1;\n this._multipleFinalNodes = nodes.filter((node) => this._graphMetadata[node.id].isFinal).length > 1;\n this._cdr.detectChanges();\n this._gridList?.clearSelection();\n if (!this._isEditMode) {\n this._setScrollPosition(0);\n }\n }\n /** @hidden Listen window resize and distribute cards on column change */\n _listenOnResize() {\n this._subscriptions.add(merge(fromEvent(window, 'resize'), fromEvent(this._graphContainerEl.nativeElement, 'scroll'))\n .pipe(throttleTime(50, undefined, { leading: true, trailing: true }))\n .subscribe(() => {\n this._cdr.detectChanges();\n }));\n }\n /** @hidden Update node object in local approval process data structure */\n _updateNode(node) {\n const nodeIndex = this._approvalProcess.nodes.findIndex((n) => n.id === node.id);\n if (nodeIndex > -1) {\n this._approvalProcess.nodes[nodeIndex] = node;\n }\n }\n /** @hidden Delete node object in local approval process data structure */\n _deleteNode(nodeToDelete) {\n const nodesToDelete = [nodeToDelete];\n const graphNodes = getGraphNodes(this._graph);\n let currNode = graphNodes.find((node) => node.id === nodeToDelete.id);\n let nextNode;\n do {\n if (currNode?.targets.length === 1) {\n nextNode = graphNodes.find((node) => node.id === currNode?.targets[0]);\n if (nextNode?.blank && this._graphMetadata[nextNode.id].parents.length === 1) {\n nodesToDelete.push(nextNode);\n currNode = nextNode;\n nextNode = graphNodes.find((node) => node.id === currNode?.targets[0]);\n }\n }\n } while (nextNode?.blank && this._graphMetadata[nextNode.id].parents.length === 1);\n const parent = this._graphMetadata[nodeToDelete.id].parents[0];\n const target = nodeToDelete.targets[0];\n const isParentParallelStart = this._graphMetadata[parent?.id]?.parallelStart;\n const isTargetParallelEnd = this._graphMetadata[target]?.parallelEnd;\n const targets = (isParentParallelStart && isTargetParallelEnd) || nodesToDelete.length > 1 ? [] : (currNode?.targets ?? []);\n this._replaceTargets(nodeToDelete.id, targets);\n this._approvalProcess.nodes = this._approvalProcess.nodes.filter((node) => !nodesToDelete.includes(node));\n }\n /** @hidden */\n _addParallelTargets(targetNodeId, nodeIdToAdd) {\n this._approvalProcess.nodes.forEach((node) => {\n if (isNodeTargetsIncludeId(node, targetNodeId)) {\n node.targets.push(nodeIdToAdd);\n }\n });\n }\n /** @hidden Replace all occurrences of \"idToReplace\" in all nodes' \"targets\" with ones in \"replaceWith\" array */\n _replaceTargets(IdToReplace, replaceWithId) {\n this._approvalProcess.nodes.forEach((n) => {\n if (isNodeTargetsIncludeId(n, IdToReplace)) {\n n.targets = n.targets.filter((_id) => _id !== IdToReplace);\n n.targets.push(...replaceWithId);\n }\n });\n }\n /** @hidden Save current state of approval process data to be able to undo an action made in edit mode */\n _cacheCurrentApprovalProcess() {\n this._previousApprovalProcess = structuredClone(this._approvalProcess);\n }\n /** @hidden */\n get _carouselStepSize() {\n return this._graphEl.nativeElement.scrollWidth / this._carouselStepsCount;\n }\n /** @hidden */\n get _scrollDiff() {\n if (!this._graphEl) {\n return 0;\n }\n return this._graphEl.nativeElement.scrollWidth - this._graphEl.nativeElement.clientWidth;\n }\n /** @hidden */\n get _carouselStepsCount() {\n return this._graphEl.nativeElement.children.length;\n }\n /** @hidden */\n get _carouselStepsLeft() {\n return Math.ceil(this._graphContainerEl.nativeElement.scrollLeft / this._carouselStepSize);\n }\n /** @hidden */\n get _carouselStepsRight() {\n return Math.ceil((this._scrollDiff - Math.round(this._graphContainerEl.nativeElement.scrollLeft)) / this._carouselStepSize);\n }\n /** @hidden */\n get _defaultDialogOptions() {\n return {\n teamDataSource: this.teamDataSource,\n userDataSource: this.userDataSource,\n userDetailsTemplate: this.userDetailsTemplate,\n rtl: this._rtl\n };\n }\n /** @hidden */\n _findSerialNode(yIndex, targets) {\n const targetIsParent = Number.isInteger(yIndex) &&\n targets?.some((targetId) => {\n const nodeIndex = this._graphMetadata[targetId]?.nodeIndex;\n return Number.isInteger(nodeIndex) && nodeIndex <= yIndex - 1;\n });\n if (targetIsParent) {\n return targets ?? [];\n }\n const targetNode = this._approvalProcess.nodes.find((node) => node.id === targets?.[0]);\n return this._findSerialNode(yIndex, targetNode?.targets);\n }\n /** @hidden */\n _processAddingParallelNode(addedNode, sourceNode, toNextSerial = false) {\n addedNode.targets = sourceNode.targets;\n this._addParallelTargets(sourceNode.id, addedNode.id);\n if (toNextSerial) {\n let yIndex = this._graphMetadata[sourceNode.id].nodeIndex;\n let targets = sourceNode.targets;\n if (yIndex === 0) {\n const sourceNodeMetadata = this._graphMetadata[sourceNode.id];\n const columnNodes = this._graph.columns?.[sourceNodeMetadata.columnIndex]?.nodes;\n const nextParallelNode = columnNodes.find((node, index) => index > 0 && !node.space);\n if (nextParallelNode) {\n yIndex = this._graphMetadata[nextParallelNode.id].columnIndex;\n targets = nextParallelNode.targets;\n addedNode.targets = this._findSerialNode(yIndex, targets);\n return;\n }\n addedNode.targets = sourceNode.targets;\n return;\n }\n addedNode.targets = this._findSerialNode(yIndex, targets);\n }\n }\n /** @hidden */\n _setupDataSourceSubscription() {\n const sub = this._dataSourceChanged$\n .pipe(startWith(null), switchMap(() => {\n const loadingStates = [this.teamDataSource, this.userDataSource, this.watcherDataSource]\n .filter(Boolean)\n .map((ds) => merge(ds.onDataRequested().pipe(mapTo(true)), ds.onDataReceived().pipe(mapTo(false))).pipe(startWith(ds.isDataLoading)));\n return combineLatest(loadingStates);\n }), map((loadingStates) => loadingStates.some(Boolean)), distinctUntilChanged())\n .subscribe((someLoading) => {\n if (someLoading) {\n this.onDataRequested.emit();\n }\n else {\n this.onDataReceived.emit();\n }\n });\n this._subscriptions.add(sub);\n }\n /** @hidden */\n removeSpaceNodesFromColumns(columns) {\n const filteredColumns = [];\n columns.forEach((column) => {\n const filteredNodes = column.nodes.filter((node) => !node.space);\n const updatedColumn = {\n ...column, // Preserve other properties of the column\n nodes: filteredNodes // Use the filtered list of nodes\n };\n filteredColumns.push(updatedColumn);\n });\n return filteredColumns;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowComponent, deps: [{ token: i1.DialogService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: DATA_PROVIDERS, optional: true }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: ApprovalFlowComponent, isStandalone: true, selector: \"fdp-approval-flow\", inputs: { title: \"title\", value: \"value\", userDataSource: \"userDataSource\", watcherDataSource: \"watcherDataSource\", teamDataSource: \"teamDataSource\", userDetailsTemplate: \"userDetailsTemplate\", approvalStatusTemplate: \"approvalStatusTemplate\", statusColorMapping: \"statusColorMapping\", checkDueDate: \"checkDueDate\", dueDateThreshold: \"dueDateThreshold\", allowSendRemindersForStatuses: \"allowSendRemindersForStatuses\", isEditAvailable: \"isEditAvailable\", watchersLabel: \"watchersLabel\", allowAddParallelNodes: \"allowAddParallelNodes\", disableSaveButton: \"disableSaveButton\", disableExitButton: \"disableExitButton\", usersDataProviderEntityKey: \"usersDataProviderEntityKey\", teamsDataProviderEntityKey: \"teamsDataProviderEntityKey\", watchersDataProviderEntityKey: \"watchersDataProviderEntityKey\", removeSpaceNode: \"removeSpaceNode\" }, outputs: { nodeClick: \"nodeClick\", afterNodeAdd: \"afterNodeAdd\", afterNodeEdit: \"afterNodeEdit\", valueChange: \"valueChange\", sendReminders: \"sendReminders\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [ApprovalFlowAddNodeViewService], viewQueries: [{ propertyName: \"_graphContainerEl\", first: true, predicate: [\"graphContainerEl\"], descendants: true }, { propertyName: \"_graphEl\", first: true, predicate: [\"graphEl\"], descendants: true }, { propertyName: \"_gridList\", first: true, predicate: [\"gridList\"], descendants: true }, { propertyName: \"_nodeComponents\", predicate: ApprovalFlowNodeComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-container fdCompact>\\n <fdp-approval-flow-messages\\n [(messages)]=\\\"_messages\\\"\\n [undoLastActionAvailable]=\\\"!!_previousApprovalProcess\\\"\\n (undoLastAction)=\\\"_undoLastAction()\\\"\\n ></fdp-approval-flow-messages>\\n <fd-grid-list\\n #gridList\\n class=\\\"fdp-approval-flow__toolbar\\\"\\n [selectionMode]=\\\"_isEditMode ? 'multiSelect' : 'none'\\\"\\n (selectionChange)=\\\"_onNodeSelectionChange($event)\\\"\\n >\\n <fd-grid-list-title-bar [title]=\\\"title || ('platformApprovalFlow.defaultTitle' | fdTranslate)\\\">\\n <fd-grid-list-title-bar-spacer></fd-grid-list-title-bar-spacer>\\n @if (isEditAvailable) {\\n <fdp-approval-flow-toolbar-actions\\n [graph]=\\\"_graph\\\"\\n [selectedNodes]=\\\"_selectedNodes\\\"\\n [graphMetadata]=\\\"_graphMetadata\\\"\\n [isEditMode]=\\\"_isEditMode\\\"\\n (enterEditMode)=\\\"_enterEditMode()\\\"\\n (addNode)=\\\"_addNode($event.node, $event.target)\\\"\\n (editSelectedNode)=\\\"_editNode($event)\\\"\\n (deleteSelectedNodes)=\\\"_deleteSelectedNodes()\\\"\\n ></fdp-approval-flow-toolbar-actions>\\n }\\n </fd-grid-list-title-bar>\\n @if (_approvalProcess.watchers?.length || _isEditMode) {\\n <div class=\\\"fdp-approval-flow__watchers\\\" [attr.aria-label]=\\\"watchersLabel\\\">\\n <p class=\\\"fdp-approval-flow__watchers-title\\\">\\n {{ watchersLabel || ('platformApprovalFlow.defaultWatchersLabel' | fdTranslate) }}\\n </p>\\n @if (!_isEditMode) {\\n @for (watcher of _approvalProcess.watchers; track _trackByFn($index, watcher)) {\\n <fd-avatar\\n size=\\\"xs\\\"\\n [image]=\\\"watcher.imgUrl || ''\\\"\\n [label]=\\\"watcher.name\\\"\\n [clickable]=\\\"true\\\"\\n [circle]=\\\"true\\\"\\n (avatarClicked)=\\\"_onWatcherClick(watcher, $event)\\\"\\n ></fd-avatar>\\n }\\n } @else {\\n <div class=\\\"fdp-approval-flow__watchers-input-container\\\">\\n <fd-multi-input\\n [dropdownValues]=\\\"_usersForWatchersList\\\"\\n [placeholder]=\\\"'platformApprovalFlow.watchersInputPlaceholder' | fdTranslate\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n [valueFn]=\\\"_userValueFn\\\"\\n [showAllButton]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedWatcherIds\\\"\\n (ngModelChange)=\\\"_watchersSelectionChanged($event)\\\"\\n ></fd-multi-input>\\n </div>\\n }\\n </div>\\n }\\n @if (!_graph.errors) {\\n @if (_graph.columns.length) {\\n <div\\n class=\\\"fdp-approval-flow__container\\\"\\n [class.fdp-approval-flow__container--extra-padding-start]=\\\"true\\\"\\n [class.fdp-approval-flow__container--extra-padding-end]=\\\"true\\\"\\n >\\n @if (_scrollDiff > 0) {\\n <div\\n class=\\\"fdp-approval-flow-carousel-controls\\\"\\n [class.fdp-approval-flow-carousel-controls--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @if (_carouselStepsLeft > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--prev-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.prevButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide(-1)\\\"\\n >\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'right' : 'left') + '-arrow'\\\"></fd-icon>\\n {{ _carouselStepsLeft }}\\n </button>\\n }\\n @if (_carouselStepsRight > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--next-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.nextButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide()\\\"\\n >\\n {{ _carouselStepsRight }}\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </button>\\n }\\n </div>\\n }\\n <div\\n class=\\\"fdp-approval-flow__graph-container\\\"\\n [class.fdp-approval-flow__graph-container--multiple-root-nodes]=\\\"_multipleRootNodes\\\"\\n [class.fdp-approval-flow__graph-container--multiple-final-nodes]=\\\"_multipleFinalNodes\\\"\\n [class.fd-scrollbar]=\\\"true\\\"\\n #graphContainerEl\\n >\\n <div\\n class=\\\"fdp-approval-flow__graph\\\"\\n #graphEl\\n [class.fdp-approval-flow__graph--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @for (column of _graph.columns; track column; let columnIndex = $index) {\\n <div class=\\\"fdp-approval-flow__graph-column\\\">\\n @for (\\n node of column.nodes;\\n track _trackByFn(nodeIndex, node);\\n let nodeIndex = $index\\n ) {\\n <fdp-approval-flow-node\\n cdkDrag\\n #approvalFlowNode\\n [cdkDragDisabled]=\\\"_isCdkDragDisabled(node)\\\"\\n [node]=\\\"node\\\"\\n [meta]=\\\"_graphMetadata[node.id]\\\"\\n [isEdit]=\\\"_isEditMode\\\"\\n [isNextNodeBlank]=\\\"_isNextNodeBlank(node, columnIndex, nodeIndex)\\\"\\n [checkDueDate]=\\\"checkDueDate\\\"\\n [dueDateThreshold]=\\\"dueDateThreshold\\\"\\n [renderArrow]=\\\"columnIndex > 0\\\"\\n [allNodesInColumnApproved]=\\\"!!column.allNodesApproved\\\"\\n [approvalStatusTemplate]=\\\"approvalStatusTemplate\\\"\\n [statusColorMapping]=\\\"statusColorMapping\\\"\\n (onAdd)=\\\"_addNode(node, $event)\\\"\\n (onEdit)=\\\"_editNode(node)\\\"\\n (onDelete)=\\\"_onNodeDelete(node)\\\"\\n (keydown)=\\\"_onNodeKeyDown($event, node)\\\"\\n (cdkDragStarted)=\\\"_dragDropInProgress = true\\\"\\n (cdkDragReleased)=\\\"_onNodeDrop(node, $event.source)\\\"\\n (cdkDragMoved)=\\\"_onNodeDragMoved(node)\\\"\\n >\\n <!-- Trick with using projection to make grid list items visible for the grid list -->\\n <fd-grid-list-item\\n type=\\\"active\\\"\\n [value]=\\\"node\\\"\\n [selected]=\\\"!!node.selected\\\"\\n [ariaLabelledBy]=\\\"approvalFlowNode.approvalFlowNodeId\\\"\\n [disableToolbarClick]=\\\"true\\\"\\n class=\\\"fdp-approval-flow__graph-node-inner\\\"\\n [class.fdp-approval-flow__graph-node-inner--edit]=\\\"_isEditMode\\\"\\n (press)=\\\"_onNodeClick(node)\\\"\\n >\\n <fd-grid-list-item-toolbar>\\n @if (_isEditMode) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._overflowMenuButton\\\"\\n ></ng-template>\\n }\\n </fd-grid-list-item-toolbar>\\n <fd-avatar\\n fd-grid-list-item-image\\n [image]=\\\"\\n node.approvers.length === 1 ? node.approvers[0].imgUrl : null\\n \\\"\\n [label]=\\\"node.approvers.length > 1 ? node.description : null\\\"\\n size=\\\"xs\\\"\\n [circle]=\\\"true\\\"\\n ></fd-avatar>\\n <ng-template fd-grid-list-item-body>\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._nodeContent\\\"\\n ></ng-template>\\n </ng-template>\\n </fd-grid-list-item>\\n </fdp-approval-flow-node>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n } @else {\\n <figure fd-illustrated-message type=\\\"spot\\\" [svgConfig]=\\\"_emptyApprovalFlowSpotConfig\\\">\\n <figcaption fd-illustrated-message-figcaption>\\n <h3 fd-illustrated-message-title>\\n {{ 'platformApprovalFlow.emptyTitle' | fdTranslate }}\\n </h3>\\n <p fd-illustrated-message-text>\\n {{ 'platformApprovalFlow.emptyHint' | fdTranslate }}\\n </p>\\n </figcaption>\\n </figure>\\n <!-- TODO #5178: Replace with illustrated image component after it gets fixed -->\\n <div [style.display]=\\\"'none'\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"128\\\"\\n height=\\\"128\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n id=\\\"sapIllus-Spot-NoData\\\"\\n >\\n <path\\n d=\\\"M41.6179,32.7174H84.6273a1,1,0,0,1,.723.3092l7.2445,7.5824,7.4817,7.8491a1,1,0,0,1,.2761.69l-.0046,55.6069a4.1038,4.1038,0,0,1-.8787,2.1212A4.0564,4.0564,0,0,1,98.1,107.9631l-56.3858.0313a2.6167,2.6167,0,0,1-3.0812-3.2309l-.0152-69.0594Z\\\"\\n class=\\\"sapIllus_PatternShadow\\\"\\n [style.fill]=\\\"'var(--sapIllus_PatternShadow)'\\\"\\n ></path>\\n <path\\n d=\\\"M35.7928,27.4987H78.8022a1,1,0,0,1,.723.3092L86.77,35.39l7.4816,7.8492a1,1,0,0,1,.2762.69l-.0046,55.6069a3,3,0,0,1-3,3H35.808a2.9946,2.9946,0,0,1-3-2.9913c-.01-12.0564-.0423-57.0116-.0152-69.0595A2.9943,2.9943,0,0,1,35.7928,27.4987Z\\\"\\n class=\\\"sapIllus_ObjectFillColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_ObjectFillColor)'\\\"\\n ></path>\\n <path\\n d=\\\"M93.2978,44.5335H78.8208a.9925.9925,0,0,1-.974-1.01V28.5108a.97.97,0,0,1,1.6628-.7143L93.9865,42.8092A1.0151,1.0151,0,0,1,93.2978,44.5335Z\\\"\\n class=\\\"sapIllus_BrandColorSecondary\\\"\\n [style.fill]=\\\"'var(--sapIllus_BrandColorSecondary)'\\\"\\n ></path>\\n <path\\n d=\\\"M104.608,38.9485l5.9157-1.7721c1.32-.3954.7584-2.5258-.5689-2.1282L104.0392,36.82c-1.32.3953-.7584,2.5258.5688,2.1282Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M85.2973,21.2465l.9718-5.9331c.2154-1.3151-1.777-1.8807-1.9941-.5554l-.9718,5.9332c-.2155,1.3151,1.777,1.8807,1.9941.5553Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M95.3034,29.0015a1.01,1.01,0,0,1-.6837-.267,1.0783,1.0783,0,0,1-.0864-1.4932l5.9511-6.8857a1.01,1.01,0,0,1,1.4538-.0884,1.0785,1.0785,0,0,1,.0865,1.4932l-5.9511,6.8858A1.0164,1.0164,0,0,1,95.3034,29.0015Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M94.8747,42.8861,80.0855,27.4623a1.5152,1.5152,0,0,0-1.0885-.4636H35.807a3.509,3.509,0,0,0-3.5146,3.4836c-.0294,13.2857.0137,66.7559.0157,69.0257a3.5076,3.5076,0,0,0,3.5146,3.4894H91.7709a3.5106,3.5106,0,0,0,3.5146-3.4982l.005-55.5785A1.49,1.49,0,0,0,94.8747,42.8861Zm-16.21-14.8355a1.15,1.15,0,0,1,.2561-.0309,1.04,1.04,0,0,1,.51.2134l14.276,14.8837.0194.02a.5891.5891,0,0,1,.0968.6251c-.1016.1764-.4086.24-.69.24L78.8355,44a.6031.6031,0,0,1-.5472-.6131c-.0087-4.9588-.017-9.9015-.0035-14.8689A.5189.5189,0,0,1,78.6646,28.0506Zm13.1062,73.95H35.8188a2.5045,2.5045,0,0,1-2.5107-2.491c-.002-2.2694-.0451-55.74-.0157-69.0248a2.5054,2.5054,0,0,1,2.5107-2.4861H77.3684a1.49,1.49,0,0,0-.0976.5106V43.4934A1.5145,1.5145,0,0,0,78.7894,45H78.92L94.286,47.9749l-.0046,51.5269A2.5074,2.5074,0,0,1,91.7708,102.0006Z\\\"\\n class=\\\"sapIllus_StrokeDetailColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_StrokeDetailColor)'\\\"\\n ></path>\\n </svg>\\n </div>\\n }\\n }\\n </fd-grid-list>\\n @if (_isEditMode) {\\n <div fd-bar>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeSaveButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n [disabled]=\\\"disableSaveButton\\\"\\n (click)=\\\"_saveEditModeChanges()\\\"\\n ></button>\\n </fd-bar-element>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeExitButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n [disabled]=\\\"disableExitButton\\\"\\n (click)=\\\"_exitEditMode()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n</ng-container>\\n\", styles: [\".fd-scrollbar{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:auto;padding-block:0;padding-inline:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}.fdp-approval-flow__watchers{margin-bottom:.5rem;padding-left:.5rem}.fdp-approval-flow__watchers-title{font-size:.875em;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin:1rem 0 .5rem}.fdp-approval-flow__watchers fd-avatar{margin-right:.5rem;cursor:pointer}.fdp-approval-flow__watchers fd-avatar:focus{outline-offset:.0625rem;outline-width:.0625rem;outline-style:dotted;outline-color:var(--sapContent_FocusColor, #0854a0)}.fdp-approval-flow__watchers .fdp-approval-flow__watchers-input-container{width:17.375rem}[dir=rtl] .fdp-approval-flow__watchers,.fdp-approval-flow__watchers[dir=rtl]{padding-right:.5rem}[dir=rtl] .fdp-approval-flow__watchers fd-avatar,.fdp-approval-flow__watchers[dir=rtl] fd-avatar{margin-left:.5rem;margin-right:0}.fdp-approval-flow__container{max-width:100%;position:relative;padding:0 .5rem}.fdp-approval-flow__container--extra-padding-start{padding-left:2rem}.fdp-approval-flow__container--extra-padding-end{padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start{padding-left:.5rem;padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-end{padding-right:.5rem;padding-left:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end{padding-right:2rem;padding-left:2rem}.fdp-approval-flow__graph-container{position:relative;overflow:auto;padding-top:.5rem;padding-bottom:2rem;padding-left:2rem}.fdp-approval-flow__graph-container--multiple-root-nodes{padding-left:4rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-root-nodes,.fdp-approval-flow__graph-container--multiple-root-nodes[dir=rtl]{padding-right:2rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-final-nodes,.fdp-approval-flow__graph-container--multiple-final-nodes[dir=rtl]{padding-left:0}.fdp-approval-flow-carousel-controls{position:absolute;display:flex;align-items:center;width:100%;height:6.375rem;padding-top:.5rem;left:0}.fdp-approval-flow-carousel-controls--edit-mode{height:8.375rem}.fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--next-slide{position:absolute;border:none;background:transparent;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);display:flex;justify-content:space-between;width:2rem;align-items:center;cursor:pointer}.fdp-approval-flow-carousel-controls__button--prev-slide fd-icon,.fdp-approval-flow-carousel-controls__button--next-slide fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;top:.0625rem}.fdp-approval-flow-carousel-controls__button--prev-slide{left:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--prev-slide[dir=rtl]{left:auto;right:0}.fdp-approval-flow-carousel-controls__button--next-slide{right:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--next-slide,.fdp-approval-flow-carousel-controls__button--next-slide[dir=rtl]{left:0;right:auto}.fdp-approval-flow__graph{display:flex;align-items:flex-start;position:relative;left:0;transition:left .3s}.fdp-approval-flow__graph-column{margin-right:4rem;position:relative}[dir=rtl] .fdp-approval-flow__graph-column:first-child,.fdp-approval-flow__graph-column[dir=rtl]:first-child{margin-right:2rem}.fdp-approval-flow__graph fdp-approval-flow-node+fdp-approval-flow-node:not(:last-child){margin-bottom:1rem}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner{padding:0}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content{margin-left:auto}[dir=rtl] .fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content,.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content[dir=rtl]{margin-left:0;margin-right:auto}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--actions{display:none}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner:not(.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner--edit) .fd-toolbar.fd-grid-list__item-toolbar{display:none}.cdk-overlay-container{z-index:1002!important}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/scrollbar.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"], dependencies: [{ kind: \"directive\", type: ContentDensityDirective, selector: \"[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])\", inputs: [\"fdContentDensity\", \"fdCompact\", \"fdCondensed\", \"fdCozy\"], exportAs: [\"fdContentDensity\"] }, { kind: \"component\", type: ApprovalFlowMessagesComponent, selector: \"fdp-approval-flow-messages\", inputs: [\"messages\", \"undoLastActionAvailable\"], outputs: [\"messagesChange\", \"undoLastAction\"] }, { kind: \"component\", type: GridListComponent, selector: \"fd-grid-list\", inputs: [\"id\", \"width\", \"ariaLabel\", \"selectionMode\", \"layoutPattern\"], outputs: [\"selectionChange\"] }, { kind: \"component\", type: GridListTitleBarComponent, selector: \"fd-grid-list-title-bar\", inputs: [\"title\"] }, { kind: \"component\", type: GridListTitleBarSpacerComponent, selector: \"fd-grid-list-title-bar-spacer\" }, { kind: \"component\", type: ApprovalFlowToolbarActionsComponent, selector: \"fdp-approval-flow-toolbar-actions\", inputs: [\"graph\", \"graphMetadata\", \"selectedNodes\", \"isEditMode\"], outputs: [\"enterEditMode\", \"addNode\", \"editSelectedNode\", \"deleteSelectedNodes\"] }, { kind: \"component\", type: AvatarComponent, selector: \"fd-avatar\", inputs: [\"class\", \"id\", \"ariaLabel\", \"ariaLabelledby\", \"label\", \"size\", \"font\", \"glyph\", \"zoomGlyph\", \"circle\", \"interactive\", \"transparent\", \"contain\", \"placeholder\", \"tile\", \"border\", \"colorAccent\", \"colorIndication\", \"random\", \"clickable\", \"valueState\", \"image\", \"alterIcon\", \"backupImage\"], outputs: [\"avatarClicked\", \"zoomGlyphClicked\"] }, { kind: \"component\", type: MultiInputComponent, selector: \"fd-multi-input\", inputs: [\"placeholder\", \"disabled\", \"required\", \"compactCollapse\", \"maxHeight\", \"glyph\", \"glyphFont\", \"dropdownValues\", \"openDropdownOnAddOnClicked\", \"addonIconTitle\", \"searchTerm\", \"inputId\", \"highlight\", \"selected\", \"class\", \"filterFn\", \"valueFn\", \"displayFn\", \"newTokenParseFn\", \"optionItemIdentifier\", \"newTokenValidateFn\", \"ariaLabel\", \"ariaLabelledBy\", \"fillControlMode\", \"state\", \"buttonFocusable\", \"allowNewTokens\", \"mobile\", \"showAllButton\", \"bodyMaxWidth\", \"mobileConfig\", \"includes\", \"itemTemplate\", \"title\", \"byline\", \"autoComplete\", \"open\", \"displayAddonButton\", \"addOnButtonAriaLabel\"], outputs: [\"searchTermChange\", \"selectedChange\", \"openChange\", \"addOnButtonClicked\", \"allItemsSelectedChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: IconComponent, selector: \"fd-icon\", inputs: [\"glyph\", \"font\", \"color\", \"background\", \"class\", \"ariaLabel\", \"ariaHidden\"] }, { kind: \"component\", type: ApprovalFlowNodeComponent, selector: \"fdp-approval-flow-node\", inputs: [\"node\", \"meta\", \"renderArrow\", \"checkDueDate\", \"dueDateThreshold\", \"allNodesInColumnApproved\", \"approvalStatusTemplate\", \"statusColorMapping\", \"isEdit\", \"isNextNodeBlank\"], outputs: [\"onAdd\", \"onEdit\", \"onDelete\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: GridListItemComponent, selector: \"fd-grid-list-item\", inputs: [\"id\", \"width\", \"layoutItemPattern\", \"status\", \"counter\", \"value\", \"disableToolbarClick\", \"selected\", \"noPadding\", \"ariaLabel\", \"ariaLabelledBy\", \"type\", \"state\", \"isNavigated\", \"title\", \"titleLevel\", \"description\", \"autoHeight\"], outputs: [\"press\", \"detail\", \"delete\", \"navigate\", \"cardClick\", \"draft\", \"locked\"] }, { kind: \"component\", type: GridListItemToolbarComponent, selector: \"fd-grid-list-item-toolbar\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: GridListItemImageDirective, selector: \"[fd-grid-list-item-image]\" }, { kind: \"directive\", type: GridListItemBodyDirective, selector: \"[fd-grid-list-item-body]\" }, { kind: \"component\", type: BarComponent, selector: \"[fd-bar]\", inputs: [\"class\", \"barDesign\", \"inPage\", \"inHomePage\", \"clear\", \"size\", \"role\"] }, { kind: \"directive\", type: BarRightDirective, selector: \"[fd-bar-right]\" }, { kind: \"directive\", type: BarElementDirective, selector: \"fd-bar-element\", inputs: [\"fullWidth\"] }, { kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"component\", type: IllustratedMessageComponent, selector: \"[fd-illustrated-message]\", inputs: [\"type\", \"svgConfig\", \"svgAriaLabel\", \"noSvg\", \"id\", \"class\"] }, { kind: \"component\", type: IllustratedMessageFigcaptionComponent, selector: \"[fd-illustrated-message-figcaption]\" }, { kind: \"directive\", type: IllustratedMessageTitleDirective, selector: \"[fd-illustrated-message-title]\" }, { kind: \"directive\", type: IllustratedMessageTextDirective, selector: \"[fd-illustrated-message-text]\" }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ApprovalFlowComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fdp-approval-flow', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [ApprovalFlowAddNodeViewService], imports: [\n ContentDensityDirective,\n ApprovalFlowMessagesComponent,\n GridListComponent,\n GridListTitleBarComponent,\n GridListTitleBarSpacerComponent,\n ApprovalFlowToolbarActionsComponent,\n AvatarComponent,\n MultiInputComponent,\n FormsModule,\n IconComponent,\n ApprovalFlowNodeComponent,\n CdkDrag,\n GridListItemComponent,\n GridListItemToolbarComponent,\n NgTemplateOutlet,\n GridListItemImageDirective,\n GridListItemBodyDirective,\n BarComponent,\n BarRightDirective,\n BarElementDirective,\n ButtonComponent,\n IllustratedMessageComponent,\n IllustratedMessageFigcaptionComponent,\n IllustratedMessageTitleDirective,\n IllustratedMessageTextDirective,\n FdTranslatePipe\n ], template: \"<ng-container fdCompact>\\n <fdp-approval-flow-messages\\n [(messages)]=\\\"_messages\\\"\\n [undoLastActionAvailable]=\\\"!!_previousApprovalProcess\\\"\\n (undoLastAction)=\\\"_undoLastAction()\\\"\\n ></fdp-approval-flow-messages>\\n <fd-grid-list\\n #gridList\\n class=\\\"fdp-approval-flow__toolbar\\\"\\n [selectionMode]=\\\"_isEditMode ? 'multiSelect' : 'none'\\\"\\n (selectionChange)=\\\"_onNodeSelectionChange($event)\\\"\\n >\\n <fd-grid-list-title-bar [title]=\\\"title || ('platformApprovalFlow.defaultTitle' | fdTranslate)\\\">\\n <fd-grid-list-title-bar-spacer></fd-grid-list-title-bar-spacer>\\n @if (isEditAvailable) {\\n <fdp-approval-flow-toolbar-actions\\n [graph]=\\\"_graph\\\"\\n [selectedNodes]=\\\"_selectedNodes\\\"\\n [graphMetadata]=\\\"_graphMetadata\\\"\\n [isEditMode]=\\\"_isEditMode\\\"\\n (enterEditMode)=\\\"_enterEditMode()\\\"\\n (addNode)=\\\"_addNode($event.node, $event.target)\\\"\\n (editSelectedNode)=\\\"_editNode($event)\\\"\\n (deleteSelectedNodes)=\\\"_deleteSelectedNodes()\\\"\\n ></fdp-approval-flow-toolbar-actions>\\n }\\n </fd-grid-list-title-bar>\\n @if (_approvalProcess.watchers?.length || _isEditMode) {\\n <div class=\\\"fdp-approval-flow__watchers\\\" [attr.aria-label]=\\\"watchersLabel\\\">\\n <p class=\\\"fdp-approval-flow__watchers-title\\\">\\n {{ watchersLabel || ('platformApprovalFlow.defaultWatchersLabel' | fdTranslate) }}\\n </p>\\n @if (!_isEditMode) {\\n @for (watcher of _approvalProcess.watchers; track _trackByFn($index, watcher)) {\\n <fd-avatar\\n size=\\\"xs\\\"\\n [image]=\\\"watcher.imgUrl || ''\\\"\\n [label]=\\\"watcher.name\\\"\\n [clickable]=\\\"true\\\"\\n [circle]=\\\"true\\\"\\n (avatarClicked)=\\\"_onWatcherClick(watcher, $event)\\\"\\n ></fd-avatar>\\n }\\n } @else {\\n <div class=\\\"fdp-approval-flow__watchers-input-container\\\">\\n <fd-multi-input\\n [dropdownValues]=\\\"_usersForWatchersList\\\"\\n [placeholder]=\\\"'platformApprovalFlow.watchersInputPlaceholder' | fdTranslate\\\"\\n [displayFn]=\\\"_displayUserFn\\\"\\n [valueFn]=\\\"_userValueFn\\\"\\n [showAllButton]=\\\"true\\\"\\n [(ngModel)]=\\\"_selectedWatcherIds\\\"\\n (ngModelChange)=\\\"_watchersSelectionChanged($event)\\\"\\n ></fd-multi-input>\\n </div>\\n }\\n </div>\\n }\\n @if (!_graph.errors) {\\n @if (_graph.columns.length) {\\n <div\\n class=\\\"fdp-approval-flow__container\\\"\\n [class.fdp-approval-flow__container--extra-padding-start]=\\\"true\\\"\\n [class.fdp-approval-flow__container--extra-padding-end]=\\\"true\\\"\\n >\\n @if (_scrollDiff > 0) {\\n <div\\n class=\\\"fdp-approval-flow-carousel-controls\\\"\\n [class.fdp-approval-flow-carousel-controls--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @if (_carouselStepsLeft > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--prev-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.prevButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide(-1)\\\"\\n >\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'right' : 'left') + '-arrow'\\\"></fd-icon>\\n {{ _carouselStepsLeft }}\\n </button>\\n }\\n @if (_carouselStepsRight > 0) {\\n <button\\n class=\\\"fdp-approval-flow-carousel-controls__button--next-slide\\\"\\n [attr.aria-label]=\\\"'platformApprovalFlow.nextButtonAriaLabel' | fdTranslate\\\"\\n (click)=\\\"nextSlide()\\\"\\n >\\n {{ _carouselStepsRight }}\\n <fd-icon [glyph]=\\\"'navigation-' + (_rtl ? 'left' : 'right') + '-arrow'\\\"></fd-icon>\\n </button>\\n }\\n </div>\\n }\\n <div\\n class=\\\"fdp-approval-flow__graph-container\\\"\\n [class.fdp-approval-flow__graph-container--multiple-root-nodes]=\\\"_multipleRootNodes\\\"\\n [class.fdp-approval-flow__graph-container--multiple-final-nodes]=\\\"_multipleFinalNodes\\\"\\n [class.fd-scrollbar]=\\\"true\\\"\\n #graphContainerEl\\n >\\n <div\\n class=\\\"fdp-approval-flow__graph\\\"\\n #graphEl\\n [class.fdp-approval-flow__graph--edit-mode]=\\\"_isEditMode\\\"\\n >\\n @for (column of _graph.columns; track column; let columnIndex = $index) {\\n <div class=\\\"fdp-approval-flow__graph-column\\\">\\n @for (\\n node of column.nodes;\\n track _trackByFn(nodeIndex, node);\\n let nodeIndex = $index\\n ) {\\n <fdp-approval-flow-node\\n cdkDrag\\n #approvalFlowNode\\n [cdkDragDisabled]=\\\"_isCdkDragDisabled(node)\\\"\\n [node]=\\\"node\\\"\\n [meta]=\\\"_graphMetadata[node.id]\\\"\\n [isEdit]=\\\"_isEditMode\\\"\\n [isNextNodeBlank]=\\\"_isNextNodeBlank(node, columnIndex, nodeIndex)\\\"\\n [checkDueDate]=\\\"checkDueDate\\\"\\n [dueDateThreshold]=\\\"dueDateThreshold\\\"\\n [renderArrow]=\\\"columnIndex > 0\\\"\\n [allNodesInColumnApproved]=\\\"!!column.allNodesApproved\\\"\\n [approvalStatusTemplate]=\\\"approvalStatusTemplate\\\"\\n [statusColorMapping]=\\\"statusColorMapping\\\"\\n (onAdd)=\\\"_addNode(node, $event)\\\"\\n (onEdit)=\\\"_editNode(node)\\\"\\n (onDelete)=\\\"_onNodeDelete(node)\\\"\\n (keydown)=\\\"_onNodeKeyDown($event, node)\\\"\\n (cdkDragStarted)=\\\"_dragDropInProgress = true\\\"\\n (cdkDragReleased)=\\\"_onNodeDrop(node, $event.source)\\\"\\n (cdkDragMoved)=\\\"_onNodeDragMoved(node)\\\"\\n >\\n <!-- Trick with using projection to make grid list items visible for the grid list -->\\n <fd-grid-list-item\\n type=\\\"active\\\"\\n [value]=\\\"node\\\"\\n [selected]=\\\"!!node.selected\\\"\\n [ariaLabelledBy]=\\\"approvalFlowNode.approvalFlowNodeId\\\"\\n [disableToolbarClick]=\\\"true\\\"\\n class=\\\"fdp-approval-flow__graph-node-inner\\\"\\n [class.fdp-approval-flow__graph-node-inner--edit]=\\\"_isEditMode\\\"\\n (press)=\\\"_onNodeClick(node)\\\"\\n >\\n <fd-grid-list-item-toolbar>\\n @if (_isEditMode) {\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._overflowMenuButton\\\"\\n ></ng-template>\\n }\\n </fd-grid-list-item-toolbar>\\n <fd-avatar\\n fd-grid-list-item-image\\n [image]=\\\"\\n node.approvers.length === 1 ? node.approvers[0].imgUrl : null\\n \\\"\\n [label]=\\\"node.approvers.length > 1 ? node.description : null\\\"\\n size=\\\"xs\\\"\\n [circle]=\\\"true\\\"\\n ></fd-avatar>\\n <ng-template fd-grid-list-item-body>\\n <ng-template\\n [ngTemplateOutlet]=\\\"approvalFlowNode._nodeContent\\\"\\n ></ng-template>\\n </ng-template>\\n </fd-grid-list-item>\\n </fdp-approval-flow-node>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n } @else {\\n <figure fd-illustrated-message type=\\\"spot\\\" [svgConfig]=\\\"_emptyApprovalFlowSpotConfig\\\">\\n <figcaption fd-illustrated-message-figcaption>\\n <h3 fd-illustrated-message-title>\\n {{ 'platformApprovalFlow.emptyTitle' | fdTranslate }}\\n </h3>\\n <p fd-illustrated-message-text>\\n {{ 'platformApprovalFlow.emptyHint' | fdTranslate }}\\n </p>\\n </figcaption>\\n </figure>\\n <!-- TODO #5178: Replace with illustrated image component after it gets fixed -->\\n <div [style.display]=\\\"'none'\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n width=\\\"128\\\"\\n height=\\\"128\\\"\\n viewBox=\\\"0 0 128 128\\\"\\n id=\\\"sapIllus-Spot-NoData\\\"\\n >\\n <path\\n d=\\\"M41.6179,32.7174H84.6273a1,1,0,0,1,.723.3092l7.2445,7.5824,7.4817,7.8491a1,1,0,0,1,.2761.69l-.0046,55.6069a4.1038,4.1038,0,0,1-.8787,2.1212A4.0564,4.0564,0,0,1,98.1,107.9631l-56.3858.0313a2.6167,2.6167,0,0,1-3.0812-3.2309l-.0152-69.0594Z\\\"\\n class=\\\"sapIllus_PatternShadow\\\"\\n [style.fill]=\\\"'var(--sapIllus_PatternShadow)'\\\"\\n ></path>\\n <path\\n d=\\\"M35.7928,27.4987H78.8022a1,1,0,0,1,.723.3092L86.77,35.39l7.4816,7.8492a1,1,0,0,1,.2762.69l-.0046,55.6069a3,3,0,0,1-3,3H35.808a2.9946,2.9946,0,0,1-3-2.9913c-.01-12.0564-.0423-57.0116-.0152-69.0595A2.9943,2.9943,0,0,1,35.7928,27.4987Z\\\"\\n class=\\\"sapIllus_ObjectFillColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_ObjectFillColor)'\\\"\\n ></path>\\n <path\\n d=\\\"M93.2978,44.5335H78.8208a.9925.9925,0,0,1-.974-1.01V28.5108a.97.97,0,0,1,1.6628-.7143L93.9865,42.8092A1.0151,1.0151,0,0,1,93.2978,44.5335Z\\\"\\n class=\\\"sapIllus_BrandColorSecondary\\\"\\n [style.fill]=\\\"'var(--sapIllus_BrandColorSecondary)'\\\"\\n ></path>\\n <path\\n d=\\\"M104.608,38.9485l5.9157-1.7721c1.32-.3954.7584-2.5258-.5689-2.1282L104.0392,36.82c-1.32.3953-.7584,2.5258.5688,2.1282Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M85.2973,21.2465l.9718-5.9331c.2154-1.3151-1.777-1.8807-1.9941-.5554l-.9718,5.9332c-.2155,1.3151,1.777,1.8807,1.9941.5553Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M95.3034,29.0015a1.01,1.01,0,0,1-.6837-.267,1.0783,1.0783,0,0,1-.0864-1.4932l5.9511-6.8857a1.01,1.01,0,0,1,1.4538-.0884,1.0785,1.0785,0,0,1,.0865,1.4932l-5.9511,6.8858A1.0164,1.0164,0,0,1,95.3034,29.0015Z\\\"\\n class=\\\"sapIllus_Layering1\\\"\\n [style.fill]=\\\"'var(--sapIllus_Layering1)'\\\"\\n ></path>\\n <path\\n d=\\\"M94.8747,42.8861,80.0855,27.4623a1.5152,1.5152,0,0,0-1.0885-.4636H35.807a3.509,3.509,0,0,0-3.5146,3.4836c-.0294,13.2857.0137,66.7559.0157,69.0257a3.5076,3.5076,0,0,0,3.5146,3.4894H91.7709a3.5106,3.5106,0,0,0,3.5146-3.4982l.005-55.5785A1.49,1.49,0,0,0,94.8747,42.8861Zm-16.21-14.8355a1.15,1.15,0,0,1,.2561-.0309,1.04,1.04,0,0,1,.51.2134l14.276,14.8837.0194.02a.5891.5891,0,0,1,.0968.6251c-.1016.1764-.4086.24-.69.24L78.8355,44a.6031.6031,0,0,1-.5472-.6131c-.0087-4.9588-.017-9.9015-.0035-14.8689A.5189.5189,0,0,1,78.6646,28.0506Zm13.1062,73.95H35.8188a2.5045,2.5045,0,0,1-2.5107-2.491c-.002-2.2694-.0451-55.74-.0157-69.0248a2.5054,2.5054,0,0,1,2.5107-2.4861H77.3684a1.49,1.49,0,0,0-.0976.5106V43.4934A1.5145,1.5145,0,0,0,78.7894,45H78.92L94.286,47.9749l-.0046,51.5269A2.5074,2.5074,0,0,1,91.7708,102.0006Z\\\"\\n class=\\\"sapIllus_StrokeDetailColor\\\"\\n [style.fill]=\\\"'var(--sapIllus_StrokeDetailColor)'\\\"\\n ></path>\\n </svg>\\n </div>\\n }\\n }\\n </fd-grid-list>\\n @if (_isEditMode) {\\n <div fd-bar>\\n <div fd-bar-right>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeSaveButtonLabel' | fdTranslate\\\"\\n fdType=\\\"emphasized\\\"\\n [disabled]=\\\"disableSaveButton\\\"\\n (click)=\\\"_saveEditModeChanges()\\\"\\n ></button>\\n </fd-bar-element>\\n <fd-bar-element>\\n <button\\n fd-button\\n [label]=\\\"'platformApprovalFlow.editModeExitButtonLabel' | fdTranslate\\\"\\n fdType=\\\"transparent\\\"\\n [disabled]=\\\"disableExitButton\\\"\\n (click)=\\\"_exitEditMode()\\\"\\n ></button>\\n </fd-bar-element>\\n </div>\\n </div>\\n }\\n</ng-container>\\n\", styles: [\".fd-scrollbar{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:auto;padding-block:0;padding-inline:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color);box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}.fdp-approval-flow__watchers{margin-bottom:.5rem;padding-left:.5rem}.fdp-approval-flow__watchers-title{font-size:.875em;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);margin:1rem 0 .5rem}.fdp-approval-flow__watchers fd-avatar{margin-right:.5rem;cursor:pointer}.fdp-approval-flow__watchers fd-avatar:focus{outline-offset:.0625rem;outline-width:.0625rem;outline-style:dotted;outline-color:var(--sapContent_FocusColor, #0854a0)}.fdp-approval-flow__watchers .fdp-approval-flow__watchers-input-container{width:17.375rem}[dir=rtl] .fdp-approval-flow__watchers,.fdp-approval-flow__watchers[dir=rtl]{padding-right:.5rem}[dir=rtl] .fdp-approval-flow__watchers fd-avatar,.fdp-approval-flow__watchers[dir=rtl] fd-avatar{margin-left:.5rem;margin-right:0}.fdp-approval-flow__container{max-width:100%;position:relative;padding:0 .5rem}.fdp-approval-flow__container--extra-padding-start{padding-left:2rem}.fdp-approval-flow__container--extra-padding-end{padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start{padding-left:.5rem;padding-right:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-end{padding-right:.5rem;padding-left:2rem}[dir=rtl] .fdp-approval-flow__container.fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end,.fdp-approval-flow__container[dir=rtl].fdp-approval-flow__container--extra-padding-start.fdp-approval-flow__container--extra-padding-end{padding-right:2rem;padding-left:2rem}.fdp-approval-flow__graph-container{position:relative;overflow:auto;padding-top:.5rem;padding-bottom:2rem;padding-left:2rem}.fdp-approval-flow__graph-container--multiple-root-nodes{padding-left:4rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-root-nodes,.fdp-approval-flow__graph-container--multiple-root-nodes[dir=rtl]{padding-right:2rem}[dir=rtl] .fdp-approval-flow__graph-container--multiple-final-nodes,.fdp-approval-flow__graph-container--multiple-final-nodes[dir=rtl]{padding-left:0}.fdp-approval-flow-carousel-controls{position:absolute;display:flex;align-items:center;width:100%;height:6.375rem;padding-top:.5rem;left:0}.fdp-approval-flow-carousel-controls--edit-mode{height:8.375rem}.fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--next-slide{position:absolute;border:none;background:transparent;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);display:flex;justify-content:space-between;width:2rem;align-items:center;cursor:pointer}.fdp-approval-flow-carousel-controls__button--prev-slide fd-icon,.fdp-approval-flow-carousel-controls__button--next-slide fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;top:.0625rem}.fdp-approval-flow-carousel-controls__button--prev-slide{left:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--prev-slide,.fdp-approval-flow-carousel-controls__button--prev-slide[dir=rtl]{left:auto;right:0}.fdp-approval-flow-carousel-controls__button--next-slide{right:0}[dir=rtl] .fdp-approval-flow-carousel-controls__button--next-slide,.fdp-approval-flow-carousel-controls__button--next-slide[dir=rtl]{left:0;right:auto}.fdp-approval-flow__graph{display:flex;align-items:flex-start;position:relative;left:0;transition:left .3s}.fdp-approval-flow__graph-column{margin-right:4rem;position:relative}[dir=rtl] .fdp-approval-flow__graph-column:first-child,.fdp-approval-flow__graph-column[dir=rtl]:first-child{margin-right:2rem}.fdp-approval-flow__graph fdp-approval-flow-node+fdp-approval-flow-node:not(:last-child){margin-bottom:1rem}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner{padding:0}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content{margin-left:auto}[dir=rtl] .fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content,.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--extra-content[dir=rtl]{margin-left:0;margin-right:auto}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner .fd-grid-list__item-toolbar .fd-toolbar--actions{display:none}.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner:not(.fdp-approval-flow__graph .fdp-approval-flow__graph-node-inner--edit) .fd-toolbar.fd-grid-list__item-toolbar{display:none}.cdk-overlay-container{z-index:1002!important}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/scrollbar.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"] }]\n }], ctorParameters: () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: Map, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DATA_PROVIDERS]\n }] }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { title: [{\n type: Input\n }], value: [{\n type: Input\n }], userDataSource: [{\n type: Input\n }], watcherDataSource: [{\n type: Input\n }], teamDataSource: [{\n type: Input\n }], userDetailsTemplate: [{\n type: Input\n }], approvalStatusTemplate: [{\n type: Input\n }], statusColorMapping: [{\n type: Input\n }], checkDueDate: [{\n type: Input\n }], dueDateThreshold: [{\n type: Input\n }], allowSendRemindersForStatuses: [{\n type: Input\n }], isEditAvailable: [{\n type: Input\n }], watchersLabel: [{\n type: Input\n }], allowAddParallelNodes: [{\n type: Input\n }], disableSaveButton: [{\n type: Input\n }], disableExitButton: [{\n type: Input\n }], usersDataProviderEntityKey: [{\n type: Input\n }], teamsDataProviderEntityKey: [{\n type: Input\n }], watchersDataProviderEntityKey: [{\n type: Input\n }], removeSpaceNode: [{\n type: Input\n }], nodeClick: [{\n type: Output\n }], afterNodeAdd: [{\n type: Output\n }], afterNodeEdit: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], sendReminders: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }], _graphContainerEl: [{\n type: ViewChild,\n args: ['graphContainerEl']\n }], _graphEl: [{\n type: ViewChild,\n args: ['graphEl']\n }], _gridList: [{\n type: ViewChild,\n args: ['gridList']\n }], _nodeComponents: [{\n type: ViewChildren,\n args: [ApprovalFlowNodeComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRHLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFB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QVE7c0JBQTdCLFNBQVM7dUJBQUMsU0FBUztnQkFHRyxTQUFTO3NCQUEvQixTQUFTO3VCQUFDLFVBQVU7Z0JBR29CLGVBQWU7c0JBQXZELFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgbWFwVG8sIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBHcmlkTGlzdENvbXBvbmVudCwgR3JpZExpc3RTZWxlY3Rpb25FdmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9ncmlkLWxpc3QnO1xuXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2F2YXRhcic7XG5pbXBvcnQgeyBCYXJDb21wb25lbnQsIEJhckVsZW1lbnREaXJlY3RpdmUsIEJhclJpZ2h0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQge1xuICAgIEdyaWRMaXN0SXRlbUJvZHlEaXJlY3RpdmUsXG4gICAgR3JpZExpc3RJdGVtQ29tcG9uZW50LFxuICAgIEdyaWRMaXN0SXRlbUltYWdlRGlyZWN0aXZlLFxuICAgIEdyaWRMaXN0SXRlbVRvb2xiYXJDb21wb25lbnQsXG4gICAgR3JpZExpc3RUaXRsZUJhckNvbXBvbmVudCxcbiAgICBHcmlkTGlzdFRpdGxlQmFyU3BhY2VyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9ncmlkLWxpc3QnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7XG4gICAgSWxsdXN0cmF0ZWRNZXNzYWdlQ29tcG9uZW50LFxuICAgIElsbHVzdHJhdGVkTWVzc2FnZUZpZ2NhcHRpb25Db21wb25lbnQsXG4gICAgSWxsdXN0cmF0ZWRNZXNzYWdlVGV4dERpcmVjdGl2ZSxcbiAgICBJbGx1c3RyYXRlZE1lc3NhZ2VUaXRsZURpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWxsdXN0cmF0ZWQtbWVzc2FnZSc7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL211bHRpLWlucHV0JztcbmltcG9ydCB7IE9iamVjdFN0YXR1cyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vYmplY3Qtc3RhdHVzJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQge1xuICAgIEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlLFxuICAgIEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlLFxuICAgIERBVEFfUFJPVklERVJTLFxuICAgIERhdGFQcm92aWRlclxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyxcbiAgICBBZGROb2RlRGlhbG9nRm9ybURhdGEsXG4gICAgQWRkTm9kZURpYWxvZ1JlZkRhdGEsXG4gICAgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCxcbiAgICBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0XG59IGZyb20gJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCxcbiAgICBBcHByb3ZhbEZsb3dBcHByb3ZlckRldGFpbHNEaWFsb2dSZWZEYXRhXG59IGZyb20gJy4vYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctYXBwcm92ZXItZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBBcHByb3ZhbEZsb3dHcmFwaCxcbiAgICBBcHByb3ZhbEdyYXBoQ29sdW1uLFxuICAgIEFwcHJvdmFsR3JhcGhNZXRhZGF0YSxcbiAgICBnZW5lcmF0ZUFwcHJvdmFsRmxvd0dyYXBoLFxuICAgIGdlbmVyYXRlQXBwcm92YWxGbG93R3JhcGhNZXRhZGF0YVxufSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctZ3JhcGgnO1xuaW1wb3J0IHtcbiAgICBBcHByb3ZhbEZsb3dNZXNzYWdlLFxuICAgIEFwcHJvdmFsRmxvd01lc3NhZ2VUeXBlLFxuICAgIEFwcHJvdmFsRmxvd01lc3NhZ2VzQ29tcG9uZW50XG59IGZyb20gJy4vYXBwcm92YWwtZmxvdy1tZXNzYWdlcy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFwcHJvdmFsRmxvd1NlbGVjdFR5cGVDb21wb25lbnQsXG4gICAgU2VsZWN0VHlwZURpYWxvZ0Zvcm1EYXRhXG59IGZyb20gJy4vYXBwcm92YWwtZmxvdy1zZWxlY3QtdHlwZS9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMvYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgZGlzcGxheVVzZXJGbixcbiAgICBnZXRCbGFua0FwcHJvdmFsR3JhcGhOb2RlLFxuICAgIGdldEdyYXBoTm9kZXMsXG4gICAgaXNOb2RlVGFyZ2V0c0luY2x1ZGVJZCxcbiAgICB0cmFja0J5Rm4sXG4gICAgdXNlclZhbHVlRm5cbn0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7XG4gICAgQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgQXBwcm92YWxHcmFwaE5vZGVNZXRhZGF0YSxcbiAgICBBcHByb3ZhbE5vZGUsXG4gICAgQXBwcm92YWxQcm9jZXNzLFxuICAgIEFwcHJvdmFsU3RhdHVzLFxuICAgIEFwcHJvdmFsVGVhbSxcbiAgICBBcHByb3ZhbFVzZXIsXG4gICAgU2VuZFJlbWluZGVyc0RhdGFcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5sZXQgZGVmYXVsdElkID0gMDtcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsIEZsb3cgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9hcHByb3ZhbC1mbG93LmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0FwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZV0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgQXBwcm92YWxGbG93TWVzc2FnZXNDb21wb25lbnQsXG4gICAgICAgIEdyaWRMaXN0Q29tcG9uZW50LFxuICAgICAgICBHcmlkTGlzdFRpdGxlQmFyQ29tcG9uZW50LFxuICAgICAgICBHcmlkTGlzdFRpdGxlQmFyU3BhY2VyQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgQXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBNdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93Tm9kZUNvbXBvbmVudCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgR3JpZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBHcmlkTGlzdEl0ZW1Ub29sYmFyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBHcmlkTGlzdEl0ZW1JbWFnZURpcmVjdGl2ZSxcbiAgICAgICAgR3JpZExpc3RJdGVtQm9keURpcmVjdGl2ZSxcbiAgICAgICAgQmFyQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBJbGx1c3RyYXRlZE1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgIElsbHVzdHJhdGVkTWVzc2FnZUZpZ2NhcHRpb25Db21wb25lbnQsXG4gICAgICAgIElsbHVzdHJhdGVkTWVzc2FnZVRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBJbGx1c3RyYXRlZE1lc3NhZ2VUZXh0RGlyZWN0aXZlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBUaXRsZSB3aGljaCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBvZiB0aGUgQXBwcm92YWwgRmxvdyBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBWYWx1ZSBvZiB0aGUgYXBwcm92YWwgZmxvdyBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgdmFsdWU6IEFwcHJvdmFsUHJvY2VzcztcblxuICAgIC8qKiBEYXRhIHNvdXJjZSBmb3IgdGhlIHVzZXJzIG9mIEFwcHJvdmFsIEZsb3cgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpIHVzZXJEYXRhU291cmNlOiBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxBcHByb3ZhbFVzZXI+O1xuXG4gICAgLyoqIERhdGEgc291cmNlIGZvciB0aGUgd2F0Y2hlcnMgb2YgQXBwcm92YWwgRmxvdyBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgd2F0Y2hlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG5cbiAgICAvKiogRGF0YSBzb3VyY2UgZm9yIHRoZSB0ZWFtcyBvZiBBcHByb3ZhbCBGbG93IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcblxuICAgIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgdXNlciBkZXRhaWxzIHRlbXBsYXRlICovXG4gICAgQElucHV0KCkgdXNlckRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBBIHJlZmVyZW5jZSB0byB0aGUgYXBwIGN1c3RvbSBzdGF0dXNlcyAqL1xuICAgIEBJbnB1dCgpIGFwcHJvdmFsU3RhdHVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQ3VzdG9tIHN0YXR1cyB0byBjb2xvciBtYXBwaW5nICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhdHVzQ29sb3JNYXBwaW5nOiBSZWNvcmQ8QXBwcm92YWxTdGF0dXMsIE9iamVjdFN0YXR1cz47XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGR1ZSBkYXRlIHdhcm5pbmcgaW4gc3RhdHVzICovXG4gICAgQElucHV0KCkgY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogTnVtYmVyIG9mIGRheXMgYmVmb3JlIGR1ZSBkYXRlIHdoZW4gc3RhdHVzIGNoYW5nZXMgdG8gYHdhcm5pbmdgIHdpdGggdGV4dCAnRHVlIGluIFggZGF5cycuXG4gICAgICogIE5vdCB1c2VkIGlmICdjaGVja0R1ZURhdGUnIGVxdWFscyBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIGR1ZURhdGVUaHJlc2hvbGQgPSA3O1xuXG4gICAgLyoqIEEgbGlzdCBvZiBhcHByb3ZhbCBzdGF0dXNlcyB0aGF0IGFsbG93IHNlbmRpbmcgcmVtaW5kZXJzIHRvIHRoZWlyIGFwcHJvdmVycyAqL1xuICAgIEBJbnB1dCgpIGFsbG93U2VuZFJlbWluZGVyc0ZvclN0YXR1c2VzOiBBcHByb3ZhbFN0YXR1c1tdID0gWydpbiBwcm9ncmVzcycsICdub3Qgc3RhcnRlZCddO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGFwcHJvdmFsIGZsb3cgaXMgZWRpdGFibGUgKi9cbiAgICBASW5wdXQoKSBpc0VkaXRBdmFpbGFibGUgPSBmYWxzZTtcblxuICAgIC8qKiBUZXh0IGxhYmVsIGZvciB3YXRjaGVycyBsaXN0ICovXG4gICAgQElucHV0KCkgd2F0Y2hlcnNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYWJpbGl0eSB0byBhZGQgcGFyYWxsZWwgbm9kZXMgKi9cbiAgICBASW5wdXQoKSBhbGxvd0FkZFBhcmFsbGVsTm9kZXMgPSB0cnVlO1xuXG4gICAgLyoqIERpc2FibGVzIHNhdmUgYnV0dG9uLCBzYXZlIGJ1dHRvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIERpc2FibGVzIGV4aXQgYnV0dG9uLCBleGl0IGJ1dHRvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlRXhpdEJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZW50aXR5IGZvciB3aGljaCB1c2VycyBEYXRhUHJvdmlkZXIgd2lsbCBiZSBsb2FkZWQuXG4gICAgICogSW50ZXJuYWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyBsb29rdXAgdG8gc29tZSByZWdpc3RyeVxuICAgICAqIGFuZCByZXRyaWV2ZSB0aGUgYmVzdCBtYXRjaGluZyBEYXRhUHJvdmlkZXIgdGhhdCBpcyBzZXQgb24gYXBwbGljYXRpb24gbGV2ZWxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1c2Vyc0RhdGFQcm92aWRlckVudGl0eUtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGVudGl0eSBmb3Igd2hpY2ggdGVhbXMgRGF0YVByb3ZpZGVyIHdpbGwgYmUgbG9hZGVkLlxuICAgICAqIEludGVybmFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gbG9va3VwIHRvIHNvbWUgcmVnaXN0cnlcbiAgICAgKiBhbmQgcmV0cmlldmUgdGhlIGJlc3QgbWF0Y2hpbmcgRGF0YVByb3ZpZGVyIHRoYXQgaXMgc2V0IG9uIGFwcGxpY2F0aW9uIGxldmVsXG4gICAgICovXG4gICAgQElucHV0KCkgdGVhbXNEYXRhUHJvdmlkZXJFbnRpdHlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBlbnRpdHkgZm9yIHdoaWNoIGFwcHJvdmFsIGZsb3cgRGF0YVByb3ZpZGVyIHdpbGwgYmUgbG9hZGVkLlxuICAgICAqIEludGVybmFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gbG9va3VwIHRvIHNvbWUgcmVnaXN0cnlcbiAgICAgKiBhbmQgcmV0cmlldmUgdGhlIGJlc3QgbWF0Y2hpbmcgRGF0YVByb3ZpZGVyIHRoYXQgaXMgc2V0IG9uIGFwcGxpY2F0aW9uIGxldmVsXG4gICAgICovXG4gICAgQElucHV0KCkgd2F0Y2hlcnNEYXRhUHJvdmlkZXJFbnRpdHlLZXk/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTaG91bGQgcmVtb3ZlIHRoZSBzcGFjZSBub2RlIGZyb20gdGhlIGdyYXBoXG4gICAgICovXG4gICAgQElucHV0KCkgcmVtb3ZlU3BhY2VOb2RlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gYXBwcm92YWwgZmxvdyBub2RlIGNsaWNrLiAqL1xuICAgIEBPdXRwdXQoKSBub2RlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcHJvdmFsTm9kZT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIG9uIGFwcHJvdmFsIGZsb3cgbm9kZSBhZGQgKi9cbiAgICBAT3V0cHV0KCkgYWZ0ZXJOb2RlQWRkID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbE5vZGU+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCBvbiBhcHByb3ZhbCBmbG93IG5vZGUgZWRpdCAqL1xuICAgIEBPdXRwdXQoKSBhZnRlck5vZGVFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbE5vZGU+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVudmVyIHNhdmUgaXMgY2xpY2tlZCBpbiBlZGl0IG1vZGUgICovXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBcHByb3ZhbFByb2Nlc3M+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuZXZlciByZW1pbmRlcnMgc2hvdWxkIGJlIHNlbnQgKi9cbiAgICBAT3V0cHV0KCkgc2VuZFJlbWluZGVycyA9IG5ldyBFdmVudEVtaXR0ZXI8U2VuZFJlbWluZGVyc0RhdGE+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2dyYXBoQ29udGFpbmVyRWwnKSBfZ3JhcGhDb250YWluZXJFbDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2dyYXBoRWwnKSBfZ3JhcGhFbDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2dyaWRMaXN0JykgX2dyaWRMaXN0OiBHcmlkTGlzdENvbXBvbmVudDxBcHByb3ZhbEdyYXBoTm9kZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQXBwcm92YWxGbG93Tm9kZUNvbXBvbmVudCkgX25vZGVDb21wb25lbnRzOiBRdWVyeUxpc3Q8QXBwcm92YWxGbG93Tm9kZUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZhbFByb2Nlc3M6IEFwcHJvdmFsUHJvY2VzcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxBcHByb3ZhbFByb2Nlc3M/OiBBcHByb3ZhbFByb2Nlc3M7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcmV2aW91c0FwcHJvdmFsUHJvY2Vzcz86IEFwcHJvdmFsUHJvY2VzcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dyYXBoOiBBcHByb3ZhbEZsb3dHcmFwaDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzQ2Fyb3VzZWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dyYXBoTWV0YWRhdGE6IEFwcHJvdmFsR3JhcGhNZXRhZGF0YSA9IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNFZGl0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlcnNGb3JXYXRjaGVyc0xpc3Q6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFdhdGNoZXJJZHM6IEFwcHJvdmFsVXNlclsnaWQnXVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXNzYWdlczogQXBwcm92YWxGbG93TWVzc2FnZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9lbXB0eUFwcHJvdmFsRmxvd1Nwb3RDb25maWcgPSB7XG4gICAgICAgIHNwb3Q6IHsgdXJsOiAnJywgaWQ6ICdzYXBJbGx1cy1TcG90LU5vRGF0YScgfVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tdWx0aXBsZVJvb3ROb2RlcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbXVsdGlwbGVGaW5hbE5vZGVzID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kcmFnRHJvcEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8qKiBSZXR1cm5zIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IGFuZCBpbml0aWFsIHN0YXRlcyBvZiBhcHByb3ZhbCBwcm9jZXNzICovXG4gICAgZ2V0IGFwcHJvdmFsUHJvY2VzcygpOiBBcHByb3ZhbFByb2Nlc3Mge1xuICAgICAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zZWxlY3RlZE5vZGVzKCk6IEFwcHJvdmFsR3JhcGhOb2RlW10ge1xuICAgICAgICByZXR1cm4gZ2V0R3JhcGhOb2Rlcyh0aGlzLl9ncmFwaCkuZmlsdGVyKChub2RlKSA9PiBub2RlLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlckZuID0gZGlzcGxheVVzZXJGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJWYWx1ZUZuID0gdXNlclZhbHVlRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGFwcHJvdmFsRmxvd1VuaXF1ZUlkID0gYGZkcC1hcHByb3ZhbC1mbG93LSR7KytkZWZhdWx0SWR9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRXYXRjaGVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWRpdE1vZGVJbml0U3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFUQV9QUk9WSURFUlMpIHByaXZhdGUgcHJvdmlkZXJzOiBNYXA8c3RyaW5nLCBEYXRhUHJvdmlkZXI8YW55Pj4sXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0FwcHJvdmFsRmxvd0NvbXBvbmVudCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCByZWxlYXNlLicpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy51c2VyRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgY29uc3QgdXNlcnNEUCA9IHRoaXMudXNlcnNEYXRhUHJvdmlkZXJFbnRpdHlLZXkgJiYgdGhpcy5wcm92aWRlcnM/LmdldCh0aGlzLnVzZXJzRGF0YVByb3ZpZGVyRW50aXR5S2V5KTtcbiAgICAgICAgICAgIGlmICh1c2Vyc0RQKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyRGF0YVNvdXJjZSA9IG5ldyBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZSh1c2Vyc0RQKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHJlc29sdmUgdXNlcnMgZGF0YSBzb3VyY2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlckRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoZXJzRFAgPVxuICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hlcnNEYXRhUHJvdmlkZXJFbnRpdHlLZXkgJiYgdGhpcy5wcm92aWRlcnM/LmdldCh0aGlzLndhdGNoZXJzRGF0YVByb3ZpZGVyRW50aXR5S2V5KTtcbiAgICAgICAgICAgIGlmICh3YXRjaGVyc0RQKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YXRjaGVyRGF0YVNvdXJjZSA9IG5ldyBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZSh3YXRjaGVyc0RQKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHJlc29sdmUgd2F0Y2hlcnMgZGF0YSBzb3VyY2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGVhbURhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlYW1zRFAgPSB0aGlzLnRlYW1zRGF0YVByb3ZpZGVyRW50aXR5S2V5ICYmIHRoaXMucHJvdmlkZXJzPy5nZXQodGhpcy50ZWFtc0RhdGFQcm92aWRlckVudGl0eUtleSk7XG4gICAgICAgICAgICBpZiAodGVhbXNEUCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGVhbURhdGFTb3VyY2UgPSBuZXcgQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2UodGVhbXNEUCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRlYW1zIGRhdGEgc291cmNlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9saXN0ZW5PblJlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9zZXR1cERhdGFTb3VyY2VTdWJzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMudmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3MgPSB0aGlzLnZhbHVlID8/IHsgd2F0Y2hlcnM6IFtdLCBub2RlczogW10gfTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxBcHByb3ZhbFByb2Nlc3MgPSBzdHJ1Y3R1cmVkQ2xvbmUocHJvY2Vzcyk7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcocHJvY2Vzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy51c2VyRGF0YVNvdXJjZSB8fCBjaGFuZ2VzLndhdGNoZXJEYXRhU291cmNlIHx8IGNoYW5nZXMudGVhbURhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VkJC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNOZXh0Tm9kZUJsYW5rKG5vZGU6IEFwcHJvdmFsR3JhcGhOb2RlLCBjb2x1bW5JbmRleDogbnVtYmVyLCBub2RlSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbY29sdW1uSW5kZXggKyAxXT8ubm9kZXNbbm9kZUluZGV4XTtcbiAgICAgICAgY29uc3QgbmV4dE5vZGVCbGFuayA9IG5leHROb2RlPy5ibGFuaztcbiAgICAgICAgY29uc3QgbmV4dE5vZGVQYXJhbGxlbEVuZCA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbbmV4dE5vZGU/LmlkXT8ucGFyYWxsZWxFbmQ7XG5cbiAgICAgICAgcmV0dXJuICFub2RlLmJsYW5rICYmICEhbmV4dE5vZGVCbGFuayAmJiAhbmV4dE5vZGVQYXJhbGxlbEVuZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc0Nka0RyYWdEaXNhYmxlZChub2RlOiBBcHByb3ZhbEdyYXBoTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuX2lzRWRpdE1vZGUgfHwgbm9kZS5ibGFuayB8fCBub2RlLnNwYWNlIHx8IG5vZGUuc3RhdHVzICE9PSAnbm90IHN0YXJ0ZWQnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE5vZGUgY2xpY2sgaGFuZGxlciAqL1xuICAgIF9vbk5vZGVDbGljayhub2RlOiBBcHByb3ZhbE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RyYWdEcm9wSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuPEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0RpYWxvZ1JlZkRhdGE+KFxuICAgICAgICAgICAgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dTZW5kUmVtaW5kZXI6IHRoaXMuYWxsb3dTZW5kUmVtaW5kZXJzRm9yU3RhdHVzZXMuaW5jbHVkZXMobm9kZS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0RGlhbG9nT3B0aW9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZy5hZnRlckNsb3NlZC5zdWJzY3JpYmUoKHJlbWluZGVyVGFyZ2V0cykgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVtaW5kZXJUYXJnZXRzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VuZFJlbWluZGVycy5lbWl0KHsgdXNlcnM6IHJlbWluZGVyVGFyZ2V0cywgbm9kZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdChub2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk5vZGVBZGQobm9kZTogQXBwcm92YWxOb2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWZ0ZXJOb2RlQWRkLmVtaXQobm9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ob2RlRWRpdChub2RlOiBBcHByb3ZhbE5vZGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZnRlck5vZGVFZGl0LmVtaXQobm9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ob2RlU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBHcmlkTGlzdFNlbGVjdGlvbkV2ZW50PEFwcHJvdmFsR3JhcGhOb2RlPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncmFwaC5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29sdW1uLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBub2RlLnNlbGVjdGVkID0gISFldmVudC5zZWxlY3Rpb24uZmluZCgoX25vZGUpID0+IF9ub2RlLmlkID09PSBub2RlLmlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBXYXRjaGVyJ3MgYXZhdGFyIGNsaWNrIGhhbmRsZXIgKi9cbiAgICBfb25XYXRjaGVyQ2xpY2sod2F0Y2hlcjogQXBwcm92YWxVc2VyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuPEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0RpYWxvZ1JlZkRhdGE+KEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHdhdGNoZXIsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmYXVsdERpYWxvZ09wdGlvbnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpdmUgbWV0YWRhdGEgYnkgbm9kZSBpZCAqL1xuICAgIGdldE5vZGVNZXRhZGF0YUJ5Tm9kZUlkKG5vZGVJZDogc3RyaW5nKTogQXBwcm92YWxHcmFwaE5vZGVNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFwaE1ldGFkYXRhW25vZGVJZF07XG4gICAgfVxuXG4gICAgLyoqIFNjcm9sbCB0byB0aGUgbmV4dCBob3Jpem9udGFsIHNsaWRlICovXG4gICAgbmV4dFNsaWRlKGRpciA9IDEpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gMTtcblxuICAgICAgICBsZXQgcG9zOiBudW1iZXI7XG5cbiAgICAgICAgaWYgKGRpciA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgbGFzdFN0ZXAgPSB0aGlzLl9jYXJvdXNlbFN0ZXBzUmlnaHQgPT09IDE7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuX2Nhcm91c2VsU3RlcHNDb3VudCAtIHRoaXMuX2Nhcm91c2VsU3RlcHNSaWdodCArIDE7XG4gICAgICAgICAgICBjb25zdCB2aXNpYmxlUmlnaHRQb2ludCA9IHRoaXMuX2Nhcm91c2VsU3RlcFNpemUgKiBuZXh0U3RlcCArIChsYXN0U3RlcCA/IDAgOiB0aHJlc2hvbGQpO1xuICAgICAgICAgICAgcG9zID0gdmlzaWJsZVJpZ2h0UG9pbnQgLSB0aGlzLl9ncmFwaEVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U3RlcCA9IHRoaXMuX2Nhcm91c2VsU3RlcHNMZWZ0ID09PSAxO1xuICAgICAgICAgICAgY29uc3QgbmV4dFN0ZXAgPSB0aGlzLl9jYXJvdXNlbFN0ZXBzTGVmdCAtIDE7XG4gICAgICAgICAgICBwb3MgPSB0aGlzLl9jYXJvdXNlbFN0ZXBTaXplICogbmV4dFN0ZXAgLSAobGFzdFN0ZXAgPyAwIDogdGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldFNjcm9sbFBvc2l0aW9uKHBvcyk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTY3JvbGxQb3NpdGlvbihwb3M6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncmFwaENvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgbGVmdDogcG9zLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEhhbmRsZSBub2RlIGtleWRvd24gYW5kIGZvY3VzIG90aGVyIG5vZGUgYmFzZWQgb24gd2hpY2gga2V5IGlzIHByZXNzZWQgKi9cbiAgICBfb25Ob2RlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgbm9kZTogQXBwcm92YWxHcmFwaE5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1VQX0FSUk9XLCBET1dOX0FSUk9XLCBSSUdIVF9BUlJPVywgTEVGVF9BUlJPV10pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG5vZGVJbmRleCwgY29sdW1uSW5kZXggfSA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbbm9kZS5pZF07XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBsZXQgbmV4dEZvY3VzVGFyZ2V0OiBBcHByb3ZhbEdyYXBoTm9kZSB8IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodHlwZW9mIG5vZGVJbmRleCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbHVtbkluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0Rm9jdXNUYXJnZXQgPSB0aGlzLl9nZXROZXh0VmVydGljYWxOb2RlKG5vZGVJbmRleCwgY29sdW1uSW5kZXgsICd1cCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgbmV4dEZvY3VzVGFyZ2V0ID0gdGhpcy5fZ2V0TmV4dFZlcnRpY2FsTm9kZShub2RlSW5kZXgsIGNvbHVtbkluZGV4LCAnZG93bicpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBuZXh0Rm9jdXNUYXJnZXQgPSB0aGlzLl9nZXROZXh0SG9yaXpvbnRhbE5vZGUobm9kZUluZGV4LCBjb2x1bW5JbmRleCwgdGhpcy5fcnRsID8gJ3JpZ2h0JyA6ICdsZWZ0Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBuZXh0Rm9jdXNUYXJnZXQgPSB0aGlzLl9nZXROZXh0SG9yaXpvbnRhbE5vZGUobm9kZUluZGV4LCBjb2x1bW5JbmRleCwgdGhpcy5fcnRsID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dEZvY3VzVGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c05vZGUobmV4dEZvY3VzVGFyZ2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZldGNoIGFsbCBuZWNlc3NhcnkgZGF0YSBhbmQgZW50ZXIgZWRpdCBtb2RlICovXG4gICAgX2VudGVyRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIC8vIHRoZXJlJ3Mgbm8gc3VwcG9ydCBmb3Igc2VhcmNoaW5nIGluIG11bHRpLWlucHV0LCBzbyBncmFiYmluZyBhbGwgd2F0Y2hlcnNcbiAgICAgICAgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpbiBkYXRhIHNvdXJjZXNcbiAgICAgICAgdGhpcy53YXRjaGVyRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICB0aGlzLl9lZGl0TW9kZUluaXRTdWIgPSB0aGlzLndhdGNoZXJEYXRhU291cmNlLm9wZW4oKS5zdWJzY3JpYmUoKHdhdGNoZXJzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91c2Vyc0ZvcldhdGNoZXJzTGlzdCA9IHdhdGNoZXJzO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRXYXRjaGVycyA9IHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy53YXRjaGVycztcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkV2F0Y2hlcklkcyA9IHRoaXMuX3NlbGVjdGVkV2F0Y2hlcnMubWFwKCh3KSA9PiB3LmlkKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRWRpdE1vZGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbEFwcHJvdmFsUHJvY2VzcyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX2VkaXRNb2RlSW5pdFN1Yik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2VuZCB1cGRhdGUgYXBwcm92YWwgcHJvY2VzcyBjYWxscyB0byBEYXRhU291cmNlIGFuZCBleGl0IGVkaXQgbW9kZSovXG4gICAgX3NhdmVFZGl0TW9kZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRNb2RlSW5pdFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53YXRjaGVyRGF0YVNvdXJjZS5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYWxBcHByb3ZhbFByb2Nlc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2lzRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYXBwcm92YWxQcm9jZXNzLFxuICAgICAgICAgICAgd2F0Y2hlcnM6IHRoaXMuX3NlbGVjdGVkV2F0Y2hlcnNcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9idWlsZFZpZXcodXBkYXRlZCk7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHVwZGF0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlc3RvcmUgaW5pdGlhbCBhcHByb3ZhbCBmbG93IHN0YXRlIGFuZCBleGl0IGVkaXQgbW9kZSAqL1xuICAgIF9leGl0RWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VkaXRNb2RlSW5pdFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53YXRjaGVyRGF0YVNvdXJjZS5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2VzcyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9pbml0aWFsQXBwcm92YWxQcm9jZXNzISk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxBcHByb3ZhbFByb2Nlc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2lzRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTtcblxuICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF93YXRjaGVyc1NlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRJZHM6IEFwcHJvdmFsVXNlclsnaWQnXVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlkc1NldCA9IG5ldyBTZXQoc2VsZWN0ZWRJZHMpO1xuICAgICAgICAvLyB1cGRhdGluZyB3YXRjaGVycyBzZWxlY3Rpb25cbiAgICAgICAgLy8gc2luY2UgaXQncyBwb3NzaWJsZSBcIl91c2Vyc0ZvcldhdGNoZXJzTGlzdFwiIG1pZ2h0IG5vdCBjb250YWluIGFsbCBzZWxlY3RlZCB2YWx1ZXMsXG4gICAgICAgIC8vIGRldGVybWluZSBjdXJyZW50IHNlbGVjdGlvbiBiYXNlZCBvbiB3aGF0J3MgYWxyZWFkeSBzZWxlY3RlZCBhbmQgXCJfdXNlcnNGb3JXYXRjaGVyc0xpc3RcIlxuICAgICAgICB0aGlzLl9zZWxlY3RlZFdhdGNoZXJzID0gdW5pcUJ5KFxuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRXYXRjaGVycy5jb25jYXQodGhpcy5fdXNlcnNGb3JXYXRjaGVyc0xpc3QpLmZpbHRlcigodXNlcikgPT4gaWRzU2V0Lmhhcyh1c2VyLmlkKSksXG4gICAgICAgICAgICAodSkgPT4gdS5pZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlc3RvcmUgcHJldmlvdXNseSBzYXZlZCBhcHByb3ZhbCBwcm9jZXNzIHN0YXRlICovXG4gICAgX3VuZG9MYXN0QWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3MgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5fcHJldmlvdXNBcHByb3ZhbFByb2Nlc3MhKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNBcHByb3ZhbFByb2Nlc3MgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fYnVpbGRWaWV3KHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT3BlbiBhZGQgbm9kZSBkaWFsb2cgKi9cbiAgICBfYWRkTm9kZShzb3VyY2U6IEFwcHJvdmFsR3JhcGhOb2RlLCB0eXBlOiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNob3dOb2RlVHlwZVNlbGVjdCA9IHR5cGUgPT09ICdiZWZvcmUnICYmICFzb3VyY2UuYWN0aW9uc0NvbmZpZz8uZGlzYWJsZUFkZFBhcmFsbGVsO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbjxBZGROb2RlRGlhbG9nUmVmRGF0YT4oXG4gICAgICAgICAgICBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVRhcmdldDogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd05vZGVUeXBlU2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICBub2RlOiBPYmplY3QuYXNzaWduKGdldEJsYW5rQXBwcm92YWxHcmFwaE5vZGUoKSwgeyBibGFuazogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrRHVlRGF0ZTogdGhpcy5jaGVja0R1ZURhdGUsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZmF1bHREaWFsb2dPcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGF0YTogQWRkTm9kZURpYWxvZ0Zvcm1EYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgbm9kZSwgbm9kZVR5cGUsIHRvTmV4dFNlcmlhbCB9ID0gZGF0YTtcblxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTtcblxuICAgICAgICAgICAgbm9kZS5pZCA9IGB0ZW1wSWQkeyhNYXRoLnJhbmRvbSgpICogMTAwMCkudG9GaXhlZCgpfWA7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW50ZXJFZGl0TW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlNFUklBTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YXJnZXRzID0gW3NvdXJjZS5pZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXBsYWNlVGFyZ2V0cyhzb3VyY2UuaWQsIFtub2RlLmlkXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5QQVJBTExFTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0FkZGluZ1BhcmFsbGVsTm9kZShub2RlLCBzb3VyY2UsIHRvTmV4dFNlcmlhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2JlZm9yZS1hbGwnOlxuICAgICAgICAgICAgICAgICAgICBub2RlLnRhcmdldHMgPSB0aGlzLl9ncmFwaC5jb2x1bW5zWzBdLm5vZGVzLm1hcCgoX25vZGUpID0+IF9ub2RlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0cyA9IHNvdXJjZS50YXJnZXRzO1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGFyZ2V0cyA9IFtub2RlLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdhZnRlci1hbGwnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBhcmVudHMgPSB0aGlzLl9ncmFwaE1ldGFkYXRhW3NvdXJjZS50YXJnZXRzWzBdXT8ucGFyZW50cztcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0UGFyZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS50YXJnZXRzID0gc291cmNlLnRhcmdldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXBsYWNlVGFyZ2V0cyhzb3VyY2UuaWQsIFtub2RlLmlkXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2RlcyA9IHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ub2RlKSA9PiBfbm9kZS5pZCAhPT0gc291cmNlLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JhcGguY29sdW1uc1t0aGlzLl9ncmFwaC5jb2x1bW5zLmxlbmd0aCAtIDFdLm5vZGVzLmZvckVhY2goKF9ub2RlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub2RlLnRhcmdldHMucHVzaChub2RlLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdwYXJhbGxlbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NBZGRpbmdQYXJhbGxlbE5vZGUobm9kZSwgc291cmNlLCB0b05leHRTZXJpYWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc2hvd01lc3NhZ2Uobm9kZS5hcHByb3ZhbFRlYW1JZCA/ICd0ZWFtQWRkU3VjY2VzcycgOiAnYXBwcm92ZXJBZGRTdWNjZXNzJyk7XG4gICAgICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMucHVzaChub2RlKTtcblxuICAgICAgICAgICAgdGhpcy5fYnVpbGRWaWV3KHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgICAgICAgICB0aGlzLl9vbk5vZGVBZGQobm9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW4gZWRpdCBub2RlIGRpYWxvZyAqL1xuICAgIF9lZGl0Tm9kZShub2RlOiBBcHByb3ZhbE5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuPEFkZE5vZGVEaWFsb2dSZWZEYXRhPihcbiAgICAgICAgICAgIEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBpc0VkaXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IE9iamVjdC5hc3NpZ24oe30sIG5vZGUpLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0R1ZURhdGU6IHRoaXMuY2hlY2tEdWVEYXRlLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWZhdWx0RGlhbG9nT3B0aW9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZy5hZnRlckNsb3NlZC5zdWJzY3JpYmUoKGRhdGE6IHsgbm9kZTogQXBwcm92YWxOb2RlIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWROb2RlID0gZGF0YT8ubm9kZTtcblxuICAgICAgICAgICAgaWYgKCF1cGRhdGVkTm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FjaGVDdXJyZW50QXBwcm92YWxQcm9jZXNzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVOb2RlKHVwZGF0ZWROb2RlKTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dNZXNzYWdlKCdub2RlRWRpdCcpO1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRWaWV3KHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG4gICAgICAgICAgICB0aGlzLl9vbk5vZGVFZGl0KG5vZGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBcIkRlbGV0ZVwiIGJ1dHRvbiBjbGljayBoYW5kbGVyICovXG4gICAgX29uTm9kZURlbGV0ZShub2RlVG9EZWxldGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTtcbiAgICAgICAgdGhpcy5fZGVsZXRlTm9kZShub2RlVG9EZWxldGUpO1xuICAgICAgICB0aGlzLl9zaG93TWVzc2FnZShub2RlVG9EZWxldGUuYXBwcm92YWxUZWFtSWQgPyAndGVhbVJlbW92ZScgOiAnbm9kZVJlbW92ZScpO1xuICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kZWxldGVTZWxlY3RlZE5vZGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWNoZUN1cnJlbnRBcHByb3ZhbFByb2Nlc3MoKTtcblxuICAgICAgICBjb25zdCBub2Rlc1RvRGVsZXRlID0gdGhpcy5fbm9kZUNvbXBvbmVudHNcbiAgICAgICAgICAgIC5maWx0ZXIoKG5vZGVDb21wb25lbnQpID0+IG5vZGVDb21wb25lbnQuX2lzU2VsZWN0ZWQpXG4gICAgICAgICAgICAubWFwKChub2RlQ29tcG9uZW50KSA9PiBub2RlQ29tcG9uZW50Lm5vZGUpO1xuXG4gICAgICAgIG5vZGVzVG9EZWxldGUuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGVsZXRlTm9kZShub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2J1aWxkVmlldyh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zaG93TWVzc2FnZSgnbm9kZXNSZW1vdmUnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBOb2RlIGRyYWcgbW92ZSBoYW5kbGVyLCB1c2VkIHRvIGNoZWNrIGlmIG5lZWQgdG8gaGlnaGxpZ2h0IGEgZHJvcCB6b25lIHJlY3RhbmdsZSAqL1xuICAgIF9vbk5vZGVEcmFnTW92ZWQobm9kZTogQXBwcm92YWxHcmFwaE5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZHJhZ2dlZE5vZGVEaW1lbnNpb25zID0gdGhpcy5fbm9kZUNvbXBvbmVudHNcbiAgICAgICAgICAgIC5maW5kKChjb21wKSA9PiBjb21wLm5vZGUgPT09IG5vZGUpXG4gICAgICAgICAgICA/Ll9uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmICghZHJhZ2dlZE5vZGVEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ub2RlQ29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQubm9kZSAhPT0gbm9kZSAmJiBCb29sZWFuKGNvbXBvbmVudC5fZHJvcFpvbmVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuX2NoZWNrSWZOb2RlRHJhZ2dlZEluRHJvcFpvbmUoZHJhZ2dlZE5vZGVEaW1lbnNpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXNOb2RlKG5vZGU6IEFwcHJvdmFsR3JhcGhOb2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGVUb0ZvY3VzID0gdGhpcy5fbm9kZUNvbXBvbmVudHMuZmluZCgoY29tcCkgPT4gY29tcC5ub2RlID09PSBub2RlKTtcblxuICAgICAgICBpZiAoIW5vZGVUb0ZvY3VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW92ZUNvbEluVmlldyhub2RlLmNvbEluZGV4ID8/IDApO1xuICAgICAgICBub2RlVG9Gb2N1cy5fZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE5vZGUgZHJvcCBoYW5kbGVyICovXG4gICAgX29uTm9kZURyb3Aobm9kZVRvRHJvcDogQXBwcm92YWxHcmFwaE5vZGUsIGRyYWc6IENka0RyYWcpOiB2b2lkIHtcbiAgICAgICAgZHJhZy5yZXNldCgpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuX2RyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlKSk7XG5cbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IHRoaXMuX25vZGVDb21wb25lbnRzLmZpbmQoKG4pID0+IG4uX2lzQW55RHJvcFpvbmVBY3RpdmUpO1xuXG4gICAgICAgIGlmICghZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FjaGVDdXJyZW50QXBwcm92YWxQcm9jZXNzKCk7XG5cbiAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gZHJvcFRhcmdldC5fYWN0aXZlRHJvcFpvbmVzWzBdLnBsYWNlbWVudDtcblxuICAgICAgICB0aGlzLl9ub2RlQ29tcG9uZW50cy5mb3JFYWNoKChuKSA9PiBuLl9kZWFjdGl2YXRlRHJvcFpvbmVzKCkpO1xuXG4gICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdhZnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGV0ZU5vZGUobm9kZVRvRHJvcCk7XG4gICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcblxuICAgICAgICAgICAgY29uc3QgbmV4dE5vZGUgPSBnZXRHcmFwaE5vZGVzKHRoaXMuX2dyYXBoKS5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBkcm9wVGFyZ2V0Lm5vZGUudGFyZ2V0c1swXSk7XG5cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZT8uYmxhbmspIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5leHROb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZVRvRHJvcC50YXJnZXRzID1cbiAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gZHJvcFRhcmdldC5ub2RlLmlkKT8udGFyZ2V0cyA/PyBbXTtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQubm9kZS50YXJnZXRzID0gW25vZGVUb0Ryb3AuaWRdO1xuXG4gICAgICAgICAgICB0aGlzLl9maW5pc2hEcmFnRHJvcFByb2Nlc3Mobm9kZVRvRHJvcCk7XG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ID09PSAnYmVmb3JlJykge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKEFwcHJvdmFsRmxvd1NlbGVjdFR5cGVDb21wb25lbnQsIHVuZGVmaW5lZCwgdGhpcy5faW5qZWN0b3IpO1xuXG4gICAgICAgICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBTZWxlY3RUeXBlRGlhbG9nRm9ybURhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgdG9OZXh0U2VyaWFsIH0gPSBkYXRhO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlTm9kZShub2RlVG9Ecm9wKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMuU0VSSUFMKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlcGxhY2VUYXJnZXRzKGRyb3BUYXJnZXQubm9kZS5pZCwgW25vZGVUb0Ryb3AuaWRdKTtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVRvRHJvcC50YXJnZXRzID0gW2Ryb3BUYXJnZXQubm9kZS5pZF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5QQVJBTExFTCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzQWRkaW5nUGFyYWxsZWxOb2RlKG5vZGVUb0Ryb3AsIGRyb3BUYXJnZXQubm9kZSwgdG9OZXh0U2VyaWFsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hEcmFnRHJvcFByb2Nlc3Mobm9kZVRvRHJvcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT09ICdiZWZvcmUtYWxsJykge1xuICAgICAgICAgICAgdGhpcy5fZGVsZXRlTm9kZShub2RlVG9Ecm9wKTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDb2x1bW5Ob2RlcyA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbMF0ubm9kZXM7XG4gICAgICAgICAgICBub2RlVG9Ecm9wLnRhcmdldHMgPSBmaXJzdENvbHVtbk5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5pZCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2ZpbmlzaERyYWdEcm9wUHJvY2Vzcyhub2RlVG9Ecm9wKTtcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT09ICdhZnRlci1hbGwnKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWxldGVOb2RlKG5vZGVUb0Ryb3ApO1xuICAgICAgICAgICAgdGhpcy5fYnVpbGRWaWV3KHRoaXMuX2FwcHJvdmFsUHJvY2Vzcyk7XG5cbiAgICAgICAgICAgIG5vZGVUb0Ryb3AudGFyZ2V0cyA9IFsuLi5kcm9wVGFyZ2V0Lm5vZGUudGFyZ2V0c107XG5cbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Lm5vZGUudGFyZ2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q29sdW1uTm9kZXMgPSB0aGlzLl9ncmFwaC5jb2x1bW5zW3RoaXMuX2dyYXBoLmNvbHVtbnMubGVuZ3RoIC0gMV0ubm9kZXM7XG4gICAgICAgICAgICAgICAgbGFzdENvbHVtbk5vZGVzLmZvckVhY2goKG5vZGUpID0+IG5vZGUudGFyZ2V0cy5wdXNoKG5vZGVUb0Ryb3AuaWQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzID0gdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKG5vZGUpID0+IG5vZGUuaWQgIT09IGRyb3BUYXJnZXQubm9kZS5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVwbGFjZVRhcmdldHMoZHJvcFRhcmdldC5ub2RlLmlkLCBbbm9kZVRvRHJvcC5pZF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9maW5pc2hEcmFnRHJvcFByb2Nlc3Mobm9kZVRvRHJvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vdmVDb2xJblZpZXcoY29sSW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9ncmFwaEVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bY29sSW5kZXhdLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgeDogbm9kZVgsIHdpZHRoIH0gPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGRlbHRhID0gdGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLng7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IG5vZGVYIC0gZGVsdGE7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuXG4gICAgICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2Nyb2xsUG9zaXRpb24odGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKyBsZWZ0KTtcbiAgICAgICAgfSBlbHNlIGlmIChyaWdodCA+IHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2Nyb2xsUG9zaXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKyByaWdodCAtIHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluaXNoRHJhZ0Ryb3BQcm9jZXNzKG5vZGVUb0Ryb3A6IEFwcHJvdmFsR3JhcGhOb2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5wdXNoKG5vZGVUb0Ryb3ApO1xuICAgICAgICB0aGlzLl9idWlsZFZpZXcodGhpcy5fYXBwcm92YWxQcm9jZXNzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dNZXNzYWdlKHR5cGU6IEFwcHJvdmFsRmxvd01lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW3sgdHlwZSB9XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBCdWlsZCBBcHByb3ZhbCBGbG93IGdyYXBoIGFuZCByZW5kZXIgaXQgKi9cbiAgICBwcml2YXRlIF9idWlsZFZpZXcoYXBwcm92YWxQcm9jZXNzOiBBcHByb3ZhbFByb2Nlc3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHByb3ZhbFByb2Nlc3Mubm9kZXMpIHtcbiAgICAgICAgICAgIGFwcHJvdmFsUHJvY2Vzcy5ub2RlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYXBwcm92YWxQcm9jZXNzLndhdGNoZXJzKSB7XG4gICAgICAgICAgICBhcHByb3ZhbFByb2Nlc3Mud2F0Y2hlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3MgPSBhcHByb3ZhbFByb2Nlc3M7XG4gICAgICAgIHRoaXMuX2dyYXBoID0gZ2VuZXJhdGVBcHByb3ZhbEZsb3dHcmFwaCh0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMpO1xuXG4gICAgICAgIGlmICh0aGlzLnJlbW92ZVNwYWNlTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZ3JhcGguY29sdW1ucyA9IHRoaXMucmVtb3ZlU3BhY2VOb2Rlc0Zyb21Db2x1bW5zKHRoaXMuX2dyYXBoLmNvbHVtbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2dyYXBoLmVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5fc2hvd01lc3NhZ2UoJ2Vycm9yJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ncmFwaE1ldGFkYXRhID0gZ2VuZXJhdGVBcHByb3ZhbEZsb3dHcmFwaE1ldGFkYXRhKHRoaXMuX2dyYXBoKTtcblxuICAgICAgICBjb25zdCBub2RlcyA9IGdldEdyYXBoTm9kZXModGhpcy5fZ3JhcGgpO1xuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMgPSBub2Rlcy5maWx0ZXIoKG5vZGUpID0+ICFub2RlLnNwYWNlKTtcbiAgICAgICAgdGhpcy5fbXVsdGlwbGVSb290Tm9kZXMgPSBub2Rlcy5maWx0ZXIoKG5vZGUpID0+IHRoaXMuX2dyYXBoTWV0YWRhdGFbbm9kZS5pZF0uaXNSb290KS5sZW5ndGggPiAxO1xuICAgICAgICB0aGlzLl9tdWx0aXBsZUZpbmFsTm9kZXMgPSBub2Rlcy5maWx0ZXIoKG5vZGUpID0+IHRoaXMuX2dyYXBoTWV0YWRhdGFbbm9kZS5pZF0uaXNGaW5hbCkubGVuZ3RoID4gMTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9ncmlkTGlzdD8uY2xlYXJTZWxlY3Rpb24oKTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNjcm9sbFBvc2l0aW9uKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIHdpbmRvdyByZXNpemUgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIG1lcmdlKGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKSwgZnJvbUV2ZW50KHRoaXMuX2dyYXBoQ29udGFpbmVyRWwubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVXBkYXRlIG5vZGUgb2JqZWN0IGluIGxvY2FsIGFwcHJvdmFsIHByb2Nlc3MgZGF0YSBzdHJ1Y3R1cmUgKi9cbiAgICBwcml2YXRlIF91cGRhdGVOb2RlKG5vZGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2RlSW5kZXggPSB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZmluZEluZGV4KChuKSA9PiBuLmlkID09PSBub2RlLmlkKTtcblxuICAgICAgICBpZiAobm9kZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlc1tub2RlSW5kZXhdID0gbm9kZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlbGV0ZSBub2RlIG9iamVjdCBpbiBsb2NhbCBhcHByb3ZhbCBwcm9jZXNzIGRhdGEgc3RydWN0dXJlICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlTm9kZShub2RlVG9EZWxldGU6IEFwcHJvdmFsTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBub2Rlc1RvRGVsZXRlID0gW25vZGVUb0RlbGV0ZV07XG4gICAgICAgIGNvbnN0IGdyYXBoTm9kZXMgPSBnZXRHcmFwaE5vZGVzKHRoaXMuX2dyYXBoKTtcbiAgICAgICAgbGV0IGN1cnJOb2RlID0gZ3JhcGhOb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBub2RlVG9EZWxldGUuaWQpO1xuICAgICAgICBsZXQgbmV4dE5vZGU6IEFwcHJvdmFsR3JhcGhOb2RlIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmIChjdXJyTm9kZT8udGFyZ2V0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBuZXh0Tm9kZSA9IGdyYXBoTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY3Vyck5vZGU/LnRhcmdldHNbMF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5leHROb2RlPy5ibGFuayAmJiB0aGlzLl9ncmFwaE1ldGFkYXRhW25leHROb2RlLmlkXS5wYXJlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1RvRGVsZXRlLnB1c2gobmV4dE5vZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1cnJOb2RlID0gbmV4dE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIG5leHROb2RlID0gZ3JhcGhOb2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBjdXJyTm9kZT8udGFyZ2V0c1swXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChuZXh0Tm9kZT8uYmxhbmsgJiYgdGhpcy5fZ3JhcGhNZXRhZGF0YVtuZXh0Tm9kZS5pZF0ucGFyZW50cy5sZW5ndGggPT09IDEpO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbbm9kZVRvRGVsZXRlLmlkXS5wYXJlbnRzWzBdO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBub2RlVG9EZWxldGUudGFyZ2V0c1swXTtcbiAgICAgICAgY29uc3QgaXNQYXJlbnRQYXJhbGxlbFN0YXJ0ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtwYXJlbnQ/LmlkXT8ucGFyYWxsZWxTdGFydDtcbiAgICAgICAgY29uc3QgaXNUYXJnZXRQYXJhbGxlbEVuZCA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbdGFyZ2V0XT8ucGFyYWxsZWxFbmQ7XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPVxuICAgICAgICAgICAgKGlzUGFyZW50UGFyYWxsZWxTdGFydCAmJiBpc1RhcmdldFBhcmFsbGVsRW5kKSB8fCBub2Rlc1RvRGVsZXRlLmxlbmd0aCA+IDEgPyBbXSA6IChjdXJyTm9kZT8udGFyZ2V0cyA/PyBbXSk7XG5cbiAgICAgICAgdGhpcy5fcmVwbGFjZVRhcmdldHMobm9kZVRvRGVsZXRlLmlkLCB0YXJnZXRzKTtcblxuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMgPSB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZmlsdGVyKChub2RlKSA9PiAhbm9kZXNUb0RlbGV0ZS5pbmNsdWRlcyhub2RlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hZGRQYXJhbGxlbFRhcmdldHModGFyZ2V0Tm9kZUlkOiBzdHJpbmcsIG5vZGVJZFRvQWRkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXBwcm92YWxQcm9jZXNzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChpc05vZGVUYXJnZXRzSW5jbHVkZUlkKG5vZGUsIHRhcmdldE5vZGVJZCkpIHtcbiAgICAgICAgICAgICAgICBub2RlLnRhcmdldHMucHVzaChub2RlSWRUb0FkZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIFwiaWRUb1JlcGxhY2VcIiBpbiBhbGwgbm9kZXMnIFwidGFyZ2V0c1wiIHdpdGggb25lcyBpbiBcInJlcGxhY2VXaXRoXCIgYXJyYXkgKi9cbiAgICBwcml2YXRlIF9yZXBsYWNlVGFyZ2V0cyhJZFRvUmVwbGFjZTogc3RyaW5nLCByZXBsYWNlV2l0aElkOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hcHByb3ZhbFByb2Nlc3Mubm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm9kZVRhcmdldHNJbmNsdWRlSWQobiwgSWRUb1JlcGxhY2UpKSB7XG4gICAgICAgICAgICAgICAgbi50YXJnZXRzID0gbi50YXJnZXRzLmZpbHRlcigoX2lkKSA9PiBfaWQgIT09IElkVG9SZXBsYWNlKTtcbiAgICAgICAgICAgICAgICBuLnRhcmdldHMucHVzaCguLi5yZXBsYWNlV2l0aElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2F2ZSBjdXJyZW50IHN0YXRlIG9mIGFwcHJvdmFsIHByb2Nlc3MgZGF0YSB0byBiZSBhYmxlIHRvIHVuZG8gYW4gYWN0aW9uIG1hZGUgaW4gZWRpdCBtb2RlICovXG4gICAgcHJpdmF0ZSBfY2FjaGVDdXJyZW50QXBwcm92YWxQcm9jZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmV2aW91c0FwcHJvdmFsUHJvY2VzcyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9hcHByb3ZhbFByb2Nlc3MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmV4dEhvcml6b250YWxOb2RlID0gKFxuICAgICAgICBub2RlSW5kZXg6IG51bWJlcixcbiAgICAgICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICAgICAgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogQXBwcm92YWxHcmFwaE5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICBjb25zdCBpbmRleERpZmYgPSBkaXJlY3Rpb24gPT09ICdyaWdodCcgPyAxIDogLTE7XG4gICAgICAgIGNvbnN0IG5leHRDb2x1bW4gPSB0aGlzLl9ncmFwaC5jb2x1bW5zW2NvbHVtbkluZGV4ICsgaW5kZXhEaWZmXTtcbiAgICAgICAgY29uc3QgbmV4dE5vZGUgPSBuZXh0Q29sdW1uPy5ub2Rlc1tub2RlSW5kZXhdO1xuXG4gICAgICAgIGlmICghbmV4dE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dE5vZGUuYmxhbmsgfHwgbmV4dE5vZGUuc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXROZXh0SG9yaXpvbnRhbE5vZGUobm9kZUluZGV4LCBjb2x1bW5JbmRleCArIGluZGV4RGlmZiwgZGlyZWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXROZXh0VmVydGljYWxOb2RlID0gKFxuICAgICAgICBub2RlSW5kZXg6IG51bWJlcixcbiAgICAgICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICAgICAgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nXG4gICAgKTogQXBwcm92YWxHcmFwaE5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICBjb25zdCBpbmRleERpZmYgPSBkaXJlY3Rpb24gPT09ICdkb3duJyA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgY3VyckNvbHVtbiA9IHRoaXMuX2dyYXBoLmNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IGN1cnJDb2x1bW4ubm9kZXNbbm9kZUluZGV4ICsgaW5kZXhEaWZmXTtcblxuICAgICAgICBpZiAoIW5leHROb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHROb2RlLmJsYW5rIHx8IG5leHROb2RlLnNwYWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0TmV4dFZlcnRpY2FsTm9kZShub2RlSW5kZXggKyBpbmRleERpZmYsIGNvbHVtbkluZGV4LCBkaXJlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9jYXJvdXNlbFN0ZXBTaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFwaEVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGggLyB0aGlzLl9jYXJvdXNlbFN0ZXBzQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Njcm9sbERpZmYoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLl9ncmFwaEVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGhFbC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoIC0gdGhpcy5fZ3JhcGhFbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9jYXJvdXNlbFN0ZXBzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoRWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2Nhcm91c2VsU3RlcHNMZWZ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgLyB0aGlzLl9jYXJvdXNlbFN0ZXBTaXplKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfY2Fyb3VzZWxTdGVwc1JpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoXG4gICAgICAgICAgICAodGhpcy5fc2Nyb2xsRGlmZiAtIE1hdGgucm91bmQodGhpcy5fZ3JhcGhDb250YWluZXJFbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQpKSAvIHRoaXMuX2Nhcm91c2VsU3RlcFNpemVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9kZWZhdWx0RGlhbG9nT3B0aW9ucygpOiBEZWZhdWx0RGlhbG9nT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZWFtRGF0YVNvdXJjZTogdGhpcy50ZWFtRGF0YVNvdXJjZSxcbiAgICAgICAgICAgIHVzZXJEYXRhU291cmNlOiB0aGlzLnVzZXJEYXRhU291cmNlLFxuICAgICAgICAgICAgdXNlckRldGFpbHNUZW1wbGF0ZTogdGhpcy51c2VyRGV0YWlsc1RlbXBsYXRlLFxuICAgICAgICAgICAgcnRsOiB0aGlzLl9ydGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpbmRTZXJpYWxOb2RlKHlJbmRleD86IG51bWJlciwgdGFyZ2V0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB0YXJnZXRJc1BhcmVudCA9XG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKHlJbmRleCkgJiZcbiAgICAgICAgICAgIHRhcmdldHM/LnNvbWUoKHRhcmdldElkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUluZGV4ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVt0YXJnZXRJZF0/Lm5vZGVJbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihub2RlSW5kZXgpICYmIG5vZGVJbmRleCEgPD0geUluZGV4ISAtIDE7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFyZ2V0SXNQYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRzID8/IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuX2FwcHJvdmFsUHJvY2Vzcy5ub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSB0YXJnZXRzPy5bMF0pO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmluZFNlcmlhbE5vZGUoeUluZGV4LCB0YXJnZXROb2RlPy50YXJnZXRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NBZGRpbmdQYXJhbGxlbE5vZGUoXG4gICAgICAgIGFkZGVkTm9kZTogQXBwcm92YWxHcmFwaE5vZGUsXG4gICAgICAgIHNvdXJjZU5vZGU6IEFwcHJvdmFsR3JhcGhOb2RlLFxuICAgICAgICB0b05leHRTZXJpYWwgPSBmYWxzZVxuICAgICk6IHZvaWQge1xuICAgICAgICBhZGRlZE5vZGUudGFyZ2V0cyA9IHNvdXJjZU5vZGUudGFyZ2V0cztcblxuICAgICAgICB0aGlzLl9hZGRQYXJhbGxlbFRhcmdldHMoc291cmNlTm9kZS5pZCwgYWRkZWROb2RlLmlkKTtcblxuICAgICAgICBpZiAodG9OZXh0U2VyaWFsKSB7XG4gICAgICAgICAgICBsZXQgeUluZGV4ID0gdGhpcy5fZ3JhcGhNZXRhZGF0YVtzb3VyY2VOb2RlLmlkXS5ub2RlSW5kZXg7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0cyA9IHNvdXJjZU5vZGUudGFyZ2V0cztcblxuICAgICAgICAgICAgaWYgKHlJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZU5vZGVNZXRhZGF0YSA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbc291cmNlTm9kZS5pZF07XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTm9kZXMgPSB0aGlzLl9ncmFwaC5jb2x1bW5zPy5bc291cmNlTm9kZU1ldGFkYXRhLmNvbHVtbkluZGV4IV0/Lm5vZGVzO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQYXJhbGxlbE5vZGUgPSBjb2x1bW5Ob2Rlcy5maW5kKChub2RlLCBpbmRleCkgPT4gaW5kZXggPiAwICYmICFub2RlLnNwYWNlKTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXh0UGFyYWxsZWxOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHlJbmRleCA9IHRoaXMuX2dyYXBoTWV0YWRhdGFbbmV4dFBhcmFsbGVsTm9kZS5pZF0uY29sdW1uSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSBuZXh0UGFyYWxsZWxOb2RlLnRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICAgICAgYWRkZWROb2RlLnRhcmdldHMgPSB0aGlzLl9maW5kU2VyaWFsTm9kZSh5SW5kZXgsIHRhcmdldHMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWRkZWROb2RlLnRhcmdldHMgPSBzb3VyY2VOb2RlLnRhcmdldHM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhZGRlZE5vZGUudGFyZ2V0cyA9IHRoaXMuX2ZpbmRTZXJpYWxOb2RlKHlJbmRleCwgdGFyZ2V0cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwRGF0YVNvdXJjZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3ViID0gdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZGluZ1N0YXRlcyA9IFt0aGlzLnRlYW1EYXRhU291cmNlLCB0aGlzLnVzZXJEYXRhU291cmNlLCB0aGlzLndhdGNoZXJEYXRhU291cmNlXVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZHMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZHMub25EYXRhUmVxdWVzdGVkKCkucGlwZShtYXBUbyh0cnVlKSksIGRzLm9uRGF0YVJlY2VpdmVkKCkucGlwZShtYXBUbyhmYWxzZSkpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoZHMuaXNEYXRhTG9hZGluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChsb2FkaW5nU3RhdGVzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKGxvYWRpbmdTdGF0ZXMpID0+IGxvYWRpbmdTdGF0ZXMuc29tZShCb29sZWFuKSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc29tZUxvYWRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc29tZUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVjZWl2ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChzdWIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZW1vdmVTcGFjZU5vZGVzRnJvbUNvbHVtbnMoY29sdW1uczogQXBwcm92YWxHcmFwaENvbHVtbltdKTogQXBwcm92YWxHcmFwaENvbHVtbltdIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zOiBBcHByb3ZhbEdyYXBoQ29sdW1uW10gPSBbXTtcblxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWROb2RlcyA9IGNvbHVtbi5ub2Rlcy5maWx0ZXIoKG5vZGUpID0+ICFub2RlLnNwYWNlKTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbHVtbiA9IHtcbiAgICAgICAgICAgICAgICAuLi5jb2x1bW4sIC8vIFByZXNlcnZlIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtblxuICAgICAgICAgICAgICAgIG5vZGVzOiBmaWx0ZXJlZE5vZGVzIC8vIFVzZSB0aGUgZmlsdGVyZWQgbGlzdCBvZiBub2Rlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZmlsdGVyZWRDb2x1bW5zLnB1c2godXBkYXRlZENvbHVtbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZENvbHVtbnM7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgRGVmYXVsdERpYWxvZ09wdGlvbnMge1xuICAgIHRlYW1EYXRhU291cmNlOiBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxBcHByb3ZhbFRlYW0+O1xuICAgIHVzZXJEYXRhU291cmNlOiBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxBcHByb3ZhbFVzZXI+O1xuICAgIHVzZXJEZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcnRsOiBib29sZWFuO1xufVxuIiwiPG5nLWNvbnRhaW5lciBmZENvbXBhY3Q+XG4gICAgPGZkcC1hcHByb3ZhbC1mbG93LW1lc3NhZ2VzXG4gICAgICAgIFsobWVzc2FnZXMpXT1cIl9tZXNzYWdlc1wiXG4gICAgICAgIFt1bmRvTGFzdEFjdGlvbkF2YWlsYWJsZV09XCIhIV9wcmV2aW91c0FwcHJvdmFsUHJvY2Vzc1wiXG4gICAgICAgICh1bmRvTGFzdEFjdGlvbik9XCJfdW5kb0xhc3RBY3Rpb24oKVwiXG4gICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctbWVzc2FnZXM+XG4gICAgPGZkLWdyaWQtbGlzdFxuICAgICAgICAjZ3JpZExpc3RcbiAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fdG9vbGJhclwiXG4gICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIl9pc0VkaXRNb2RlID8gJ211bHRpU2VsZWN0JyA6ICdub25lJ1wiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiX29uTm9kZVNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxmZC1ncmlkLWxpc3QtdGl0bGUtYmFyIFt0aXRsZV09XCJ0aXRsZSB8fCAoJ3BsYXRmb3JtQXBwcm92YWxGbG93LmRlZmF1bHRUaXRsZScgfCBmZFRyYW5zbGF0ZSlcIj5cbiAgICAgICAgICAgIDxmZC1ncmlkLWxpc3QtdGl0bGUtYmFyLXNwYWNlcj48L2ZkLWdyaWQtbGlzdC10aXRsZS1iYXItc3BhY2VyPlxuICAgICAgICAgICAgQGlmIChpc0VkaXRBdmFpbGFibGUpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIFtncmFwaF09XCJfZ3JhcGhcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWROb2Rlc109XCJfc2VsZWN0ZWROb2Rlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtncmFwaE1ldGFkYXRhXT1cIl9ncmFwaE1ldGFkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRWRpdE1vZGVdPVwiX2lzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAoZW50ZXJFZGl0TW9kZSk9XCJfZW50ZXJFZGl0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGFkZE5vZGUpPVwiX2FkZE5vZGUoJGV2ZW50Lm5vZGUsICRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGVkaXRTZWxlY3RlZE5vZGUpPVwiX2VkaXROb2RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZGVsZXRlU2VsZWN0ZWROb2Rlcyk9XCJfZGVsZXRlU2VsZWN0ZWROb2RlcygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy10b29sYmFyLWFjdGlvbnM+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZ3JpZC1saXN0LXRpdGxlLWJhcj5cbiAgICAgICAgQGlmIChfYXBwcm92YWxQcm9jZXNzLndhdGNoZXJzPy5sZW5ndGggfHwgX2lzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fd2F0Y2hlcnNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIndhdGNoZXJzTGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X193YXRjaGVycy10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB3YXRjaGVyc0xhYmVsIHx8ICgncGxhdGZvcm1BcHByb3ZhbEZsb3cuZGVmYXVsdFdhdGNoZXJzTGFiZWwnIHwgZmRUcmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIEBpZiAoIV9pc0VkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHdhdGNoZXIgb2YgX2FwcHJvdmFsUHJvY2Vzcy53YXRjaGVyczsgdHJhY2sgX3RyYWNrQnlGbigkaW5kZXgsIHdhdGNoZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VdPVwid2F0Y2hlci5pbWdVcmwgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ3YXRjaGVyLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NpcmNsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXZhdGFyQ2xpY2tlZCk9XCJfb25XYXRjaGVyQ2xpY2sod2F0Y2hlciwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X193YXRjaGVycy1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJfdXNlcnNGb3JXYXRjaGVyc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cud2F0Y2hlcnNJbnB1dFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGbl09XCJfdXNlclZhbHVlRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkV2F0Y2hlcklkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3dhdGNoZXJzU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFfZ3JhcGguZXJyb3JzKSB7XG4gICAgICAgICAgICBAaWYgKF9ncmFwaC5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93X19jb250YWluZXItLWV4dHJhLXBhZGRpbmctc3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvd19fY29udGFpbmVyLS1leHRyYS1wYWRkaW5nLWVuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX3Njcm9sbERpZmYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvdy1jYXJvdXNlbC1jb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93LWNhcm91c2VsLWNvbnRyb2xzLS1lZGl0LW1vZGVdPVwiX2lzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2Nhcm91c2VsU3RlcHNMZWZ0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93LWNhcm91c2VsLWNvbnRyb2xzX19idXR0b24tLXByZXYtc2xpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cucHJldkJ1dHRvbkFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFNsaWRlKC0xKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCInbmF2aWdhdGlvbi0nICsgKF9ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX2Nhcm91c2VsU3RlcHNMZWZ0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKF9jYXJvdXNlbFN0ZXBzUmlnaHQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLWFwcHJvdmFsLWZsb3ctY2Fyb3VzZWwtY29udHJvbHNfX2J1dHRvbi0tbmV4dC1zbGlkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5uZXh0QnV0dG9uQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0U2xpZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF9jYXJvdXNlbFN0ZXBzUmlnaHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCInbmF2aWdhdGlvbi0nICsgKF9ydGwgPyAnbGVmdCcgOiAncmlnaHQnKSArICctYXJyb3cnXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC1jb250YWluZXItLW11bHRpcGxlLXJvb3Qtbm9kZXNdPVwiX211bHRpcGxlUm9vdE5vZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZHAtYXBwcm92YWwtZmxvd19fZ3JhcGgtY29udGFpbmVyLS1tdWx0aXBsZS1maW5hbC1ub2Rlc109XCJfbXVsdGlwbGVGaW5hbE5vZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zY3JvbGxiYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZ3JhcGhDb250YWluZXJFbFxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fZ3JhcGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNncmFwaEVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC1hcHByb3ZhbC1mbG93X19ncmFwaC0tZWRpdC1tb2RlXT1cIl9pc0VkaXRNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgX2dyYXBoLmNvbHVtbnM7IHRyYWNrIGNvbHVtbjsgbGV0IGNvbHVtbkluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fZ3JhcGgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlIG9mIGNvbHVtbi5ub2RlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeUZuKG5vZGVJbmRleCwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVJbmRleCA9ICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LW5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXBwcm92YWxGbG93Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIl9pc0Nka0RyYWdEaXNhYmxlZChub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWV0YV09XCJfZ3JhcGhNZXRhZGF0YVtub2RlLmlkXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0VkaXRdPVwiX2lzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNOZXh0Tm9kZUJsYW5rXT1cIl9pc05leHROb2RlQmxhbmsobm9kZSwgY29sdW1uSW5kZXgsIG5vZGVJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tEdWVEYXRlXT1cImNoZWNrRHVlRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkdWVEYXRlVGhyZXNob2xkXT1cImR1ZURhdGVUaHJlc2hvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVuZGVyQXJyb3ddPVwiY29sdW1uSW5kZXggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5vZGVzSW5Db2x1bW5BcHByb3ZlZF09XCIhIWNvbHVtbi5hbGxOb2Rlc0FwcHJvdmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcHJvdmFsU3RhdHVzVGVtcGxhdGVdPVwiYXBwcm92YWxTdGF0dXNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNDb2xvck1hcHBpbmddPVwic3RhdHVzQ29sb3JNYXBwaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWRkKT1cIl9hZGROb2RlKG5vZGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25FZGl0KT1cIl9lZGl0Tm9kZShub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkRlbGV0ZSk9XCJfb25Ob2RlRGVsZXRlKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX29uTm9kZUtleURvd24oJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJfZHJhZ0Ryb3BJblByb2dyZXNzID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnUmVsZWFzZWQpPVwiX29uTm9kZURyb3Aobm9kZSwgJGV2ZW50LnNvdXJjZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cIl9vbk5vZGVEcmFnTW92ZWQobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUcmljayB3aXRoIHVzaW5nIHByb2plY3Rpb24gdG8gbWFrZSBncmlkIGxpc3QgaXRlbXMgdmlzaWJsZSBmb3IgdGhlIGdyaWQgbGlzdCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWdyaWQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCIhIW5vZGUuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFwcHJvdmFsRmxvd05vZGUuYXBwcm92YWxGbG93Tm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlVG9vbGJhckNsaWNrXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtYXBwcm92YWwtZmxvd19fZ3JhcGgtbm9kZS1pbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmRwLWFwcHJvdmFsLWZsb3dfX2dyYXBoLW5vZGUtaW5uZXItLWVkaXRdPVwiX2lzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXNzKT1cIl9vbk5vZGVDbGljayhub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1ncmlkLWxpc3QtaXRlbS10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2lzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhcHByb3ZhbEZsb3dOb2RlLl9vdmVyZmxvd01lbnVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWdyaWQtbGlzdC1pdGVtLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtZ3JpZC1saXN0LWl0ZW0taW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwcm92ZXJzLmxlbmd0aCA9PT0gMSA/IG5vZGUuYXBwcm92ZXJzWzBdLmltZ1VybCA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJub2RlLmFwcHJvdmVycy5sZW5ndGggPiAxID8gbm9kZS5kZXNjcmlwdGlvbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NpcmNsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZC1ncmlkLWxpc3QtaXRlbS1ib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhcHByb3ZhbEZsb3dOb2RlLl9ub2RlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWdyaWQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmRwLWFwcHJvdmFsLWZsb3ctbm9kZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGZpZ3VyZSBmZC1pbGx1c3RyYXRlZC1tZXNzYWdlIHR5cGU9XCJzcG90XCIgW3N2Z0NvbmZpZ109XCJfZW1wdHlBcHByb3ZhbEZsb3dTcG90Q29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtZmlnY2FwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBmZC1pbGx1c3RyYXRlZC1tZXNzYWdlLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5lbXB0eVRpdGxlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtaWxsdXN0cmF0ZWQtbWVzc2FnZS10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5lbXB0eUhpbnQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9maWdjYXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvZmlndXJlPlxuICAgICAgICAgICAgICAgIDwhLS0gVE9ETyAjNTE3ODogUmVwbGFjZSB3aXRoIGlsbHVzdHJhdGVkIGltYWdlIGNvbXBvbmVudCBhZnRlciBpdCBnZXRzIGZpeGVkIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMjhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTI4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTI4IDEyOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNhcElsbHVzLVNwb3QtTm9EYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQxLjYxNzksMzIuNzE3NEg4NC42MjczYTEsMSwwLDAsMSwuNzIzLjMwOTJsNy4yNDQ1LDcuNTgyNCw3LjQ4MTcsNy44NDkxYTEsMSwwLDAsMSwuMjc2MS42OWwtLjAwNDYsNTUuNjA2OWE0LjEwMzgsNC4xMDM4LDAsMCwxLS44Nzg3LDIuMTIxMkE0LjA1NjQsNC4wNTY0LDAsMCwxLDk4LjEsMTA3Ljk2MzFsLTU2LjM4NTguMDMxM2EyLjYxNjcsMi42MTY3LDAsMCwxLTMuMDgxMi0zLjIzMDlsLS4wMTUyLTY5LjA1OTRaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhcElsbHVzX1BhdHRlcm5TaGFkb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5maWxsXT1cIid2YXIoLS1zYXBJbGx1c19QYXR0ZXJuU2hhZG93KSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS43OTI4LDI3LjQ5ODdINzguODAyMmExLDEsMCwwLDEsLjcyMy4zMDkyTDg2Ljc3LDM1LjM5bDcuNDgxNiw3Ljg0OTJhMSwxLDAsMCwxLC4yNzYyLjY5bC0uMDA0Niw1NS42MDY5YTMsMywwLDAsMS0zLDNIMzUuODA4YTIuOTk0NiwyLjk5NDYsMCwwLDEtMy0yLjk5MTNjLS4wMS0xMi4wNTY0LS4wNDIzLTU3LjAxMTYtLjAxNTItNjkuMDU5NUEyLjk5NDMsMi45OTQzLDAsMCwxLDM1Ljc5MjgsMjcuNDk4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2FwSWxsdXNfT2JqZWN0RmlsbENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZmlsbF09XCIndmFyKC0tc2FwSWxsdXNfT2JqZWN0RmlsbENvbG9yKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05My4yOTc4LDQ0LjUzMzVINzguODIwOGEuOTkyNS45OTI1LDAsMCwxLS45NzQtMS4wMVYyOC41MTA4YS45Ny45NywwLDAsMSwxLjY2MjgtLjcxNDNMOTMuOTg2NSw0Mi44MDkyQTEuMDE1MSwxLjAxNTEsMCwwLDEsOTMuMjk3OCw0NC41MzM1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXBJbGx1c19CcmFuZENvbG9yU2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZmlsbF09XCIndmFyKC0tc2FwSWxsdXNfQnJhbmRDb2xvclNlY29uZGFyeSknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTA0LjYwOCwzOC45NDg1bDUuOTE1Ny0xLjc3MjFjMS4zMi0uMzk1NC43NTg0LTIuNTI1OC0uNTY4OS0yLjEyODJMMTA0LjAzOTIsMzYuODJjLTEuMzIuMzk1My0uNzU4NCwyLjUyNTguNTY4OCwyLjEyODJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhcElsbHVzX0xheWVyaW5nMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZpbGxdPVwiJ3ZhcigtLXNhcElsbHVzX0xheWVyaW5nMSknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNODUuMjk3MywyMS4yNDY1bC45NzE4LTUuOTMzMWMuMjE1NC0xLjMxNTEtMS43NzctMS44ODA3LTEuOTk0MS0uNTU1NGwtLjk3MTgsNS45MzMyYy0uMjE1NSwxLjMxNTEsMS43NzcsMS44ODA3LDEuOTk0MS41NTUzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXBJbGx1c19MYXllcmluZzFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5maWxsXT1cIid2YXIoLS1zYXBJbGx1c19MYXllcmluZzEpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTk1LjMwMzQsMjkuMDAxNWExLjAxLDEuMDEsMCwwLDEtLjY4MzctLjI2NywxLjA3ODMsMS4wNzgzLDAsMCwxLS4wODY0LTEuNDkzMmw1Ljk1MTEtNi44ODU3YTEuMDEsMS4wMSwwLDAsMSwxLjQ1MzgtLjA4ODQsMS4wNzg1LDEuMDc4NSwwLDAsMSwuMDg2NSwxLjQ5MzJsLTUuOTUxMSw2Ljg4NThBMS4wMTY0LDEuMDE2NCwwLDAsMSw5NS4zMDM0LDI5LjAwMTVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNhcElsbHVzX0xheWVyaW5nMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZpbGxdPVwiJ3ZhcigtLXNhcElsbHVzX0xheWVyaW5nMSknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOTQuODc0Nyw0Mi44ODYxLDgwLjA4NTUsMjcuNDYyM2ExLjUxNTIsMS41MTUyLDAsMCwwLTEuMDg4NS0uNDYzNkgzNS44MDdhMy41MDksMy41MDksMCwwLDAtMy41MTQ2LDMuNDgzNmMtLjAyOTQsMTMuMjg1Ny4wMTM3LDY2Ljc1NTkuMDE1Nyw2OS4wMjU3YTMuNTA3NiwzLjUwNzYsMCwwLDAsMy41MTQ2LDMuNDg5NEg5MS43NzA5YTMuNTEwNiwzLjUxMDYsMCwwLDAsMy41MTQ2LTMuNDk4MmwuMDA1LTU1LjU3ODVBMS40OSwxLjQ5LDAsMCwwLDk0Ljg3NDcsNDIuODg2MVptLTE2LjIxLTE0LjgzNTVhMS4xNSwxLjE1LDAsMCwxLC4yNTYxLS4wMzA5LDEuMDQsMS4wNCwwLDAsMSwuNTEuMjEzNGwxNC4yNzYsMTQuODgzNy4wMTk0LjAyYS41ODkxLjU4OTEsMCwwLDEsLjA5NjguNjI1MWMtLjEwMTYuMTc2NC0uNDA4Ni4yNC0uNjkuMjRMNzguODM1NSw0NGEuNjAzMS42MDMxLDAsMCwxLS41NDcyLS42MTMxYy0uMDA4Ny00Ljk1ODgtLjAxNy05LjkwMTUtLjAwMzUtMTQuODY4OUEuNTE4OS41MTg5LDAsMCwxLDc4LjY2NDYsMjguMDUwNlptMTMuMTA2Miw3My45NUgzNS44MTg4YTIuNTA0NSwyLjUwNDUsMCwwLDEtMi41MTA3LTIuNDkxYy0uMDAyLTIuMjY5NC0uMDQ1MS01NS43NC0uMDE1Ny02OS4wMjQ4YTIuNTA1NCwyLjUwNTQsMCwwLDEsMi41MTA3LTIuNDg2MUg3Ny4zNjg0YTEuNDksMS40OSwwLDAsMC0uMDk3Ni41MTA2VjQzLjQ5MzRBMS41MTQ1LDEuNTE0NSwwLDAsMCw3OC43ODk0LDQ1SDc4LjkyTDk0LjI4Niw0Ny45NzQ5bC0uMDA0Niw1MS41MjY5QTIuNTA3NCwyLjUwNzQsMCwwLDEsOTEuNzcwOCwxMDIuMDAwNlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2FwSWxsdXNfU3Ryb2tlRGV0YWlsQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5maWxsXT1cIid2YXIoLS1zYXBJbGx1c19TdHJva2VEZXRhaWxDb2xvciknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mZC1ncmlkLWxpc3Q+XG4gICAgQGlmIChfaXNFZGl0TW9kZSkge1xuICAgICAgICA8ZGl2IGZkLWJhcj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmVkaXRNb2RlU2F2ZUJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVTYXZlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2F2ZUVkaXRNb2RlQ2hhbmdlcygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuZWRpdE1vZGVFeGl0QnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVFeGl0QnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdEVkaXRNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { ApprovalFlowAddNodeComponent } from './approval-flow-add-node/approval-flow-add-node.component';\nimport { ApprovalFlowApproverDetailsComponent } from './approval-flow-approver-details/approval-flow-approver-details.component';\nimport { ApprovalFlowMessagesComponent } from './approval-flow-messages/approval-flow-messages.component';\nimport { ApprovalFlowDropZoneDirective } from './approval-flow-node/approval-flow-drop-zone.directive';\nimport { ApprovalFlowNodeComponent } from './approval-flow-node/approval-flow-node.component';\nimport { ApprovalFlowSelectTypeComponent } from './approval-flow-select-type/approval-flow-select-type.component';\nimport { ApprovalFlowTeamListComponent } from './approval-flow-team-list/approval-flow-team-list.component';\nimport { ApprovalFlowToolbarActionsComponent } from './approval-flow-toolbar-actions/approval-flow-toolbar-actions.component';\nimport { ApprovalFlowUserDetailsComponent } from './approval-flow-user-details/approval-flow-user-details.component';\nimport { ApprovalFlowUserListComponent } from './approval-flow-user-list/approval-flow-user-list.component';\nimport { ApprovalFlowComponent } from './approval-flow.component';\nimport * as i0 from \"@angular/core\";\nexport class PlatformApprovalFlowModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, imports: [ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowDropZoneDirective,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent], exports: [ApprovalFlowComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, imports: [ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformApprovalFlowModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n ApprovalFlowComponent,\n ApprovalFlowNodeComponent,\n ApprovalFlowApproverDetailsComponent,\n ApprovalFlowAddNodeComponent,\n ApprovalFlowUserListComponent,\n ApprovalFlowUserDetailsComponent,\n ApprovalFlowDropZoneDirective,\n ApprovalFlowTeamListComponent,\n ApprovalFlowSelectTypeComponent,\n ApprovalFlowMessagesComponent,\n ApprovalFlowToolbarActionsComponent\n ],\n exports: [ApprovalFlowComponent]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUN2RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFrQmxFLE1BQU0sT0FBTywwQkFBMEI7OEdBQTFCLDBCQUEwQjsrR0FBMUIsMEJBQTBCLFlBZC9CLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsb0NBQW9DO1lBQ3BDLDRCQUE0QjtZQUM1Qiw2QkFBNkI7WUFDN0IsZ0NBQWdDO1lBQ2hDLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLDZCQUE2QjtZQUM3QixtQ0FBbUMsYUFFN0IscUJBQXFCOytHQUV0QiwwQkFBMEIsWUFkL0IscUJBQXFCO1lBQ3JCLHlCQUF5QjtZQUN6QixvQ0FBb0M7WUFDcEMsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QixnQ0FBZ0M7WUFFaEMsNkJBQTZCO1lBQzdCLCtCQUErQjtZQUMvQiw2QkFBNkI7WUFDN0IsbUNBQW1DOzsyRkFJOUIsMEJBQTBCO2tCQWhCdEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLG9DQUFvQzt3QkFDcEMsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLCtCQUErQjt3QkFDL0IsNkJBQTZCO3dCQUM3QixtQ0FBbUM7cUJBQ3RDO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QXBwcm92ZXJEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LWFwcHJvdmVyLWRldGFpbHMvYXBwcm92YWwtZmxvdy1hcHByb3Zlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dNZXNzYWdlc0NvbXBvbmVudCB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy1tZXNzYWdlcy9hcHByb3ZhbC1mbG93LW1lc3NhZ2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy1ub2RlL2FwcHJvdmFsLWZsb3ctZHJvcC16b25lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LW5vZGUvYXBwcm92YWwtZmxvdy1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dTZWxlY3RUeXBlQ29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXNlbGVjdC10eXBlL2FwcHJvdmFsLWZsb3ctc2VsZWN0LXR5cGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC9hcHByb3ZhbC1mbG93LXRlYW0tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93VG9vbGJhckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zL2FwcHJvdmFsLWZsb3ctdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMvYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC9hcHByb3ZhbC1mbG93LXVzZXItbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93Q29tcG9uZW50IH0gZnJvbSAnLi9hcHByb3ZhbC1mbG93LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBBcHByb3ZhbEZsb3dDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd05vZGVDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd0FwcHJvdmVyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dEcm9wWm9uZURpcmVjdGl2ZSxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1NlbGVjdFR5cGVDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd01lc3NhZ2VzQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dUb29sYmFyQWN0aW9uc0NvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW0FwcHJvdmFsRmxvd0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1BcHByb3ZhbEZsb3dNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLWFwcHJvdmFsLWZsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLWFwcHJvdmFsLWZsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1","i2.ApprovalFlowAddNodeViewService","i3","defaultId","i2"],"mappings":"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"}